Httpd LimitRequestFieldSize no se tiene en cuenta

Httpd LimitRequestFieldSize no se tiene en cuenta

Tengo un problema al configurar httpd para aceptar encabezados de autenticación SPNEGO grandes. La solicitud funciona bien con una línea de encabezado de Autorización de hasta al menos 5674 bytes, pero se rompe con un encabezado de Autorización de más de 6178 bytes con la siguiente respuesta:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Size of a request header field exceeds server limit.</p>
</body></html>

Y el siguiente error en el registro del servidor (nivel de depuración)

[Thu Aug 23 07:26:31 2018] [error] [client x.x.x.x] request failed: error reading the headers

Aquí hay un extracto de la página de información del servidor que hemos activado para garantizar que LimitRequestFieldSize sea lo suficientemente alto.

129: LimitRequestBody 52428800
130: LimitRequestFields 50
131: LimitRequestFieldsize 40960
132: LimitRequestLine 40960

El servidor ejecuta RHEL 6.7 con el servidor httpd estándar

$ httpd -V
Server version: Apache/2.2.15 (Unix)
Server built:   Mar  3 2015 12:06:14
Server's Module Magic Number: 20051115:25
Server loaded:  APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture:   64-bit
Server MPM:     Prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/prefork"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_LOCKFILE="logs/accept.lock"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

Respuesta1

En mi máquina Ubuntu 18.04 LTS con Apache 2.4 modifiqué el archivo:

/etc/apache2/conf-disponible/httpd.conf

según los documentos dehttps://httpd.apache.org/docs/2.4/mod/core.html

# https://askubuntu.com/questions/340792/size-of-a-request-header-field-exceeds-server-limit-due-to-many-if-none-match-va
# default is 8k see https://httpd.apache.org/docs/2.4/mod/core.html
LimitRequestFieldSize 32768
# default is 100 
LimitRequestFields 200

y reinicié el servidor. Es posible que desees jugar con la configuración.

Respuesta2

Edite sus hosts virtuales y revise la limitación sobre el tamaño de la solicitud.

puede verificar los valores predeterminados en httpd.h (DEFAULT_LIMIT_REQUEST_FIELDSIZE por ejemplo)

ejemplo :

<VirtualHost ...>
    ServerName www.mysite.com
    ...
    #HTTP Request
    LimitRequestFieldSize 32768
    LimitRequestFields 200 
    LimitXMLRequestBody 0
    ...
</VirtualHost>

Ver más en :https://httpd.apache.org/docs/2.4/fr/mod/core.html

Respuesta3

Si coloca sus directivas LimitRequest en la configuración de su servidor, esas directivas deben insertarse antes de su configuración de VirtualHost.

información relacionada