De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


Hardening do Apache

Colaboração: Alexandro Silva

Data de Publicação: 18 de December de 2008

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 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

Download Mod_Security

Instalação e Compilação

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.

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)

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Alexandro Silva