Eu tentei vários métodos para desabilitar o método TRACE em meu servidor Apache, mas por algum motivo ele está desabilitado para a porta 443, mas não para a porta 80.
Adicionei a seguinte diretiva ao topo do meu arquivo de configuração:
TraceEnable off
Em seguida, adicionei o seguinte aos blocos :80 e :443 VirtualHost:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|DELETE)
RewriteRule .* - [F]
Quando executo um curl --insecure -v -X TRACE
no meu servidor web, recebo corretamente um 403 Forbidden
para https, mas um 200 OK
para http. Pode ser importante observar que tenho um redirecionamento permanente para todas as conexões http para https. Este servidor web também está rodando como proxy reverso. Editar: tentei alterar o redirecionamento permanente para uma mod_rewrite
regra e ainda falhou no curl TRACE
teste.
Arquivo de configuração:
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>
Responder1
Eu sei que estou muito atrasado nisso. Mas aqui está a resposta para alguém que possa precisar disso no futuro. O problema é por causa do arquivo de configuração, se você notar que o questionador está usando as seguintes condições de redirecionamento:
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R]
para redirecionar o tráfego HTTP para HTTPS e isso força o servidor a redirecionar para o protocolo HTTPS e ignora tudo abaixo dessas linhas. Portanto, ele não consegue desabilitar o método de rastreamento em sua solicitação HTTP. Portanto, a correção é mover o comentário de rastreamento acima do redirecionamento da seguinte forma:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|DELETE)
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R]
RewriteRule .* - [F]