Auf Spurensuche: Meine liebsten Befehle, um Logfiles auszuwerten

Auf Spurensuche: Meine liebsten Befehle, um Logfiles auszuwerten

Wenn mal wieder ein Server down war, geht es erstmal darum schnell Antworten und erste Anhaltspunkte zu finden. Möglicherweise lag ein Angriff vor? Wurde der Server gescannt? Wie viele IP-Adressen waren beteiligt? Was wurde genau aufgerufen? Darum hier meine liebsten Kommandos, um schnell erste Ergebnisse zu erhalten:

Zähle alle Requests innerhalb einer bestimmten Minute

In diesem Fall möchte ich wissen, wie viele Requests in Minute 44 eingetroffen sind.

zcat access.log.20200601.gz | grep -o '2020:15:44' | uniq -c

Zähle alle Zugriffe in einer bestimmten Minute auf bestimmte Resourcen oder Endpunkte

Hier möchte ich wissen wie oft eine bestimmte Resource angefragt wurde. Zum Beispiel wie viele Bilder aus dem Verzeichnis /media/image abgerufen wurden.

zcat access.log.20191124.gz | grep '/media/image' | grep -o '2019:16:16' | uniq -c

Liste alle IPs in einem bestimmten Zeitraum nach der Anzahl der jeweiligen Requests auf

Hier möchte ich wissen welche IPs wie viele Requests in der Minute 14 an den Server gestellt haben. Die IPs werden nach Anzahl der Requests sortiert.

zcat access.log.20200618.gz | grep '2020:16:14' | grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" | sort | uniq -c | sort -n

Zähle die Anzahl der unique IPs in einem Zeitraum

Hier will ich wissen wie viele unique IPs in der Minute 13 zugegriffen haben.

zcat access.log.20200623.gz | grep '2020:16:13' | grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" | sort | uniq -c | sort -n | wc -l

Liste alle unique Resourcen auf, die in einem bestimmten Zeitraum angefragt wurden

Was wurde auf dem Server alles in einem bestimmten Zeitraum aufgerufen? Zum Beispiel in der Minute 44? $7 bezieht sich auf die Spalte mit den Pfadnamen der Resourcen.

zcat access.log.20200318.gz | grep '2020:15:44' | awk -F ' ' '{print $7}' | sort | uniq -c | sort -n

Wie oft wurde eine bestimmte Resource von welchen IPs in einem bestimmten Zeitraum aufgerufen?

Hier will ich wissen wie of die Route /register von welchen IPs aufgerufen wurde.

zcat access.log.20200824.gz | grep '2020:15:13' | grep "/register" | grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" | sort | uniq -c | sort -n

Liste alle Aktivitäten einer einzelnen IP auf

Dieser Befehl erstellt eine übersichtliche Liste aller Requests einer einzelnen IP. $4 verweist hier auf die Uhrzeit und $7 auf den Endpunkt.

zcat access.log.20200723.gz | grep "69.427.69.74" | awk -F ' ' '{print $4 $7}'

Liste alle Aktivitäten einer einzelnen IP in einem bestimmten Zeitraum auf

Wie der Befehl vorher. Nur in einem bestimmten Zeitraum. Hier Minute 16.

zcat access.log.20200718.gz | grep '2020:16:16' | grep "117.143.126.1" | awk -F ' ' '{print $4 $7}'

Bildquelle: https://pixabay.com/de/photos/verwischen-text-fingerabdruck-5195688/