Das IT-Sicherheitsgesetz

Geolokalisierung von IP-Adressen und MaxMind GeoIP2

Durch die „Verordnung gegen ungerechtfertigtes Geoblocking im Binnenmarkt“ und die damit eingeführte starke, rechtliche Einschränkung dieser Technologie ist das Thema Geoblocking in den Fokus der Öffentlichkeit geraten.

Was ist Geoblocking?

Geoblocking funktioniert, indem auf Basis des Landes, in dem sich der Website-Besucher aufhält, Webseiten ihr Verhalten ändern. In der Film- und Musikindustrie ist das beispielsweise gang und gäbe. Sie nutzt Geoblocking, um Content möglichst mehrmals in verschiedenen Ländern vermarkten zu können. Jeder, der einmal ein YouTube-Video anschauen wollte und nur die Fehlermeldung „Dieses Video ist in Ihrem Land leider nicht verfügbar“ bekam, kennt das. An der Länderzuordnung ist auch trotz „Geoblocking-Verbots“ für sich nichts Verwerfliches. Viele Webseiten betreiben etwa Sprachvorauswahl darüber oder stellen länderspezifische Inhalte dar. Das bleibt auch nach der geänderten Rechtslage weiter zulässig.

Geoblocking oder doch nur Geolokalisierung?

Die Erkennung des Landes – auch Geolokalisierung genannt – geschieht auf Basis der IP-Adresse des Kunden. Die einzelne IP-Adresse gehört zu einem Block von Adressen, welcher von einer Registrierungsstelle einem Provider zugewiesen wurde. In Europa ist die RIPE (Réseaux IP Européens) hierfür zuständig. Weiß man nun, welchem Provider die IP „gehört“, kennt man damit auch sehr wahrscheinlich das Land, in dem die IP verwendet wird. Die Informationen über die IP-Providerzuordnung sind grundsätzlich öffentlich, allerdings über fünf verschiedene Registrierungsstellen weltweit verteilt . Es gibt verschiedene Anbieter, die die Informationen zusammentragen und als nutzbare Datenbank zusammenstellen. Diese Datenbanken muss man natürlich regelmäßig aktualisieren, denn IP-Adressen wechseln häufig den Besitzer.

Ein Vertreter solcher Datenbanken ist die MaxMind GeoIP2, die wir bislang häufig für solche Zwecke benutzt haben. Für diese gab es das Modul mod_geoip2, das in den Webserver integriert wurde und für die eingehenden Anfragen anhand der anfragenden IP-Adresse die Geo-Informationen im Request angereichert hat. Applikationen und Content-Management-Systeme konnten diese Informationen dann für ihre Zwecke nutzen. mod_geoip2 hat darüberhinaus den Vorteil, dass es mit mod_rpaf zusammenarbeiten kann. Letzteres benötigen wir in Setups, in denen HTTP-Caches wie Varnish oder Loadbalancer eingesetzt werden, damit Apache die korrekten ursprünglichen Client-IP-Adressen kennt.

Weiter kostenfreie Updates? Ja, aber…

MaxMind stellt das Datenbankformat, das mod_geoip2 versteht, seit dem 19. Januar 2019 nicht mehr kostenfrei zur Verfügung. Stattdessen sollen alle Nutzer der kostenfreien Datenbanken auf das Apache-Modul mod_maxminddb wechseln. Dieses benutzt jedoch ein anderes Datenbankformat. Außerdem ist es nicht mehr mit mod_rpaf kompatibel bzw. kann die Geolokalisierung nicht auf Basis des von mod_rpaf gesetzten X-Forwarded-For-Headers durchführen. Klar war also, dass wir an dieser Stelle einen Ersatz benötigen.

Wir haben uns dafür entschieden, die Geolokalisierung künftig innerhalb der Applikation durchzuführen. Hierfür benutzen wir die MaxMind-PHP-Library, die ebenfalls das neue MaxMind-Datenbankformat (*.mmdb) unterstützt. Kundeninstallationen, die Varnish benutzen, sind noch einfacher dran. Hier erledigt Varnish künftig die nötige GeoIP-Zuordnung mit dem geoip2-VMOD selbst, ohne dass wir die Applikationen anpassen müssen.

Auswirkungen in der Praxis

In Sachen Performance sind alle drei Wege durchaus ebenbürtig. Es existieren Messungen aus 2016, die die PHP-Implementierung mit dem Apache-Modul vergleichen. Dort wurde kein signifikanter Geschwindigkeitsunterschied jenseits der Messungenauigkeit nachgewiesen. Da PHP 7.0 und 7.2 die Ausführungsgeschwindigkeit nochmals erheblich gesteigert haben, rechnen wir nicht mit Performanceeinbußen.

Bildquellen

Avatar

Über Christian Spoo

Zwingt Soft- und Hardware gerne seinen Willen auf. Spricht fließend Meme und Picdump. Bei der Marketing Factory für die Bereiche Entwicklung und technische Konzeption zuständig.