¿Cómo evito que Apache se ejecute como root?

8

Nuevo en el trabajo, lugar pequeño, y las cosas de seguridad acaban de aterrizar en mi escritorio. Fui contratado para ser un desarrollador front-end. Feliz de aprender cosas nuevas, pero nunca tuve que hacer cosas de administrador de sistemas antes.

Comencé a cavar y parece que apache, el sitio y todo se está ejecutando en la raíz. No hay otros grupos o usuarios. ACK!

¿Qué pasos debo tomar para cambiar esto? Sé que este es un gran no-no ...

Puntos extra si alguien puede, por favor, señalarme un buen tutorial básico 101 sobre seguridad apache / php.

r00tAcc3ss
fuente

Respuestas:

12

Es inusual encontrar Apache ejecutándose como rooten cualquier configuración de stock. ¿Cómo ha determinado que Apache se está ejecutando como root? Tenga en cuenta que Apache debe iniciarse como root para vincularse a puertos privilegiados, pero generalmente pierde sus privilegios más adelante.

Puede buscar en su configuración de Apache (a menudo en /etc/httpdo /etc/apache2, según su distribución) las directivas Usery Group(documentadas aquí ). Estas dos directivas controlan bajo qué ID de usuario se ejecuta Apache.

También es inusual encontrar un sistema que "no tenga otros grupos o usuarios". ¿Qué hacer getent passwdy getent groupmostrar? ¿ Realmente no hay otros usuarios o grupos que no sean root? La mayoría de las distribuciones se envían con una apacheo www-datausuario o algo por el estilo y una configuración coincidente que se ejecutará Apache como ese usuario.

Hay una variedad de guías introductorias para la configuración y seguridad de Apache. Una simple búsqueda en Google arroja muchos resultados de aspecto probable. La Guía de implementación de RedHat / CentOS es un buen lugar para comenzar (si está en un sistema RedHat / CentOS).

larsks
fuente
Gracias, sí, no se estaba ejecutando root, pero parece que todo lo demás se ha hecho usando root. todas las carpetas, archivos, etc. Necesitaré averiguar cómo cambiar eso.
r00tAcc3ss
Bueno ... no necesariamente. No desea que los archivos pertenezcan al mismo usuario que el proceso de Apache en ejecución. Idealmente, un compromiso en el servidor web no dará como resultado que un atacante pueda modificar la configuración de Apache o el contenido web.
larsks
0

Puede ejecutar Apache como cualquier usuario con números de puerto mayores que el número de puerto privilegiado 1024+. Luego, utilice el reenvío de puertos para reenviar el tráfico desde los puertos 80 y 443 a sus puertos específicos.

Chase T.
fuente