GeoIP zum Sperren des Loginbereichs

GeoMapEigentlich 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.

Manfred Brandstetter

Seit 20 Jahren selbständiger IT Berater in Österreich. Im Moment kümmere ich mich am liebsten um Servervirtualisierungen auf Debian Basis und Webprogrammierung nach neuestem Technologiestand.

More Posts - Website

Follow Me:
TwitterFacebookGoogle Plus

Eine Antwort

  1. Mad Deamon sagt:

    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]

Schreibe einen Kommentar

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