Ich habe ja bereits schon ein paar Male über fail2ban geschrieben: fail2ban Monitoring und fail2ban und dynamische IP-Adressen. Heute mal ein ganz anderes Thema: Eine Übersicht über die geblockten IP-Adressen. Das kann zum Beispiel als wöchentlicher Bericht versendet werden.
Mit fail2ban-client status
kann man sich die Anzahl der Jails ansehen, mit fail2ban-client status <jail>
dann den Status des jeweiligen Jails. Aber halt nur von einem Jail. Will man mehrere auf einmal betrachten: Fehlanzeige.
Also rasch zum Editor gegriffen und ein paar Zeilen bash Code eingetippt. Hierfür werte ich einfach die bei Status gelisteten Jails aus und lege eine Schleife über diese um dann separat zu jedem Jail die Details anzufordern. Damit das ganze etwas Luxus bietet und nicht nur aus schnöden IPs besteht noch rasch GeoIP installiert. Das sind unter Ubuntu die beiden Pakete geoip-bin
und geoip-database
. Heraus kam folgendes, kurzes Skript welches ich fail2ban-overview
genannt habe:
#!/bin/bash # # Erzeugt eine einfache Uebersicht von fail2ban - gehirn-mag.net # # Allgemeiner Status F2BSTAT=$(fail2ban-client status) echo "${F2BSTAT}" # Details zu den einzelnen Jails F2BDETAIL=$(for SERVICE in $(echo -e "${F2BSTAT}" | tail -1 | cut -d: -f2 | sed -e "s/, / /g"); do echo fail2ban-client status $SERVICE done) echo "${F2BDETAIL}" # GeoIP ermitteln - Spielzeug, just for fun... echo -e "\n\n" for IP in $(echo "${F2BDETAIL}" | grep "IP list:" | cut -d: -f2); do echo echo $IP geoiplookup $IP done
Zugegeben, das mit der GeoIP ist eine Spielerei. Aber eine ganz nette da man auf diese Art sieht woher die geblockten IPs kamen. Das als täglicher Bericht via Mail und schon hat man einen ganz guten Überblick.
Und so sieht eine Beispielausgabe eines frisch aufgesetzten Jitsi-Servers aus (noch ohne Luxus – die IP-Adressen habe ich anonymisiert):
Status |- Number of jail: 3 `- Jail list: fail2ban, prosody, sshd Status for the jail: fail2ban |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- File list: /var/log/fail2ban.log `- Actions |- Currently banned: 0 |- Total banned: 0 `- Banned IP list: Status for the jail: prosody |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- File list: /var/log/prosody/prosody.log `- Actions |- Currently banned: 0 |- Total banned: 0 `- Banned IP list: Status for the jail: sshd |- Filter | |- Currently failed: 1 | |- Total failed: 32 | `- File list: /var/log/auth.log `- Actions |- Currently banned: 2 |- Total banned: 3 `- Banned IP list: 85.xxx.xxx.xxx 49.xxx.xxx.xxx 85.xxx.xxx.xxx GeoIP Country Edition: RU, Russian Federation 49.xxx.xxx.xxx GeoIP Country Edition: CN, China
Hi,
wie kann man das script ändern, dass auch IPV6 mit bearbeitet werden?
Danke und Gruß,
Mike
Moin Mike.
Ich habe gerade hier kein Beispiel mit einer geblockten IPv6-Adresse. Wenn mir eine Beispiel-Ausgabe vom fail2ban-client status zukommen lässt, kann ich mir das gerne mal anschauen.
Was müsste man denn tun: Mit einer einfachen Prüfung erkennen, ob das eine IPv4 oder IPv6 Adresse ist und dann entsprechend geoiplookup oder geoiplookup6 verwenden. Damit sollte es eigentlich bereits funktionieren.
Grüße,
Steffen