Un IDS é un middlebox che si occupa di rilevare la presenza di intrusioni o si assicura del rispetto delle policy di sicurezza In particolare i Network Intrusion Detection Systems effettuano deep packet inspection Cioé analizzano il payload dei pacchetti
É difficile effettuare il match a livello applicativo perché spesso i protocolli sono di tipo testuale, come HTTP
Un Host Intrusion Detection System invece si occupano di monitorare gli ingressi e le uscite di un singolo host.
A differenza del matching sui campi del pacchetto, il deep packet inspection
ha un rischio concredo di falsi positivi, ad esempio cercando una
stringa HTTP
nel pacchetto, potremmo rilevare anche delle email contenenti dei link.
In genere i sistemi di ricerca, piú estendono il campo della loro ricerca e sono aggressivi, e piú c'é il rischio che trovino dei falsi positivi. Per questo di solito Gli IDS si limitano a lanciare degli allarmi e lasciare ad un sistema di management lo svolgimento dell'azione.
I sistemi di deep packet inspection sono utilizzati anche dai provider per capire che frazione del traffico é di natura VoIP, in modo da poter favoreggiare o ostacolare il traffico per favorire la telefonia tradizionale (discorso su net neutrality)
Gli IDS si dividono in:
Un IDS é piú lento rispetto ad un firewall, perché invece che effettuare match in posizioni note, deve ricercare delle stringhe nel payload. Un firewall viene posizionato ai bordi della rete, per identificare problemi verso l'esterno, mentre gli IDS vengono posti all'interno della rete per monitorare il traffico all'interno.
Cisco sta proponendo dei sistemi che integrano un firewall che agisce fino al livello applicativo, con un IDS che é in grado di riconoscere le signature dei pacchetti.
Per costruire le signature sono necessari esempi di intrusioni per poter costruire un database. Usate per questo sono le honeynets: reti che hanno l'unico scopo di attirare attacchi per poterli catalogare, un principio simile é usato nei sistemi antispam, in cui viene creato un indirizzo email che non corrisponde a nessuna persona fisica, e tutte le mail che riceve sono per definizione spam.
Di solito gli IDS effettuano ricerca di stringhe nel payload, ma possono utilizzare anche delle regular expression, anche se il costo computazionale sale.
Spesso il payload di una sessione TCP é diviso tra diversi pacchetti, quindi puó essere effettuata una operazione di preprocessing che consiste nel raccogliere tutti i payload di una stessa connessione TCP.
Un attaccante puó dividere il payload di attacco in tanti pacchetti piú piccoli, per fare in modo che IDS che analizzano pacchetti singoli non riescano a rilevare l'attacco
Un prodotto commerciale diffuso per DPI é SNORT che é un software commerciale di cui l'engine é open source, il database degli attacchi é disponibile a pagamento per le versioni piú aggiornate e gratuitamente per le versioni piú vecchie.
SNORT effettua un match con un set di regole BGP Una volta che viene effettuato un match, viene lanciato un allarme e il pacchetto viene inviato ad un supervisore o ad un sistema di management centralizzato che gestisce piú IDS, oppure ad un supervisore che controllerá il pacchetto.
I protocolli si dividono in binari e testuali, nei protocolli OSI sono sempre stati usati protocolli binari, mentre i protocolli testuali sono stati scelti da IETF per facilitá di debug. Ultimamente c'é una tendenza a usare protocolli binari perché usano meno spazio e bastano programmi piú semplici per leggerli, ad esempio HTTP:2.0 é un protocollo binario.
Questo vantaggio é anche dovuto alla diffusione di sistemi embedded e di sensori che non hanno la possibilitá di far girare grossi programmi. Inoltre la possibilitá di debugging testuale é impedita dall'uso di protocolli crittografati, quindi c'é un motivo in meno per usare protocolli testuali.
Nel caso di protocolli cifrati di solito viene terminata la cifratura nel sistema di DPI e la connessione viene continuata il chiaro verso il destinatario o viene cifrata con una chiave diversa.
Nelle regole é possibile anche effettuare delle negazioni, questo comporta un costo computazionale piú alto col vantaggio di ottenere un ruleset piú compatto.
La parte piú interessante di queste regole é l'analisi del payload, ad esempio il campo content
permette di
cercare una stringa nel payload, tuttavia l'algoritmo per fare questo ha costo lineare con la lunghezza
del payload, e al massimo é possibile confrontare piú match allo stesso momento con un costo
lineare non grosso, (sublineare per il numero di stringhe da cercare usando i trie).
Per evitare costo computazionale inutile, i pacchetti delle connessioni che sono state accettate non vengono piú analizzati.