![Apache TRACE-Methode auf Port 80 nicht deaktiviert](https://rvso.com/image/747355/Apache%20TRACE-Methode%20auf%20Port%2080%20nicht%20deaktiviert.png)
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 TRACE
Wenn ich auf meinem Webserver ein ausführe , erhalte ich korrekterweise ein 403 Forbidden
für https, aber ein 200 OK
fü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_rewrite
Regel zu ändern, aber der curl TRACE
Test 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]