Im meinem Beitrag Spamschutz für Wordress auf Serverebene hatte ich von Kombination zwischen AntispamBee und Fail2ban berichtet. Heute möchte ich euch ein kleines aber feines Detail  aus meiner Erfahrung heraus ans Herz legen.

Warum Fail2ban für den Spamschutz von  WordPress klasse ist, aber ein wenig „Drumherum“ benötigt

Das größte Problem von Fail2ban ist: wird der Dienst neu gestartet oder neu geladen, sind alle bisher geblockten IP-Adressen verloren … perdu, da File2ban beim Restart/Reload alle file2ban-* Iptables Chains flusht. Schade eigentlich!

Aktuell fallen mir  zwei Wege ein diesen Mangel zu beheben:

  1. Einsatz von iptables-save und iptables-restore
  2. Einsatz der fail2ban-client Funktionalität

Möglichkeit Nummer Eins besitzt den Charme, dass auch alle andern Firewall Regeln gesichert werden können; Möglichkeit Nummer Zwei kümmert sich nur um die laufenden Fail2ban Jails. Beide Scripte können als Cronjob (zumindest zum sichern der Daten)  laufen, oder auch an entsprechender Stelle im Fail2ban Init Script eingebunden werden; je nach Gusto eben.

Für beide Möglichkeiten gibt es jeweils ein triviales Bash Script. Das Script mit der fail2ban-client Funktionalität ist ein von mir erweitertes Script und kommt  Original von der offiziellen Fail2ban Community Webseite.

Wie sehen die Scripte um  Fail2Ban „zu erweitern“ nun aus?

1.  Script mit iptables-save/iptables-restore: save-banned-ips_V.1.0.0.sh (Link zum Download)

#!/bin/bash
# Little helper to save and restore  blocked (Fail2ban)  IPs
# by Martin Wolfert
# https://wp-loft.de
# V.1.0.0
# 2014/08/28

### Some variables ###
IPT_SAVE=`which iptables-save`
IPT_RESTORE=`which iptables-restore`
RUNDIR="/root/fail2ban-adds"
BANNED_IPS="${RUNDIR}/iptables.list"

# Function to save the iptable rules
do_save()
{
        if [ -f ${BANNED_IPS} ]; then
                rm ${BANNED_IPS}
        fi
        ${IPT_SAVE} >> ${BANNED_IPS}
        return 0
}

# Function to restore the iptables stuff
do_restore()
{
        if [ ! -f ${BANNED_IPS} ]; then
                echo "Hey dude ... first you have to save some fw rules !  :-)"
                exit 3
        fi
        ${IPT_RESTORE} ${BANNED_IPS}
        return 0
}

# Doing
case "$1" in
        save)
                do_save
                ;;

        restore)
                do_restore
                ;;

        *)
                echo "Usage $0 {save|restore}"
                exit 3
                ;;
esac
exit 0

2. Script mit dem fail2ban-client: extract-banned-ips_V.1.1.0.sh (Link zum Download)

#!/bin/sh
# Bash script to xxtract already fail-banned ips 
# by Martin Wolfert
# https://wp-loft.de
# V.1.1.0
# 2014/08/28
# Original from - methurt: 
# http://www.fail2ban.org/wiki/index.php/Fail2ban:Community_Portal#Question_about_persistent_IP_address_bans_over_restart

### Some variables ###
GREP=`which grep`
SED=`which sed`
F2BCL=`which fail2ban-client`
CHMOD=`which chmod`
RUNDIR="/root/fail2ban-adds"
BANNED_IPS="${RUNDIR}/fail2ban-manual.list"

 # Function to save the fail2ban rules
do_save()
{
        if [ -f ${BANNED_IPS} ]; then
                rm ${BANNED_IPS}
        fi

        jails=$(${F2BCL} status | ${GREP} Jail\ list: | ${SED} 's/.*Jail list:\t\+//;s/,//g')

        for jail in ${jails}; do
                for ip in $(${F2BCL} status ${jail}| ${GREP} IP\ list| ${SED} 's/.*IP list:\t//'); do
                        echo "fail2ban-client set ${jail} banip ${ip} ">> ${BANNED_IPS}
                done
        done
        ${CHMOD} 755 ${BANNED_IPS}
        return 0
}

# Function to restore the fail2ban rules
do_restore()
{
        if [ ! -f ${BANNED_IPS} ]; then
                echo "Hey dude ... first you have to save the fail2ban rules !  :-)"
                exit 3
        fi
        ${BANNED_IPS} >/dev/null 2>&1
        return 0
}

# Doing
case "$1" in
        save)
                do_save
                ;;

        restore)
                do_restore
                ;;

        *)
                echo "Usage $0 {save|restore}"
                exit 3
                ;;
esac
exit 0

Beide Scripte erfüllen ihren Zweck komplette Iptables Regelsätze, bzw. Fail2ban Regelsätze zu sichern und wiederherstellen zu können.
Habe ihr noch weitere Ideen, Scripte oder Lösungen hierfür?

0 Kommentare

Was denkst du darüber?

Want to join the discussion?
Feel free to contribute!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.