Mod_headers do Apache não funcionam

3

Eu tenho um aplicativo Rails servido usando o Apache 2 e o Phusion Passenger. Como medida de segurança, estou tentando suprimir todos os cabeçalhos HTTP relacionados ao servidor. Eu desliguei com sucesso os Apache, mas estou tendo problemas para usar mod_headers para suprimir os Passenger. Eu ativei mod_headers usando o comando a2enmod e reiniciei o processo do Apache, mas os cabeçalhos X-Powered-By e X-Runtime ainda aparecem.

Este é o meu arquivo vhost:

<VirtualHost *:80>

  ServerAdmin [email protected]
  ServerName  example.com
  ServerAlias www.example.com

  DocumentRoot /home/deploy/public_html/railsapp/current/public

  LogLevel warn
  ErrorLog /home/deploy/public_html/railsapp/shared/log/error.log
  CustomLog /home/deploy/public_html/railsapp/shared/log/access.log combined

  # Suppress Phusion Passenger HTTP headers
  <Location *>
    <IfModule mod_headers.c>
      Header unset X-Runtime
      Header unset X-Powered-By
    </IfModule>
  </Location>
</VirtualHost>
  • O que estou fazendo de errado?
por John Topley 01.08.2009 / 20:31

3 respostas

4

A partir dos documentos mod_headers :

As diretivas fornecidas pelos mod_headers podem ocorrer em praticamente qualquer lugar dentro da configuração do servidor. Eles são válidos nas seções principal de configuração do servidor e host virtual, dentro e seções, e dentro dos arquivos .htaccess.

Se você quiser que isso se aplique a todo o vhost, por que colocá-lo dentro de <Location> tags? Basta colocar as diretivas dentro da configuração principal do vhost.

<VirtualHost *:80>

  ServerAdmin [email protected]
  ServerName  example.com
  ServerAlias www.example.com

  DocumentRoot /home/deploy/public_html/railsapp/current/public

  LogLevel warn
  ErrorLog /home/deploy/public_html/railsapp/shared/log/error.log
  CustomLog /home/deploy/public_html/railsapp/shared/log/access.log combined

  <IfModule mod_headers.c>
    Header unset X-Runtime
    Header unset X-Powered-By
  </IfModule>

</VirtualHost>

Eu não testei este pedido de desculpas antecipadamente se estiver incorreto.

    
por 02.08.2009 / 11:44
1

Eu não tenho uma instalação do Apache para a mão, mas <Location *> parece suspeito. Os docs dizem:

The URL may use wildcards. In a wild-card string, ? matches any single character, and * matches any sequences of characters. Neither wildcard character matches a / in the URL-path.

Eu suspeito que você não esteja combinando nenhum URL. Experimente:

<Location />
  <IfModule mod_headers.c>
    Header unset X-Runtime
    Header unset X-Powered-By
  </IfModule>
</Location>
    
por 01.08.2009 / 23:40
1

Deixando de lado que ainda é realmente fácil determinar o servidor, pelo menos para executar versões mesmo sem cabeçalhos, e os "script kiddies" tentam todos os ataques e não se preocupam em verificar as versões de qualquer maneira .

O que acontece se você remover a linha, apenas deixe os comandos.

Gostaria de saber se está sendo carregado, tente adicionar um cabeçalho estático para verificar.

    
por 02.08.2009 / 14:20