DomainListen erstellen und nutzen - Probleme Whatsapp

Started by fox-octi, January 08, 2022, 03:25:20 PM

Previous topic - Next topic
Hi,

ich stelle erstmal meine Lösung vor und dann meine Probleme.

Ich habe ausgehend (WAN Interface) alles dicht gemacht, bis auf Http und HTTPs, anschließend habe ich nach Anwendungen Ports freigeschaltet.
zum Beispiel Monitoring Server nach alles, dafür setze ich ein lokales Tag beim Ausgehenden Nat, welches ich dann mit einer Allow Regel beim ausgehenden Interface (WAN) nutze.
Nun möchte ich dass natürlich nicht für jedes Gerät machen und habe mir gesagt, einigen Anbieter vertraue ich, aber natürlich soll nur deren Ziele erlaubt werden.

Dafür wollte ich die Funktion URL Tabelle (IPs) von Aliases verwenden. https://docs.opnsense.org/manual/aliases.html

Problem dabei ist, dass man jede Domain kennen muss, dies ist ja teilweise nicht möglich.

Ich habe aber eine Lösung gefunden, Listen zu erstellen für die Subdomains:

Script erstellen für Listen Erstellung und diese auf einem Nginx Web Server bereitstellen:
https://github.com/aboul3la/Sublist3r

Anschließend kann ich per Cron die Listen erstellen und lege diese bei meinem WebServer ab:
/opt/get_subdomains/sublist3r.py -d signal.org -o /opt/nginxLists/www/signal.txt
/opt/get_subdomains/sublist3r.py -d whispersystems.org -o /opt/nginxLists/www/whispersystems.org.txt
/opt/get_subdomains/sublist3r.py -d whatsapp.net -o /opt/nginxLists/www/whatsapp.net.txt
/opt/get_subdomains/sublist3r.py -d whatsapp.com -o /opt/nginxLists/www/whatsapp.com.txt
/opt/get_subdomains/sublist3r.py -d facebook.com -o /opt/nginxLists/www/facebook.com.txt
/opt/get_subdomains/sublist3r.py -d roblox.com -o /opt/nginxLists/www/roblox.com.txt

Anschließend kann ich diese von Opnsense verwenden. Bei Signal funktioniert dies ganz gut, jedoch Whatsapp leider nicht. Auch sowas wie roblox (Kids wollen sowas :( ) funktioniert damit noch nicht zuverlässig.

Welche Ideen habt ihr noch ?
Gibt es eventuell eine Möglichkeit bestimmte Funktionen, wie das erstellend der Listen in Opnsense zu integrieren, ich finds ganz nett.
Hat jemand eine Idee, welche Domains alle für Whatsapp notwendig sind, facebook.com ist mir schon aufgefallen :(

Gruß

Chris

Hallo

Ich habe eine ähnliche Anforderung gehabt.
Ich wollte steuern können, auf welche Domains der smartTV surfen darf und auf welche nicht.
Also ein Whitelisting von Domänen pro Client/Clientgruppe.

Ich bin zum Schluss gekommen dies über IP und Firewall zu lösen ist zu aufwändig und zu ungenau.
Mit der ganzen Cloudinfrastruktur und der verschlüsselten Kommunikation wird immer irgend eine IP in der Liste fehlen und irgendwas nicht funktionieren.

Darum verwende ich jetzt den Proxy transparent mit Custom ACLs.
Diese müssen aber am CLI von OPNsense eingestellt werden.
SSL no bump sites habe ich im GUI "." drin, somit wird SSL auch nirgends aufgebrochen.

Schau mal da:
https://forum.opnsense.org/index.php?topic=21730.msg102455#msg102455

lg
Christian

Hi,

sage mal, fehlt dir dann nicht noch ein Deny für http ?

# ACL to define the source IP
acl nas src 10.0.0.1

# Allowed addresses (this could also point to a file i think)
acl nas_allow ssl::server_name raw.githubusercontent.com .snapcraft.io .ubuntu.com
acl nas_allow_80 dstdomain raw.githubusercontent.com .snapcraft.io .ubuntu.com

# this denies an IP address in the URL after the first ssl bump - that (for me) was tricky to figure out
acl nas_deny ssl::server_name_regex [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}

# allow access to lists, deny everything else
http_access allow nas nas_allow
http_access allow nas nas_allow_80
http_access deny nas !nas_deny


wenn ich es richtig verstehe, musst du auch die Domains wissen oder ?  Das wäre bei meiner Lösung leider derzeitig auch so, mir ist noch nicht ganz klar wo der Vorteil liegt.

Gruß

Chris

Denke nicht, nein.

Alle Domains in den nas_allow sind whitelisted für den Host nas
Der Rest geht ja sowieso nicht durch.

D.h. ich steuere pro Host/Hostgruppe die erreichbaren Domains.
Wenn der böse smartTV dann was anderes als Netflix versucht (zB über hbbtv eine Reichweitenmessung des Senders den ich gerade schaue), dann hat er Pech gehabt.

Der Vorteil ist eben die Steuerbarkeit pro Host.
Ich fange Werbung, Malware etc. über Pihole ab, steuere dann aber hier noch für bestimmte Hosts wo die hin dürfen.

Gibt es keine acl für einen Host der in der Firewall über den Proxy darf, dann kann der überall hin.

Einfach mal für einen Host ausprobieren - wenns nicht passt löscht man die Files wieder und fertig.

Ok,
verstehe deinen Ansatz, welcher auch über die Firewall Regeln umgesetzt werden kann, solange man die Domains kennt. Die Lösung mit dem Proxy bringt mir bei den besagten Ports nicht wirklich etwas:

   WhatsappPorts   3478,4244,5222,5223,5228,45395,5242
        GrowattSolarPortsNeeded   5279

Oder wie wäre dies umzusetzen ?

mein Problem ist, dass ich für Whatsapp scheinbar nicht alle benötigten Ziele finde. Somit die Einschränkung nicht auf diese machen kann, Ports, braucht whatsapp ja wie in der Liste zu sehen, einige.

Gruß

Chris

Quote from: fox-octi on January 13, 2022, 04:06:06 PM
Ok,
verstehe deinen Ansatz, welcher auch über die Firewall Regeln umgesetzt werden kann, solange man die Domains kennt.

Nur ist es über den Proxy weit treffsicherer als über Domainlisten in der Firewall.
Sobald große Provider mit vielen (dynamisch wechselnden) IPs hinter einer Domain und CDN involviert sind wirds mit der Firewall schwierig.
Netflix und Amazon Prime zB

Aber dir hilft der Proxy in deinem Fall denke ich nix.
Der supportet nur http und https