Agenda
1. Firewall de Aplicação Web (WAF);
2. ModSecurity;
3. Console do ModSecurity;
4. Implantação do ModSecurity;
OWASP
Klaubert Herr
• Consultor em segurança da informação a 13
anos;
• Tópicos atuais:
– (D)DoS
– WAF
• Atuação com ferramentas open source e
comerciais;
• Desenvolvedor do WAF-FLE, console para o
ModSecurity
• http://waf-fle.org
• http://klaubert.wordpress.com
OWASP
Firewall de Aplicação Web - WAF
• Firewall (camada 7) especializado em
aplicações Web;
• Conhece 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;
• Detecta e Bloqueia ataques;
OWASP
Elementos de segurança para Web
Firewall IPS WAF
Controle de acesso Sim Algum Sim
Detecção de protocolo HTTP Algum Sim Sim
Bloqueio de DoS (sob HTTP) Algum Algum Algum
Identificação/Bloqueio de ataques Web
Não Algum Sim
(XSS, SQLi, CSRF etc)
Ciente de autenticação formulário
Não Não Sim
e sessão HTTP (cookies)
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
Interceptação de vazamento (ex. Erro) /
Não Algum Sim
reescrita da resposta
OWASP
Por que usar um WAF?
• Segurança
• Ponto único de controle
• Gerenciado pela equipe de segurança
• Múltiplas camadas de segurança
• Ativado continuamente
• Sites web: foco de ataques direto ou vetor de ataque;
• Virtual patching
• Bloqueio de ataques conhecidos;
• Controle de mensagens de erro;
• Controle customizável, por URL;
• Monitoração e Logs de ataques e de erros;
OWASP
Por que usar um WAF?
• Compliance/Auditoria
• PCI DSS 1.2+ – requisito 6.6;
• <Coloque a sua aqui>
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) é uma
importante camada de segurança, mas 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 para Apache (*nix ou Windows);
Novos módulos para: IIS e Nginx;
Muito flexível;
Conjunto de regras Core Rule Set, um projeto
OWASP desde de Agosto/09;
Criado por Ivan Ristic;
Hoje da Trustwave, mantido pelo Breno Silva;
Licenciamento: Apache License 2.0;
OWASP
Características do ModSecurity
• Módulo para Apache
– Embutido;
– Proxy Reverso;
• Modos: detecção ou bloqueio;
• Inspeciona o cabeçalho e corpo da requisição;
• Inspeciona o cabeçalho e corpo da resposta;
• Definição de regras bastante completa/
complexa;
OWASP
Características do ModSecurity (cont.)
• Normalização, decodificação;
• Base64
• compressWhitespace;
• htmlEntityDecode;
• removeCommentsChar;
• RBL (Reputação) e GeoIP;
• Extensível: execução de scripts LUA
internamente ou scripts externos;
• Log completo do tráfego (incluindo POST);
OWASP
Características do ModSecurity (cont.)
• Pode inspecionar uploads (anti-vírus);
• Alterar a resposta (Append/Prepend/ Replace);
• Ataques podem ser bloqueados, redirecionados,
logados etc;
• Dados persistentes usados entre requisições
diferentes:
• IP;
• Sessão;
• Username;
• Resource;
• Global;
OWASP
Características recentes
• Metadado para regras: ver, maturity, accuracy;
• Sanitização de SSN, CC, CPF -> evitar
vazamento;
• Desativação de compressão com o backend;
• SecEncryption*: cria um token criptografado de
href/frame src/iframe scr/form action; (2.7RC)
OWASP
Implantando o ModSecurity:
Modo Embutido (Local)
• Apache (IIS e Nginx a caminho);
• Instalado no próprio servidor web;
• Sem mudança na topologia de rede;
• Escalabilidade herdada do servidor web;
• Algum impacto em performance pode ocorrer;
• Gerencia de segurança e do servidor web
compartilhada;
OWASP
Implantando o ModSecurity:
Baseado em rede (proxy reverso);
• Apache como Proxy Reverso (breve Nginx);
• 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;
• Alta-disponibilidade e/ou escalabilidade
própria;
• Separa o gerenciamento de segurança do
gerenciamento do servidor web;
OWASP
Modelo Positivo
• As regras definem o que pode ser requisitado e
respondido;
• As regras precisam ser definidas para cada aplicação,
para cada URI ou conjunto de URI’s;
• Alterações na aplicação precisam refletir na política do
WAF(!);
• Quanto mais complexa a aplicação, mas complexo
será definir a política
• Campos muito abrangentes (livres) terão uma política
frágil;
• As demais requisições são bloqueadas;
• Ferramentas: Remo e mod_profiler (abandonadas)
OWASP
Modelo Negativo
– Conjuntos genérico de regras, ex. XSS, SQL Injection,
fora dos padrões etc;
– Exceções precisam ser tratadas pontualmente;
– As demais requisições são permitidas;
– Atualizações nas regras precisam ser novamente
validadas no tráfego real;
OWASP
Modelo Híbrido
• Usa o definido no modelo positivo;
... se passar...
• Aplica as regras negativas para bloquear
ataques genéricos;
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
ModSecurity Core Rule Set (CRS)
• 2319 regras (08/2012);
• Regras próprias;
• Conversão de outras assinaturas:
PHPIDS, Emerging Threats,
• Testes com tráfego real;
• Detecção genérica de ataques:
– Melhor performance;
– Menos updates;
• Plug and play:
– Ok, leia o README primeiro...
– Ajustes poderão ser necessários;
OWASP
ModSecurity Core Rule Set (CRS)
Modo de Operação
– Self-Contained
– Caso ocorra o match de uma requisição com
uma regra a ação de regra é executada;
– Collaborative Detection
– A cada match de regra um score é
incrementado
– Pontuação de acordo com a criticidade;
– Pontuação específica para tipos de ataque;
– Ao final da avaliação das regras, é verificada a
pontuação, podendo: permitir ou bloquear;
• Maior segurança no bloqueio;
OWASP
ModSecurity Core Rule Set (CRS)
Categorias
• Conformidade de protocolos:
– Validação de requisições HTTP (RFC);
– Anomalias do protocolo HTTP;
– Restrições globais;
– Política de uso;
• Detecção de ataques:
– Mitigação de Slow DoS;
– XSS, SQLi, Buffer Overflow, etc;
– Detecção de Trojans e Backdoors;
• Outras:
– Detecção de erros;
– Proteção de XML; OWASP
Como o Modsecurity atua
• Fases de Processamento
1.Request headers;
2.Request body;
3.Response headers;
4.Response body;
5.Logging;
OWASP
Fases de Processamento
2. Request body (POST, PUT);
count=1&req0_type=i&req0_time=754341' OR 'x'='x
• SecRequestBodyAccess ->On;
• application/x-www-form-urlencoded – Dados de formulários
• multipart/form-data – Ttransferência de arquivos
• text/xml – Dados em XML
1.REQUEST_BODY
2.ARGS (ARGS_POST, ARGS_COMBINED_SIZE)
3.FILES_TMPNAMES (@inspectFile)
OWASP
Logs
• Logs detalhados dos eventos;
• Muito log se...
• Muitas aplicações
• Múltiplos servidores (1,2,4 … 1.000 ...)
• DoS
• Robôs
• Falsos positivos
• Opções para visualização dos logs
• Grep • Splunk for modSecurity
• WAF-FLE • SIEM’s
• AuditConsole OWASP
WAF∙FLE
• Console centralizadora de logs para modsecurity
• http://waf-fle.org;
• Disponível na Versão 0.5 -> Breve 0.6
• Suporta regras nos modos “Self-Containend” e
“Collaborative Detection”;
• Recebe eventos em tempo real ou em batch,
com mlogc
• mlog2waffle na versão 0.6
• Sem limite de sensores
• PHP e Mysql DB
• Open Source: GPL v2
OWASP
WAF∙FLE
• Dashboard
• Eventos ao longo do dia
• Top Sources
• Top Sensors
• Top Severity
• Top Rules
• Top Targets
• Status http
• Top countries (0.6)
• Top ASN’s (0.6)
• Path (0.6)
OWASP
WAF∙FLE
• Filtros Drill-Down
• Cada campo deve ser uma pesquisa
• Invertidos (not)
• A partir do dashboard (atualizando o dashboard,
0.6);
• Por faixa de rede
• Por score
• Por regra
• Path
• Hostname
• etc
OWASP
Falso positivos
• Regras que são disparadas indevidamente, o
evento é identificado como um ataque;
• 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
SecRuleRemoveById 950009
• Desabilitar regras para <Location...>
específicos
<Location /path/to/foo.php>
<Location /path/to/foo.php>
SecRuleRemoveById 950009
SecRuleRemoveById 950009
</Location>
</Location>
• Ajustar partes de uma regra:
– Cookies; - Headers;
– POST; - Response Body;
OWASP
Ajuste fino das regras
• Alterando as regras pelo ID
SecRuleUpdateTargetById 981260 !REQUEST_COOKIES:UserPref
SecRuleUpdateTargetById 981260 !REQUEST_COOKIES:UserPref
SecRule REQUEST_URI “@streq /mail/” “phase:1,t:none,
SecRule REQUEST_URI “@streq /mail/” “phase:1,t:none,
nolog,pass,ctl:ruleUpdateTargetById=950901;
nolog,pass,ctl:ruleUpdateTargetById=950901;
!REQUEST_COOKIES:/^UserPref/”
!REQUEST_COOKIES:/^UserPref/”
• Alterar/Corrigir a aplicação;
OWASP
Performance
• Inspecionar as respostas pode afetar a
performance (SecResponseBodyAccess);
• Inspecione somente as requisições relevantes
(ex. conteúdo dinâmico, html, xml, json);
• Não inspecione conteúdo estático;
• A quantidade de regras influencia a
performance:
• Desative regras desnecessárias;
• Habilite o mod_cache;
• Coloque um cache na frente (Nginx/Varnish);
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
SecRuleEngine DetectionOnly
• Ativar o bloqueio aplicação a aplicação;
• Tamanho das respostas;
SecResponseBodyLimit
SecResponseBodyLimit
• Deixar passar o que exceder;
SecResponseBodyLimitAction ==ProcessPartial
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, refine as regras;
• Dedique tempo para ajustar seu WAF;
• Dê um passo de cada vez;
• Acrescente mais uma camada de segurança à
sua aplicação;
OWASP