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:
- Aktivitätsprotokolle
- Server-Zugriffsprotokolle
- 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:
- MySQL General Query Logs (MySQL-Protokolle für allgemeine Abfragen)
- Azure-Aktivitätsprotokolle
- Apache-Webserver-Zugriffsprotokolle
- Active Directory-Audit-Protokolle
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:
- Linux lastlog
- Windows-Sicherheitsprotokolle
- AWS S3-Bucket-Server-Zugriffsprotokolle
- Oracle Directory Server-Zugriffsprotokolle
- SQL Server-Anmeldeprüfungen
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:
- Nginx-Fehlerprotokolle
- Systemfehlerprotokolle für IBM z/Transaction Processing Facility
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 Uhrzeit | Das Datum und die Uhrzeit des Zugriffs auf die Website, die im UTC-Format oder in der Ortszeit des Webservers stehen können. |
Quell-IP-Adresse | Die IP-Adresse des Client-Rechners. |
Ziel-IP-Adresse | Die IP-Adresse des Webservers. |
Ziel-FQDN | Der vollqualifizierte Domänenname eines Webservers. |
Ziel-Port | Der 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. |
Protokoll | Das Netzwerkprotokoll für den Client-Zugriff. Ein typisches Beispiel ist HTTP 1.1. |
Benutzername | Benutzer, die auf die Website zugreifen (anonyme Benutzer werden durch Bindestrich gekennzeichnet). |
Ressource | Die angeforderte Seite oder das angeforderte Element. |
HTTP-Methode | Die HTTP-Anfragemethode (z. B. GET , POST usw.). |
HTTP-Statuscode | Der vom Webserver zurückgegebene Statuscode (z. B. 200 OK, 404 Seite nicht gefunden usw.). |
URI-Abfrage | Die Anwendungsabfrage, die als Teil der HTTP-Anfrage an die Website geschickt wird. |
HTTP-Referrer | Die IP-Adresse oder URL, die den Client auf diese Website geleitet hat. |
HTTP-Benutzeragent | Der Typ und die Version des Client-Browsers. |
Empfangene Bytes | Die Anzahl der Bytes, die der Webserver vom Client erhalten hat. |
Gesendete Bytes | Die 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:
Webserver | Betriebssystem | Hauptkonfigurationsdatei |
---|---|---|
Apache | RHEL-basiert | /etc/httpd/conf/httpd.conf |
Apache | Debian-basiert | /etc/apache2/apache2.conf |
Nginx | RHEL-basiert | /etc/nginx/nginx.conf |
Nginx | Debian-basiert | /etc/nginx/nginx.conf |
IIS | Windows 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