Método Apache TRACE não desabilitado na porta 80

Método Apache TRACE não desabilitado na porta 80

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 TRACEno meu servidor web, recebo corretamente um 403 Forbiddenpara https, mas um 200 OKpara 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_rewriteregra e ainda falhou no curl TRACEteste.

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]

informação relacionada