Eigentlich ist es ja Böse. Aber warum sollte ich davon ausgehen, dass ich morgen meine kleine Blogseite von China oder der Ukraine aus warten muss. Ich habe mir also angesehen wie ich den Zugriff zu einem Bereich am WebServer für jede IP Adresse, außer einer aus dem Pool der Österreichischen, sperren kann.
Zuerst hole ich mir mit einem kleinen Bash-Script die aktuelle IP Datendatenbank. Dieses Script lasse ich einmal pro Monat via cron ausführen:
#!/bin/sh # GeoIP Datenbank von MaxMind abholen und entpacken # (c)2014 mb bsc.at -> www.bsc.at LOGF=`date "+/var/log/xx/geoipup_%Y%m%d%H%M%S".log` cd /var/xx/geoip 2>&1 >>$LOGF echo "\n\t`date +%Y%m%d%H%M%S`" 2>&1 >>$LOGF rm -f GeoIP* 2>&1 >>$LOGF /usr/bin/wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz 2>&1 >>$LOGF gunzip GeoIP.dat.gz 2>&1 >>$LOGF cat $LOGF | mail -s "GeoIP Update" meine@mail.at # EOF #################################################################
Das benötigte Modul für Apache laden und einbinden.
apt-get update apt-get install libapache2-mod-geoip a2enmod geoip service apache2 restart
Dann noch in der Konfigurationsdatei der Domain das Modul aktivieren und auswerten:
<IfModule mod_geoip.c> GeoIPEnable On GeoIPDBFile /var/xx/geoip/GeoIP.dat </IfModule> SetEnvIf GEOIP_COUNTRY_CODE AT AllowedCountry <Location "/adm"> Order deny,allow Deny from all Allow from env=AllowedCountry </Location>
Testen kann man das Ganze zB mit TOR.
Man kann natürlich auch auf die Hauptseite oder eine ganz Andere umleiten:
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^AT$
RewriteRule ^(.*)$ http://www.mysite.at$1 [R]