CentOS 6.5 Server mit Iptables und GeoIP schützen

Dieser Beitrag wurde 6930 mal angezeigt.

Hy Leute,firewall

heute möchte ich euch einmal zeigen wie ihr euren Server gegen Angriffe aus bestimmten Ländern schützen könnt.

Wer einen Server besitzt und sich mal die Logfiles angeschaut hat, wird feststellen, dass der Server massiv durch Bots etc. angegriffen wird.
Das sogenannte „Hintergrundrauschen“ des Internets. Aus einigen Ländern aber mehr als aus anderen.

Wer also in einem Bestimmten Land, für seine Websites etc. keine Zielgruppe sieht, sollte dieses Land einfach komplett vom Zugriff aussperren.

Wir benötigen dafür ipTables und einige Erweiterungen.

  •  iptables >= 1.4.3
  • kernel-source >= 2.6.29
  • Für ipset-6 brauchen wir:
    • libmnl
    • Linux kernel >= 2.6.35

Step 1

Als erstes benötigen wir unsere Kernel Version:

uname -r
2.6.32-504.3.3.el6.x86_64

Nun können wir die benötigten Pakete nachladen:

yum install gcc gcc-c++ make automake unzip zip xz kernel-devel-`uname -r` iptables-devel

Nun benötigen wir noch ein zusätzliches Modul:

rpm -i http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm
yum install perl-Text-CSV_XS

Dieses Modul wird benötigt um die Länder später zu den IPs zuzuweisen.

Step 2

Nun können wir xtables und das GeoIP Modul laden:

wget http://sourceforge.net/projects/xtables-addons/files/Xtables-addons/1.41/xtables-addons-1.41.tar.xz

Wir entpacken das ganze und wechseln in das Verzeichnis:

tar xvf xtables-addons-1.41.tar.xz
cd xtables-addons-1.41

 Step 3

Für diese Kernel version müssen wir die Konfig anpassen. Da xtables sonst nicht kompiliert wird. Dazu öffnen wir die Datei „mconfig“

nano mconfig

hier suchen wir die 3 Werte und entfernen diese aus der Datei. Dann können wir diese schließen.

build_RAWNAT=m  <-- löschen
build_SYSRQ=m   <-- löschen
build_length2=m <-- löschen

Nun können wir das ganze kompilieren und installieren:

./configure
make && make install

Wenn hier keine Fehler auftreten, können wir mit Step 4 weiter machen. Sollten hier Fehler auftreten, wird vielleicht eine andere Version von xtables benötigt. Schaut dazu einfach hier nach.

 Step 4

Nun können wir unsere GeoIP Datenbank aufbauen:

cd geoip/
./xt_geoip_dl
./xt_geoip_build GeoIPCountryWhois.csv

Diese packen wir nun an eine passende Stelle:

mkdir -p /usr/share/xt_geoip/
cp -r {BE,LE} /usr/share/xt_geoip/

 Step 5

Wir haben das Modul nun passend installiert und können nun Anhand des ISO Codes eines Landes dieses vom Server verbannen.

Wenn ihr zb. China aussperren wollt, müsst ihr CN nutzen. Wenn ihr Russland ausperren wollt RU und wenn ihr die USA ausperren wollt, dann US.

z.b.

iptables -I INPUT -m geoip --src-cc CN -j DROP
iptables -I INPUT -m geoip --src-cc RU -j DROP
iptables -I INPUT -m geoip --src-cc US -j DROP

Ihr könnt euch nun die Regeln nochmal anzeigen lassen. Das ganze explizit speichern und den Dienst zur Sicherheit neu starten:

iptables -L

service iptables save
service iptables restart

Viel Spass Leute!

Und vergesst nicht, das ganze auf eigene Verantwortung und blockt nicht eurer eigenes Land 😉
Sonst kommt ihr selber nicht mehr auf den Server 😉

 

 

Optional:

Wenn ihr noch einen Dienst machen möchtet, der euch die GeoIP Tabelle auf den aktuellsten Stand hält:

Erstellt euch eine neue Datei: „nano xtables-update.sh“ und füllt diese mit:

#!/bin/sh
GEOIP_MIRROR="http://geolite.maxmind.com/download/geoip/database"
TMPDIR=$(mktemp -d /tmp/geoipupdate.XXXXXXXXXX)

wget --no-verbose -t 3 -T 60 "${GEOIP_MIRROR}/GeoIPv6.csv.gz" -O "${TMPDIR}/GeoIPv6.csv.gz"
wget --no-verbose -t 3 -T 60 "${GEOIP_MIRROR}/GeoIPCountryCSV.zip" -O "${TMPDIR}/GeoIPCountryCSV.zip"
gzip -fdc ${TMPDIR}/GeoIPv6.csv.gz | ${TMPDIR}/GeoIPv6.csv
unzip -o -d ${TMPDIR} ${TMPDIR}/GeoIPCountryCSV.zip
mkdir -p /usr/share/xt_geoip
perl /"INSTALLDIR"/xtables-addons-1.41/geoip/xt_geoip_build -D /usr/share/xt_geoip ${TMPDIR}/GeoIP*.csv
[ -d "${TMPDIR}" ] |  rm -rf $TMPDIR

sichert diese, und macht sie ausführbar. Lasst diese z.b. per crontab jede Woche einmal laufen 😉

Ersetzt „INSTALLDIR“ durch euer Verzeichnis.

 

 

Beste Grüße


Add a Comment

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.