Inhaltsverzeichnis
fail2map
fail2map ist die grafische Darstellung aller geblockten IP-Adressen von fail2ban über eine Website mit GEO Daten. Es werden auf einer Weltkarte alle geblockten IP-Adressen anhand deren verfügbarer GEO Daten, lokalisierten und dargestellt.
fail2ban untersucht LOG-Dateien wie z.B. (/var/log/httpd/error.log) und schließt diejenigen IP-Adressen vom Zugriff aus, welche beim Zugriff bestimmt Schlüsselwörter innerhalb des Zugriffes und der Protokollierung innerhalb der LOG-Datei ausweisen. fail2ban nutzt zum Ausschluss von bestimmten IP-Adressen den Paketfilter iptables und fügt hierzu gewisse Einträge, zum Regelwerk von iptables für eine definierte Zeit hinzu. fail2ban kann gleichzeitig auch bestimmte Aktionen, wie Benachrichtigung per e-Mail auslösen.
Siehe auch den internen Link:
Ab hier werden zur Ausführung nachfolgender Befehle root
-Rechte benötigt. Um der Benutzer root
zu werden, melden Sie sich bitte als root
-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root
:
$ su - Password:
Voraussetzungen
Als Voraussetzung für die Installation von fail2map sind folgende Komponenten erforderlich:
- Lauffähiger Web-Server z.B. Apache HTTP Server
- Siehe auch den internen Link: Apache HTTP Server CentOS 7
- Lauffähiges fail2ban
- Siehe auch den internen Link: fail2ban
Herunterladen
Mit nachfolgendem Befehl kann direkt von fail2map eine gepackte Datei als Archiv direkt in das temporäre Verzeichnis /tmp
heruntergeladen werden:
# wget -P /tmp https://github.com/tachtler/fail2map/archive/master.zip --2016-11-25 05:49:48-- https://github.com/tachtler/fail2map/archive/master.zip Resolving github.com (github.com)... 192.30.253.112, 192.30.253.113 Connecting to github.com (github.com)|192.30.253.112|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://codeload.github.com/tachtler/fail2map/zip/master [following] --2016-11-25 05:49:49-- https://codeload.github.com/tachtler/fail2map/zip/master Resolving codeload.github.com (codeload.github.com)... 192.30.253.121, 192.30.253.120 Connecting to codeload.github.com (codeload.github.com)|192.30.253.121|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 29966 (29K) [application/zip] Saving to: ‘/tmp/master.zip’ 100%[======================================>] 29,966 --.-K/s in 0.1s 2016-11-25 05:49:49 (227 KB/s) - ‘/tmp/master.zip’ saved [29966/29966]
Installation
Nachdem fail2map erfolgreich in das Verzeichnis /tmp
heruntergeladen wurden, kann dies mit nachfolgendem Befehl entpackt werden:
# unzip /tmp/master.zip
Anschließend sollte nun im Verzeichnis /tmp
ein Verzeichnis mit dem Namen fail2ban-master
entstanden sein, was mit nachfolgendem Befehl überprüft werden kann:
# ls -l /tmp | grep fail2map drwxr-xr-x 3 root root 130 Aug 15 2015 fail2map-master
Anschließend soll nun das neu entstandene Verzeichnis nach
/var/www
verschoben werden und dabei gleichzeitig nach fail2map
umbenannt werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# mv /tmp/fail2map-master /var/www/fail2map
Eine Überprüfung, ob das Verschieben und Umbenennen auch funktioniert hat, kann mit nachfolgendem Befehl durchgeführt werden:
# ls -l -d /var/www/fail2map drwxr-xr-x 3 root root 130 Aug 15 2015 /var/www/fail2map
Konfiguration: fail2ban
Damit die Ereignisse welche zum blocken einer IP-Adresse durch fail2ban auch in die grafische Darstellung von fail2map einfließen können, ist es erforderlich nachfolgende Änderungen bzw. Ergänzungen in der fail2ban-Konfiguration durchzuführen.
/etc/fail2ban/actions.d/fail2map-action.conf
Zuerst soll nachfolgende mitgelieferte vorbereitete Kofnigurationsdatei fail2map-action.conf
in nachfolgendes Verzeichnis von fail2ban kopiert werden, bevor diese angepasst werden soll, was mit nachfolgendem Befehl durchgeführt werden kann:
# cp -a /var/www/fail2map/fail2map-action.conf /etc/fail2ban/action.d/fail2map-action.conf
Anschließend muss der Inhalt der Konfigurationsdatei
/etc/fail2ban/action.d/fail2map-action.conf
wie folgt angepasst werden:
(Komplette Konfigurationsdatei)
# Fail2Ban configuration file # # Author: Manuel Vonthron # [Definition] # actionstart = # actionstop = # actioncheck = # actionban = <fail2map> add <ip> # actionunban = [Init] # # Tachtler # default: fail2map = cd **FAIL2MAP PATH** && python fail2map.py fail2map = cd /var/www/fail2map && python fail2map.py
HINWEIS - In oben genannter Konfigurationsdatei /etc/fail2ban/action.d/fail2map-action.conf
muss nur der Pfad zum Python-Skript fail2map.py
angepasst werden!
/etc/fail2ban/jail.local
Damit nun die neue „action“ in /etc/fail2ban/action.d/fail2map-action.conf
auch jedes mal, wenn eine neue IP-Adresse geblockt wird, auchgerufen wird, muss die in fail2ban verwendete „action“ entsprechend erweitert werden.
HINWEIS - Alle Konfigurationsänderungen von fail2ban werden in /etc/fail2ban/jail.local
und nicht in /etc/fail2ban/jail.conf
durchgeführt!
WICHTIG - Es muss die verwendete „action“ angepasst werden, dies kann z.B.
action_
action_mw
action_mwl
action_xarf
action_cf_mwl
sein!
HINWEIS - Hier soll die „action“ - action_mwl
- angepasst werden!
Nachfolgende Anpassung muss durchgeführt werden:
VORHER:
# ban & send an e-mail with whois report and relevant log lines # to the destemail. action_mwl = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"] %(mta)s-whois-lines[name=%(__name__)s, sender="%(sender)s", dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s"]
NACHHER:
# ban & send an e-mail with whois report and relevant log lines # to the destemail. action_mwl = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"] %(mta)s-whois-lines[name=%(__name__)s, sender="%(sender)s", dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s"] fail2map-action
HINWEIS - In oben genannter Konfigurationsdatei /etc/fail2ban/jail.local
muss nur der Eintrag fail2map-action
angehängt werden!
/var/www/fail2map/fail2map.py
Um eine andere GEO-Lokalisations API nutzen zu können, kann nachfolgender Eintrag in der Konfigurationsdatei /var/www/fail2map/fail2map.py
wie folgt geändert werden:
(Nur relevanter Ausschnitt)
VORHER: - Anbieter: http://www.telize.com/
... GEOIP_API = "http://www.telize.com/geoip/%s" ...
NACHHER: - Anbieter: http://ip-api.com
... # Tachtler # default: GEOIP_API = "http://www.telize.com/geoip/%s" GEOIP_API = "http://ip-api.com/json/%s" ...
WICHTIG - Der Wechsel der API hat auch eine Änderung des Skripts - /var/www/fail2map/fail2map.py
zur Folge. Die folgende Zeile (Zeile 32) muss, wie nachfolgende beschrieben, abgeändert werden:
(Nur relevanter Ausschnitt)
# Tachtler # default: point["geometry"]["coordinates"] = [float(geo_value['longitude']), float(geo_value['latitude'])] point["geometry"]["coordinates"] = [float(geo_value['lon']), float(geo_value['lat'])]
WICHTIG - Der Wechsel der API hat auch noch eine Änderung des Skripts - /var/www/fail2map/fail2map.py
zur Folge. Die folgende Zeile (Zeile 33) muss, wie nachfolgende beschrieben, abgeändert werden:
HINWEIS - Die Änderungen erlaubt mehr als nur ASCII-Zeichen im Namen der Stadt und des Landes!
(Nur relevanter Ausschnitt)
# Tachtler # default: point["properties"]["place"] = "{0}, {1}".format(geo_value.get('city', ''), geo_value.get('country', '')) point["properties"]["place"] = "{0}, {1}".format(geo_value.get('city', '').encode('utf-8'), geo_value.get('country', '').encode('utf-8'))
/var/www/fail2map/js/maps.js
Falls gewünscht, kann auch die zur Anzeige verwendete „Weltkarte“ angepasst werden. Hierzu muss in der Konfigurationsdatei /var/www/fail2map/js/maps.js
nachfolgende Änderung durchgeführt werden:
Siehe auch den nachfolgenden externen Link: (mit Beispielen)
... // list of tile providers can be seen here: http://leaflet-extras.github.io/leaflet-providers/preview/ baseLayer = L.tileLayer.provider('Thunderforest.Landscape', { // write options and credentials here // id: 'MAPBOX_ID', // accessToken: 'MAPBOX_TOKEN' }).addTo(map); ...
Neustart: fail2ban
Nach Durchführung der vorhergehenden Konfigurationsschritte, muss ein Neustart von fail2ban durchgeführt werden, damit die Änderungen wirksam werden:
# systemctl restart fail2ban.service
Konfiguration: Apache Webserver
/etc/httpd/conf.d/vhost.conf
Es soll ein virtueller Host im Apache HTTP Server eingerichtet werden.
Siehe dazu auch nachfolgende interne Links:
Dazu kann der Inhalt einer möglichen Konfigurationsdatei
/etc/httpd/conf.d/fail2map.conf
wie nachfolgend dargestellt entsprechend erstellt werden:
(Komplette Konfigurationsdatei)
# # fail2map.tachtler.net (Fail2Map for Fail2Ban) # <VirtualHost *:80> ServerAdmin webmaster@tachtler.net ServerName fail2map.tachtler.net ServerAlias www.fail2map.tachtler.net ServerPath / DocumentRoot "/var/www/fail2map" <Directory "/var/www/fail2map"> Options -Indexes +FollowSymLinks # Tachtler (enable for .htaccess file support) # AllowOverride AuthConfig AllowOverride None # Tachtler (enable for unlimited access) Require all granted </Directory> DirectoryIndex index.html ErrorLog logs/fail2map_error.log SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded CustomLog logs/fail2map_access.log combined env=!forwarded CustomLog logs/fail2map_access.log combined_proxypass env=forwarded </VirtualHost>
Neustart: Apache Webserver
Nach Durchführung der vorhergehenden Konfigurationsschritte, sollte einem Neustart nichts im Wege stehen und die Apache VHOST-Konfiguration angezogen werden:
# systemctl restart httpd.service
HINWEIS - Es erfolgen keine weiteren Ausgaben, wenn der Start erfolgreich war !
Erster Aufruf
Nachfolgender Aufruf zeigt die Ausgabe durch fail2map: