Snort em modo defensivo com Flex Response 2

Neste artigo mostro como instalar, configurar e criar regras para o Snort em modo defensivo com Flex Response 2, a partir do código-fonte.

[ Hits: 30.802 ]

Por: Leonardo em 23/08/2008


Criação de regras no Snort



Na criação de regras para o Snort podemos definir intervalos de portas ou IP',s como no exemplo abaixo:

alert tcp 192.168.1.50 any -> 192.168.1.1 1:1024 (msg:"tentativa ou acesso, porta < 1025"; sid:1; rev:0;);

No exemplo acima o Snort gerará uma entrada no log de alerta quando o host 192.168.1.50 tentar ou realizar conexão com o host 192.168.1.1 em qualquer porta menor que 1025. Nós podemos utilizar apenas uma porta, um ou mais ranges de portas ou portas mistas também.

Agora o Snort está funcionando e gerando alertas de atividades suspeitas na rede e de possíveis ataques. Mas ele ainda não está trabalhando no modo defensivo. Irei mostrar como fazer mais adiante.

Para verificar o tráfego da rede com o snort em modo sniffer de rede, devemos utilizar o seguinte comando:

# snort -v
05/07-18:57:48.321440 192.168.2.50:4358 -> 192.168.2.80:53 UDP TTL:127 TOS:0×0 ID:6873 IpLen:20 DgmLen:70 Len: 42

Vimos que o comando "snort -v" mostra informações resumidas do tráfego da rede. Se precisarmos de mais detalhamento e conteúdo dos pacotes temos que utilizar o parâmetro "-vd", mostrado a seguir:

# snort -vd
05/07-19:00:02.941503 192.168.0.2.1:137 -> 192.168.255.255:137 UDP TTL:128 TOS:0×0 ID:51302 IpLen:20 DgmLen:78 Len: 50 AC 6D 01 10 00 01 00 00 00 00 00 00 20 45 45 45 .m.......... EEE 46 45 4D 46 45 45 42 44 43 43 41 43 41 43 41 43 FEMFEEBDCCACACAC 41 43 41 43 41 43 41 43 41 43 41 43 41 00 00 20 ACACACACACACA.. 00 01 ..

Perceba que agora temos informações do tráfego e dados da camada de aplicação. Neste modo é possível ver usuários e senhas de protocolos que utilizam texto limpo, como o FTP.

Vamos agora para a para mais interessante: o flexresp2. Abaixo a informação de cada flag:
  • reset_dest: Envia pacotes TCP para o destino do ataque, fechando a conexão;
  • reset_source: Envia pacotes TCP para a origem do ataque, fechando a conexão;
  • reset_both: Envia pacotes TCP para ambos, origem e destino, fechando a conexão;
  • icmp_net: Envia um pacote ICMP network unreachable para a origem do ataque;
  • icmp_host: Envia um pacote ICMP host unreachable para a origem do ataque;
  • icmp_port: Envia um pacote ICMP port unreachable para a origem do ataque;
  • icmp_all: Envia pacotes ICMP host unreachable e ICMP network unreachable para a origem do ataque.

Vamos aos exemplos de utilização das flags:

alert icmp any any -> any any (msg:"Ping suspeito"; sid:1; resp:icmp_all;)

Com a regra acima o Snort gerará um alerta de qualquer pacote ICMP que estiver passando de qualquer máquina para qualquer máquina e enviará pacotes ICMP para a máquina de origem com as seguintes mensagens:
  • host unreachable;
  • network unreachable.

Para mudar o Snort para o modo defensivo devemos editar cada regra dentro de /etc/snort/rules e fazer como mostrado a seguir.

Antes:

alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"DDOS TFN Probe"; icmp_id:678; itype:8; content:"1234"; reference:arachnids,443; classtype:attempted-recon; sid:221; rev:4;)

alert tcp $HOME_NET any <> $EXTERNAL_NET any (msg:"DDOS shaft synflood"; flow:stateless; flags:S,12; seq:674711609; reference:arachnids,253; reference:cve,2000-0138; classtype:attempted-dos; sid:241; rev:10;)

Depois:

alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"DDOS TFN Probe"; icmp_id:678; itype:8; content:"1234"; reference:arachnids,443; classtype:attempted-recon; sid:221; rev:4; resp:icmp_host;)

alert tcp $HOME_NET any <> $EXTERNAL_NET any (msg:"DDOS shaft synflood"; flow:stateless; flags:S,12; seq:674711609; reference:arachnids,253; reference:cve,2000-0138; classtype:attempted-dos; sid:241; rev:10; resp:reset_both;)

Página anterior    

Páginas do artigo
   1. Instalação
   2. Configuração
   3. Criação de regras no Snort
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Iptables protege contra SYN FLOOD?

Criptografia em roteadores

Usando e instalando o Nessus no Linux

É o hora do churrasco de... exploits! Quê?!? Não! Para churrasco e exploits, use Beef

Checando vulnerabilidades com o Nikto

  
Comentários
[1] Comentário enviado por grandmaster em 25/08/2008 - 20:42h

Bem legal. Ficou simples de entender :D

Renato de Castro Henriques
CobiT Foundation 4.1 Certified ID: 90391725
http://www.renato.henriques.nom.br

[2] Comentário enviado por dailson em 02/09/2008 - 16:29h

Onde você instalaria esta máquina? Atrás do roteador, firewall, in-line, com duas placas, uma placa só, escutando uma porta replicada no switch???
Como vc aconselha?

Dailson Fernandes
http://www.dailson.com.br

[3] Comentário enviado por leobsb em 02/09/2008 - 18:12h

Dailson,

a maneira mais eficiente de utilizar o Snort sem prejudicar o tráfego na rede é espelhar a porta do roteador que recebe o link da internet e colocar o Snort nessa porta espelhada,
por que se você colocar o Snort antes ou depois do Firewall, ele poderá deixar o tráfego da rede mais lento,
isso pode ocorre devido ao snort precisar verificar todos os pacotes que passam por ele,

Qualquer dúvida fico a disposição.

[4] Comentário enviado por lucaspereira em 29/07/2010 - 18:49h

muito bom este artigo.
A única coisa, é que tive que fazer um downgrade da libnet, para poder compilar o programa.
Mas depois disso, rodou que é uma maravilha :D

[5] Comentário enviado por luizvieira em 16/11/2010 - 20:08h

Excelente artigo!
[ ]'s


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts