Gli intrusion detection system del tipo Network-based, operano in modo diverso dagli IDS del tipo host-based. La filosofia di funzionamento di un IDS di rete, è quella di controllare i pacchetti di rete ai livelli router oppure host, verificando le informazioni del pacchetto e registrando qualsiasi pacchetto sospetto, in un file speciale con informazioni aggiuntive. In base a questi pacchetti sospetti, un IDS network-based è in grado di controllare il proprio database contenente sigle di attacchi conosciuti, e di assegnare successivamente un livello di severità ad ogni pacchetto. Se i livelli di severità sono abbastanza elevati, una email di allerta oppure un segnale tramite un pager call, viene inviato ai membri del team di sicurezza, in modo tale che essi possano investigare la natura del problema.
Gli IDS di rete, sono diventati molto popolari. Gli IDS in grado di controllare una voluminosa attività di rete ed etichettare con successo le trasmissioni sospette, sono molto apprezzati nel campo della sicurezza. A causa dell'aumento di tale problema sui protocolli TCP/IP, è diventato imperativo sviluppare strumenti di verifica e rilevazione di rete, come ad esempio scanner, sniffer e tanti altri, per prevenire problemi inerenti la sicurezza dovuti da attività di rete sospetta come ad esempio:
IP Spoofing
Attacchi di tipo Denial-of-service
arp cache poisoning
corruzione del nome DNS
Attacchi di tipo Man-in-the-middle
Molti IDS network-based, richiedono che il dispositivo di rete del sistema host sia impostato sulla modalità promiscuous, la quale permette al dispositivo di catturare ogni pacchetto inviato sulla rete. La modalità Promiscuous può essere impostata attraverso il comando ifconfig come di seguito riportato:
ifconfig eth0 promisc |
Eseguire ifconfig con nessuna opzione, significa che eth0 è in modalità promiscuous(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) |
Usando un tool come tcpdump (incluso con Red Hat Enterprise Linux), possiamo notare la grande quantità di traffico che attraversa la rete:
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) |
Notare che i pacchetti che non sono stati indirizzati alla nostra macchina, (pinky.example.com) sono stati controllati e registrati da tcpdump.
Mentre il comando tcpdump è considerato un tool di verifica molto utile, esso non viene considerato invece un IDS vero e proprio, in quanto non analizza ed etichetta pachetti che presentano anomalie. tcpdump invece, stampa tutte le informazioni del pacchetto sulla schermata, o su di un file log,senza effettuare alcuna analisi. Un IDS, analizza i pacchetti, etichetta le trasmissioni dei pacchetti sospetti, conservandoli in un log formattato.
Snort è un IDS creato per esere completo ed esatto durante l'attività di registrazione e notifica per l'attività di rete sospetta agli amministartori, informandoli di un potenziale tentativo di violazione. Snort usa una libreria libcap standard e tcpdump come un pacchetto di registrazione di tipo backend.
Il contenuto più importante di Snort in aggiunta alla sua funzionalità, è rappresentato dal suo flessibile sottosistema di attacco della firma. Snort possiede un database di attachi sempre molto aggiornato, esso può essere mantenuto aggiornato ed implementato tramite internet. Gli utenti possono creare delle firme in base a nuovi attacchi della rete, inserendoli nelle mailing list delle firme di Snort (situate su http://www.snort.org/lists.html), in modo tale che tutti gli utenti ne possono trarre beneficio. Questa etica di condivisione della comunity, ha contribuito allo sviluppo di Snort fino a diventare uno dei più aggiornati e robusti IDS basati sulla rete disponibili.
![]() | Nota |
---|---|
Snort non è incluso e ne supportato in Red Hat Enterprise Linux. È presente in questo documento solo come riferimento per gli utenti interessati alla sua valutazione. |
Per maggiori informazioni sull'uso di Snort, consultare il sito ufficiale http://www.snort.org/.