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:
- Creación de la cuenta y grupo servicioweb sin un subdirectorio dentro de /home
- Edición del archivo de configuración para correr Apache bajo un usuario y grupo diferente
- Reinicio de Apache para aplicar cambios
- 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.
Espero que este post les haya resultado útil. ¡Nos leemos en breve!