Protegendo webservers(apache) com o mod_security no FreeBSD



Porque usar ?

Atualmente com o aumento de falhas de segurança, a velocidade nas correções dos bugs em um servidor é muito importante para garantir seu emprego. Não podemos perder tempo analisando aplicações web feitas por programadores iniciantes que estão armazenadas em um webserver de nossa responsábilidade. Imagine se um estágiario de sua empresa for acionado pelo seu gerente para fazer um website em PHP com destinação qualquer e que utilize o mysql como base de informações. Para garantir a segurança esse estágiario deve ser um bom programador php para saber proteger as variaveis que trabalham com a base de dados ou então os kiddies gostarão de utilizar tecnicas de SQL INJECT conhecidas para dropar suas tabelas e ou então fazer um defacer nesse website. Seu gerente não vai querer saber que o problema foi numa programação injenua do estágiario , então é bom se preparar para sua demissão. A solução é instalar o mod_security em seu servidor web e inserir regras para segurar suas aplicações web de ataques conhecidos e mais utilizados por script kiddies.

Instalando:

Antes de iniciar é importante que o apache esteja instalado e funcional. Instale via ports:

Entre no diretório:
cd /usr/ports/www/mod_security/

Compile e instale :
make ; make install

Após isso, verifique a existência da seguinte linha dentro do seu /usr/local/etc/apache/httpd.conf :

LoadModule security_module libexec/apache/mod_security.so

Configurando:

Pronto, após instalado é so criar as regras. Por exemplo, vou aplicar algumas regras básicas segue:

<IfModule mod_security.c>
SecFilterEngine On
SecFilterDebugLog /var/.../modsecurity_auditoria.log
SecFilter "'" redirect: http://security.xx.com/aviso.htm
</IfModule> SecServerSignature "Microsoft-IIS/5.0"

Agora é só restartar o apache.

Nesse exemplo acima respectivamente você ativou o mod_security, protegeu a aplicação contra algumas técnicas de SQL INJECT , logando tudo em modsecurity_auditoria.log e mudando a assinatura do apache.

Existe diversas formas de configuração, inclusive a integração com regras do snort, nesse documento não irei detalhar muito, mas abaixo irei passar links interessantes que falam muito bem sobre o assunto.

Uma coisa interessante e que só conseguiamos efetuar baixando o codigo do apache e mudando o version.h, é que podemos mudar a assinatura do apache para qualquer nome inserindo o seguinte:

SecServerSignature "Microsoft-IIS/5.0"

Então se um usuário qualquer scaneia seu servidor e ver o serviço :

http://xxxxx.xxx.com was running Microsoft-IIS on FreeBSD

Se for amador, entao ele ficará um pouco confuso e procurará por ferramentas para explorar vunerábilidades em Microsoft-IIS. Com isso você já retirar de sua lista os invasores amadores. Isso é interessante, porém vale lembrar que não mantem ninguem seguro, o interessante é manter os serviços atualizados e monitorados sempre. Outra coisa interessante é que você pode redirecionar para um determinada página caso o usuário seja barrado em algum filtro, observe : SecFilter "'" redirect:http://security.xx.com/aviso.htm Caso algum usuário seja barrado nesse filtro ele será redirecionado para essa página, nela você pode por mensagens personalizadas, exemplo:

"Tentativa sem sucesso. Você esta sendo logado" etc etc

Finalizando:

Bem, agora você não precisa ficar analisando códigos web de terceiros para ver se ele compromete seu servidor. Vale lembrar que as regras aqui utilizadas são básicas, somente para demonstrar a funcionalidade do mod_security, existe uma infinidade de filtros. Qualquer dúvida envie um e-mail e ficarei grato em ajudar.

IRC: /server irc.freenode.org /join #bsdsecurity
A menos que especificado de outra maneira, todos os documentos e textos sao protegidos sob licenca BSD - Veja a licenca para mais detalhes

ultima revisao: 25/08/2004
Clamav
MTA Open BSD
PF Open BSD
Read Bible Online