9.3. IDS baseado em rede

Sistemas de detecção de intrusão baseados em rede operam de maneira diferente aos IDSs baseados em servidor. A filosofia de desenvolvimento de um IDS baseado em rede é scanear os pacotes da rede no nível do servidor ou roteador, auditorando informações de pacotes e registrando quaisquer pacotes suspeitos em um arquivo de registro especial com informações extras. Baseado nestes pacotes suspeitos, um IDS baseado em rede pode scanear seu próprio banco de dados de assinaturas de ataques de rede conhecidas e determinar um nível de severidade para cada pacote. Se os níveis de severidade forem suficientemente altos, um email de alerta ou mensagem de celular será enviada aos membros da equipe de segurança para que eles possam investigar a natureza da anomalia.

IDSs baseados em rede tornaram-se populares com o crescimento da Internet em tamanho e tráfego. IDSs que podem scanear a volumosa quantidade de atividade de rede e nomear com êxito as transmissões suspeitas são bem recebidos na indústria da segurança. Devido à insegurança inerente de protocolos TCP/IP, tornou-se obrigatório o desenvolvimento de scanners, sniffers e outras ferramentas de auditoria e detecção de rede para prevenir brechas de segurança devido às maléficas ativiidades de rede como:

A maioria dos IDSs baseados em rede requerem que o dispositivo de rede do servidor do sistema seja configurado para o modo promíscuo, que permite o dispositivo a capturar todos os pacotes que passam na rede. O modo promíscuo pode ser configurado através do comando ifconfig, conforme o seguinte:

ifconfig eth0 promisc

Executando ifconfig sem opções revela que eth0 agora está no modo promíscuo (PROMISC).

eth0      Link encap:Ethernet  HWaddr 00:00:D0:0D:00:01  
          inet addr:192.168.1.50  Bcast:192.168.1.255  Mask:255.255.252.0
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:6222015 errors:0 dropped:0 overruns:138 frame:0
          TX packets:5370458 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:2505498554 (2389.4 Mb)  TX bytes:1521375170 (1450.8 Mb)
          Interrupt:9 Base address:0xec80 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:21621 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21621 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1070918 (1.0 Mb)  TX bytes:1070918 (1.0 Mb)

Ao utilizar uma ferramenta como o tcpdump (incluso no Red Hat Enterprise Linux), é possível visualizar o tráfego intenso fluindo por uma rede:

tcpdump: listening on eth0
02:05:53.702142 pinky.example.com.ha-cluster > \
 heavenly.example.com.860:  udp 92 (DF)
02:05:53.702294 heavenly.example.com.860 > \
 pinky.example.com.ha-cluster:  udp 32 (DF)
02:05:53.702360 pinky.example.com.55828 > dns1.example.com.domain: \
 PTR? 192.35.168.192.in-addr.arpa. (45) (DF)
02:05:53.702706 ns1.example.com.domain > pinky.example.com.55828: \
 6077 NXDomain* 0/1/0 (103) (DF)
02:05:53.886395 shadowman.example.com.netbios-ns > \
 172.16.59.255.netbios-ns: NBT UDP PACKET(137): QUERY; BROADCAST
02:05:54.103355 802.1d config c000.00:05:74:8c:a1:2b.8043 root \
 0001.00:d0:01:23:a5:2b pathcost 3004 age 1 max 20 hello 2 fdelay 15 
02:05:54.636436 konsole.example.com.netbios-ns > 172.16.59.255.netbios-ns:\
 NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
02:05:56.323715 pinky.example.com.1013 > heavenly.example.com.860:\
 udp 56 (DF)
02:05:56.323882 heavenly.example.com.860 > pinky.example.com.1013:\
 udp 28 (DF)

Note que pacotes não intencionados para a nossa máquina (pinky.example.com) ainda estão sendo scaneados e registrados pelo tcpdump.

9.3.1. Snort

Apesar do tcpdump ser uma ferramenta de auditoria importante, não é considerado um IDS verdadeiro porque não analisa e aponta anomalias nos pacotes. Ao invés disso, o tcpdump exibe todas as informações dos pacotes na tela de output ou em um arquivo de registro sem análise nenhuma. Um IDS apropriado analisa os pacotes, aponta ransmissões de pacotes potencialmente maléficas e as armazena em um registro formatado.

O Snort é um IDS desenvolvido para ser compreensivo e correto em registrar com êxito as atividades maléficas da rede e notificar os administradores quando potenciais brechas ocorrerem. Snort utiliza a biblioteca padrão libcap e o tcpdump como um registro especializado de pacotes.

A característica mais premiada do Snort, somada à sua funcionalidade, é o seu sub-sistema flexível de assinaturas de ataque. Snort tem um banco de dados de ataques constantemente atualizado que pode ser adicionado à ou atualizado via Internet. Os usuários podem criar assinaturas baseadas em novos ataques de rede e enviá-las às listas de discussão de assinaturas do Snort (http://www.snort.org/lists.html), para beneficiar todos os usuários do Snort. Essa ética comunitária em compartilhar elevou o Snort a um dos IDSs mais atualizados e robustos disponíveis no mercado.

NotaNota
 

O Snort não esta incluso no Red Hat Enterprise Linux e não é suportado. Ele foi incluso neste documento como referência para usuários interessados em avaliá-lo.

Para mais informações sobre o uso do Snort, consulte o site oficial: http://www.snort.org.