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:

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

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

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.

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

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:

Fail2Map