FirewallLogReader

Man ist halt nicht immer einfach nur Programmierer. Gerade in der heutigen Alltags-Realität eines Windows-Entwicklers kommt es leider mehr als einmal am Tag dazu, dass man sich mit Ports, Routen, Weiterleitungen und Logs beschäftigen muss. Das führte bei mir bereits zu PPing. Nun kommt ein weiterer Vertreter aus der Rige der Netzwerktools – FirewallLogReader.

Download des Programms (7Zip)

Vorbemerkungen

Der Einsatzzweck dieses kleinen Tools ist kurz und bündig umrissen. Es dient dazu, die Einträge einer im Windows-Firewall-Format erstellten Log-Datei übersichtlich darzustellen. Außerdem funktioniert es “tail”-artif. D.h., dass das Programm im Hintergrund die Log-Datei überwacht und ggf. sofort Aktualisierungen anzeigt.

Doch warum sollte man dieses Programm benötigen? Wer sich das fragt, hat noch nie versucht, mit Windows-Bortmitteln eine Auswertung des Logs zu machen. Ich möchte hier nur kurz aufzeigen, wie das z.B. auf einem Windows Server 2008 R2 so aussehen könnte. Ich denke, dann wird der Einsatzzweck meines kleinen Tools klarer.

Firewall-Knowhow

Diesen Abschnitt kann getrost überspringen, wer das Logging schon eingeschaltet hat und sich einfach nur über die Windows-Unzulänglichkeiten ärgert.

Zunächst einmal muss man in den Windows-Firewall-Einstellungen das Logging aktivieren. Dazu geht man normalerweise über das Startmenu, gibt dort Firewall ein und wählt den Eintrag “‘Windows-Firewall mir erweiterter Sicherheit” oder das englische Pendent:

Abb. 1: Firewall im Startmenu

Abb. 1: Firewall im Startmenu

Nach dem Start präsentiert sich das Ganze ungefähr so:

Abb. 2: Windows-Firewall

Abb. 2: Windows-Firewall

Nun geht es daran, der Firewall überhaupt mal das Logging beizubringen. Dazu lässt man am besten den Root-Eintrag in der Baumansicht links ausgewählt und klickt dann im mittleren Fenster auf den Link “Windows-Firewall-Eigenschaften”:

Abb. 3: Link für Eigenschaften

Abb. 3: Link für Eigenschaften

Jetzt öffnet sich ein Dialog, der es über entsprechende Registerkarten erlaubt, die Einstellungen je nach sog. Profil festzulegen. Es gibt grundsätzlich 3 Profile: Domäne, Privat und Öffentlich. Welches Profil jeweils gilt, hängt vor allem von der Netzwerkkarten-Einstellung ab, über die Anfragen eingehen. Ist die Karte über eine Domäne verbunden, gilt hat das Domänenprofil. Ich muss gestehen, dass ich diese Unterscheidung leider nicht voll durchdrungen habe. Ich weiß z.B. nicht, wie man genau heraus bekommt, welche Karte welchem Profil zugeordnet ist. Vielleicht kennt hier jemand eine Lösung? Aber weiter.

Auf jedem der Profil-Tabs ist der Button “Anpassen…” in der Gruppe “Protokollierung” von Interesse:

Abb. 4: Firewall-Protokollierungs-Einstellungen aufrufen

Abb. 4: Firewall-Protokollierungs-Einstellungen aufrufen

Klicke ich diesen an, so würde ich im Fall von Abb. 4 also nur die Einstellungen für das Profil “Domäne” ändern. Im Dialog muss man nun einfach nur noch mitteilen, ob man nur verworfene, nur geblockte, beides oder keins von beidem protokolliert haben möchte:

Abb. 5: Einstellungen für Protokollierung

Abb. 5: Einstellungen für Protokollierung

Ein Hinweis dazu: Wer sich entschließt, beides zu protokollieren, sollte tunlichst eine einzelne Datei pro Profil angeben, indem er in der Textbox oben einen jeweils eigenen Dateinamen definiert. Ansonsten wird das Log schnell voll laufen!

Sobald man all das bestätigt und alle schwebenden Fenster mit OK bestätigt hat, sollte man zurück im Firewall-Dialog aus Abb. 2 sein.

Hier klickt man nun im linken Baummenu auf “Überwachung”. Die Ansicht ändert sich und man erhält pro Profil eine Übersicht der Einstellungen sowie einen Link zu Protokolldatei:

Abb. 6: Überwachung für Profil "Domäne"

Abb. 6: Überwachung für Profil “Domäne”

Unnützes Log

Nach all dem Vorgeplänkel nun aber endlich zum Kern der Sache. Ein Klick auf den Log-Dateinamen in Abb. 6 bringt enttäuschenderweise das Notepad in ungefähr folgender Weise zum Vorschein:

Abb. 7: Wenig hilfreich

Abb. 7: Wenig hilfreich

Wie Cpt. James Sparrow sagen würde: “Das ist unhilfreich!”. Man sieht einfach nur eine durch Leerzeichen getrennte Datei und darf z.B. schön die Spalten durchzählen, um hier näheres zu erfahren. Noch viel lästiger: Das Notepad hat nicht wirklich eine Refresh-Funktion. Also schön artig zumachen und wieder öffnen, um Updates zu sehen.

Durch eine Eigenheit des Windows-Logwriters wird das noch dadurch erschwert, weil selbiger nicht alle auftretenden Meldungen sofort schreibt. Er flusht nach einer gewissen Zeit die neuesten Einträge ins Log. Natürlich tauchen diese dann am Ende der Datei auf, was schnell in Klick-Scroll-Orgien endet. Einfach nur ermüdend.

Alternativen

Ich bin ziemlich sicher, dass es einen Haufen professioneller Tools für das Lesen von Logs gibt, nur bin ich, wie auch bei PPing der Meinung, man braucht genau das richtige Tool für den richtigen Zweck. Die eierlegenden Wollmilchsäuse sind allzu oft viel zu vollgepackt und man muss sich erst einarbeiten.

FirewallLogReader

Auftritt FirewallLogReader. Dieses kleine Konsolenprogramm wird einfach auf das Zielsystem gebracht. Der Desktop reicht hier aus. Dann einfach ein Rechtsklick auf die EXE und als Admin ausführen (das muss sein, weil Lesen in System32 ansonsten verboten ist).Die Ausgabe erscheint dann ca. so:

Abb. 8: FirewallLogReader in Aktion

Abb. 8: FirewallLogReader in Aktion

Das Tool leistet einige kleine Nettigkeiten:

  • Das Konsolenfenster mit einem vergrößterten Puffer geöffnet, um Umbrüche zu vermeiden.
  • Alle Einträge werden durchnummeriert.
  • Alle Einträge, die keinen ALLOW beinhalten werden rot gefärbt, alle anderen grün.
  • Die Daten werden in Spalten organisiert. Alle 20 Einträge habe ich einen neuen Header eingefügt, damit man nicht ewig nach oben scrollen muss, um die Spalte herauszubekommen.
  • IP-Adresse und Port werden in der üblichen Notation zusammengefasst, sodass sich die beiden Infos nun nicht mehr in mehreren Spalten befinden.
  • Einmal gestartet, behält das Tool die Datei im Blick und aktualisiert ggf. die Liste, sobald neue Einträge durch die Windows-Firewall erzeugt wurden.

Standardmäßig kann man das Tool über 2 Wege konfigurieren:

  • Die Datei “FirewallLogReader.Console.exe.config” enthält ein Tag “FileName” dessen value-Tag einfach den Pfad zur Log-Datei entgegen nimmt.
  • Über 2 Startparameter kann man zunächst die Log-Datei und dann ggf. auch noch einen Filter-String angeben.

Der zweite angegebene optionale Punkt könnte beispielsweise so aussehen:


FirewallLogReader.Console.exe C:\temp\mylog.log ALLOW

Dieser Aufruf würde die in C:\temp angegebene Datei zum Ziel nehmen und nur noch Einträge mit dem Text “ALLOW” anzeigen. Diese Filterung führt einen String-Vergleich auf den Feldern Source-IP, Dest-IP, Protocol und Action durch.

Ich habe für das erste Release erstmal keine weiteren Optionen einprogrammiert. Kommt vielleicht noch.

Wer sich fragt, warum .NET 4.5 sein musste: Ich nutze hier bereits async/await für die Dateizugriffe. Das war mir das hohe Framework wert.

Planung

Das Tool hilft mir erstmal jetzt schon weiter. Ich sehe aber schon einen kleine hübschen WPF-Client, vielleicht eine Service-Version (SignalR???) und weiter coole Erweiterungen kommen. Jetzt muss ich mir dafür nur noch ein Zeitfenster suchen :-(. Ich hoffe, es hilft vielleicht trotzdem dem ein oder anderen!

Blogverzeichnis - Blog Verzeichnis bloggerei.de

2 Responses to “FirewallLogReader”

  1. Patrick Says:

    Hi Sprinter,

    nettes Tool, gefällt mir, was jetzt noch fehlt und das suche ich momentan für Windows, ist die Ausgabe der Logs auf dem Desktophintergrund darzustellen wie es bei Apple das XLog macht: https://itunes.apple.com/de/app/xlog/id430304898?mt=12

    Ich weiß nicht wie man das technisch umsetzen sollte, da sich ja die Dateien auf dem Desktop auf dem Monitoring Anzeige liegen, evtl. hast du einen Ansatz :-)

    Grüße
    Patrick

  2. sprinter Says:

    Hallo Patrick! Ich habe das Tool ja sowieso die ganze Zeit im Auge nur die verd…. Zeit! Trotzdem erstmal danke für die Anregung!

Leave a Reply