Inhaltsverzeichnis

FIXME Artikel noch in Arbeit!

Allgemein

Jeder Computer im Internet verfügt über eine IP-Adresse mit der er im Internet kommuniziert. Die IPs werden im Allgemeinen vom den jeweiligen Internet-Anbietern vergeben. Jeder Anbieter verwaltet hier seine eigenen IP-Adressbereiche. Daher ist es grob möglich anhand der IP eines Computers festzustellen aus welchem Land er kommt. Aber Vorsicht, es ist nicht festgeschrieben wie die IPs verteilt werden und die Zuordnungen können sich ändern. Des Weiteren können internationale Firmen ihre Ausgangsknoten in anderen Ländern liegen haben oder Benutzer können über Proxy-Server in anderen Ländern ihre Herkunft verschleiern.

Dennoch kann es wünschenswert sein Zugriffe aus bestimmten Ländern auf den eigenen Server zu unterbinden oder nur Zugriffe aus bestimmten Ländern zuzulassen.

Im Weiteren wird mittels ipdbtools und der Firewall IPFW gearbeitet. Zum Thema IPFW siehe auch Firewall mit IPFW.

ipdbtools als GeoIP-Anbieter

Da es keine zentrale Verwaltung der IP-Zuordnungen gibt ist es zum Teil schwierig an verlässliche Listen zu kommen. Das Paket ipdbtools stellt diese Daten praktisch aufbereitet zur Verfügung und bietet direkt eine Importmöglichkeit für das Firewallsystem IPFW.

IPFW

IPFW ist eine der in FreeBSD integrierten Paketfilter Firewall-Lösungen. Im Artikel Firewall mit IPFW wurde bereits ger Grundlegende Einsatz von IPFW beschrieben. Für den Einsatz mit GeoIP-Listen, die sehr lange werden können, ist es nicht sinnvoll jede IP einzeln zu behandeln. Für diesen Fall wird mit Tabellen (table) gearbeitet. Tabellen bieten die Möglichkeit in IPFW eine Liste von Daten (z.B. IPs) zusammenzufassen und gemeinsam in einer einzigen Regel zu bearbeiten. Alle zuzulassenden oder zu blockenden IPs werden in eine Tabelle gepackt und mittels einer einzigen Regel (welche auf diese Tabelle verweist) behandelt. Die Tabellen werden nummeriert. Ein Beispiel welches alle Zugriffe auf Port 22 aller IPs in der table(1) blockiert könnte dann so aussehen:

# ipfw add deny all from 'table(1)' to any dst-port 22 in

ipdbtools

Installation von ipdbtools

Zunächst wird sysutils/ipdbtools als Paket oder aus den Ports installiert.

ipdbtools vorbereiten

Datenbank aufbauen

Um die Datenbank von ipdbtools aufzubauen wird das beiliegende Script ausgeführt

# ipdb-update.sh

Datenbank regelmäßig aktualisieren

IPFW-Tabelle erzeugen

Zunächst wird eine leere Tabelle erzeugt in IPFW erzeugt. Die Tabelle kann entsprechend ihrer Verwendung benannt werden. Im folgenden erzeugen wir eine Tabelle für IPs deutschsprachiger Länder.

# ipfw table 0 create

Die leere Tabelle sollte nun erzeugt sein.

Ob die Liste erzeugt wurde kann mit folgendem Befehl getestet werden. Es sollte eine leere Liste angezeigt werden.

# ipfw table 0 list

GeoIPs in Tabelle schreiben

Um die IPs welche deutschsprachigen Ländern zugeordnet sind in die Tabelle zu schreiben wird folgender Befehl verwendet.

# ipup -n 0 -t DE:CH:AT | ipfw -q /dev/stdin

Die Option -n gibt dabei an in welche Tabelle die Daten geschrieben werden sollen (hier wählen wir die Tabelle die wir hierfür erzeugt haben mit der 0). Mit der Option -t werden die Ländercodes ausgewählt für welche die IP-Adressen abgerufen werden sollen. Mehrere Länder werden mit Doppelpunkten aneinander gereiht. Das Ganze wird dann an IPFW übergeben.

Um den Erfolg zu sehen kann nochmals die Tabelle angezeigt werden.

# ipfw table 0 list

Filterregel anlegen

# ipfw add deny all from not 'table(0)' to any in 

IPFW-Tabelle regelmäßig aktualisieren