ModSecurity: Firewall
OpenSource para Aplicações
Web (WAF)
Klaubert Herr da Silveira
Consultor em segurança
klaubert@gmail.com
OWASP
30/10/2009
Copyright © The OWASP Foundation
Permission is granted to copy, distribute and/or modify this document
under the terms of the OWASP License.
The OWASP Foundation
http://www.owasp.org
Agenda
1.
2.
3.
4.
Firewall de Aplicação Web (WAF);
ModSecurity;
Console do ModSecurity;
Implantação do ModSecurity;
OWASP
Firewall de Aplicação Web (WAF)
•
•
•
•
•
•
Firewall (camada 7) especializado em
aplicações Web;
Conhecem os protocolos da Web: HTTP/S
(Header, Cookies), HTML (POST, GET, Upload),
XML, SOAP, entre outros;
Efetivo mesmo com criptografia (SSL);
Ciente de sessão;
Implementados como software ou appliance;
Detecção e Bloqueio a ataques;
OWASP
Elementos de segurança para Web
Firewall
IPS
WAF
Controle de acesso
Algum
Algum
Sim
Detecção de protocolo HTTP
Algum
Sim
Sim
Bloqueio de DoS (sob HTTP)
Algum
Algum
Algum
Identificação de ataques Web
Não
Algum
Sim
Detecta ataques em sessão HTTP
(múltiplas requisições)
Não
Não
Sim
Suporte a tráfego criptografado (SSL)
Não
Não
Sim
Monitoração de erros do servidor web
Não
Não
Sim
Transcrição das sessões http(s)
Não
Algum
Sim
OWASP
Por que usar um WAF?
•
•
•
•
•
•
•
•
Bloqueio de ataques conhecidos;
Sites web: foco de ataques direto e indireto;
Correções rápidas/emergenciais;
Controle de mensagens de erro;
Controle customizável, por URL;
Log de ataques e de erros;
Monitoração de segurança;
PCI DSS 1.2 – requisito 6.6;
OWASP
PCI DSS 1.2
6.6 Verifique se um firewall de aplicativos da Web está
implementado diante dos aplicativos da Web voltados
ao público para detectar e impedir ataques baseados
na Web.
OWASP
Lembre-se
Um Firewall de Aplicação Web (WAF) é mais uma
camada de segurança, ele não é garantia de
segurança para as aplicações.
1. Design seguro;
2. Codificação segura;
3. Revisão do código;
4. Análise de vulnerabilidade;
5. Firewall de aplicação Web;
OWASP
WAF e o desenvolvedor web
•
•
•
•
Permite ao desenvolvedor ver o erro da
aplicação como o usuário recebeu;
Facilita a detecção de erros na aplicação;
Permite a criação de correções emergenciais;
Facilita a interação com a equipe de
segurança;
OWASP
ModSecurity







Firewall Open Source para Aplicações Web
Módulo do Apache (*nix ou Windows);
Diversos (e crescentes) recursos;
Muito flexível;
Conjunto de regras (Core Rules: um projeto
OWASP desde de Agosto/09);
Criado por Ivan Ristic, e agora pela Breach
Security;
Licenciamento duplo: GPL e comercial;
OWASP
Características do ModSecurity
•
Módulo para Apache
–
–
•
•
•
•
•
Embutido;
Proxy Reverso;
Modos: apenas detecção ou bloqueio;
Inspeciona o cabeçalho e corpo da requisição;
Inspeciona o cabeçalho e corpo da resposta;
Redução do vazamento de informação;
Definição de regras bastante
completa/complexa, usando RegExp e AhoCorasick;
OWASP
Características do ModSecurity (cont.)
•
•
•
•
•
•
•
•
Controle com GeoIP e RBL;
Normalização, decodificação;
Extensível: execução de scripts LUA
internamente ou scripts externos;
Log completo do tráfego (incluindo POST);
Pode inspecionar uploads (anti-vírus);
Alterar a resposta (Append/Prepend);
Validação de XML;
Ataques podem ser bloqueados,
redirecionados, logados etc;
OWASP
ModSecurity Core Rule Set (CRS)
•
•
•
•
460 regras (09/2009);
Otimizadas para performance;
Testes com tráfego real para garantir
qualidade;
Detecção genérica de ataques:
–
–
•
Melhor performance;
Menos updates;
Plug and play:
–
Alguns ajustes poderão ser necessários;
OWASP
ModSecurity Core Rule Set (CRS)
Categorias
•
Conformidade de protocolos:
–
–
–
–
•
Detecção de ataques:
–
–
•
Validação de requisições HTTP (RFC);
Anomalias do protocolo HTTP;
Restrições globais;
Política de uso;
Detecção de ataques genéricos;
Detecção de Trojans e Backdoors;
Outras:
–
–
Detecção de erros;
Proteção de XML;
OWASP
Fases de Processamento
1.
2.
3.
4.
5.
Request headers;
Request body;
Response headers;
Response body;
Logging;
OWASP
Fases de Processamento
1. Request headers;
POST /app/?id=123&pref=none HTTP/1.1
2.
Request body;
Host: 192.168.249.128
User-Agent:
Mozilla/5.0
(Windows; U; Windows NT 5.1; pt-BR; rv:1.9.1.3)
3.
Response
headers;
Gecko/20090824 Firefox/3.5.3 GTB5 FirePHP/0.3
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
4.
Response
body;
Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3
5.
Logging;gzip,deflate
Accept-Encoding:
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Cookie: NID=27=OBP_7aEMkW_20_VG3kk4P
Keep-Alive: 300
Connection: keep-alive
1.REQUEST_COOKIES
2.REQUEST_FILENAME
3.REQUEST_HEADERS
1.QUERY_STRING
2.REQUEST_PROTOCOL
3.REQUEST_METHOD
OWASP
Fases de Processamento
2.
Request body;
count=1&req0_type=i&req0_time=754341&req0_evtype=click&req0__sc=c
1.REQUEST_BODY
2.FILES_TMPNAMES (@inspectFile)
OWASP
Fases de Processamento
3.
Response headers;
HTTP/1.1 200 OK
Cache-control: must-revalidate
Content-Length: 6589
Connection: close
Content-Type: text/html;charset=utf-8
1.RESPONSE_HEADERS
2.RESPONSE_STATUS
3.RESPONSE_CONTENT_LENGTH
OWASP
Fases de Processamento
4.
Response body;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>
Test App
</title>
<link rel="search" href="/app" />
<link rel="help" href="/app" />
<link rel="alternate" href="/app" title="Plain Text" />
...
</body>
</html>
1.RESPONSE_BODY
OWASP
Fases de Processamento
5.
Logging
Message: Warning. Pattern match "^[\d\.]+$" at REQUEST_HEADERS:Host.
[file "/etc/httpd/modsecurity.d/modsecurity_crs_21_protocol_anomalies.conf"]
[line "60"] [id "960017"] [msg "Host header is a numeric IP address"] [severity
"CRITICAL"] [tag "PROTOCOL_VIOLATION/IP_HOST"]
Apache-Handler: mod_python
Stopwatch: 1253311105441030 1021989 (14209 19300 1018538)
Response-Body-Transformed: Dechunked
Producer: ModSecurity for Apache/2.5.7 (http://www.modsecurity.org/); core
ruleset/1.6.1.
Server: Apache/2.2.3 (Red Hat)
OWASP
Implantando o ModSecurity

•
Modo Embutido (local);
Baseado em rede (proxy reverso);
OWASP
Implantando o ModSecurity:
Modo Embutido (Local)
•
•
•
•
•
Somente para Apache (até o momento);
Instalado no próprio servidor web;
Sem mudança na topologia de rede;
Escalabilidade herdada do servidor web;
Gerencia de segurança e do servidor web
compartilhada;
OWASP
Implantando o ModSecurity:
Baseado em rede (proxy reverso);
•
•
•
•
•
•
Apache como Proxy Reverso;
Qualquer servidor web pode ser um
backend;
Pode abranger vários servidores;
Vira o front-end para o(s) site(s), alterando a
topologia da rede;
Necessita de solução de alta-disponibilidade
e/ou escalabilidade própria;
Separa o gerenciamento de segurança do
gerenciamento do servidor web;
OWASP
ModSecurity: Modelos de segurança
•
Modelo Positivo:
–
–
–
–
•
As regras definem o que pode ser
requisitado/respondido;
As regras precisam ser escritas para cada
aplicação;
A demais requisições são bloqueadas;
Ferramentas: Remo e mod_profiler
Modelo Negativo:
–
–
Conjuntos genérico de regras, ex. XSS, SQL
Injection, fora dos padrões etc, (ajustes podem
ser necessário);
As demais requisições são permitidas;
OWASP
ModSecurity: Modelos de segurança (cont.)
Modelo Híbrido:
•
–
–
Aplica as regras para bloquear os ataques
conhecidos (modelo Negativo) para o site todo;
Cria regras específicas para cada aplicação
(modelo Positivo);
OWASP
Virtual Patching
•
•
•
•
Definição de regras para impedir a exploração
de uma vulnerabilidade conhecida, sem
alteração da aplicação;
Reduz o tempo de exposição;
Permite “corrigir” falhas de segurança em
aplicações escritas por terceiros;
Não deve ser considerado como a “solução”
para correção de vulnerabilidade;
OWASP
Gerenciamento: ModSecurity Console
•
•
•
•
•
•
•
ModSecurity Community Console, escrita pela
Breach Security;
Grátis para até 3 sensores;
Código fechado;
Centraliza os eventos;
Simples e funcional para a monitoração dos
eventos;
Pouco escalável;
Desenvolvimento parado a 1 ano, sem planos
para melhorias;
OWASP
Gerenciamento: WAF∙FLE
• Console OpenSource em desenvolvimento;
• Deve atender a todas as funcionalidades
existentes na ModSecurity Community Console;
• Significativo ganho de performance;
• Sem limite para sensores;
• Desenvolvimento em pleno curso;
• Contribuições serão muito bem-vindas;
• Liberação do código inicial em breve, checar:
• http://klaubert.wordpress.com;
• Mailing-list do ModSecurity
OWASP
Demonstração
OWASP
Entendendo os eventos
OWASP
Entendendo os eventos
OWASP
Falso positivos
•
•
•
Regras que são disparadas indevidamente, o
evento parece um ataque, mas não é;
Podem ser muito ruidosos no início de uma
implantação;
Devem ser analisados, e as regras ajustadas
para eliminá-los;
OWASP
Ajuste fino das regras
•
Desabilitar regras;
SecRuleRemoveById 950009
•
Desabilitar regras para <Location...>
específicos
<Location /path/to/foo.php>
SecRuleRemoveById 950009
</Location>
•
•
Alterar/Corrigir a aplicação;
Ajustar partes de uma regra:
–
–
Cookies;
POST;
- Headers;
- Response Body;
OWASP
Performance
Inspecionar as respostas
(SecResponseBodyAccess) pode afetar a
performance;
Inspecione somente as requisições relevantes
(ex. conteúdo dinâmico, html, xml, txt);
Não inspecione conteúdo estático;
A quantidade de regras influencia a
performance:
•
•
•
•
•
•
Desative regras desnecessárias;
Habilite o mod_cache;
OWASP
Customização
•
•
•
•
Crie suas próprias regras;
Modifique as regras existentes;
Intercepte e customize as páginas de erro;
Use a criatividade;
OWASP
Cuidados e fatores de sucesso na
implantação do ModSecurity
•
Iniciar o uso no modo de monitoração:
SecRuleEngine DetectionOnly
•
•
Ativar o bloqueio aplicação a aplicação;
Tamanho das respostas;
SecResponseBodyLimit
•
Deixar passar o que exceder;
SecResponseBodyLimitAction = ProcessPartial
•
Elimine os falso positivos, eles podem ser
muito intensivos em:
–
–
I/O
Espaço em disco;
OWASP
Palavas finais
•
•
•
•
•
Explique aos demais envolvidos (gerentes,
desenvolvedores, gestores das aplicações,
service-desk) os benefícios e potenciais
problemas na adoção de um WAF;
Monitore;
Dedique tempo para ajustar seu WAF;
Dê um passo de cada vez;
Acrescente mais uma camada de segurança à
sua aplicação;
OWASP
Perguntas
OWASP
Download

Media:OWASP_BSB_ModSecurity_Klaubert