PHP Handlers and Caching

1

Recientemente comencé a configurar nuestro servidor de producción para un nuevo sitio de Drupal. Hasta ahora, siempre he usado el controlador predeterminado de PHP mod_php, y he eliminado los privilegios de escritura para cualquier directorio / archivo, excepto en el caso de que se produzcan cargas de imágenes, etc. El vps que compramos es de una compañía que realmente elimina esto de las opciones de configuración de WHM, dejando suPHP como predeterminado. Puedo anular esto, pero ahora estoy pensando en el impacto que esta opción tiene tanto para la seguridad como para el rendimiento. Debido a que suPHP no permite el almacenamiento en caché a través de APC, u otros sistemas de almacenamiento en caché probados y verdaderos, me preguntaba si un ataque de DOS podría ser más efectivo. En un proyecto anterior, un grupo de botnet que parecía provenir de un programa flash pirateado, estaba continuamente "haciendo clic" en algo que generaba solicitudes de ajax. De hecho, esto hizo que los errores de MYSQL fueran visibles en un punto, e incluso parecieron hacer tropezar la autenticación (no verifiqué esto, pero recuerdo que un administrador que no tenía privilegios de administrador tenía páginas protegidas), así que me pregunto si la solicitud ajax fue almacenado en caché si esto podría haber ocurrido? También he leído que el caché en sí mismo puede ser el objetivo de un ataque de DOS ...

    
pregunta tuson 23.12.2013 - 12:14
fuente

2 respuestas

1

Si no está ejecutando un caché de código de operación, entonces ya se está dosificando, ¡particularmente si está ejecutando Drupal! Es un buen modelo de negocio si alquila hardware de servidor.

Hay algunos casos en los que la ejecución de suPHP tiene sentido desde el punto de vista de la seguridad (pero la cantidad de estos se reduce en gran medida por el soporte de las agrupaciones por usuario de php-fpm), pero este no es uno de ellos. (Si estuviera usando php-fpm, entonces valdría la pena considerar tener un usuario dedicado para manejar la ruta de carga del archivo).

La mejor protección contra un ataque de DOS es tener la capacidad para lidiar con él. La segunda mejor opción es poder perfilar el ataque e inyectar fácilmente un manejo / bloqueo específico.

  

y se eliminaron los privilegios de escritura para cualquier directorio / archivo, excepto en el caso de que se produzcan subidas de imágenes, etc.,

Esto no es suficiente por sí solo: también debe deshabilitar el análisis de PHP (y, preferiblemente, cualquier acceso directo al servidor web) en el directorio de cargas.

Controlar su servidor a través de WHM no es una buena idea si le preocupa la seguridad.

Con respecto al ataque anterior ... esta es una pregunta separada, y no hay suficiente información para aventurar una conjetura, incluso si esa información estuviera disponible, es probable que esté fuera del alcance de una respuesta aquí. Es bastante improbable que la configuración de PHP provoque los síntomas que describe ("Recuerdo que un administrador que no ve las páginas protegidas con privilegios de administrador"): es más probable que sea un problema / defecto de código en otra parte de la pila.

    
respondido por el symcbean 23.12.2013 - 15:45
fuente
0

Es posible que no pueda usar el caché de código de operación (como APC) pero no hay nada que diga que no puede usar la funcionalidad de caché de Drupal para ayudar con algunos de los problemas de rendimiento ( enlace ). Claro, no es lo mismo que el almacenamiento en caché de código de operación, pero con suPHP viene una gran cantidad de concesiones.

Recuerde, cualquier cosa que envíe su aplicación (incluido Javascript) está abierta para que cualquiera pueda leerla. Este "clic" que describe podría haber sido fácilmente un script que llamaba a lo que fuera que llamara directamente su solicitud de ajax.

También, por favor deshabilita la configuración de "display_errors" de php.ini en producción. Esto evita que el mensaje de error normal se devuelva a la aplicación / script que lo solicita (a excepción de los errores fatales). La mayoría de los problemas relacionados con MySQL, incluidos los problemas de conexión, son advertencias, por lo que no deberían causar un problema. Puede usar ini_set para cambiar este valor en tiempo de ejecución ( enlace ).

    
respondido por el enygma 23.12.2013 - 13:35
fuente

Lea otras preguntas en las etiquetas