EDITAR # 2 23 de julio de 2015: en busca de una nueva respuesta que identifique un elemento de seguridad importante que se perdió en la configuración a continuación o puede dar razones para creer que todo está cubierto.
EDITAR # 3 29 de julio de 2015: Estoy buscando especialmente una posible configuración incorrecta, como permitir involuntariamente algo que podría explotarse para eludir las restricciones de seguridad o, peor aún, dejar algo abierto.
Esta es una configuración de alojamiento compartido / multi-sitio y queremos usar una instancia de Apache compartida (es decir, se ejecuta bajo una cuenta de usuario) pero con PHP / CGI ejecutándose como usuario de cada sitio web para garantizar que ningún sitio pueda acceder a los archivos de otro sitio, y queremos asegúrese de que no se pierda nada (por ejemplo, si no supiéramos sobre la prevención de ataques de enlace simbólico)
Esto es lo que tengo hasta ahora:
- Asegúrese de que los scripts PHP se ejecuten como la cuenta y el grupo de usuarios de Linux del sitio web, y que estén encarcelados (como el uso de CageFS) o al menos correctamente restringidos con los permisos del sistema de archivos de Linux.
- Use suexec para asegurarse de que los scripts CGI no se puedan ejecutar como usuario de Apache.
- Si necesita soporte del lado del servidor (como en archivos shtml), úselo
Options IncludesNOEXEC
para evitar que se pueda ejecutar CGI cuando no lo espera (aunque esto no debería ser una gran preocupación si usa suexec). - Tenga una protección contra ataques de enlace simbólico para que un hacker no pueda engañar a Apache para que sirva los archivos de otro sitio web como texto sin formato y revele información explotable como contraseñas de DB.
- Configure
AllowOverride
/AllowOverrideList
para permitir solo cualquier directiva que un hacker no pueda explotar. Creo que esto es menos preocupante si los elementos anteriores se realizan correctamente.
Me gustaría usar MPM ITK si no fuera tan lento y no se ejecutara como root, pero queremos usar un Apache compartido y asegurarnos de que se haga de forma segura.
Encontré http://httpd.apache.org/docs/2.4/misc/security_tips.html , pero no fue exhaustivo sobre este tema.
Si es útil saberlo, estamos planeando usar CloudLinux con CageFS y mod_lsapi.
¿Hay algo más que hacer o saber?
EDITAR el 20 de julio de 2015: la gente ha presentado algunas buenas soluciones alternativas que son valiosas en general, pero tenga en cuenta que esta pregunta está dirigida solo con respecto a la seguridad de una configuración de Apache compartida. Específicamente, ¿hay algo no cubierto anteriormente que podría permitir que un sitio acceda a los archivos de otro sitio o comprometer a otros sitios de alguna manera?
¡Gracias!