Configuración de restricción de uso de recursos del servidor web Apache

  
3.4.3 Configuración de restricción de uso de recursos del servidor web Apache
"Restricción de uso de recursos" es restringir el acceso de los usuarios a recursos específicos del sitio web (como directorio, hardware del servidor, etc.). Las instrucciones relacionadas incluyen: LimitRequestBody, LimitRequestFields, LimitRequestFieldSize, LimitRequestLine, RLimitCPU, RLimitMEM, RLimitNPROC y ThreadStackSize. La familia de directivas LimitRequest * se usa para limitar la cantidad de recursos que Apache usa para leer las solicitudes de los clientes. Al limitar estos valores, algunos ataques de denegación de servicio (DOS) se pueden mitigar; la familia de instrucciones RLimit * limita la cantidad de recursos utilizados por los procesos generados por los subprocesos de Apache, que normalmente se usan para controlar los recursos utilizados por los scripts CGI y los comandos de ejecución de SSI. La directiva ThreadStackSize se usa en algunas plataformas para controlar el tamaño de la pila. 1. La directiva LimitRequestBody
LimitRequestBody limita la longitud máxima de bytes del cuerpo de solicitud HTTP enviado por el cliente. Su sintaxis es: LimitRequestBody Bytes, que limita el número de bytes permitidos por el cuerpo de la solicitud entre 0 (es decir, ilimitado) y 2 147 483 647 (2GB). El valor predeterminado es "0". La directiva LimitRequestBody permite al usuario establecer un límite en la longitud máxima de bytes del cuerpo de solicitud HTTP que el cliente puede enviar dentro de su alcance (servidor completo, directorio específico, archivo específico, ubicación específica). Si la solicitud del cliente excede este límite, el servidor responderá con un error en lugar de continuar atendiendo la solicitud. El cuerpo de una solicitud normal depende en gran medida de las propiedades naturales del recurso y de los métodos permitidos por ese recurso. Los scripts CGI a menudo usan el cuerpo del mensaje para pasar información sobre el formulario al servidor. Usando el método PUT, se puede obtener al menos un valor que sea del tamaño de la cantidad de información que el servidor espera obtener de este recurso. Esta directiva le da al administrador del servidor un mayor control sobre el comportamiento anormal de la solicitud del cliente. Esto ayuda a evitar algunas formas de ataques de denegación de servicio. Por ejemplo, si permite que los archivos se carguen en una ubicación y desea establecer el tamaño del archivo cargado en 100 KB, puede usar el siguiente comando: LimitRequestBody 1024002. LimitRequestFields
LimitRequestFields se utiliza para limitar el número de campos de encabezado de solicitud HTTP al aceptar solicitudes de clientes. Su sintaxis es: LimitRequestFields Number, y Number es un número entero de 0 (es decir, ilimitado) a 32 767. El valor predeterminado es "100". El valor predeterminado es la constante de tiempo de compilación DEFAULT_LIMIT_REQUEST_FIELDS (el valor de lanzamiento es 100). La directiva LimitRequestFields permite al administrador del servidor modificar el límite en el número de campos de encabezado de solicitud en una solicitud HTTP. El servidor necesita que este valor sea mayor que el número de campos de encabezado incluidos en una solicitud de cliente normal. El número de campos de encabezado de solicitud del cliente rara vez es superior a 20, pero este número varía mucho dependiendo del cliente, a menudo dependiendo del usuario que configura las extensiones de su navegador para admitir una negociación de contenido más detallada. Las extensiones HTTP opcionales a menudo se implementan utilizando el campo de encabezado de solicitud. La directiva le da al administrador del servidor un mayor control sobre el comportamiento anormal de la solicitud del cliente. Esto ayuda a evitar algunas formas de ataques de denegación de servicio. Si el servidor responde a la cliente que se está utilizando, lo que indica que ha enviado demasiados campos de encabezado en la solicitud, debe aumentar este valor de manera apropiada. Por ejemplo: LimitRequestFields 50 3. La directiva LimitRequestFieldSize
LimitRequestFieldSize se usa para limitar el número de bytes del encabezado de solicitud enviado por el cliente. Su sintaxis es: LimitRequestFieldsize Bytes, y Bytes especifica el tamaño de los bytes permitidos por el encabezado de solicitud HTTP. El valor predeterminado es "8190". La directiva LimitRequestFieldSize permite al administrador del servidor aumentar o reducir el tamaño del campo de encabezado de solicitud HTTP. En general, el servidor necesita que este valor sea lo suficientemente grande como para adaptarse al tamaño del campo del encabezado de cualquier solicitud de un cliente normal. El tamaño de un campo de encabezado normal es muy diferente para diferentes clientes, y generalmente está estrechamente relacionado con el usuario que configura su navegador para soportar más protocolos de contenido. La directiva le da al administrador del servidor un mayor control sobre el comportamiento anormal de la solicitud del cliente. Esto ayuda a evitar algunas formas de ataques de denegación de servicio. Por ejemplo: LimitRequestFieldSize 4094 En general, no cambie esta configuración, pero mantenga su configuración predeterminada. 4. La directiva LimitRequestLine
LimitRequestLine se usa para limitar el número de bytes de la línea de solicitud HTTP enviada por el cliente receptor. Su sintaxis es: LimitRequestLine Bytes, Bytes establecerá el límite del número de bytes en la línea de solicitud HTTP. El valor predeterminado es también "8190". La directiva LimitRequestLine permite al administrador del servidor aumentar o disminuir el límite de tamaño permitido de la línea de solicitud HTTP del cliente. Debido a que la línea de solicitud incluye el método HTTP, el URI y la versión del protocolo, la directiva LimitRequestLine limita la longitud del URI de la solicitud. El servidor necesitará que este valor sea lo suficientemente grande como para cargar todos sus nombres de recursos, incluida toda la información sobre la parte de la consulta que podría pasarse en la solicitud GET. La directiva también le da al administrador del servidor un mayor control sobre el comportamiento anormal de la solicitud del cliente. Esto ayuda a evitar algunas formas de ataques de denegación de servicio. Por ejemplo: LimitRequestLine 4094 En general, no es necesario cambiar el valor predeterminado de esta configuración. 5. RLimitCPU
El comando RLimitCPU se usa para limitar el número máximo de segundos que el proceso hijo de Apache genera para ocupar la CPU. El límite de recursos de la CPU se expresa como el número de segundos por proceso. Su sintaxis es: RLimitCPU segundos | Max [segundos | Máx.], El valor predeterminado es indefinido, utilizando los valores predeterminados del sistema operativo. El primer parámetro establece el límite de recursos flexibles para todos los procesos, y el segundo parámetro establece el límite de recursos máximo. Ambos parámetros se pueden establecer en un valor o "max" para indicar que la configuración es el máximo permitido por el sistema operativo. Aumentar el valor máximo de este límite de recursos requiere ejecutar el servidor como raíz o en la declaración de inicio de inicialización. Esta restricción se aplicará al proceso derivado de la solicitud del servicio de proceso hijo de Apache, no al proceso hijo de Apache en sí. Este rango incluye scripts CGI y comandos de ejecución SSI, pero no incluye todos los procesos derivados del proceso principal de Apache. Por ejemplo, el registro de la tubería. 6. La directiva RLimitMEM
RLimitMEM se utiliza para limitar el número máximo de bytes de memoria ocupados por los procesos generados por el proceso hijo de Apache. El límite de recursos de memoria se expresa como el número de bytes por proceso. Su sintaxis es: RLimitMEM Bytes | Max [Bytes | Max], tampoco define un valor predeterminado, utilizando los valores predeterminados del sistema operativo. El primer parámetro establece el límite de recursos flexibles para todos los procesos, y el segundo parámetro establece el límite de recursos máximo. Ambos parámetros se pueden establecer en un valor o "max" para indicar que la configuración es el máximo permitido por el sistema operativo. Aumentar el valor máximo de este límite de recursos requiere ejecutar el servidor como raíz o en la declaración de inicio de inicialización. Esta restricción se aplicará al proceso derivado de la solicitud del servicio de proceso hijo de Apache, no al proceso hijo de Apache en sí. Este rango incluye scripts CGI y comandos de ejecución SSI, pero no incluye todos los procesos derivados del proceso principal de Apache. Por ejemplo, el registro de la tubería. 7. La directiva RLimitNPROC
RLimitNPROC se utiliza para limitar la cantidad de procesos generados por los procesos generados por el proceso hijo de Apache. Los límites de proceso controlan el número de procesos por usuario. Su sintaxis es: RLimitNPROC number | Max [numero | Max], tampoco define un valor predeterminado, utilizando los valores predeterminados del sistema operativo. El primer parámetro establece el límite de recursos flexibles para todos los procesos, y el segundo parámetro establece el límite de recursos máximo. Ambos parámetros se pueden establecer en un valor o "max" para indicar que la configuración es el máximo permitido por el sistema operativo. El aumento de este límite máximo de recursos requiere ejecutar el servidor como una cuenta de administrador o en una declaración de inicio de inicialización. Esta restricción se aplicará al proceso derivado de la solicitud del servicio de proceso hijo de Apache, no al proceso hijo de Apache en sí. Este rango incluye scripts CGI y comandos de ejecución SSI, pero no incluye todos los procesos derivados del proceso principal de Apache. Por ejemplo, el registro de la tubería. Si el proceso CGI no se inicia con el uid del servidor web, esta directiva limitará la cantidad de procesos que el propio servidor puede crear. Esta situación se registrará como "no se puede bifurcar" en el error_log. 8. La directiva ThreadStackSize
ThreadStackSize se usa para manejar el tamaño de pila (bytes) que usan los hilos conectados por el cliente. Su sintaxis es: Tamaño de ThreadStackSize, que por defecto es 65 536 en sistemas NetWare, es igual a los valores predeterminados del sistema operativo en otros sistemas. La directiva ThreadStackSize establece el tamaño máximo de pila (en bytes) permitido para subprocesos que manejan conexiones de clientes, incluyendo módulos de llamada para ayudar con el procesamiento. En la mayoría de los casos, el tamaño de pila predeterminado del sistema operativo es razonable, pero en algunos casos, este valor debe ajustarse. Por ejemplo, en una plataforma con un tamaño de pila predeterminado más pequeño (como HP-UX), Apache podría fallar al usar algunos módulos de terceros que requieren un tamaño de pila más grande. Este problema se puede resolver configurando ThreadStackSize en un valor mayor. Este ajuste solo debe ser necesario si lo solicita explícitamente un proveedor de módulos de terceros o los diagnósticos para determinar que el espacio de la pila es demasiado pequeño como para causar un bloqueo. En algunas plataformas, si el espacio de pila predeterminado es mayor que el espacio requerido para que se ejecute el servidor, al reducir el valor de ThreadStackSize a menos del valor predeterminado del sistema operativo, aumenta el número máximo de subprocesos que se pueden generar en cada proceso. Este tipo de ajuste solo se debe utilizar en un entorno de prueba y probar completamente todos los procesos del servidor porque el procesamiento de algunas solicitudes poco frecuentes requiere un gran espacio de pila. Un pequeño cambio en la configuración del servidor puede hacer que la configuración actual de ThreadStackSize sea inapropiada.
Copyright © Conocimiento de Windows All Rights Reserved