CentOS 6.5 Server mit Iptables und GeoIP schützen
Dieser Beitrag wurde 7150 mal angezeigt.
Hy Leute,
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