Ein Zugriffsprotokoll ist eine Protokolldatei, die alle Ereignisse im Zusammenhang mit Client-Anwendungen und Benutzerzugriff auf eine Ressource eines Rechners aufzeichnet. Dies sind zum Beispiel Webserver-Zugriffsprotokolle, FTP-Befehlsprotokolle oder Datenbank-Abfrageprotokolle.

Die Verwaltung von Zugriffsprotokollen ist für Systemadministratoren eine wichtige Aufgabe. Software-Entwickler, IT-Mitarbeiter und Sicherheitsanalysten nutzen Zugriffsprotokolle, um zu überwachen, wie ihre Anwendung funktioniert, wer darauf zugreift und was hinter den Kulissen passiert. Zugriffsprotokolle können IT-Teams dabei helfen, Probleme aufzudecken, Bedrohungen zu identifizieren und Kapazitätsprobleme zu erkennen.

Meist enthalten Zugriffsprotokolle einige allgemeine Informationen, zum Beispiel:

  • Datum und Uhrzeit des Client-Zugriffs
  • IP-Adresse oder Hostname des Clients
  • Benutzername
  • Status oder Schweregrad des Ereignisses
  • Erfolg oder Misserfolg der Operation
  • Relevante Meldungen

In diesem Artikel erläutern wir, warum Zugriffsprotokolle wichtig sind, und gehen auf die verschiedenen Arten von Zugriffsprotokollen sowie ihre Speicherorte, ihren Inhalt und die verschiedenen beteiligten Konfigurationsparameter ein.

Arten von Zugriffsprotokollen

Zugriffsprotokolle lassen sich grob in drei Hauptkategorien einteilen:

  1. Aktivitätsprotokolle
  2. Server-Zugriffsprotokolle
  3. Fehlerprotokolle

Aktivitätsprotokolle

Aktivitätsprotokolle zeichnen alle Aktionen auf, die Benutzer während einer Sitzung ausführen, z. B. Befehle ausführen, URLs aufrufen und auf Dateien zugreifen. Dies sind Beispiele für Aktivitätsprotokolle:

Server-Zugriffsprotokolle

Server-Zugriffsprotokolle enthalten Informationen über Benutzerverbindungen und die entsprechenden Ressourcenanfragen. Im Gegensatz zu Aktivitätsprotokollen enthalten diese Protokolle keine ausführlichen Informationen über die eigentlichen Benutzeraktionen. Dies sind Beispiele für Server-Zugriffsprotokolle:

Fehlerprotokolle

Fehlerprotokolle enthalten Diagnoseinformationen zu Fehlern, die während Client-Sitzungen aufgetreten sind. Die Protokolle erleichtern die Ursachenanalyse von Anwendungs- und Systemfehlern. Dies sind einige Beispiele:

Der Einfachheit halber konzentrieren wir uns in diesem Artikel auf Webserver-Zugriffsprotokolle. Meistens beinhalten Webserver-Zugriffsprotokolle alle drei Informationstypen (Benutzerzugriffe, Benutzeraktivitäten und Anfragefehler).

Warum müssen Sie Zugriffsprotokolle erfassen?

Die Erfassung und Analyse von Webserver-Zugriffsprotokollen bietet Systemadministratoren viele Vorteile.

Zunächst zeigen diese Protokolle die Verfügbarkeit sowie den Zustand einer Webanwendung und ermöglichen damit eine schnellere Fehlerbehebung. Wenn im Zugriffsprotokoll beispielsweise viele 404-HTTP-Fehler auftauchen, bedeutet dies, dass Benutzer versuchen, auf eine oder mehrere nicht vorhandene Seiten zuzugreifen, oder dass die Website die falschen URLs verwendet.

Zudem können Zugriffsprotokolle die Behebung kritischer Fehler erleichtern. Beispielsweise weist eine hohe Anzahl von 5xx-Fehlern darauf hin, dass auf dem Webserver interne Fehler auftreten und ein Teil der Website wahrscheinlich gerade abstürzt. Ein genauerer Blick in das Fehlerprotokoll des Webservers kann weitere Informationen liefern.

Digitales Marketing ist ein weiterer Bereich, in dem Webserver-Zugriffsprotokolle wertvoll sind. Anhand der Zugriffsprotokolleinträge können digitale Vermarkter identifizieren, welche Bereiche einer Website von Benutzern aufgerufen werden und wo sie Daten anfordern, Formulare ausfüllen, Dateien herunterladen oder auf Links klicken. Dies kann zur Erstellung fein abgestimmter Benutzerprofile und zur Suchmaschinenoptimierung verwendet werden.

SecOps-Entwickler nutzen Webserver-Zugriffsprotokolle, um ungewöhnliches Verhalten oder Anomalien aufzudecken. Ein Beispiel ist eine unerwartete Flut von HTTP-GET-Anfragen aus einem bestimmten Bereich von IP-Adressen. Dies kann ein Hinweis auf einen möglichen DDoS-Angriff von kompromittierten Rechnern sein. Wenn ein Webserver eigentlich nur HTTP/HTTPS-Datenverkehr von einer Web-Anwendungsfirewall akzeptiert, können direkte HTTP-Anfragen von anderen IP-Adressen möglicherweise auf nicht autorisierte Zugriffe hindeuten.

Was enthält ein Zugriffsprotokoll?

In aller Regel finden sich in Webserver-Zugriffsprotokollen folgende Informationen:

Datum und UhrzeitDas Datum und die Uhrzeit des Zugriffs auf die Website, die im UTC-Format oder in der Ortszeit des Webservers stehen können.
Quell-IP-AdresseDie IP-Adresse des Client-Rechners.
Ziel-IP-AdresseDie IP-Adresse des Webservers.
Ziel-FQDNDer vollqualifizierte Domänenname eines Webservers.
Ziel-PortDer angefragte Port des Webservers. Meist ist dies Port 80 (Standard für HTTP) oder 443 (Standard für HTTPS). Je nach Website kann es aber auch jeder andere Port sein.
ProtokollDas Netzwerkprotokoll für den Client-Zugriff. Ein typisches Beispiel ist HTTP 1.1.
BenutzernameBenutzer, die auf die Website zugreifen (anonyme Benutzer werden durch Bindestrich gekennzeichnet).
RessourceDie angeforderte Seite oder das angeforderte Element.
HTTP-MethodeDie HTTP-Anfragemethode (z. B. GET, POST usw.).
HTTP-StatuscodeDer vom Webserver zurückgegebene Statuscode (z. B. 200 OK, 404 Seite nicht gefunden usw.).
URI-AbfrageDie Anwendungsabfrage, die als Teil der HTTP-Anfrage an die Website geschickt wird.
HTTP-ReferrerDie IP-Adresse oder URL, die den Client auf diese Website geleitet hat.
HTTP-BenutzeragentDer Typ und die Version des Client-Browsers.
Empfangene BytesDie Anzahl der Bytes, die der Webserver vom Client erhalten hat.
Gesendete BytesDie Anzahl der Bytes, die der Webserver dem Client gesendet hat.

Im nachfolgenden Ausschnitt aus einem Apache-Webserver-Zugriffsprotokoll sehen Sie, wie diese Felder aussehen:

116.35.41.41 - - [21/May/2022:11:22:41 +0000] "GET /aboutus.html HTTP/1.1" 200 6430 "http://34.227.9.153/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15"

Das Zugriffsprotokoll zeigt eine Client-Anfrage, die am 21. Mai 2022 um 11:22 Uhr lokaler Serverzeit von der IP-Adresse 116.35.41.41 kam. Der Client griff auf die Seite aboutus.html im Stammverzeichnis der Website zu. Der HTTP-Statuscode war 200 (d. h. die Client-Anfrage war erfolgreich) und die Adresse der verweisenden Website war http://34.227.9.153/. Der Benutzer verwendete den Safari-Browser von Apple, und der Webserver sendete 6430 Byte an den Client, als er die Seite bereitstellte.

Durch die Aggregation solcher Daten aus Zugriffsprotokollen lassen sich folgende Informationen ermitteln:

  • Die Anzahl eindeutiger Besucher pro Seite oder eindeutiger Seiten pro Besucher
  • Die Standorte der Besucher
  • Die am häufigsten aufgerufenen Teile einer Website
  • Die häufigsten Client-Abfragen
  • Die Gesamtzahl verschiedener HTTP-Statuscodes

So finden Sie Zugriffsprotokolle

Der Speicherort des Zugriffsprotokolls eines Webservers hängt vom Betriebssystem und dem Webserver selbst ab.

Beispielsweise ist der Standardspeicherort des Zugriffsprotokolls von Apache-Webservern in RHEL-basierten Systemen /var/log/httpd. In Debian-basierten Systemen wie Ubuntu ist der Speicherort /var/log/apache2.

Bei Nginx befindet sich das Zugriffsprotokoll sowohl in RHEL- als auch in Debian-basierten Systemen standardmäßig im Verzeichnis /var/log/nginx.

Zugriffsprotokolle der Internet Information Services (IIS), die auf Windows-Servern laufen, werden standardmäßig unter %SystemDrive%inetpublogsLogFilesW3SVC gespeichert. Das Verzeichnis %SystemDrive% befindet sich in der Regel unter C: und die Site-ID ist die ID der IIS-gehosteten Website.

Administratoren haben verschiedene Möglichkeiten, die Zugriffsprotokolle eines Webservers zu lesen. Ein Website-Administrator kann sich per SSH in der Konsole des Webservers für Linux-basierte Systeme anmelden und die Datei mit Befehlen wie cat, tail und grep lesen. Mitunter müssen Webmaster auch auf die Systemsteuerung des Hosting-Providers (z. B. cpanel) zugreifen, um das Zugriffsprotokoll öffnen und lesen zu können.

So sollten Zugriffsprotokolle konfiguriert werden

Wie die meisten anderen Einstellungen lassen sich auch die Eigenschaften eines Webserver-Zugriffsprotokolls in seiner Konfigurationsdatei festlegen. Je nach Webserver und Betriebssystem befindet sich die Hauptkonfigurationsdatei eines Webservers an verschiedenen Orten. Hier ist eine Liste:

WebserverBetriebssystemHauptkonfigurationsdatei
ApacheRHEL-basiert/etc/httpd/conf/httpd.conf
ApacheDebian-basiert/etc/apache2/apache2.conf
NginxRHEL-basiert/etc/nginx/nginx.conf
NginxDebian-basiert/etc/nginx/nginx.conf
IISWindows Server%WinDir%System32InetsrvConfigApplicationHost.config

Häufig bieten Webserver folgende Einstellungen für Zugriffsprotokolle:

  • Protokollspeicherort
  • Protokollformat
  • Protokollebene
  • Protokollrotation

Der Speicherort des Zugriffsprotokolls kann für jede auf dem Webserver gehostete Website unterschiedlich sein. Bei Apache beispielsweise wird der Speicherort des serverweiten Zugriffsprotokolls durch folgenden Befehl festgelegt:

CustomLog "/var/log/httpd2/access_log" common

Für einen VirtualHost kann dies jedoch überschrieben werden:

 ServerName www.mysite.com ServerAlias test.com DocumentRoot /var/www/html/test.com ErrorLog /var/log/httpd/mysite.com/error_log CustomLog /var/log/httpd/mysite.com/access_log combined 

Die Konfiguration des Zugriffsprotokollformats gibt an, welche Felder in die Protokolleinträge eingeschlossen werden sollen. Das Format des Zugriffsprotokolls kann common (Standard) oder combined (kombiniert) sein. Der folgende Ausschnitt zeigt eine Beispielkonfiguration:

LogFormat "%h %l %u %t "%r" %>s %b" common

Dies bedeutet:

  • %h ist der Remote-Hostname
  • %l ist der Remote-Protokollname aus identd (falls angegeben)
  • %u ist die Benutzer-ID des Clients (falls verfügbar)
  • %t ist der Zeitstempel bzw. die Zeit, zu der die Anfrage empfangen wurde
  • %r ist die erste Zeile der HTTP-Anfrage
  • %>s ist der vom Webserver zurückgegebene HTTP-Statuscode
  • %b ist die Größe der zurückgegebenen Ressource in Byte

In der Apache-Dokumentation erfahren Sie, wie Sie ein eigenes Zugriffsprotokollformat mithilfe des Moduls für benutzerdefinierte Protokolle konfigurieren können.

Weitere Konfigurationseinstellungen für das Apache-Zugriffsprotokoll sind zum Beispiel Protokollebene und Protokollrotation. Die Protokollebene ermöglicht es, nur bestimmte Ereignisse auf oder ab einem gewissen Schweregrad einzubeziehen. Die Schweregrade können debug, info, notice, warn, error, crit, alert, emerg sowie alles zwischen trace1 und trace8 sein. Je niedriger die Protokollebene, desto ausführlicher sind die Protokolleinträge. Im folgenden Ausschnitt konfigurieren wir das Zugriffsprotokoll so, dass nur Meldungen der Ebene „warn“ und darüber aufgezeichnet werden:

LogLevel warn

Für Apache VirtualHosts kann dies überschrieben werden.

Die Apache-Protokollrotation kann mithilfe des Linux-Hilfsprogramms logrotate oder des Apache-Programms Rotatelog festgelegt werden.

Vollständige Protokollierung und Einblicke – kostenlos

Falcon LogScale Community Edition (ehemals Humio) ist eine kostenlose moderne Log-Management-Plattform für die Cloud. Durch die Erfassung von Streaming-Daten erhalten Sie einen sofortigen Überblick über verteilte Systeme und können Zwischenfälle verhindern bzw. beheben.

Falcon LogScale Community Edition ist sofort kostenlos verfügbar und bietet folgende Vorteile:

  • Erfassung von bis zu 16 GB pro Tag
  • Speicherung bis zu 7 Tage
  • Keine Kreditkarte erforderlich
  • Unbegrenzter Zugriff ohne Testzeitraum
  • Indexlose Protokollierung, Echtzeit-Warnungen und Live-Dashboards
  • Zugriff auf unseren Marktplatz und zugehörige Pakete, einschließlich Leitfäden zur Entwicklung neuer Pakete
  • Lernen und Kooperation in einer aktiven Gemeinschaft

Kostenlos testen