Änderung in logfiles feststellen

Ich suche nach einem Tool oder Algorithmus, mit dem ich Protokolldateien analysieren kann.
Es sollte helfen, Änderungen im normalen Protokollfluss / der normalen Protokollstruktur zu identifizieren.

Wenn ich weiß, dass die Anwendung bis zum Zeitpunkt X einwandfrei funktioniert hat, sollte überprüft werden, welche Änderungen in der (Struktur der) Protokolldateien zu diesem Zeitpunkt vorkommen.

Gibt es ein Tool, das in einem solchen Szenario hilft, ohne den Aufwand, dieses Formular zu entwickeln oder den Algorithmus tagelang anzupassen?

Hallo,
klassisch für das Feststellen von Änderungen (im Sinne von Tampering) sind kryptographische Hashes. Die Logdatei wir bis zum Zeitpunkt X in die Hashfunktion gefüttert, heraus kommt eine Zahl (oder ein String) fester Länge, die (den) man mit der Vorgabe vergleichen kann.

Das mit der Struktur verstehe ich nicht ganz, aber auch hier würde ich sagen, füttere die Hashfunktion mit den Strukturelementen, und schon kannst Du Manipulationen feststellen.

Wichtig, Hashfunktionen können nicht lokalisieren, d.h. Du stellst fest, ob etwas verändert wurde, kannst aber nicht sagen, wo genau. Das ergibt dann die berühmten „Datei kaputt“-Fehlermeldungen, die dem Nutzer keinen Anhaltspunkt geben, was genau wie wo zu ändern ist, damit die Datei wieder heil ist.

Ja gut, aber das hilft nur, nachträglich veränderte Dateien zu erkennen. Zum Vergleich von Dateien nutzt das nur, wenn die Dateien aufs Byte identisch sind.

Ich verstehe das so, daß erkannt werden soll, ob sich eine Datei, oder die Dateien ab einem bestimmten Zeitpunkt deutlich unterscheiden.

Allerdings sind logfiles selten identisch. Oft sind Zeitstempel oder irgendwelche Variablen Parameter drin. Häufig ist der Programmablauf nicht konstant.

Ziemlich schlimm ist das Zugriffslog eines Webservers. Das einzige, was da konstant ist, ist das Format der Zeilen, und die einzigen Analysen sind sowas wie „von welchen IPs kamen hunderte Anfragen, die mit 404 beantwortet wurden“

Insofern würde ich erstmal darum bitten, die Frage zu präzisieren, wie sich die Dateien unterscheiden können.

1 Like

Hallo,

so wie ich deine Frage verstehe möchtest du Anamolie-Erkennung ohne vorher den Normalzustand definieren zu müssen.

Ich kenne nichts, was überhaupt in die Nähe dessen kommt.

Gruß,
Steve

1 Like

Ah, gute Idee. Da gibt’s z.B. den Tarzan. Allerdings braucht man dafür mindestens eine Halbordnung, besser auch noch eine Metrik (im math. Sinne).

Das macht man normalerweise mit grep. Unter Windows mit Strg-F im Notepad++.

Die

ändert sich normalerweise gar nicht.

Was soll man über das Tool sagen, wenn du nicht mal raus lässt, um wessen Protokoll in welchem Betriebssystem es überhaupt geht?

@hroptatyr:
Sorry ich merke das meine frage sehr schlecht beschrieben ist. Ich meinte nicht das die Daten in der Protokol-/Log-Datien nicht vor Änderungen geschützt werden sollen.

@All
ja meine frage war wohl wirr gestellt, aber eure rückfragen helfen ja schon …

Also es soll fest gestellt werden ob sich eben über den lauf der Zeit die Daten die immer hinzugefügt werden in ihrer „Art/Struktur/frequenz“ ändern.
Das ganze sollte ja von dem Format der log Einträge unabhängig sein (also systematisch)
Um einfacher darüber reden zu können kann man sich ja mal auf folgendes einigen:
(Für die explizite Anwendung müsste man dies ja auch für den Algorithmus/tool/KI vor spezifizieren, aber bei den meißten log frameworks wird wohl sowas ähnlichs vorliegen)
[Application thread name/ID] [Date time stamp] [Log Level/Type] [Application class/method name] [Log message]
Es stimmt also, die Struktur nach diesem Format sollte sich natürlich nicht ändern … aber eben sonst der Inhalt etc.

An sich sollte man ja schon durch die einfach zu analysierenden ersten 4 Informationen einiges herausfinden können:
A) Eine Änderung der Frequenz von Events eines log-level-types - sollte machbar sein oder? (wenn wer Ideen hat/ etwas weiß das dass kann)
B) Eine Änderung der Anzahl/Frequenz der Events eines log-level-types aus einem bestimmten Bereich der Anwendung (basierend auf (A) + information 4)
C) Wenn man noch die log message analysiert und gegeneinander vergleicht sollte man auch hier herausfinden können welche teile variablen sind und welhce die statischen (das müsste eben automatisiert gehen damit es was bringt) -und basierend wiederum darauf kann man:
C1: wieder von diesen eine Frequenz analyse erhalten
C2: auch sehen ob sich ab einem Zeitpunkt die variablen extrem ändern (viel länger, wertebereiche selbst wird man nur schwer bestimmen können wenn es Objecte /stings sind)

Wurde jetzt auch auf https://www.loggly.com/docs/anomaly-detection/ aufmerksam - aber genau habe ich das auch noch nicht angesehen - und ist wohl auch mehr nur frequenz basiert.

Das Betriebssystem ist unerheblich (Linux und/oder Windows).

Wenn jemand Ideen zu einer Bestimmung der Frequenz basierend auf schon vor ge-parse-ten daten hat wäre ich dankbar … trazan muss ich mir wohl zu einer anderen Urzeit ansehen.

Ist dir das Programm ‚grep‘ bekannt?

@anon43214967:
Doch, wohl aber rudimentär - aber vielleicht kannst du mir sagen wie ich mit dem tool eine wie von mir oben schematisch dargestellte Analyse durchführen kann.

Mit grep sucht man die einzelnen interessanten Einträge und erzeugt daraus eine neue Datei. Daraus sucht man mit Grep alles, was uninteressant ist und schreibt den Rest in eine neue Datei. Und daraus kann man z.B. mit Gnuplot eine Grafik erzeugen. Oder was auch immer.

Was interessant und was uninteressant ist, weiß man nicht vorab. Das soll das System dynamisch lernen. grep ist dafür eher weniger geeignet.

1 Like