Modul geoip – Debian 8 und Apache 2.4

 

Das hier gezeigte howto beschreibt nur die Standard installation (also mit der freeware datenbank von maxmind.com ohne autoupdate) des mod_geoip und die Verwendung in einer .htaccess mit IPv4 und IPv6 support.

In diesem Artikel arbeite ich mit “sudo su” also rootrechten.

Das Modul installieren

apt install libapache2-mod-geoip

Bevor wir das Modul aktiveren passen wir es noch an.

nano /etc/apache2/mods-available/geoip.conf

Den Inhalt loeschen und folgendes einfuegen:

<IfModule mod_geoip.c>
GeoIPEnable On
GeoIPEnableUTF8 On
GeoIPOutput Env
GeoIPScanProxyHeaders Off
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat MemoryCache
GeoIPDBFile /usr/share/GeoIP/GeoIPv6.dat MemoryCache
GeoIPDBFile /usr/share/GeoIP/GeoIPASNum.dat MemoryCache
GeoIPDBFile /usr/share/GeoIP/GeoIPASNumv6.dat MemoryCache
</IfModule>

Nun aktivieren wir die module geoip und remoteip (ich gehe davon aus das mod_rewrite bereits aktiviert ist)

 a2enmod geoip remoteip 

Dem Webserver noch einen kick geben

service apache2 restart

Jetzt kann man Seitenspezifisch die .htaccess anlegen.

Beispiel einer .htaccess um bestimmte Laender zu blocken oder Besucher weiterzuleiten

RewriteEngine On
GeoIPEnable On

# GeoIP Block IPv4
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE RU BlockCountry

# GeoIp Block IPv6
SetEnvIf GEOIP_COUNTRY_CODE_V6 CN BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE_V6 RU BlockCountry

Deny from env=BlockCountry
# GeoIP IPv4 weiterleitung von Anonymous Proxys und Satelite
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(A1|A2)$
RewriteRule ^(.*)$ http://thoje.it/why-i-am-here/$1 [L]

# Geoip IPv6 weiterleitung von Anonymous Proxys und Satelite
RewriteCond %{ENV:GEOIP_COUNTRY_CODE_V6} ^(A1|A2)$
RewriteRule ^(.*)$ http://thoje.it/why-i-am-here/$1 [L]

Es macht Sinn die Daten ab und an zu aktualisieren: Automatisch updaten

Oder dieses Script verwenden und einen crontab einbauen:

#!/bin/bash

cd /usr/share/GeoIP
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz || { echo 'Could not download GeoLiteCountry, exiting.' ; exit 1; }
wget http://geolite.maxmind.com/download/geoip/database/GeoIPv6.dat.gz || { echo 'Could not download GeoLiteCountryIPv6, exiting.' ; exit 1; }
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz || { echo 'Could not download GeoLiteCity, exiting.' ; exit 1; }
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCityv6-beta/GeoLiteCityv6.dat.gz || { echo 'Could not download GeoLiteCityIPv6, exiting.' ; exit 1; }
wget http://download.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz || { echo 'Could not download GeoIPASN, exiting.' ; exit 1; }
wget http://download.maxmind.com/download/geoip/database/asnum/GeoIPASNumv6.dat.gz || { echo 'Could not download GeoIPASNIPV6, exiting.' ; exit 1; }
gunzip -f GeoIP.dat.gz
gunzip -f GeoIPv6.dat.gz
gunzip -f GeoLiteCity.dat.gz
gunzip -f GeoLiteCityv6.dat.gz
gunzip -f GeoIPASNum.dat.gz
gunzip -f GeoIPASNumv6.dat.gz
echo "y"|mv GeoLiteCity.dat GeoIPCity.dat

Das Script ist von hier

Um Laendercodes etc. zu erhalten geoip maxmind

Schreibe einen Kommentar

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