Aktionen

Pfsense - GeoIP Blocking auf bestimmte Ports oder Dienste IPv4 IPv6

Aus znilwiki

Changelog:

  • 18.05.2016 Erste Version




Warum?

Auf meinem Miet-Server betreibe ich unter anderem einen Linux-Server der über SSH Port 22 und einen "Terminalserver" der über RDP Port 3389 erreichbar ist.
Nun sehe ich jeden Tag wie hunderte von Zugriffsversuchen auf diese beiden Ports stattfinden. Auf dem Linux-Server setze ich fail2ban ein, auf dem Terminalserver EvlWatcher.
Und die Liste der geblockten IP-Adressen wird länger und länger - bei den RDP-versuchen hatte ich mich an einer Liste versucht BannedIP ... aber das nahm einfach kein Ende ...

Heute nun brachte mich nun jemand auf die Idee des "GeoIP-Blocking" ... Also einfach den Zugriff nur aus bestimmten Ländern erlauben.
Das würde doch schon mal 99% der Angriffe ins leere laufen lassen .... und die pfSense kann das auch!



pfBlockerNG installieren

Eine Firewallregel um bestimmte IP-Adressen zu blocken ist nicht schwer ... aber wie kommen wir an die Daten dazu?
Das mach pfBlockerNG für uns!

Wir können diese Erweiterung über den Packetmanager nachinstallieren:
GeoIP-Blocking-pfSense-001.png

GeoIP-Blocking-pfSense-002.png

Das kann eine Weile dauern, insbesondere wenn er die IP-Datenbanken von MaxMind herunterlädt und konvertiert.

Danach haben wir unter Firewall den neuen Menüpunkt pfBlockerNG:
GeoIP-Blocking-pfSense-003.png



pfBlockerNG konfigurieren

Wir haben nun 2 Möglichkeiten:

  • Wir definieren die Länder aus denen der Zugriff verboten ist
  • Wir definieren die Länder aus denen der Zugriff erlaubt ist


Tja, auf den 2. Weg bin ich erst später gekommen - aber ist einfacher nur "Deutschland ist erlaubt" zu defnieren als hunderten von Ländern als "gesperrt".
Deshalb machen wir es auch jetzt so rum!

Wir rufen Firewall => pfBlockerNG auf und landen in den General Settings:
GeoIP-Blocking-pfSense-004.png
und als ersten aktivieren wir diesen erst einmal:

GeoIP-Blocking-pfSense-005.png

Um das zu speichern müssen wir ganz nach unten Scrollen und auf GeoIP-Blocking-pfSense-006.png klicken.
Die anderen Einstellungen sollten so passen - wir lassen keine Regeln durch das Modul erstellen, er soll uns nur die IP-Adressen beschaffen.

Nun wechseln wir oben zum Abschnitt Country:
GeoIP-Blocking-pfSense-007.png

Und wir landen in der Ansicht der TOP 20 - Spammer Countries
GeoIP-Blocking-pfSense-008.png

Nun könnten wir hier schon Deutschland wählen ... aber ich musste mehr als ein Land nehmen - deshalb gehen wir oben in der Auswahl auf Europe:
Mit gedrückter Strg bzw. CTRL Taste können wir nun in der Liste die Länder wählen aus denen der Zugriff erlaubt sein soll, auf der linken Seite für IPv4, auf der rechten Seiten für IPv6:
GeoIP-Blocking-pfSense-009.png
Wählt also die Länder aus aus denen Ihr den Zugriff erlauben wollt, bei List Action wählen wir Alias Permit
Ich habe auch noch das Logging deaktiviert.
Dann wieder auf den Save-Button klicken!


Mit dieser Einstellung erzeugt er uns eine IP-Adressliste für Europa mit den gewählten Ländern.
Diese Liste legt er uns in einen Alias den wir dann in Firewall und NAT-Regeln benutzen können.

Die Liste wird nun einmal die Stunde aktualisiert ... solange wollen wir nicht warten, deswegen stoßen wir das von Hand an!
Dazu gehen wir auf Update:
GeoIP-Blocking-pfSense-010.png
und klicken unten auf Run - sofern er nicht sowieso gleich starten würden.
Unten im Log-Feld sehen wir dann das er - unter anderem - die Listen erzeugt:

===[  Continent Process  ]============================================

[ pfB_Europe_v4 ]	 Changes found... Updating

[ pfB_Europe_v6 ]	 Changes found... Updating

Nun hat er uns 2 Aliase erzeugt:

pfB_Europe_v4
pfB_Europe_v6

die wir in unseren NAT und Firewallregeln verwenden können:
GeoIP-Blocking-pfSense-011.png

GeoIP-Blocking-pfSense-012.png
Wichtig: Die Aliase findet Ihr auf dem Reiter URLs!



NAT-Regeln anpassen (IPv4)

Im IPv4 Bereich habe ich nur eine externe IP-Adresse und deshalb den SSH und RDP Zugriff durch ein Port-Forwarding auf die internen Server frei geschaltet.
Diese Regeln ändere ich nun wie folgt ab:

Vorher:
GeoIP-Blocking-pfSense-013.png
Wie man sieht steht bei Source Address ein * - der Zugriff ist also von überall erlaubt.
Nun bearbeiten wir den Eintrag:
GeoIP-Blocking-pfSense-014.png

Das er dann wie folgt aussieht:
Nachher:
GeoIP-Blocking-pfSense-015.png
Wichtig ist das Ihr den IPv4 Alias nehmt!

Nachdem die Regeln übernommen wurden ist der SSH-Zugriff nur noch aus den gewählten Ländern möglich!



Rules anpsssen (IPv6)

Die Rules für die NAT-regeln passt er automatisch mit an.
Bei IPv6 gibt es kein NAT sondern nur eine Regel welche den Zugriff auf SSH erlaubt:

Vorher:
GeoIP-Blocking-pfSense-016.png
Wie man sieht steht bei Source Address ein * - der Zugriff ist also von überall erlaubt.
Nun bearbeiten wir den Eintrag:
GeoIP-Blocking-pfSense-017.png

Das er dann wie folgt aussieht:
Nachher:
GeoIP-Blocking-pfSense-018.png
Wichtig ist das Ihr den IPv6 Alias nehmt!



Kommentare

Loading comments...