Zum Hauptinhalt springen Skip to page footer

Erweiterte Protokollierung im Apache-Webserver: Detaillierte Einblicke in den Datenverkehr und verbesserte Analysemöglichkeiten

| Tutorial | Apache Linux

Optimiere die Überwachung deiner Website! Erfahren Sie, wie Sie durch zusätzliche Informationen über den Datenverkehr auf Ihrer Website detaillierte Einblicke gewinnen können. Von forensischen IDs bis hin zu benutzerdefinierten Protokollierungsformaten - diese leistungsstarke Funktion ermöglicht es Ihnen, Angriffe zu analysieren, das Benutzerverhalten zu verstehen und die Performance Ihrer Website zu optimieren.

Apache-Webserver erweiterte Protokollierung

Durch die erweiterte Protokollierung für den Apache-Webserver können Sie zusätzliche Informationen über den Datenverkehr auf Ihrer Website sammeln. Im Gegensatz zur Standardprotokollierung, die grundlegende Informationen wie IP-Adresse, Anfragezeit und Statuscode erfasst, bietet die erweiterte Protokollierung detailliertere Einblicke in den Fluss von Anfragen und Interaktionen mit dem Server.

Die erweiterte Protokollierung bietet eine Vielzahl zusätzlicher Protokollformate und Optionen, die bei Bedarf aktiviert werden können. Hier sind einige der wichtigsten Funktionen und Informationen, die Sie mit erweiterten Protokollen erhalten können:  

  1. Forensische ID: Jede Anfrage erhält eine eindeutige forensische ID, die in den Protokollen verzeichnet wird. Diese ID ermöglicht es dir, eine einzelne Anfrage über verschiedene Protokolldateien hinweg zu verfolgen und zusammenzuführen, was besonders nützlich sein kann, um Angriffe zu analysieren oder das Verhalten bestimmter Benutzer nachzuverfolgen.
  2. Anfrageheader: Die erweiterte Protokollierung erfasst die vollständigen HTTP-Anfrageheader, einschließlich Informationen wie User-Agent (Browser/Client-Typ), Referrer (verweisende URL), akzeptierte Sprachen und vieles mehr. Dies kann bei der Analyse des Benutzerverhaltens und der Identifizierung bestimmter Clients hilfreich sein.
  3. Serverantwortheader: Neben den Anfrageheadern erfasst die erweiterte Protokollierung auch die vollständigen HTTP-Antwortheader des Servers. Dies umfasst Informationen wie den verwendeten Server, den Content-Type der Antwort, Cookies und andere relevante Header-Informationen.
  4. Verarbeitungszeiten: Die erweiterte Protokollierung kann die Zeit erfassen, die der Server für die Verarbeitung einer Anfrage benötigt hat. Dies beinhaltet die Zeit für den DNS-Lookup, den Verbindungsaufbau, die Übertragung der Daten und andere interne Verarbeitungsschritte. Diese Informationen können bei der Performance-Analyse und der Optimierung der Website hilfreich sein.
  5. Benutzerdefinierte Protokollierungsformate: Mit der erweiterten Protokollierung kannst du benutzerdefinierte Protokollierungsformate definieren, um spezifische Informationen zu erfassen, die für deine Anwendungsanforderungen relevant sind. Du kannst die Protokollierung anpassen und zusätzliche Informationen erfassen, wie beispielsweise benutzerdefinierte Header, spezifische Anwendungsdaten oder Metriken.

Erweiterte Protokollierungsfunktionen bieten umfangreiche Möglichkeiten zur Datenerfassung und -analyse, um Einblicke in das Verhalten und die Interaktionen der Website zu gewinnen. Durch das Sammeln detaillierterer Informationen können Sie Probleme schneller finden, Angriffe identifizieren und die Anwendungsleistung optimieren.

Beachten Sie jedoch, dass die Protokollierung in großem Umfang möglicherweise zusätzliche Ressourcen und Speicherplatz erfordert. Konfigurieren Sie die erweiterte Protokollierung entsprechend Ihren Anforderungen und verfügbaren Ressourcen. Wir empfehlen, die erweiterte Protokollierung nur dann zu aktivieren, wenn Sie bestimmte Informationen benötigen oder besondere Anforderungen haben, da dies zusätzliche Auswirkungen auf die Serverleistung haben kann. Die genaue Konfiguration der erweiterten Protokollierung für den Apache-Webserver kann je nach Version und Betriebssystem variieren. Es ist wichtig, die offizielle Apache-Projektdokumentation und die spezifischen Handbücher für Ihre Version und Plattform zu Rate zu ziehen.

Die erweiterte Protokollierung bietet eine leistungsstarke Möglichkeit, detaillierte Informationen über den Datenverkehr auf Ihrer Website zu erhalten. Die Analyse dieser Informationen kann Erkenntnisse zur Verbesserung der Sicherheit, Leistung und Benutzererfahrung liefern. 

Konfiguration Erweiterte Protokollierung

1. Überprüfen Sie die Installation des Apache-Webservers:

Stellen Sie sicher, dass der Apache-Webserver auf Ihrem Ubuntu-System installiert ist. Um dies zu überprüfen, führen Sie den folgenden Befehl in Ihrem Terminal aus: 

apache2 -v

Wenn Sie eine Ausgabe im folgenden Format erhalten, ist der Apache-Webserver installiert. 

Server version: Apache/2.4.52 (Ubuntu)
Server built:   2023-03-01T22:43:55

noch 1.

Wenn Sie eine Fehlermeldung erhalten, müssen Sie zuerst den Webserver installieren. Befolgen Sie dazu die Anleitung des Tutorials “Apache und PHP installieren: Ein Leitfaden für die Installation unter Ubuntu”.

2. Aktivieren Sie die Apache-Module.

Um die erweiterte Protokollierung nutzen zu können, müssen Sie bestimmte Apache-Module aktivieren. Mit dem folgenden Befehl können Sie die benötigten Module aktivieren:  

sudo a2enmod log_forensic
sudo a2enmod unique_id

3. Konfigurieren Sie das erweiterte Protokollformat.

Öffnen Sie die Apache-Konfigurationsdatei „apache2.conf“ oder „httpd.conf“ in einem Editor nano. Diese Datei befindet sich normalerweise im Verzeichnis /etc/apache2/.

sudo nano /etc/apache2/apache2.conf

4. Suchen Sie die Zeile, die mit "LogFormat" beginnt

Suchen Sie die Zeile(n), die mit „LogFormat“ beginnt, und fügen Sie das Format für die erweiterte Protokollierung hinzu. Sie können das Format an Ihre spezifischen Bedürfnisse anpassen. Hier ist ein Beispiel für das Format für die erweiterte Protokollierung. 

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" %{forensic-id}n" extended

Diese Zeile fügen wir der Datei apache.conf hinzu (siehe Zeile 18).

#
# The following directives define some format nicknames for use with
# a CustomLog directive.
#
# These deviate from the Common Log Format definitions in that they use %O
# (the actual bytes sent including headers) instead of %b (the size of the
# requested file), because the latter makes it impossible to detect partial
# requests.
#
# Note that the use of %{X-Forwarded-For}i instead of %h is not recommended.
# Use mod_remoteip instead.
#
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" %{forensic-id}n" extended

5. Speichern Sie die Datei und schließen Sie Ihren Editor. 

6. Aktivieren Sie das erweiterte Protokollierungsformat für die Konfiguration des virtuellen Hosts.

Aktivieren Sie das erweiterte Protokollformat für die Konfiguration des virtuellen Hosts.

Wenn Sie das erweiterte Protokollformat nur für einen bestimmten virtuellen Host aktivieren möchten, müssen Sie die Konfiguration des Hosts öffnen. Konfigurationsdateien für virtuelle Hosts befinden sich normalerweise im Verzeichnis /etc/apache2/sites-available/. 

sudo nano /etc/apache2/sites-available/example.com.conf

Fügen Sie die folgende Zeile innerhalb des <VirtualHost>-Blocks hinzu:  

CustomLog ${APACHE_LOG_DIR}/access.extended.log extended

Speichern Sie die Datei und schließen Sie Ihren Editor. 

7. Überprüfen Sie Ihre Apache-Konfiguration auf Fehler

Stellen Sie sicher, dass Ihre Apache-Konfiguration keine Fehler enthält, indem Sie den folgenden Befehl ausführen: 

sudo apache2ctl configtest

8 .Starten oder aktualisieren Sie den Apache-Webserver

Starten Sie den Apache-Webserver neu, damit die Konfigurationsänderungen wirksam werden. 

sudo service apache2 restart

Nachdem Sie diese Schritte ausgeführt haben, ist auf Ihrem Apache-Webserver unter Ubuntu die erweiterte Protokollierung aktiviert. Die Protokolldatei wird an dem gemäß Ihrer Konfiguration angegebenen Speicherort erstellt. In diesem Beispiel wird das erweiterte Protokoll in der Datei „access.log“ im Verzeichnis „/var/log/apache2/“ gespeichert. 

Um die erweiterten Protokolldateien anzuzeigen, öffnen Sie den Inhalt jeder Datei in einem Texteditor oder verwenden Sie den cat-Befehl: 

sudo cat /var/log/apache2/access.extended.log

Durch die erweiterte Protokollierung im Apache-Webserver können Sie zusätzliche Informationen zu Anfragen sammeln, einschließlich forensischer IDs, die für jede Anfrage generiert werden. Dies ist bei der Angriffsanalyse und Fehlerbehebung nützlich. 

Hier ist eine Liste der möglichen Platzhalter, die in der Formatzeichenkette der Apache-LogFormat-Direktive verwendet werden können:

  1. %a: Remote-IP-Adresse
  2. %A: Lokale-IP-Adresse
  3. %b: Größe der Antwort in Bytes (ohne Header)
  4. %B: Größe der Antwort in Bytes (inklusive Header)
  5. %D: Zeit in Mikrosekunden, die für die Verarbeitung der Anfrage benötigt wurde
  6. %h: Remote-Host (Hostname oder IP-Adresse)
  7. %H: Anfrage-Protokoll
  8. %l: Remote-Logname (nur mit mod_log_config)
  9. %L: Forensische ID (Modul mod_log_forensic)
  10. %m: Anfrage-Methode (GET, POST, etc.)
  11. %p: Server-Port
  12. %P: Prozess-ID des Apache-Prozesses, der die Anfrage verarbeitet hat
  13. %q: Query-String (Teil der URL nach dem Fragezeichen)
  14. %r: Die erste Zeile der Anfrage
  15. %s: Statuscode der Antwort (z. B. 200 für OK, 404 für Not Found)
  16. %t: Datum und Uhrzeit der Anfrage im Format "[Tag/Monat/Jahr:Stunde:Minute:Sekunde Zeitzone]"
  17. %T: Zeit in Sekunden, die für die Verarbeitung der Anfrage benötigt wurde
  18. %u: Authentifizierter Benutzer (sofern verfügbar)
  19. %U: Angeforderte URL-Pfad
  20. %v: Server-Name (Virtueller Host)
  21. %V: Kanonischer Server-Name
  22. %{Header}i: Wert des angegebenen Request-Headers
  23. %{Header}o: Wert des angegebenen Response-Headers
  24. %{Varname}e: Wert der angegebenen Umgebungsvariable
  25. %{Varname}n: Wert des angegebenen Notizen-Attributs
  26. %{Cookie}i: Wert des angegebenen Cookies, das vom Client gesendet wurde
  27. %{Variable}c: Wert der angegebenen Umgebungsvariable (veraltet)
  28. %{Variable}C: Wert des angegebenen Cookie-Header-Felds in der Anfrage
  29. %{Variable}r: Wert des angegebenen Anfrage-Header-Felds
  30. %{Variable}s: Wert des angegebenen Response-Header-Felds
  31. %{Variable}t: Wert des angegebenen Umgebungsvariablen-Attribute (z.B. Zeitstempel)
  32. %{Format}t: Benutzerdefinierte Zeitformatierung (z.B. %{%Y-%m-%d}t für das Datum im Format JJJJ-MM-TT)

Hinweis

Beachten Sie, dass dies keine vollständige Aufzählung der Platzhalter ist und das nicht alle Platzhalter in allen Apache-Versionen verfügbar sind, insbesondere bei Verwendung zusätzlicher Module oder Konfigurationsoptionen.