it-swarm-es.tech

Comprobación del usuario que ejecuta el servidor Apache

[email protected]:/var/www# ps aux | egrep '(Apache|httpd)'
root      1086  0.0  0.3  88480  3160 ?        Ss   Mar08   0:09 /usr/sbin/Apache2 -k start
www-data  1089  0.0  0.8 445500  8840 ?        Sl   Mar08   0:56 /usr/sbin/Apache2 -k start
www-data  1090  0.0  0.8 445564  8832 ?        Sl   Mar08   0:56 /usr/sbin/Apache2 -k start
root     12072  0.0  0.0   8160   932 pts/0    S+   19:20   0:00 egrep --color=auto (Apache|httpd)

puede sumar1 por favor informe sobre el proceso 1086 Apache ejecutado por la raíz. ¿Es esto un problema de seguridad?

1
Abhishek Bhatia

No, esto es normal. En los sistemas basados ​​en Debian, Apache2 se inicia como root. Luego se bifurca y se ejecuta bajo un usuario sin privilegios (generalmente www-data). El trabajo real lo realizan estos procesos.

Solo un proceso privilegiado puede vincularse a puertos inferiores a 1024. Por lo tanto, al menos para vincularse a los puertos predeterminados 80 y 443, tendrá que ejecutarse como root.

Y, entre otras cosas, el proceso original lee las claves privadas del certificado SSL, que generalmente solo se leen por root. De /usr/share/doc/Apache2/README.Debian.gz:

The SSL key file should only be readable by root; the certificate file may be
globally readable. These files are read by the Apache parent process which runs
as root, and it is therefore not necessary to make the files readable by the
www-data user.

Entonces, este es un comportamiento documentado.

2
muru

No. Apache siempre se inicia como "root" y luego usa "setuid" para generar niños que realmente procesan las solicitudes para el usuario de Apache.

Si desea crear un socket de escucha en un puerto privilegiado (uno debajo del puerto 1024) debe hacerlo como root (o para ser más precisos: con ID de usuario 0). Puerto 80 y 443 para SSL.

Entonces ... si no confía en Apache para unirse a un socket, no debe ejecutar un servidor web en su servidor.

Ver por ejemplo http://www.thegeekstuff.com/2011/03/Apache-hardening/

1
Rinzwind