Website-Suche

lnav – Überwachen und analysieren Sie Apache-Protokolle von einem Linux-Terminal aus


Vor weniger als zwei Wochen wurden durch den Ransomware-Angriff Wannacry Tausende von Computern kompromittiert, was großen Unternehmen und Privatpersonen gleichermaßen erhebliche Verluste bescherte. Zusammen mit anderen weit verbreiteten Schwachstellen, die in den letzten Jahren entdeckt wurden (z. B. der Shellshock-Bug), unterstreicht dies, wie wichtig es ist, den Überblick über Ihre geschäftskritischen Systeme zu behalten.

Obwohl Sicherheitslücken häufig auf ein bestimmtes Betriebssystem oder eine bestimmte Softwarekomponente abzielen, kann die Untersuchung des ein- und ausgehenden Datenverkehrs in Ihrem Netzwerk erheblich dazu beitragen, die Vermögenswerte zu schützen, für die Sie verantwortlich sind.

Empfohlene Lektüre: 4 gute Open-Source-Tools zur Protokollüberwachung und -verwaltung für Linux

Wie Sie sicher bereits wissen, sind Systemprotokolle der erste Ort, an dem wir nach diesen Informationen suchen sollten. Um Ihnen diese Aufgabe zu erleichtern, erklären wir in diesem Artikel, wie Sie lnav, einen erweiterten Protokolldatei-Viewer, installieren und verwenden. Mit lnav können Sie mehrere Arten von Protokollen gleichzeitig ansehen, mit Hotkeys durch die Datei navigieren und ein zusammengefasstes Histogramm der Zugriffe und Fehler erstellen. Lesen Sie also weiter!

Installieren und Starten von lnav unter Linux

Um lnav zu installieren, verwenden Sie das Paketverwaltungssystem Ihrer Distribution.

aptitude install lnav          [Debian and derivatives]
yum install epel-release lnav  [CentOS 7 and similar]

Sobald die Installation abgeschlossen ist, starten Sie lnav und geben anschließend den absoluten Pfad zu dem Verzeichnis ein, in dem sich die zu untersuchenden Protokolle befinden. Da dies normalerweise /var/log ist, gehen wir wie folgt vor:

lnav /var/log/httpd

So überprüfen Sie die Protokolle des Apache-Webservers in einem CentOS 7:

Sehen wir uns kurz die im vorherigen Bild gezeigte Ausgabe an:

  • In der oberen rechten Ecke werden die Dateien angezeigt, die derzeit überprüft werden (access_log-20170519 und access_log). Wenn Sie nach unten oder oben scrollen, werden Sie feststellen, dass sich die Dateinamen ändern können, wenn Sie von einer Datei zur anderen wechseln.
  • 40x HTTP-Antworten (z. B. Nicht gefunden oder Verboten) werden fett angezeigt, während 20x-Antworten angezeigt werden im regulären Text.
  • IP-Adressen werden in fettem Grün angezeigt.

Das sieht auf jeden Fall gut aus, oder? Aber lassen Sie uns jetzt etwas tiefer graben und wir werden sehen, dass lnav viel mehr als nur eine hübsch farbige Ausgabe bietet.

Wenn Sie neugierig sind, warum Fehlerprotokolle nicht angezeigt werden, finden Sie die Antwort später in diesem Artikel. Lesen Sie also weiter!

Ändern der Ausgabe mit Optionen und Hotkeys

Bevor wir fortfahren, listen wir einige Hotkeys auf, die es uns ermöglichen, einfacher durch die Ausgabe von lnav und die verfügbaren Ansichten zu navigieren:

  • e oder E um zur nächsten/vorherigen Fehlermeldung zu springen.
  • w oder W, um zur nächsten/vorherigen Warnmeldung zu springen.
  • b oder Backspace, um zur vorherigen Seite zu wechseln.
  • Leertaste, um zur nächsten Seite zu wechseln.
  • g oder G, um zum oberen/unteren Rand der aktuellen Ansicht zu gelangen.

Wenn Protokolle rotiert werden, werden alte Dateien möglicherweise komprimiert (oder auch nicht), abhängig von den in den Logrotate-Konfigurationsdateien angegebenen Einstellungen. Um komprimierte Dateien in die Ausgabe einzubeziehen, starten Sie lnav wie folgt:

lnav -r /var/log/httpd

Wenn Sie sich die Funktionsweise von lnav genauer ansehen möchten, können Sie das Programm mit der Option -d starten, gefolgt von einem Dateinamen, in den die Debug-Informationen geschrieben werden, etwa so:

lnav /var/log/httpd -d lnav.txt

In diesem Beispiel werden die Debug-Informationen, die beim Start von lnav generiert werden, in eine Datei mit dem Namen lnav.txt im aktuellen Arbeitsverzeichnis geschrieben.

Die ersten Zeilen dieser Datei werden im folgenden Bild angezeigt:

Der hervorgehobene Text weist darauf hin, dass lnav die Standardformatdatei und insbesondere das Format access_log geladen hat, um das Apache-Zugriffsprotokoll zu analysieren. Darüber hinaus ermöglicht lnav das Parsen jeder Ausgabezeile, sodass die Ausgabe einfacher zu visualisieren und zu verstehen ist.

Empfohlene Lektüre: GoAccess (ein Echtzeit-Apache und Nginx) Webserver-Protokollanalysator

Um diese Funktion zu nutzen, starten Sie das Programm und wählen Sie die Zeile aus, die Sie analysieren möchten. Die ausgewählte Zeile ist immer die oben im Fenster. Drücken Sie dann p und Sie sollten das folgende Ergebnis sehen:

Um zum Normalmodus zurückzukehren, drücken Sie erneut p.

Wenn Sie nun eine Zusammenfassung der Protokolle nach Datum und Uhrzeit sehen möchten, drücken Sie i. Der hervorgehobene Text weist beispielsweise darauf hin, dass es am Montag, dem 10. April, zwischen 22 und 23 Uhr 37 HTTP-Anfragen gab, von denen 14 zu Fehlern führten.

Sobald Sie anhand des oben gezeigten Histogramms ein potenzielles Problem identifiziert haben, können Sie i drücken, um die Ansicht zu verlassen und es mithilfe des Parsers genauer zu untersuchen, wie zuvor erläutert. Alternativ können Sie auch die integrierten SQL-Funktionen nutzen, indem Sie ein Semikolon eingeben und eine Standardabfrage schreiben. Gehen Sie zum Beispiel wie folgt vor:

;.schema

um die verfügbaren Tabellen im Datenbankschema anzuzeigen. Nachdem wir die richtige Tabelle identifiziert haben (access_log in unserem Fall), drücken wir q und verwenden dann die folgende Abfrage, um alle verfügbaren Informationen über Anfragen von 195.154.230.31 zurückzugeben:

;SELECT * FROM access_log WHERE c_ip='195.154.230.31'

Beachten Sie, dass wir die Ergebnisse auch nach log_time hätten filtern können. Der Punkt ist, wenn Sie ein wenig SQL hinzufügen, sind Ihnen mit lnav keine Grenzen gesetzt.

Apache-Standardprotokollformate

Viele Protokollformate werden standardmäßig mit lnav geladen und daher ohne unser Zutun geparst. Sie können die Liste im Abschnitt „Protokollformate“ in der offiziellen Dokumentation einsehen.

Standardformate werden in ~/.lnav/formats/default/default-formats.json.sample angegeben, andere können mit ~/.lnav/formats hinzugefügt werden.json-Erweiterung.

Das Bearbeiten dieser Dateien erfordert jedoch ein gewisses Maß an Vertrautheit mit JSON (Javascript Object Notation) und der PCRE-Bibliothek (Perl-Compatible Regular Expressions).

Warum hat lnav die Apache-Fehlerprotokolldateien nicht angezeigt? Der Grund dafür ist, dass diese Protokolle keinen regulären Ausdrücken in den vorhandenen Formatdateien entsprechen und daher als reguläre Textdateien (d. h. Dateien ohne bestimmtes Protokollformat) behandelt werden.

Empfohlene Lektüre: So überwachen Sie die Auslastung und Seitenstatistiken des Apache-Webservers

Wie bereits erwähnt, können Sie Ihre eigenen Formate erstellen, sobald Sie mit JSON und PCRE zumindest einigermaßen vertraut sind. Dies kann beispielsweise nützlich sein, wenn Sie benutzerdefinierte Apache-Protokolle definiert haben.

Zusammenfassung

Obwohl wir das Apache-Zugriffsprotokoll verwendet haben, um die Verwendung von lnav zu demonstrieren, bedenken Sie, dass es mehrere andere Arten von Protokollen gibt, die mit diesem Tool angezeigt und analysiert werden können. Wenn das Tool ein bestimmtes Protokoll nicht erkennt, können Sie zusätzliche Formate erstellen und diese gemäß den hier bereitgestellten Anweisungen installieren.

Haben Sie Fragen oder Kommentare zu diesem Artikel? Teilen Sie uns wie immer gerne über das untenstehende Formular mit. Wir freuen uns von Ihnen zu hören!