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