Algorithmus (e) zum Aufspüren von Anomalien ("Spikes") in Verkehrsdaten

8

Ich muss den Netzwerkverkehr verarbeiten, der mit tcpdump erfasst wurde. Das Lesen des Verkehrs ist nicht schwer, aber was ein bisschen schwierig ist, ist zu sehen, wo es "Spikes" im Verkehr gibt. Ich bin hauptsächlich mit TCP-SYN-Paketen beschäftigt, und ich möchte Tage finden, an denen der Verkehr für einen bestimmten Zielport plötzlich ansteigt. Es gibt ziemlich viele Daten zu verarbeiten (ungefähr ein Jahr).

Was ich bisher versucht habe, ist ein exponentieller gleitender Durchschnitt. Das war gut genug, um einige interessante Messungen herauszulassen, aber das, was ich gesehen habe, mit externen Datenquellen zu vergleichen, scheint etwas zu aggressiv zu sein Dinge als abnormal markieren.

Ich habe überlegt, eine Kombination aus dem exponentiellen gleitenden Durchschnitt und historischen Daten zu verwenden (möglicherweise von 7 Tagen in der Vergangenheit, in der Annahme, dass es einen wöchentlichen Zyklus zu dem geben sollte, was ich sehe), wie einige Artikel, die ich gelesen habe scheint es gelungen zu sein, die Ressourcennutzung mit gutem Erfolg zu modellieren.

Also, weiß irgendjemand von einer guten Methode oder irgendwo, um zu gehen und sich über solche Dinge zu informieren.

Der gleitende Durchschnitt, den ich benutzt habe, sieht ungefähr so ​​aus:

%Vor%

Dabei ist avg die EMA und new die neue Kennzahl. Ich habe mit den zu verwendenden Schwellenwerten experimentiert, aber festgestellt, dass eine Kombination von "muss ein gegebener Faktor höher sein als der Durchschnitt vor dem Wiegen des neuen Wertes in" und "muss mindestens 3 höher sein", um das schlechteste Ergebnis zu erhalten.

    
Vatine 08.02.2010, 13:55
quelle

2 Antworten

5

Dies wird in der Intrusion Detection Literatur ausführlich untersucht. Dies ist ein wegweisendes Papier zu diesem Thema, das unter anderem zeigt, wie man tcpdump-Daten analysieren kann, um relevante Erkenntnisse zu gewinnen.

Dies ist das Papier: Ссылка hier Sie benutzen das RIPPER-Regel-Induktionssystem, ich denke, Sie könnten das alte für etwas Neuere wie Ссылка oder Ссылка

    
Vinko Vrsalovic 08.02.2010, 14:12
quelle
4

Ich würde zwei Tiefpassfilter auf die Daten anwenden, einen mit einer langen Zeitkonstante T1 und einen mit einer kurzen Zeitkonstante T2. Sie würden dann den Betragsunterschied in der Ausgabe von diesen zwei Filtern betrachten und wenn er eine bestimmte Schwelle K überschreitet, dann wäre das eine Spitze. Der schwierigste Teil ist Tuning T1, T2 und K, so dass Sie nicht zu viele falsche Positive bekommen und Sie keine kleinen Spitzen verpassen.

Das Folgende ist ein einpoliger IIR-Tiefpassfilter:

%Vor%

Der Wert von k bestimmt die Zeitkonstante und liegt normalerweise bei 1,0 (aber natürlich bei & lt; 1,0).

Ich schlage vor, dass Sie zwei solche Filter parallel mit verschiedenen Zeitkonstanten, z. Beginnen Sie mit k = 0,9 für eine (kurze Zeitkonstante) und k = 0,99 für die andere (lange Zeitkonstante) und schauen Sie sich dann den Betragsunterschied in ihren Ausgaben an. Der Größenunterschied wird meistens klein sein, wird aber groß, wenn eine Spitze auftritt.

    
Paul R 08.02.2010 14:06
quelle

Tags und Links