![El método Apache TRACE no está deshabilitado en el puerto 80](https://rvso.com/image/747355/El%20m%C3%A9todo%20Apache%20TRACE%20no%20est%C3%A1%20deshabilitado%20en%20el%20puerto%2080.png)
Probé varios métodos para deshabilitar el método TRACE en mi servidor web Apache, pero por alguna razón está deshabilitado para el puerto 443 pero no para el puerto 80.
Agregué la siguiente directiva en la parte superior de mi archivo de configuración:
TraceEnable off
Luego agregó lo siguiente a los bloques VirtualHost :80 y :443:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|DELETE)
RewriteRule .* - [F]
Cuando ejecuto un curl --insecure -v -X TRACE
en mi servidor web, obtengo correctamente un 403 Forbidden
para https, pero un 200 OK
para http. Puede ser importante tener en cuenta que tengo una redirección permanente para todas las conexiones http a https. Este servidor web también se ejecuta como proxy inverso. Editar: intenté cambiar la redirección permanente a una mod_rewrite
regla y todavía no pasa la curl TRACE
prueba.
Archivo de configuración:
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>
Respuesta1
Sé que llego bastante tarde a esto. Pero aquí está la respuesta para alguien que pueda necesitarla en el futuro. El problema se debe al archivo de configuración, si observa que el interlocutor está utilizando las siguientes condiciones de redireccionamiento:
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R]
para redirigir el tráfico HTTP a HTTPS y esto obliga al servidor a redirigir al protocolo HTTPS e ignora todo lo que se encuentra debajo de estas líneas. Por lo tanto, no puede desactivar el método de seguimiento en su solicitud HTTP. Entonces, la solución es mover el comentario de seguimiento encima de la redirección de esta manera:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK|OPTIONS|DELETE)
RewriteCond %{HTTPS} !=on
RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [R]
RewriteRule .* - [F]