Correr Apache bajo un usuario y grupo diferente por seguridad

Los atacantes maliciosos a menudo intentan acceder a un servidor mediante una vulnerabilidad en una cuenta conocida. Si pueden detectar que Apache está corriendo muy seguramente intentarán loguearse al servidor utilizando las cuentas apache o www-data. Por eso, es de crucial importancia que el usuario bajo el que corre el servicio web NO permita el login mediante shell. En este post explicaremos cómo cambiar el usuario y el grupo para correr Apache bajo un usuario y grupo diferente.

Antes de comenzar la lectura de este post, les recomiendo repasar primero Aumentar la seguridad en Apache: Esconder la versión y el SO y Tip de seguridad para Apache en Linux: deshabilitar listados de directorio.

TIP #3: Correr Apache bajo un usuario y grupo diferente

Para empezar, crearemos un usuario y grupo llamados servicioweb, asignándole al usuario el ejecutable /bin/false como shell. Esto ocasionará que esta cuenta NO pueda iniciar sesión bajo ningún aspecto utilizando una consola local o remota.

adduser --system servicioweb --shell=/bin/false

El comando anterior crea el usuario y el grupo en el mismo paso sin originar un subdirectorio dentro de /home para la cuenta en cuestión.

A continuación, editemos el archivo principal de configuración. Luego de localizar las directivas User y Group agregaremos junto a las mismas la cuenta y grupo que acabamos de crear:

User servicioweb
Group servicioweb

Finalmente, en la Fig. 1 podremos ver lo siguiente:

  1. Creación de la cuenta y grupo servicioweb sin un subdirectorio dentro de /home
  2. Edición del archivo de configuración para correr Apache bajo un usuario y grupo diferente
  3. Reinicio de Apache para aplicar cambios
  4. Chequeo de procesos para verificar que el servidor web está corriendo bajo la nueva cuenta:
ps aux | grep apache2 | grep -v grep

En este punto es importante notar que solamente podemos ver servici+ ya que al parecer la columna de usuario en la salida de ps aux está limitada a 8 caracteres.

Correr Apache bajo un usuario y grupo diferente
Figura 1 – Correr Apache bajo un usuario y grupo diferente

Espero que este post les haya resultado útil. ¡Nos leemos en breve!