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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#!/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
#!/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
#!/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):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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
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
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