Informática Numaboa
Cuidado com a configuração do Apache
Qui 3 Dez 2009 21:47 |
- Detalhes
- Categoria: Dicas Gerais
- Atualização: Sábado, 05 Dezembro 2009 14:03
- Autor: vovó Vicki
- Acessos: 3747
Ontem recebi um email do Edipinho avisando que havia uma brecha de segurança no meu site. Graças a esta alma caridosa foi possível fechar este buraco negro que podia tragar a Aldeia Numaboa, meu site predileto. Acompanhe o que aconteceu e como foi possível afastar esta ameaça depois do aviso providencial. Talvez sirva de exemplo
O alerta
O bom samaritano Edipinho escreveu dizendo que, quando acessou o endereço http://www.numaboa.info/joomla.conf, o dito arquivo de configuração apareceu inteirinho no seu navegador. Resolvi dar uma checacada. Realmente, o tal do endereço, apontando para o arquivo joomla.conf, mostrava o arquivo na sua totalidade. Ainda bem que era um arquivo antigo, esquecido no meu servidor e que não servia mais para nada, mas isto não justifica o erro. Testei então o endereço http://www.numaboa.info/ e o resultado foi a apresentação de um diretório que NÃO deveria ser de domínio público. Xiiiii, a caca era pior do que parecia no início!
Onde está o furo?
Tenho vários domínios apontando para o "numaboa", entre eles, o numaboa.info. Quando configurei o Apache, criei vários hosts virtuais. Justamente no host numaboa.info cometi um erro aos especificar o diretório de acesso, indicando um que ficava acima do diretório público. Só para exemplificar, aqui vai o trecho do arquivo de configuração /etc/apache/httpd.conf (Apache 1.3) ou o /etc/apache2/sites-enabled/nome.arquivo (Apache 2.0). O nome.arquivo é o nome que se quiser dar para o arquivo de configuração do host virtual - no meu caso usei numaboa.info:
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin admin@numaboa.com.br DocumentRoot /www/numaboa.com ServerName www.numaboa.info RewriteEngine On CustomLog /www/numaboa.com/logs/access_log common </VirtualHost>
Esta é a configuração padrão de um host virtual. A grande caca estava na diretiva DocumentRoot que apontava um diretório que não é para ser público
Identificado o erro, toca corrigi-lo:
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin admin@numaboa.com.br DocumentRoot /www/numaboa.com/public_html ServerName www.numaboa.info ErrorLog /www/numaboa.com/logs/error_log CustomLog /www/numaboa.com/logs/access_log common </VirtualHost>
Listagem de diretório
Mas tinha mais uma coisa que me preocupou: o Apache estava listando diretórios coisa que ele NÃO deveria fazer. A diretiva que diz se os diretórios devem ser listados ou não é Option. Ela pode ser usada em cada um dos hosts virtuais ou ser configurada para atuar em nível de servidor. Para manter o exemplo, vou completar o host virtual usado como exemplo:
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin admin@numaboa.com.br DocumentRoot /www/numaboa.com/public_html ServerName www.numaboa.info ErrorLog /www/numaboa.com/logs/error_log CustomLog /www/numaboa.com/logs/access_log common Options -Indexes </VirtualHost>
Caso você queira fazer a configuração em nível de servidor, o que afeta todos os diretórios indiscriminadamente, procure a diretiva Options que esteja fora de uma seção <VirtualHost>. O default que vem com o Apache costuma ser:
Options Indexes FollowSymLinks MultiViews
Troque por:
Options -Indexes FollowSymLinks MultiViews
Se você não quiser mexer na configuração do Apache, ainda resta a possibilidade de criar um arquivo .htaccess e colocá-lo no diretório raiz:
Options -Indexes
O roto falando do esfarrapado
Espero que a minha barbeiragem sirva para chamar atenção para pelo menos uma coisa: antes de botar um Apache no ar, revise as configurações mais de uma vez. Depois teste TODOS os domínios (hosts virtuais) configurados para ter certeza de que estão apontando para o local certo. Se isto não funcionar, pelo menos comemore com o bom samaritano que se dispuser a lhe mandar um aviso.
À sua saúde, Edipinho! :chop: