Wen man seine eigene Webseite nur aus einem oder mehreren Ländern zugänglich oder eben nicht zugänglich machen möchte kann man das ganz einfach mittels HTACCESS und der GeoIP Datenbank die als Modul zum Apache Webserver hinzugefügt werden muss machen.
Einen 100% Schutz ist es nicht da das Ganze auf den IP Bereichen basiert die den jeweiligen Ländern zugeordnet wurden.
Bei unseren Webservern ist das Modul schon installiert und man kann direkt bei „Module anwenden“ weitermachen.
Installation und Konfiguration unter CentOS 5/6/7
if (getenv(HTTP_X_FORWARDED_FOR)) { $pipaddress = getenv(HTTP_X_FORWARDED_FOR); $ipaddress = getenv(REMOTE_ADDR); echo "Meine Proxy IP Adresse: ".$pipaddress. " (via $ipaddress) " ; } else { $ipaddress = getenv(REMOTE_ADDR); echo "Meine IP Adresse: $ipaddress"; } $country = getenv(GEOIP_COUNTRY_NAME); echo " if (getenv(HTTP_X_FORWARDED_FOR)) { $pipaddress = getenv(HTTP_X_FORWARDED_FOR); $ipaddress = getenv(REMOTE_ADDR); echo "Meine Proxy IP Adresse: ".$pipaddress. " (via $ipaddress) " ; } else { $ipaddress = getenv(REMOTE_ADDR); echo "Meine IP Adresse: $ipaddress"; } $country = getenv(GEOIP_COUNTRY_NAME); echo " Mein Land : $country"; ?>
- EPEL Repository hinzufügen
Von Fedora wird das Projekts Extra Packages for Enterprise Linux kurz EPEL betrieben.
Dieses Repository enthält nur Programme (aktuell über 5.600 RPM Pakete), die im RHEL und Centos Grundpaket nicht enthalten sind. In der Regel sind die Pakete auch aktueller im Vergleich zum RPMForge-Repository.CentOS 5: rpm –Uvh http://mirror.switch.ch/ftp/mirror/epel/5/i386/epel-release-5-4.noarch.rpm CentOS 6: rpm –Uvh http://mirror.switch.ch/ftp/mirror/epel/6/i386/epel-release-6-8.noarch.rpm CentOS 7: rpm –Uvh http://mirror.switch.ch/ftp/mirror/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
- GeoIP Installieren
yum install mod_geoip GeoIP GeoIP-devel GeoIP-data zlib-devel
- Letze GeoIP Datenbank Downloaden
cd /usr/share/GeoIP/ mv GeoIP.dat GeoIP.dat_org wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz gunzip GeoIP.dat.gz
- Modul Aktivieren
vim /etc/httpd/conf.d/geoip.conf
GeoIPEnable On GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
CentOS 5/6: /etc/init.d/httpd restart CentOS 7: systemctl restart httpd
- Installation Testen
vim /var/www/html/testgeoip.php
- GeoIP Datenbank händisch Updaten
cd /usr/share/GeoIP/ mv GeoIP.dat GeoIP.dat_org wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz gunzip GeoIP.dat.gz
- GeoIP Datenbank automatisch Updaten
- Script 1
#!/bin/sh cd /usr/share/GeoIP mv GeoIP.dat GeoIP.dat_org wget -q http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz gzip -d -f GeoIP.dat.gz
- Script 2
#!/bin/sh GEOIP_MIRROR="http://geolite.maxmind.com/download/geoip/database" GEOIPDIR=/usr/share/GeoIP TMPDIR= DATABASES="GeoLiteCity GeoLiteCountry/GeoIP asnum/GeoIPASNum GeoIPv6" if [ -d "$" ]; then cd $GEOIPDIR if [ -n "$" ]; then TMPDIR=$(mktemp -d geoipupdate.XXXXXXXXXX) echo "Updating GeoIP databases..." for db in $DATABASES; do fname=$(basename $db) wget --no-verbose -t 3 -T 60 "$/$.dat.gz" -O "$/$.dat.gz" gunzip -fdc "$/$.dat.gz" > "$/$.dat" mv "$/$.dat" "$/$.dat" chmod 0644 "$/$.dat" done [ -d "$" ] && rm -rf $TMPDIR fi fi
- Script 1
Module anwenden
- Land auf eine andere Webseite weiterleiten
GeoIPEnable On GeoIPDBFile /usr/share/GeoIP/GeoIP.dat # Redirect one country RewriteEngine on RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^US$ RewriteRule ^(.*)$ http://www.onesystems.ch$1 [R,L]
- Länder zulassen
GeoIPEnable On GeoIPDBFile /usr/share/GeoIP/GeoIP.dat SetEnvIf GEOIP_COUNTRY_CODE CH AllowCountry SetEnvIf GEOIP_COUNTRY_CODE DE AllowCountry SetEnvIf GEOIP_COUNTRY_CODE AT AllowCountry SetEnvIf GEOIP_COUNTRY_CODE IT AllowCountry SetEnvIf GEOIP_COUNTRY_CODE FR AllowCountry Deny from all Allow from env=AllowCountry
- Länder blockieren
GeoIPEnable On GeoIPDBFile /usr/share/GeoIP/GeoIP.dat SetEnvIf GEOIP_COUNTRY_CODE AS BlockCountry SetEnvIf GEOIP_COUNTRY_CODE US BlockCountry SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry Deny from env=BlockCountry