Geo IP Blocking

Started by axlemoxle, February 05, 2025, 06:16:59 PM

Previous topic - Next topic
Hallo, ich habe mir in der Opnsense eine Geo Blocking Regel eingerichtet...
Einen Alias angelegt, dort DE und LU freigegeben. Jetzt läuft hinter der Opnsense ein Webserver, wo auch 2 Inexio Anschlüsse drauf zugreifen (Nextcloud). Die wurden geblockt, obwohl bei Maxmind bei Eingabe der IP ......, Rheinland-Pfalz, Germany (DE), Europe erscheint..also als Deutsche IP eingetragen...

Die Frage ist jetzt woran es scheitern könnte.


Die FW Regel sagt Blockieren Schnittstelle WAN , richtung IN , IPV4+6, alles,  Quelle GeoIP Alias , alle Ports, fertig

Wenn bei der Regel "blockieren" steht, wird sie das wohl auch tun. Oder hast du dich vertippt?
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

Schon klar, aber de und lu sind ja bei geo ip angehakt, sollten von daher also nicht geblockt werden. Oder funktioniert es genau anders rum und ich habe einen denkfehler....

Du hast einen Denkfehler. Eine Block-Regel blockt das, woraus sie sich bezieht. Du brauchst eine "allow" Regel. Die erlaubt das, was hinterlegt ist, und alles andere wird per Default geblockt.

Auf dem WAN ist per Default sowieso alles zu. Du musst, das, was du haben willst, ausdrücklich erlauben.
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

Gut ein paar ports sind ja offen und die sollen per geo ip nur die entsprechenden Länder zulassen.

Aktuell werden halt alle Länder zugelassen.

Wie wäre hierfür die Lösung?

Bei den (NAT?) Regeln für die offenen Ports einfach als Source deinen GeoIP-Alias einbauen, dann gelten die nur für die entsprechenden Source-Adressen.
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

Übrigens kannst Du spezifische Provider auch mit BGP-ASN-Aliases zulassen. Geoblocking greit dafür zu weit. Inexio hat z.B. AS42652.
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

Quote from: Patrick M. Hausen on February 05, 2025, 09:27:43 PMBei den (NAT?) Regeln für die offenen Ports einfach als Source deinen GeoIP-Alias einbauen, dann gelten die nur für die entsprechenden Source-Adressen.

Okay, das war vermutlich zu einfach um drauf zu kommen.

Danke

Moin, jetzt habe ich ein neues Problem....

Geo Blocking funktioniert super, genau so wie es sein soll.....

Mein Ngingx Reverse Proxy muss aber Lets Encrypt Zertifikate beziehen. Freigegeben im Geo ist DE und LU, was muss ich denn tun, damit er Zertifikate bekommen kann, ohne die halbe Welt frei zu geben ? Die USA warens schon mal nicht....


Zwei Antworten:

1. Let's Encrypt nutzt verschiedene IPs, die sie nicht veröffentlichen. Es gibt also keine verlässliche Whitelist.

2. Um das zu tun musst Du (und solltest Du) keine Ports von außen öffnen. Warum? Weil Let's Encrypt Zertifikate aus Transparenzgründen allesamt veröffentlicht werden. Das bedeutet, wenn Du Zertifikate beantragst, die einen Namen beinhalten, also z.B. name.xyz.de, wird dieser Name geleakt und der entsprechende Service kann gescannt werden, auch, wenn der Service z.B. IPv6-basiert ist und per IP-Scanning nicht gefunden werden kann. Also sollte man stattdessen *.xyz.de, also ein Wildcard-Zertifikat beantragen. Das wiederum funktioniert nur mit DNS-01 Verifikation und dafür benötigt man eben gerade keinen offenen Port.
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

Das klingt nach einer Super Idee...
Dumemrweise ist die betreffende Domain bei All-Inkl gehostet und laut Auskunft Support gibts da aktuell keine Möglichkeit...also bleibt mir vermutl. nur die Domain umzuziehen, oder ?

Du kannst für die gewünschten Einträge einen CNAME mit Ziel einer anderen Domain, die du kontrollierst, z.B. auch auf einem selbst in irgendeinem Cloud VPC gehosteten ACME-DNS-Server anlegen, und dann diesen für das DNS-01-Verfahren benutzen.

Also beispielsweise möchtest du nextcloud.meinedomain.de und guacamole.meinedomain.de versorgen. Dann legst du an:

acmedns.meinedomain.de. IN A ip.addresse.vom.acmedns

_acme-challenge.nextcloud.meinedomain.de. IN CNAME acmedns.meinedomain.de.
_acme-challenge.guacamole.meinedomain.de. IN CNAME acmedns.meinedomain.de.

Und bespielst dann den ACME-DNS-Server per API. Kann auch ein BIND sein. Oder irgendwas mit einer API und einer festen IP-Adresse. Es gelten auch nicht die Verfügbarkeitsanforderungen wie für authoritative DNS-Server für eine Domain (also 3 Stück, nicht im selben LAN, etc. pp.) - das kann wie gesagt irgendeine popelige Cloud-Instanz sein, die nur dann erreichbar sein muss, wenn die Zertifikate verlängert werden.

HTH,
Patrick
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

Genau wie Patrick sagt. Entweder die Domain selbst umziehen oder eine Hilfsdomain, die DNS-01 beherrscht. Das kann dann auch eine gratis Subdomain bei einem Anbieter sein, der DNS-01 kann.

Je nachdem, was Du brauchst gibt es ja andere Anbieter. Wenn es nur die Domain ist, z.B. Hetzner, die haben auch eine API für DNS-01 challenges (wird von LetsEncrypt direkt unterstützt) und sind recht günstig. Allerdings bieten die keine Zusatzdienste, wie E-Mail o.ä., musst Du ggf. alles selbst machen oder bei Gmail / Microsoft / Protonmail hosten lassen.
Intel N100, 4* I226-V, 2* 82559, 16 GByte, 500 GByte NVME, ZTE F6005

1100 down / 800 up, Bufferbloat A+

oha, so ganz habe ich das über die fremddomain nicht verstanden..

weil ich doch für das wildcard Zertifikat keine Subdomains festlege, sondern das ja für die alles.meinedomain.de gillt...

sagen wir meinedomain.de liegt bei allink, da geht nix

meinezweitedomain habe ich woanders, wo die dns01 challenge unterstützt ist....

wie verknüpft man das ?

_acme-challenge.meinedomain.de. IN CNAME somehost.otherdomain.de.
Auf somehost.otherdomain.de läuft dann z.B. ein ACME-DNS.
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)