Sehr oft kommt es vor, dass mal ein Server unter „Beschuss“ genommen wird oder dass man einen Server nur für bestimmte Länder erreichbar machen möchte. Es gibt Firewall-Lösungen, die diese Features anbieten, diese sind aber meist für den normalen Endkunden kaum erschwinglich.

Es gibt zahlreiche freie Scripte, mit denen man annähernd das gleiche Ergebnis bekommt – nämlich bestimmte Länder anhand der IP-Adresse zu sperren oder zu filtern. Wir möchten hier einmal ein Beispiel für ein solches Script zeigen, welches mit einfachen Mitteln eine brauchbare Lösung produziert. Das Ganze stützt sich auf Informationen und Listen, welche von dem Anbieter IPdeny geliefert werden. Dieser Anbieter erstellt auf Basis der tagesaktuellen Daten aus CIDR Listen, anhand derer man IP-Bereiche Ländern zuordnen kann.

Durch ein einfaches Script kann man so anhand des Länder-ISO-Codes diese IP-Adressen verarbeiten und einfach filtern oder gar komplett sperren.

Viel Spass beim ausprobieren. Aber denken Sie daran, per iptables kann man sich auch leicht selbst aussperren!

Anleitung

#!/bin/bash

# Block all traffic from based on country ISO code
ISO="id pk bh tr pf mu sa th kw ae ph mh af cn"

# Set PATH
IPT=/sbin/iptables WGET=/usr/bin/wget EGREP=/bin/egrep

# No editing below
SPAMLIST="countrydrop" ZONEROOT="/root/iptables"
DLROOT="http://www.ipdeny.com/ipblocks/data/countries"

cleanOldRules(){ $IPT -F $IPT -X $IPT -t nat -F $IPT -t nat -X $IPT -t mangle -F $IPT -t mangle -X $IPT -P INPUT ACCEPT $IPT -P OUTPUT ACCEPT $IPT -P FORWARD ACCEPT }

# create a dir
[ ! -d $ZONEROOT ] && /bin/mkdir -p $ZONEROOT

# clean old rules
cleanOldRules

# create a new iptables list
$IPT -N $SPAMLIST

for c in $ISO do

# local zone file
tDB=$ZONEROOT/$c.zone

# get fresh zone file
$WGET -O $tDB $DLROOT/$c.zone

# country specific log message
SPAMDROPMSG=“$c uuups country block“

# get
BADIPS=$(egrep -v "^#|^$" $tDB) for ipblock in $BADIPS do #$IPT -A $SPAMLIST -s $ipblock -j LOG –log-prefix „$SPAMDROPMSG“ $IPT -A $SPAMLIST -s $ipblock -j DROP done done

# Drop everything
$IPT -I INPUT -j $SPAMLIST $IPT -I OUTPUT -j $SPAMLIST $IPT -I FORWARD -j $SPAMLIST

exit 0

Bewertung des Beitrages: Ø4,5

Danke für deine Bewertung

Der Beitrag hat dir gefallen? Teile ihn doch mit deinen Freunden & Arbeits­kol­legen

Facebook Twitter LinkedIn WhatsApp