domingo, 31 de agosto de 2014

Introdução - ModSecurity




Para começar vou abordar a instalação do mod_security, que é um firewall de aplicação web, tambem conhecido como WAF.
O mod_security é hoje suportado pela equipe da SpiderLabs (http://blog.spiderlabs.com/) , blog sustentado pela Truswave, uma das gigantes da segurança.
O mod_security é um WAF opensource que na minha opinião não perde nada para os proprietarios. Ele possui algumas regras pagas, desenvolvidas pelo pessoal do SiperLabs e possui regras disponiveis de forma gratuita no site da OWASP, mas, a nossa intenção não é pegar nada pronto e sim entender como a ferramenta funciona, para criarmos nossas proprias regras.


Nesse primeiro artigo, iremos abordar o conceito, funcionamento e instalação do mod_security, ja no proximo vamos ver a integração dele com os dois principais web servers open source.
Vamos começar listando onde o mod_security pode nos ajudar:

- Visualização em tempo real dos acessos e das tentativas de burlar nossa aplicação.
- Virtual patching, protegendo nossa aplicação ate que a equipe de developers possa corrigir uma possivel falha.
- Log de todo o trafego HTTP
- Avaliação continua da segurança, atraves de testes de segurança e analise dos logs, pode-se saber se nossa aplicação esta vulneravel, antes de um terceiro.
- Hardening de aplicação web.

Opções de instalação

O mod_security pode ser instalado direto no servidor web ou pode ser usado como proxy reverso.

- No servidor web, seria a melhor escolha pra quem ja tem sua arquitetura de rede e não deseja alterar. O ponto fraco dessa escolha seria a administração dos recursos, ja que o mod_security iria compartilhar desses recursos junto com o sistema.
- Como proxy reverso, na minha opinião a melhor escolha, pois, voce esta isolando de forma completa a sua rede e não compromete os recursos do servidor web.

Principais Caracteristicas
- Parsing
- Buffering
Na instalação padrão, o mod_security faz buffer do request e do response, podendo assim alterar ambos antes de concluir a ação
- Logging
Todas as transações são logadas, para que se possa fazer uma analise, caso seja preciso
- Rule Engine
As rules, nos podemos dizer que são o coração do mod_security, pois, são as responsaveis pelas execuções dos bloqueios.
Um exemplo de rule: SecRule ARGS "<script>" log,deny,status:404

As Regras

Por padrão as regras seguem a seguinte sequencia:
SecRule VARIAVEIS OPERADOR AÇOES

Variaveis, vão dizer ao mod_security onde procurar. Em nosso exemplo foi usado a variavel ARGS, que diz ao mod_security para olhar todo os parametros de request
Operador, vai dizer ao mod_security, o que procurar. Em nosso exemplo temos a string JS <script>, usado em ataques XSS.
Ações, vai dizer ao mod_security a ação que deve tomar, caso a condição anterior for verdadeira. Em nosso exemplo o mod_security vai registrar em log, vai negar o acesso e dar como resposta o status 404.

Fluxo

Podemos dividir as regras em 5 fases, onde em cada fase especifica, o mod_security executa a regra definida para a mesma.
1- Request headers
2- Request body
3- Response headers
4- Response body
5- Logging
- Nas fases de request o mod_security faz analise das requisições e aplica as regras de acordo com o que foi configurado, se é pra header ou pra body e depois repassa a requisição ao webserver
- Nas fases de response o mod_security faz a analise da resposta do webserver, a requisição enviada, tanto pra header quanto para body e depois repassa a resposta ao cliente.
- Na fase de logging, dizemos ao mod_security como queremos que as requisições e respostas sejam registradas no log.

Instalação ( A instalação é baseada em derivados RedHat)

Primeiro vamos instalar todas as dependencias
- yum install gcc make libxml2 libxml2-devel httpd-devel pcre-devel curl-devel

Para a instalação do mod_security, vamos usar o git (yum install git), e baixar a versão mais recente do projeto.
- git clone git://github.com/SpiderLabs/ModSecurity.git
- cd ModSecurity
- ./autogen.sh
- ./configure
- make
- make install


Pronto, finalizamos a nossa instalação. Napróximaa semana veremos como integrar o mod_security a webserver.

@l0c4lh05t 

Nenhum comentário:

Postar um comentário