Considera configurar open_basedir
"por sitio". open_basedir
es una configuración de php.ini que evitará que sus scripts accedan a archivos fuera de una lista blanca definida. Si su servidor aloja varios sitios, evitará que un sitio lea la configuración de la base de datos de otro sitio. También evitará que un script php acceda / modifique archivos centrales del sistema. Open basedir es fácil de configurar, simplemente agregue la línea " php_admin_value open_basedir /my/list/of/folders:/as/a/colon/seperated/list
" a cada servidor virtual Apache.
También considere desactivar el motor de script PHP para todos los sitios / carpetas que no deberían contener scripts PHP (por ejemplo, una carpeta de imágenes cargadas). Nuevamente, esto es simple, agregue "motor php_admin_value apagado" a cualquier Apache VirtualHosts que no necesite php. Para deshabilitar PHP en un directorio, coloque lo mismo en una etiqueta de Directorio.
Ejecute permisos de archivo lo más estrictos posible, evite el acceso de escritura a los scripts PHP para el usuario de Apache, esto evita que un script en ejecución se modifique a sí mismo u otros scripts en el mismo sitio / servidor. Si es posible, evite los permisos 777, calcule los permisos mínimos necesarios para ejecutar la aplicación y utilícelos.
Si aloja varios sitios, cada uno con su propia base de datos, use un usuario separado de MySQL / Postgres para cada uno y establezca permisos para cada usuario de modo que solo tengan acceso a las bases de datos relevantes. Una vez más, esto evitará que un script falso altere la base de datos de otra aplicación.
Suosin, HardenedPHP, mod_security y similares también son valiosos, pero úsalos además de una configuración estrechamente bloqueada, no en lugar de.