Informática Numaboa

Cuidado com a configuração do Apache

Qui

3

Dez

2009


21:47

  • Imprimir
(1 voto de 1.00) 


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 smile

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 sad2

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:

Логофет Вадим Геннадьевичсковорода оладница биол отзывыкомпания полигон отзывырейтинг планшетноутбук acerкак правильнолобановский александр