Webpage zur Anzeige der von fail2ban geblockten IP-Adressen

Irgendwie interessiert mich immer mal woher die IPs kommen die durch automatisierte Angriffscripts von fail2ban aussortiert werden. Was liegt hier nahe – ein Shellscript zu schreiben und dann mit crond regelmäßig zu erneuern. Geblockte IP-Adressen können mit:

fail2ban-client status | grep "Jail list:" | sed "s/ //g" | awk '{split($2,a,",");for(i in a) system("fail2ban-client status " a[i])}'

ausgelesen werden. Ist ein wenig unhandlich diese unformatierte Ausgabe.

Das hat zu folgendem Shellscript geführt:

#!/bin/bash
# Script zur Erzeugung einer html-Seite mit den von fail2ban geblockten IP-Adressen, entsprechender nslookup-Anfrage und GeoIP

echo \<!DOCTYPE HTML\>
echo \<html\>\<head\>\</head\>\<body\>
echo \<h3\>Automatisch geblockte IP-Adressen\</h3\>
echo \<table border="1"\>
echo \<tr\>\<td\>IP-Adresse\</td\>\<td\>Reverse Lookup\</td\>\<td\>GeoIP\</td\>\</tr\>

IFS=$' '
IPBLOCK=$(fail2ban-client status | grep "Jail list:" | sed "s/ //g" | awk '{split($2,a,",");for(i in a) system("fail2ban-client status " a[i])}'| grep -v Status |cut -d " " -f 8- |sed 's/\n\ //g'|sed 's/\s/\n/g' | sort | uniq | sed '/^$/d' |sed 's/\s/x/g') # Aus Fail2ban die geblockten IPs auslesen
echo $IPBLOCK | while read IP
do
echo \<tr\>
echo \<td\>$IP\</td\> #IP-Adresse anzeigen
hostname=$(echo $IP|xargs nslookup|grep name |cut -d = -f 2|grep -v NXDOMAIN) #Hostname anzeigen
geoip=$(echo $IP|xargs geoiplookup) #Geoip anzeigen
echo \<td\>$hostname\</td\>
echo \<td\>$geoip\</td\>
echo \</tr\>
done

echo \</table\>\</body\>

und die Ausgabe sieht dann so aus. Sicher kein besonders schönes Script aber funktional.

(Das Paket mit geoiplookup findet sich im Paket geoip-bin und kann aus den Repositorien von Debian mit apt-get install geoip-bin installiert werden)

Do NOT follow this link or you will be banned from the site!