[[Vorlage(Archiviert)]] {{{#!vorlage Wissen [:Editor: Einen Editor verwenden] [:sudo: Root-Rechte] [:Terminal: Ein Terminal öffnen] [:Pakete installieren: Installation von Programmen] }}} [[Inhaltsverzeichnis()]] Dieser Artikel beschränkt sich auf die Sicherung des Webservers [:Apache:] durch das Modul [http://dev.maxmind.com/geoip/mod_geoip2 mod_geoip2] {en}. Einen übergeordneten Artikel findet man im Wiki unter [:Apache/Sicherheit:]. mod_geoip2 ist ein Modul, welches die Suche nach dem Land, aus dem eine Web-Anfrage stammt, ermöglicht. Es nutzt die Bibliothek und Datenbank GeoIP, um eine Suche durchzuführen. Das Modul ermöglicht die Bearbeitung der Clientzugriffe basierend auf ihrem Ursprungsland. Ursprungsländer werden anhand ihrer [https://www.maxmind.com/en/iso3166 Ländercodierung] {en} identifiziert. Darüber hinaus kann man mit entsprechenden Datenbanken auch per [http://dev.maxmind.com/geoip/geolite Städtecode] {en} selektieren . {{{#!vorlage Warnung Apache-Module sollte man immer in ihren '''/etc/apache2/mods-available/*.conf''' Dateien ändern, nie in ihren '''/etc/apache2/mods-enabled/*.load''' Dateien! }}} = Vorbereitung = Um überprüfen zu können, ob dieses Modul auch richtig arbeitet, gibt es eine denkbar einfache Lösung. Man erstellt im Document-root (Standard: '''/var/www/''') eine Datei '''geoiptest.php''' und folgendem Inhalt [1][2]. {{{#!code php '; echo 'Country name: '.$country_name.'
'; echo 'City name: '.$city_name.'
'; echo 'Region: '.$region.'
'; echo 'Metro code: '.$metro_code.'
'; echo 'Area code: '.$area_code.'
'; echo 'Latitude: '.$latitude.'
'; echo 'Longitude: '.$longitude.'
'; echo 'Postal code: '.$postal_code.'
'; ?> }}} Nach einem reload ist dieses Dokument nun geladen und verfügbar [3]: {{{#!vorlage Befehl sudo service apache2 reload }}} Ruft man in einem beliebigen Browser die URL `http://SERVER_IP_ODER_NAME/geoiptest.php` auf, bleibt das Browserfenster vorerst leer. = Installation = mod_geoip2 ist direkt in den Paketquellen von Ubuntu enthalten. Benötigt wird folgendes Paket [4]: {{{#!vorlage Paketinstallation libapache2-mod-geoip, universe }}} Anschließend muss das Modul noch aktiviert werden. Dies geschieht am einfachsten mit den folgenden Befehlen im Terminal: {{{#!vorlage Befehl sudo a2enmod geoip }}} [[Vorlage(Fremd, Quelle, "https://dev.maxmind.com/geoip/legacy/geolite/")]] Um die Funktion zur Erkennung des Städtecodes zu nutzen, muss man die Datenbank von der [https://maxmind.com/ Website] {en} des Entwicklers herunterladen. Man navigiert in das Verzeichnis '''/usr/share/GeoIP''', lädt die Städtedatenbank von der [https://maxmind.com/ Website] {en} des Entwicklers herunter und entpackt diese. {{{#!code cd /usr/share/GeoIP sudo wget geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz sudo gunzip GeoLiteCity.dat.gz }}} Nun editiert man noch die Konfigurationsdatei '''/etc/apache2/mods-available/geoip.conf'''. In dieser Datei enthaltene Ländercodes werden vom Webserver verweigert. Diese sind individuell anzupassen. {{{#!code apache GeoIPEnable On ## Lädt die GeoIP-Datenbank GeoIPDBFile /usr/share/GeoIP/GeoLiteCity.dat ## GeoIPCity-Daten GeoIPDBFile /usr/share/GeoIP/GeoLiteCity.dat MemoryCache ## Speichercaching der Datenbank GeoIPDBFile /usr/share/GeoIP/GeoLiteCity.dat CheckCache ## Bevor die DB überprüft wird, prüft GeoIP die locale DB auf eine Änderung. Sollte dies der Fall sein, wird die lokale DB neugeladen ohne der Notwendigkeit den Webserver neu zu laden. GeoIPDBFile /usr/share/GeoIP/GeoIP.dat ## GeoIP-Daten GeoIPDBFile /usr/share/GeoIP/GeoIP.dat MemoryCache ## Speichercaching der Datenbank GeoIPDBFile /usr/share/GeoIP/GeoIP.dat CheckCache ## Bevor die DB überprüft wird, prüft GeoIP die locale DB auf eine Änderung. Sollte dies der Fall sein, wird die lokale DB neugeladen ohne der Notwendigkeit den Webserver neu zu laden. GeoIPScanProxyHeaders On ## Per Standard, prüft dieses Modul nur die IP des Clients. Wird ein Proxy verwendet wird die IP des Proxys überprüft. SetEnvIf GEOIP_COUNTRY_CODE AE BlockCountry SetEnvIf GEOIP_COUNTRY_CODE AF BlockCountry SetEnvIf GEOIP_COUNTRY_CODE AL BlockCountry SetEnvIf GEOIP_COUNTRY_CODE AM BlockCountry SetEnvIf GEOIP_COUNTRY_CODE AZ BlockCountry SetEnvIf GEOIP_COUNTRY_CODE BA BlockCountry SetEnvIf GEOIP_COUNTRY_CODE BD BlockCountry SetEnvIf GEOIP_COUNTRY_CODE BG BlockCountry SetEnvIf GEOIP_COUNTRY_CODE BY BlockCountry SetEnvIf GEOIP_COUNTRY_CODE CD BlockCountry SetEnvIf GEOIP_COUNTRY_CODE CF BlockCountry SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry SetEnvIf GEOIP_COUNTRY_CODE GR BlockCountry SetEnvIf GEOIP_COUNTRY_CODE HK BlockCountry SetEnvIf GEOIP_COUNTRY_CODE IL BlockCountry SetEnvIf GEOIP_COUNTRY_CODE IQ BlockCountry SetEnvIf GEOIP_COUNTRY_CODE IR BlockCountry SetEnvIf GEOIP_COUNTRY_CODE JO BlockCountry SetEnvIf GEOIP_COUNTRY_CODE KE BlockCountry SetEnvIf GEOIP_COUNTRY_CODE KG BlockCountry SetEnvIf GEOIP_COUNTRY_CODE KR BlockCountry SetEnvIf GEOIP_COUNTRY_CODE KZ BlockCountry SetEnvIf GEOIP_COUNTRY_CODE LB BlockCountry SetEnvIf GEOIP_COUNTRY_CODE LY BlockCountry SetEnvIf GEOIP_COUNTRY_CODE MA BlockCountry SetEnvIf GEOIP_COUNTRY_CODE MD BlockCountry SetEnvIf GEOIP_COUNTRY_CODE ME BlockCountry SetEnvIf GEOIP_COUNTRY_CODE MN BlockCountry SetEnvIf GEOIP_COUNTRY_CODE OM BlockCountry SetEnvIf GEOIP_COUNTRY_CODE PK BlockCountry SetEnvIf GEOIP_COUNTRY_CODE RU BlockCountry SetEnvIf GEOIP_COUNTRY_CODE SA BlockCountry SetEnvIf GEOIP_COUNTRY_CODE SD BlockCountry SetEnvIf GEOIP_COUNTRY_CODE SN BlockCountry SetEnvIf GEOIP_COUNTRY_CODE SY BlockCountry SetEnvIf GEOIP_COUNTRY_CODE TJ BlockCountry SetEnvIf GEOIP_COUNTRY_CODE TM BlockCountry SetEnvIf GEOIP_COUNTRY_CODE TN BlockCountry SetEnvIf GEOIP_COUNTRY_CODE TW BlockCountry SetEnvIf GEOIP_COUNTRY_CODE UA BlockCountry SetEnvIf GEOIP_COUNTRY_CODE UZ BlockCountry SetEnvIf GEOIP_COUNTRY_CODE VN BlockCountry }}} Zum Schluss muss man die gesetzte '''SetEnvIf''' Direktive im document-root '''/etc/apache2/sites-available/default''' setzen: {{{#!code apache ServerAdmin root@meinedomain.net ServerName meinedomain.net DocumentRoot /var/www Options FollowSymLinks AllowOverride None Options Indexes FollowSymLinks MultiViews AllowOverride FileInfo Order allow,deny allow from all Deny from env=BlockCountry .... ... .. . }}} Nach einem neuerlichen Laden der Konfiguration ist das Modul in gewünschter Weise aktiv: {{{#!vorlage Befehl sudo service apache2 restart sudo service apache2 force-reload }}} = Kontrolle = Ruft man in einem beliebigen Browser die URL `http://SERVER_IP_ODER_NAME/geoiptest.php` auf, erhält man eine Ausgabe wie in etwa {{{Country code: US Country name: United States City name: Saginaw Region: MI Metro code: 513 Area code: 989 Latitude: 43.444099 Longitude: -84.025497 Postal code: 48603 }}} Möchte man prüfen, ob der eigene Ländercode blockiert wird, editiert man gemäß dem eigenen Ländercode die '''geoip.conf'''. Man erhält bei einem neuerlichen Aufruf der '''geoiptest.php''' einen > "http 403 - access denied" = Problembehandlung = Dieses Modul arbeitet nur mit dem Webserver Apache. Fehler sind in den folgenden Log-Dateien ersichtlich: * '''/var/log/syslog''' * '''/var/log/apache2/access.log''' * '''/var/log/apache2/error.log''' = Links = * [http://dev.maxmind.com/geoip/mod_geoip2 mod_geoip] {en} * [https://www.maxmind.com/en/iso3166 Ländercodierung] {en} * [http://dev.maxmind.com/geoip/geolite Städtecodes] {en} * [:Apache 2.4:] - Hauptartikel * [:Apache/Sicherheit:] {Übersicht} Übersichtsartikel #tag: Apache, Internet, Sicherheit, Server