Access-Logs von Webservern gehören zu den häufigsten Logdateien, mit denen Administratoren arbeiten.
Sie verraten dir:
- wer (IP-Adresse) deine Seite besucht hat,
- was (Pfad) angefragt wurde,
- wann (Datum/Uhrzeit) es passiert ist,
- und wie erfolgreich (Statuscode) die Anfrage war.
In diesem Kapitel führen wir eine vollständige Analyse durch.
🔹 Aufbau eines Access-Logs
Beispielzeile (Apache-Log):
192.168.1.10 - - [24/Sep/2025:14:22:15 +0200] "GET /index.html HTTP/1.1" 200 532
-
$1
→ IP-Adresse -
$4
→ Zeitstempel (Datum & Uhrzeit) -
$6
→ HTTP-Methode -
$7
→ Pfad (angeforderte Seite) -
$9
→ Statuscode -
$10
→ Größe der Antwort in Bytes
🔹 Top 10 Besucher-IPs
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head
Ausgabe:
120 203.0.113.42 80 192.168.1.10 45 10.0.0.5
👉 Zeigt die aktivsten Clients.
🔹 Häufigste Seitenaufrufe
awk '{print $7}' access.log | sort | uniq -c | sort -nr | head
Ausgabe:
200 /index.html 150 /about.html 75 /contact.html
👉 Welche Inhalte sind am beliebtesten?
🔹 Statuscode-Übersicht
awk '{print $9}' access.log | sort | uniq -c | sort -nr
Ausgabe:
400 200 50 404 10 500
🔹 Fehler-IPs finden (404 & 500)
awk '$9 ~ /404|500/ {print $1}' access.log | sort | uniq -c | sort -nr | head
Ausgabe:
25 203.0.113.42 15 192.168.1.10
👉 Praktisch, um mögliche Angreifer oder Bots zu identifizieren.
🔹 Traffic pro Stunde
Zeitstempel steckt in $4
→ [24/Sep/2025:14:22:15
Wir holen uns die Stunde:
awk -F: '{print $2":00"}' access.log | sort | uniq -c | sort -nr
Ausgabe:
100 14:00 80 13:00 30 15:00
👉 So erkennst du Spitzenzeiten des Traffics.
🔹 Durchschnittliche Antwortgröße
awk '{sum+=$10; count++} END {print "Durchschnitt:", sum/count}' access.log
Ausgabe:
Durchschnitt: 487
👉 Gibt Aufschluss über typische Antwortgrößen.
🔹 Kombinierte Pipeline: „Top 10 Fehlerseiten“
awk '$9 ~ /^4|^5/ {print $7}' access.log \ | sort | uniq -c | sort -nr | head
Ausgabe:
30 /notfound.html 15 /login.php 8 /config.php
👉 Hier siehst du, welche Seiten besonders häufig Fehler auslösen.
🔹 Übungen
- Finde die Top 5 IPs, die die meisten
404
-Fehler erzeugt haben. - Erstelle eine Liste der meistbesuchten 10 Seiten.
- Berechne die durchschnittliche Größe nur erfolgreicher Anfragen (Status 200).
- Bonus: Analysiere Requests pro Tag (Datumsteil aus
$4
extrahieren).
✅ Zusammenfassung
- Access-Logs enthalten IP, Zeit, Methode, Pfad, Statuscode und Größe.
- Mit
awk
kannst du Top-IPs, Seiten und Statuscodes einfach berechnen. - Kombinationen mit
sort
,uniq
und Regex machen detaillierte Analysen möglich. - Ein Admin kann so Traffic-Muster erkennen und Fehlerquellen oder Angreifer finden.
👉 Im nächsten Kapitel (7) wenden wir die Methoden auf Systemlogs an – z. B. auth.log
für Loginversuche oder journalctl
-Ausgaben.
📚 Inhaltsverzeichnis
👉 Log-Analyse Kapitel 1: Logs im Terminal lesen – cat, less, tail & grep
👉 Log-Analyse Kapitel 2: Filtern mit grep und regulären Ausdrücken
👉 Log-Analyse Kapitel 3: Logs bereinigen mit sed – inkl. Mehrdatei-Änderungen
👉 Log-Analyse Kapitel 4: Logs analysieren mit awk
👉 Log-Analyse Kapitel 5: Logs kombinieren mit grep, sed, awk, sort, uniq & cut
👉 Log-Analyse Kapitel 6: Praxisprojekt – Apache-/Nginx-Access-Logs analysieren
👉 Log-Analyse Kapitel 7: Praxisprojekt – Systemlogs analysieren (auth.log & journalctl)
⭐ Bonus-Kapitel
👉 Log-Analyse Kapitel 8 (Bonus): Eigene Auswertungs-Skripte für Logs schreiben
👉 Log-Analyse Kapitel 9 (Bonus): Logs visualisieren mit CSV & gnuplot