Traffic: Unterschied zwischen den Versionen
Zeile 65: | Zeile 65: | ||
* Zeile 1: Log auswerten und IPs extrahieren und zählen | * Zeile 1: Log auswerten und IPs extrahieren und zählen | ||
* Zeile 2: Filtern (Mit der Anweisung '''egrep '^[0-9]{5,} .*$'''' werden durch die Ziffer 5 nur die gefundenen Einträge mit einer fünfstelligen Anzahl von Zugriffen gefunden. Ändert man 5 in 4, werden analog | * Zeile 2: Filtern (Mit der Anweisung '''egrep '^[0-9]{5,} .*$'''' werden durch die Ziffer 5 nur die gefundenen Einträge mit einer fünfstelligen Anzahl von Zugriffen gefunden. Ändert man 5 in 4, werden analog alle Einträge mit vierstelligen Zugriffszahlen gefunden. | ||
* Zeile 3: Einträge erzeugen | * Zeile 3: Einträge erzeugen | ||
Version vom 7. Dezember 2017, 10:36 Uhr
Als Traffic bezeichnet man Datenverkehr zwischen zwei Computersystemen.
Dies beinhaltet Web, Mail und FTP Verbindungen.
Traffic Ursachen erkennen
Als erstes einfach mal den Log ansehen und durchscrollen.
less ~/var/web.log less ~/var/web.log-yesterday
Da kann man oft schon alleine durch Ansehen gleichförmige Strukturen erkennen, z.B. massenhafte Login-Versuche auf einen Wordpress Blog, die sehr viel Traffic generieren.
Webzugriffe analysieren
Diese Idee von Michael Hierweck: Wie bekomme ich heraus, welche Web-Zugriffe für mein Traffic-Volumen maßgeblich verantwortlich sind?
cat $HOME/var/web.log |cut -d ' ' -f11 | grep -o '[0-9]*' | sort -n |uniq -c |sed -e's/^ *//' \ |while read FACTOR SUM; do echo "$((${FACTOR} * ${SUM})) ${FACTOR} ${SUM}"; done |sort -n
- Zeile 1: Traffic aus dem Log extrahieren, sortieren, zählen.
- Zeile 2: über die Einträge wandern
- Zeile 3: Produkt aus Zugriffen und Einzelvolumen berechnen
- Zeile 4: Ausgabe von Produkt, Zugriffen und Einzelvolume je Zugriff
- Zeile 5: sortieren
Dieser Skript gibt den Traffic aus, den gleichförmige Einzelzugriffe generieren, die größten Brocken stehen unten. Z.B.:
219558 6 36593 232288 14 16592 239998 22 10909 270812 2 135406 304520 5 60904 318248 14 22732 559062 14 39933 602760 20 30138 711496 8 88937 2325929 101 23029 2351668 29 81092
Ganz unten sieht man, dass 29 Zugriffe mit je 81092 Bytes zusammen 2351668 Bytes Traffic gekostet haben. In diesem Fall kann man nun ganz simpel im Log nach der dritten Zahl greppen und in less anzeigen, z.B. so:
grep 81092 $HOME/var/web.log | less
Wie bekomme ich IPs mit massenhaften Web-Zugriffen erkannt und gesperrt?
IPs mit mehrstelligen Zugriffen werden so gefunden (Hier alle IPs mit vierstelligen Zugriffen, beachte die Ziffer 4 im Ausdruck "egrep '^[0-9]{4,} .*$'"):
cat ${HOME}/var/web.log |cut -d ' ' -f2 | sort | uniq -c |sed -e's/^ *//' | egrep '^[0-9]{4,} .*$'
Als Paketadmin alle IPs mit 10.000 und mehr Web-Zugriffen aus dem heutigen Log filtern und dafür Sperreinträge erzeugen, die man in die .htaccess kopieren kann:
cat ${HOME}/var/web.log |cut -d ' ' -f2 |sort |uniq -c \ |sed -e's/^ *//' | egrep '^[0-9]{5,} .*$' |cut -d ' ' -f 2 \ |xargs -n1 -r -I XXX "echo deny from XXX"
- Zeile 1: Log auswerten und IPs extrahieren und zählen
- Zeile 2: Filtern (Mit der Anweisung egrep '^[0-9]{5,} .*$' werden durch die Ziffer 5 nur die gefundenen Einträge mit einer fünfstelligen Anzahl von Zugriffen gefunden. Ändert man 5 in 4, werden analog alle Einträge mit vierstelligen Zugriffszahlen gefunden.
- Zeile 3: Einträge erzeugen
Es bietet sich in beiden Fällen an, im Logfile mit grep nach den IPs oder dem Vorkommen des Traffics mit grep zu suchen, um weitere Erkenntnisse zu erlangen.