2010-02-08 15 views
8

Mi trovo a dover elaborare il traffico di rete acquisito con tcpdump. Leggere il traffico non è difficile, ma ciò che diventa un po 'complicato è individuare dove ci sono "picchi" nel traffico. Sono principalmente interessato ai pacchetti TCP SYN e quello che voglio fare è trovare giorni in cui si verifica un improvviso aumento del traffico per una determinata porta di destinazione. C'è un bel po 'di dati da elaborare (circa un anno).Algoritmo (s) per individuare anomalie ("picchi") nei dati di traffico

Quello che ho provato finora è usare una media mobile esponenziale, questo è stato abbastanza buono da permettermi di ottenere alcune misure interessanti, ma confrontare ciò che ho visto con fonti di dati esterne sembra essere un po 'troppo aggressivo nel contrassegnare le cose come anormali.

Ho considerato l'utilizzo di una combinazione di media mobile esponenziale più dati storici (probabilmente da 7 giorni in passato, pensando che ci dovrebbe essere un ciclo settimanale per quello che sto vedendo), come alcuni documenti che ho leggere sembra essere riuscito a modellare l'utilizzo delle risorse in questo modo con un buon successo.

Quindi, qualcuno sa di un buon metodo o di un posto dove andare a leggere su questo genere di cose.

La media mobile Sto usando sguardi più o meno come:

avg = avg+0.96*(new-avg) 

Con avg essendo l'EMA e new essendo la nuova misura. Ho sperimentato quali soglie utilizzare, ma ho trovato che una combinazione di "deve essere un dato fattore superiore alla media prima di pesare il nuovo valore in" e "deve essere almeno 3 superiore" per dare il risultato meno negativo.

risposta

5

Questo è ampiamente studiato nella letteratura di rilevamento delle intrusioni. Questo è un documento fondamentale sul problema che mostra, tra le altre cose, come analizzare i dati di tcpdump per ottenere informazioni rilevanti.

Questa è la carta: http://www.usenix.org/publications/library/proceedings/sec98/full_papers/full_papers/lee/lee_html/lee.html qui usano il sistema di regole di induzione RIPPER, penso che si potrebbe sostituire quella vecchia per qualcosa di più recente, come http://www.newty.de/pnc2/ o http://www.data-miner.com/rik.html

+0

Interessante lettura, di sicuro. Al momento, l'individuazione di livelli di traffico aumentati è sufficiente per ciò di cui ho bisogno, ma è certamente qualcosa da considerare per il futuro. – Vatine

4

Applicherò due filtri passa-basso ai dati, uno con una costante di tempo lunga, T1 e uno con una costante di tempo breve, T2. Dovresti quindi considerare la differenza di grandezza in uscita da questi due filtri e quando supera una certa soglia, K, allora sarebbe un picco. La parte più difficile è la messa a punto di T1, T2 e K in modo da non ottenere troppi falsi positivi e da non perdere nessuna piccola punta.

Il seguente è un unico polo IIR filtro passa-basso:

new = k * old + (1 - k) * new 

Il valore di k determina la costante di tempo e di solito è vicino a 1,0 (ma < 1,0 naturalmente).

Sto suggerendo di applicare due di questi filtri in parallelo, con costanti di tempo diverse, ad es. iniziare con dire k = 0,9 per uno (costante di tempo breve) e k = 0,99 per l'altro (costante di tempo lungo) e quindi osservare la differenza di ampiezza nelle loro uscite. La differenza di grandezza sarà piccola la maggior parte delle volte, ma diventerà grande quando c'è un picco.

+1

Interessante. Dato che sto eseguendo l'elaborazione off-line, anche quella dovrebbe essere relativamente semplice. Pensi che valga la pena sperimentare anche con dimensioni del chunk (ho provato ogni ora e ogni giorno in passato)? – Vatine

+0

Dipende se i dati vengono regolarmente campionati. In caso contrario, è possibile che si desideri raccogliere dati in contenitori o blocchi uguali di durata o qualsiasi altra cosa si voglia chiamare per ottenere l'effetto equivalente di un intervallo di campionamento fisso. –

+1

I dati di tcpdump hanno una data/ora che può essere considerata accurata almeno fino a "secondi", ma l'intervallo per i dati in entrata è, beh, non proprio così regolare, essendo il traffico di rete e tutto il resto, quindi immagino che il binning/Chunking a intervalli di dimensioni fisse ha un senso. – Vatine

Problemi correlati