A segurança é algo preocupante para os administradores de sistema. Estamos acostumados a ver aquele firewall, que está ali na porta de saída da sua rede, apenas servindo de gateway para a internet e deixando trafegar dados sem qualquer controle. Vamos mostrar como melhorar o firewall bridge que criamos no outro artigo utilizando o Snort_Inline.
Hoje, por mais restritivo que seja nosso firewall, sempre vamos acabar
sendo obrigados a deixar as portas dos serviços utilizados abertas, como
por exemplo a porta 80 do servidor web Apache. E nesta porta podem
ser injetados diversos tipos de ataque, então vem a pergunta: como podemos nos
proteger destes problemas?
Existe uma ferramenta chamada Snort [1] que é um IDS (Intrusion Detection System) muito utilizado para detecção de tentativas de intrusão em uma rede. Geralmente ele vem acompanhado do seu parceiro Guardian [2], onde o Snort gera os alertas sobre as tentativas de intrusão e o Guardian gera as regras de bloqueio e proteção para a rede baseado nesses alertas. Tudo muito bonito e funcional, mas deixa apenas uma coisa a desejar: o primeiro pacote!
Embora o Snort gere o alerta, ele não bloqueia o pacote malicioso, sendo assim
até o Guardian gerar a regra de bloqueio, o vírus, exploit, scan, já foi executado na sua rede.
A diferença do Snort normal para o Snort_Inline, é que o Snort_Inline atua usando a libips, diretamente "escutando" a saída do iptables na regra QUEUE, enquanto o Snort normal usa a libpcap para acessar os dados da rede em modo 'promíscuo'. E essa pequena diferença nos permite integrar o Snort_Inline a nossa solução anterior de Firewall com Bridge usando o Debian Etch 4.0, também publicado na Viva o Linux e atualizado constantemente em [3].
Vamos então aprender como configurar o Snort_Inline no nosso firewall com bridge.
[1] Comentário enviado por y2h4ck em 06/06/2007 - 09:07h
Na verdade execução de um sistema de IDS executando no mesmo hardware do Firewall é algo um pouco arriscado, afinal um firewall deve ser um host onde não executem outros serviços alem do mesmo. O uso de um IDS pode produzir um uso excessivo dos recursos físico, e, como bem sabemos o Snort o faz.
Em um caso de um ataque massivo e persistente, como por exemplo um atacante realizando um probe em cima de um serviço publicado através deste firewall, o snort geraria uma quantidade de alertas mto grande, e os forks poderiam ocasionar um DoS no serviço de Gateway.
O recomendado e ter uma placa no firewall apenas para uso do IDS, esta placa ficaria no firewall em modo promiscuo, e assim o IDS ligado através de um cabo cross, poderia analisar de forma paralela os pacotes que trafegam na rede.
Como forma de IPS poderiamos utilizar o Iptables utilizando o fwsnort que gera regras para o firewall com base nas regras de Snort, sendo assim assinaturas conhecidas de ataques críticos podem ser rejeitadas antes de atravessar a rede.
[2] Comentário enviado por condector em 08/06/2007 - 17:13h
É por isso que não usamos um IDS e sim um IPS... concordo contigo, mas a idéia deste artigo é integrar o snort_inline ao nosso firewall por bridges, ou seja, invisível na rede, o que torna um ataque em cima do firewall impossível, pois ele não tem IP na rede.
E é exatamente isso que estou dizendo no artigo... usando um firewall bridge como descrevi é possível usar o snort para bloquear os ataques muito antes de chegarem na rede... acho que você não uniu este artigo ao meu anterior sobre firewall bridge. Mesmo assim, se for pensar somente em IDS você está correto, mas no que eu proponho fazer, acredito que você tenha confundido algumas coisas.
[4] Comentário enviado por y2h4ck em 09/06/2007 - 13:03h
Veja o seguinte, supomos que o atacante faça um packte injection na sua rede enviando fora do header do pacote, um local onde é considerado um uso-abusivo em protocolos de transporte convencionais, uma string do tipo:
"exe?+-+-+-+-+-+-+-+-+-+-+-+-+-+-+",
Seu IPS vai disparar um alerta contra o host e vai bloquá-lo certo ? Interessante, porém como sabemos um protocolo de camada mais baixo como por exemplo transporte, pode ser encapsulado facilmente dentro de um protocolo de camada mais alta "Aplicação" neste caso específico, sendo assim, poderiamos encapsular um DoS usando por exemplo o Velho UDP/Pong, onde enviamos um UDP na porta 65335 e um na 1024, fazendo seu IPS achar que se trata de um Scan Nmap usando o método de Varredura UDP.
Se colocarmos isto dentro de um packet generator como o yersinia ou nemesis por exemplo, podemos gerar uma repetição de forma que, seu IPS irá gerar 3 alertas diferentes para o mesmo pacote.
- 1 para o valor do payload onde setamos o string malicioso
- 1 para o "Nmap Scan"
- 1 para o Undefined UDP Packet (pacote UDP com conteúdo indefinido).
Agora imagine esta repetição acontecendo por meia hora seguida, com um link "generoso" de 512 kbps eu conseguiria gerar em torno de 16.000 alertas por segundo no seu firewall, e minha experiencia com o Snort diz que ... com um fluxo alto assim de pacotes nos pre-processadores ele aumenta consideravelmente o uso de recursos do Sistema.
Pensando pelo ambito que você está tratando de uma integração de seu host com o Iptables posso citar mais uma infinidade de falhas de segurança que podem ocorrer deste derivado de IDS + Firewall, porém não vem ao caso.
Não me confundi não, conheço muito bem oque é um IDS e um IPS :)
Não estou desmerecendo sua solução, apenas estou apontando um ponto falho que deve ser considerado no momento que se implementa algo deste tipo :)
[5] Comentário enviado por condector em 06/09/2007 - 11:29h
Bem, vendo por esse lado realmente você está correto. Quando falei da confusão foi porque a sua primeira resposta me deixou confuso no que você queria dizer.
A idéia de usar um IPS num bridge transparente evita em parte este problema que você falou pois você não sabe que tem um firewall no meio do caminho pois nem IP ele possui... sendo assim fica MUITO improvável porque você teria que conhecer a estrutura antes de ataca-lá. Seu pacote malicioso seria bloqueado e você não saberia porque, até porque nem o NMAP conseguiria definir quem ou quando foi bloqueado.
Este artigo como disse é um completemento ao firewall bridge invisível que descrevi em outro artigo aqui no VOL