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|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|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 =====