Httpd LimitRequestFieldSize wird nicht berücksichtigt

Httpd LimitRequestFieldSize wird nicht berücksichtigt

Ich habe ein Problem damit, httpd so zu konfigurieren, dass große SPNEGO-Authentifizierungsheader akzeptiert werden. Die Anforderung funktioniert einwandfrei mit Autorisierungsheaderzeilen von bis zu mindestens 5674 Bytes, bricht jedoch bei Autorisierungsheadern von mehr als 6178 Bytes mit der folgenden Antwort ab:

<!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>

Und der folgende Fehler im Serverprotokoll (Debugebene)

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

Hier ist ein Auszug der Server-Infoseite, die wir aktiviert haben, um sicherzustellen, dass die LimitRequestFieldSize hoch genug war

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

Der Server läuft mit RHEL 6.7 und einem Standard-HTTPD-Server.

$ 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"

Antwort1

Auf meiner Ubuntu 18.04 LTS-Maschine mit Apache 2.4 habe ich die Datei geändert:

/etc/apache2/conf-available/httpd.conf

laut den Dokumenten unterhttps://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

und den Server neu gestartet. Vielleicht möchten Sie an den Einstellungen herumfummeln

Antwort2

Bearbeiten Sie Ihre virtuellen Hosts und überprüfen Sie die Beschränkungen hinsichtlich der Anforderungsgröße.

Sie können die Standardwerte in httpd.h überprüfen (z. B. DEFAULT_LIMIT_REQUEST_FIELDSIZE).

Beispiel :

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

Weitere Informationen finden Sie unter:https://httpd.apache.org/docs/2.4/fr/mod/core.html

Antwort3

Wenn Sie Ihre LimitRequest-Direktiven in Ihre Serverkonfiguration einfügen, müssen diese Anweisungen vor Ihrer VirtualHost-Konfiguration eingefügt werden.

verwandte Informationen