Apache TRACE-Methode auf Port 80 nicht deaktiviert

Apache TRACE-Methode auf Port 80 nicht deaktiviert

Ich habe mehrere Methoden ausprobiert, um die TRACE-Methode auf meinem Apache-Webserver zu deaktivieren, aber aus irgendeinem Grund ist sie für Port 443 deaktiviert, aber nicht für Port 80.

Ich habe die folgende Anweisung oben in meiner Konfigurationsdatei hinzugefügt:

TraceEnable off

Anschließend wurde Folgendes zu den VirtualHost-Blöcken :80 und :443 hinzugefügt:

RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|DELETE)
RewriteRule .* - [F]

curl --insecure -v -X TRACEWenn ich auf meinem Webserver ein ausführe , erhalte ich korrekterweise ein 403 Forbiddenfür https, aber ein 200 OKfür http. Es ist vielleicht wichtig zu beachten, dass ich eine permanente Umleitung für alle http-Verbindungen zu https habe. Dieser Webserver läuft auch als Reverse-Proxy. Bearbeiten: Ich habe versucht, die permanente Umleitung in eine mod_rewriteRegel zu ändern, aber der curl TRACETest schlägt trotzdem fehl.

Konfigurationsdatei:

NameVirtualHost XX.XX.XX.XX:80
NameVirtualHost XX.XX.XX.XX:443

SSLSessionCache "shm:logs/ssl_scache(512000)"

Timeout 2400
ProxyTimeout 2400
ProxyBadHeader Ignore

FileETag None

Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
Header always append X-Frame-Options SAMEORIGIN
Header set X-XSS-Protection "1; mode=block"

TraceEnable off

<VirtualHost XX.XX.XX.XX:80>
   ServerName www.xxxxxxx.com:80
   ServerAlias www.xxxxxx.com
   ServerAdmin localhost@root
   RewriteEngine On
   RewriteCond %{HTTPS} !=on
   RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R]
   RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|DELETE)
   RewriteRule .* - [F]


   ErrorLog "|/usr/sbin/rotatelogs /etc/httpd/logs/error.%Y-%m-%d.log 86400"
   CustomLog "|/usr/sbin/rotatelogs /etc/httpd/logs/access.%Y-%m-%d.log 86400" common

   #Redirect permanent / https://www.xxxxxxx.com:443/
</VirtualHost>

<VirtualHost XX.XX.XX.XX:443>
    Options Includes FollowSymLinks MultiViews
    ServerName www.xxxxxxxx.com:443
    ServerAlias www.xxxxxxxx.com
    ServerAdmin localhost@root

    SSLProxyEngine On
    SSLEngine On
    SSLProtocol all -SSLv2 -SSLv3
    SSLHonorCipherOrder On
    SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
"/etc/httpd/ssl_certs/hdsisd/Apache_Plesk_Install.txt"
    SSLCertificateFile "/etc/httpd/ssl_certs/xxxxx.crt"
    SSLCertificateKeyFile "/etc/httpd/ssl_certs/server.key"
    SSLCertificateChainFile "/etc/httpd/ssl_certs/Apache_Plesk_Install.txt"

    ErrorLog "|/usr/sbin/rotatelogs /etc/httpd/logs/error.%Y-%m-%d.log 86400"
    CustomLog "|/usr/sbin/rotatelogs /etc/httpd/logs/access.%Y-%m-%d.log 86400" common

    RewriteEngine On
    RewriteCond %{THE_REQUEST} !HTTP/1.1$
    RewriteRule .* - [F]
    RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|DELETE)
    RewriteRule .* - [F]
    ProxyPreserveHost On
    <Location />
        ProxyPass https://XX.XX.XX.XX/ Keepalive=On
        ProxyPassReverse https://XX.XX.XX.XX/
        Order allow,deny
        Allow from all
    </Location>
</VirtualHost>

Antwort1

Ich weiß, dass ich damit ziemlich spät dran bin. Aber hier ist die Antwort für jemanden, der sie in Zukunft vielleicht brauchen könnte. Das Problem liegt an der Konfigurationsdatei. Wenn Sie bemerken, dass der Fragesteller die folgenden Umleitungsbedingungen verwendet:

RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R]

um den HTTP-Verkehr auf HTTPS umzuleiten. Dies zwingt den Server, auf das HTTPS-Protokoll umzuleiten und alles unterhalb dieser Zeilen zu ignorieren. Daher kann er die Trace-Methode für seine HTTP-Anfrage nicht deaktivieren. Die Lösung besteht also darin, den Trace-Kommentar wie folgt über die Umleitung zu verschieben:

RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|DELETE)
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R]
RewriteRule .* - [F]

verwandte Informationen