Dando continuidade ao assunto segurança Web, onde já publique como habilitar o SSL e como fazer o redirect de http para https, agora mostro como fazer um hardening ( endurecimento ) deste grande webserver.
Umas das primeiras coisas a fazer após a instalação do Apache ou de qualquer serviço é limitar as opções de acesso. No caso do Apache faremos isso editando o arquivo /etc/apache2/sites-available/default.
Verifique a seção abaixo:
Options FollowSymLinks
AllowOverride None
Esta seção controla como o Apache tratará o diretório raiz do sistema de arquivos e todos os arquivos contidos nele.
Edite esta seção adcionando as seguintes linhas:
Order Deny,Allow
Deny from all
Options None
AllowOverride None
Isto fará com que o Apache não exiba qualquer arquivo do sistema de arquivos, não permitindo opções especiais (como symlinking, includes, ou scripts cgi), nem que sobreescrevam os arquivos .htaccess nos diretórios. No entanto, uma vez que queremos que o Apache acesse arquivos a partir do diretório /var/www/ , nós precisamos editar a seção abaixo:
Options FollowSymLinks MultiViews
Order allow,deny
Allow from all
Isto permite que o Apache disponibilize páginas contidas em /var/www e removendo Indexes, isto significa que os usuários não serão capazes de acessar o conteúdo dos diretórios na web.
É necessário reiniciar o Apache para que as efetuar as mudanças.
Ocultando a versão do servidor
Agora iremos configurar o Apache para ocultar informações sobre o sistema. Estas informações surgem quando ocorre uma tela de erro. Como o exemplo abaixo:
Para ocultar as informações do sistema edite o arquivo /etc/apache2/apache2.conf. Mudando a seguinte linha:
ServerTokens Full
para
ServerTokens Prod
Reinicie o Apache e faça o teste acessando uma página que não existe.
Instalando o Mod_Security
O módulo de segurança, o mod_security, é um módulo do Apache que será instalado para bloquear o monitoramento de requisições e respostas HTTP tanto quanto a negação de pacotes suspeitos.
Inicialmente instale as dependências necessárias
aptitude install libxml2-dev apache2-prefork-dev
Para baixar o source do mod_security clique AQUI, existem também pacotes pré-compilados para várias distros AQUI.
Para baixar o pacote .deb clique AQUI.
Se você optou por baixar o source execute os seguintes passos para compilar o módulo
tar zxvf modsecurity-apache_2.5.7.tar.gz
cd modsecurity-apache_2.5.7/apache2/
./configure && make && make install ( como root! )
Configurando o Apache
Agora acesse o diretório /etc/apache2/mods-available, acesse o arquivo modsecurity2.load e adicione as seguintes linhas:
LoadFile /usr/lib/libxml2.so
LoadModule security2_module /usr/lib/apache2/modules/mod_security2.so
Agora vá para um diretório acima, no caso o mods-enabled e crie um link simbólico para os arquivo editado anteriormente e para o arquivo mod_unique_id:
cd ../mods-enabled
ln -s ../mods-available/modsecurity2.load
ln -s ../mods-available/unique_id.load
Após reiniciar o Apache, verifique o aquivo de log que está em /var/log/apache2/error.log. Deverá existir a seguinte linha:
[Wed Dec 03 16:54:25 2008] [notice] ModSecurity for Apache/2.5.2 (http://www.modsecurity.org/) configured.
Configurando o Mod_security
Primeiro, as regras necessárias para inciar o funcionamento deste módulo encontra-se no diretório /modsecurity-apache_2.5.7/rules, copie estas regras para o diretório /var/lib/modsecurity/
cp modsecurity_crs_* /var/lib/modsecurity/
Informe ao Apache onde encontram-se a regras criando o arquivo /etc/apache2/conf.d/modsecurity2.conf e adicionando as seguintes linhas:
Include /var/lib/modsecurity/*.conf
Reinicie o Apache para efetivar as mudanças
Testando o Mod_security
Agora que o módulo já está configurado e rodando podemos realizar um teste simples usando o wget:
wget -O – -U “ngsecurity analyzer” http://
Se o mod_security estiver funcionando, será informado o erro 404:
alexos@cypher:~$ wget -O – -U “ngsecurity analyzer” http://
–19:13:17– http://
=> `-‘
Resolving meu_webtestserver… X.X.X.X
Connecting to meu_webtestserver|X.X.X.X|:80… connected.
HTTP request sent, awaiting response… 404 Not Found
19:13:17 ERROR 404: Not Found.
No servidor web execute o comando abaixo
tail /var/log/apache2/debug.log
ou
tail /var/log/apache2/audit.log
Vejam o que apareceu para mim!
[03/Dec/2008:17:18:17 –0500] [matrix/sid#855d8f0][rid#87357f8][/][1]
Access denied with code 404 (phase 2). Pattern match “(?:b(?:m(?:ozilla/4.0
(compatible)|etis)|ngsecurity analyzer|pmafind)b|n(?:-stealth|sauditor|
essus|ikto)|b(?:lack ?widow|rutus|ilbo)|(?:jaascoi|paro)s|webinspect|.nasl)” at
REQUEST_HEADERS:User-Agent. [file “/var/lib/modsecurity/modsecurity_crs_35_bad_robots.conf”]
[line “19”] [id “990002”] [msg “Request Indicates a Security Scanner Scanned the Site”]
[severity “CRITICAL”] [tag “AUTOMATION/SECURITY_SCANNER”]
Porque surgiu na expressão regular acima o “ngsecurity analyzer”, a requisição para o arquivo foi negada, mostrando que o mod_security está funcionando.
Então é isso moçada! Num próximo artigo falarei sobre Hardening do S.O.
* Hardening – É um processo de mapeamento das ameaças, mitigação dos riscos e execução das atividades corretivas – com foco na infra-estrutura e objetivo principal de torná-la preparada para enfrentar tentativas de ataque. ( Wikipedia )
Fonte:
Debian Clusters
[…] a seção abaixo: Options FollowSymLinks AllowOverride None Esta seção cont Veja o post completo clicando aqui. Post indexado de: […]
O grande problema do mod_security é que terá que moldá-lo depois. Não é instalar e esquecer. E pode anotar, aprender a moldá-lo está longe de ser trivial. No começo o número de falsos positivos é imenso, muitos sites pararão de funcionar corretamente. Muitos sysadmin ficam frustrados com isso e acabam por desativá-lo.
Gostei.
Uma otima dica.
Irei implementar em meu site.
Valeu ae Alex
[…] assunto já foi tratado anteriomente porém quero atualizar alguns […]