UDM Firewallregeln

Vor zwei Tagen flatterte das Update der Unifi-Netzwerkanwendung auf Version 9.1.120 herein. Aus jahrelanger Erfahrung weiß ich, dass die Updates für die UDM Pro von Zeit zu Zeit etwas hakelig sind und manchmal auch Teile der Konfiguration zerschießen, umso größer war die Freude, als nach dem Update alles wie gewohnt lief. Und der Changelog sah ziemlich vielversprechend aus!

Da ich sowieso mit den Jahren einiges an Altlasten in der Firewall-Konfiguration angesammelt hatte, entschloss ich mich, das gesamte Regelwerk noch einmal sauber neu aufzusetzen.

Und ich muss gestehen, die neue “Zone Based Firewall” (ZBF) bzw. die so betitelte visuelle Oberfläche für die Firewallkonfiguration gefällt mir. Eine einfache Matrix enthält auf der X- und Y-Achse jeweils einen Eintrag für folgende sechs Standard-Zonen: Internal, External, Gateway, VPN, Hotspot und DMZ. Ein Klick auf die jeweilige Zelle in der Matrix öffnet die Übersicht der jeweiligen Regeln. Schön gemacht und sehr intuitiv, denn beim Erstellen neuer Regeln werden automatisch Quell- und Zielzone direkt befüllt.

Firewall aus, Firewall an

Zum Glück betreibe ich keine kritischen Dienste, auf die andere dringend angewiesen sind. Die eingehenden VPN-Verbindungen auf einen Sonntag mal für eine Weile zu kappen kann mein Freundeskreis wohl verkraften dun auch die direkt erreichbaren Dienste sind für niemanden lebenswichtig, die ganz kritischen habe ich schon vor längerer Zeit auf externe Server migriert. Also ran an die Config. Alle Portweiterleitungen aus, damit während der Operation am offenen Herzen niemand von außen die Gunst der Stunde nutzen kann, dann alle Regeln pausieren und immer drauf achten, dass die Defaultregel für meinen Client jederzeit Zugriff auf alle Interfaces und Netze erlaubt. Sich selbst auszusperren ist eher unschön und ich wollte nicht den halben Tag damit verbringen, Backups auf eine zurückgesetzte Infrastruktur zurückzuspielen.

Mit allen selbstdefinierten Regeln im Pause-Zustand (uch habe sie über den UI-Filter ausgeblendet, um eine bessere Übersicht über die neuen Regeln zu haben. Somit sind nur noch die Default-Regeln sichtbar, die die UDM Pro selbstständig setzt und die auch direkt nicht manipuliert werden können. Verständlicherweise existiert gerade beim Zugriff von internen auf interne Netzwerke am Ende eine “Allow any”-Regel, die im unkonfigurierten Zustand in jedem Fall einen Zugriff auf alle Interfaces erlaubt - doch diese Regel will man in den meisten Fällen so schnell wie möglich deaktiviert haben.

Also froh drauf los, als erste Regel steht die “Allow any”-Regel für meinen Konfigurationsclient. Einfach nur als safeguard, damit, egal was ich an Mist konfiguriere, immer noch die Möglichkeit besteht, das rückgängig zu machen. Und dann Schritt für Schritt die neuen Regeln. Sinnvolle Standadrdregeln wie der Zugriff von internen Netzen auf die DMZ, während der Zugriff aus der DMZ auf alles außer externe Netze (= Internet) blockiert wird, sind standardmäßig schon drin, außerdem kann man via Checkbox automatisch “related”-Regeln für erlaubte Zugriffe erstellen lassen, die Antworten auf ausgehenden Datenverkehr erlauben.

Bei vielen Zonen und VLANs können einzelne Regeln, welches VLAN nun mit welchen anderen VLANs kommunizieren darf und welches nicht, sehr umfangreich und unübersichtlich werden. Daher verbiete ich am Ende einfach alle Verbindungen von intern nach intern, wobei ich vorher alle Verbindungen explizit erlaubt habe, die ich brauche (Z.B. Client-VLAN -> Storage-VLAN für entsprechende Dienste, Zugriff von allen Netzen auf die zentralen DNS-Server, …) und bin auf diese Art sicher, dass ich nicht versehentlich irgend etwas übersehen habe. Beim Zugriff von intern nach extern dasselbe (Internetzugriff für Clients und Gäste, eingeschränkter Internetzugriff für einzelne Kernsysteme, …) und am Ende wieder eine Deny-Regel, um alles, was nicht explizit erlaubt ist zu verbieten.

Fallstricke

Doch die automatisch definierten Regeln der UDM stehen am Ende der Chain, direkt vor der “Allow All Traffic”-Regel. Die anderen Regeln möchte man ja gerne mitnehmen (u.A. Related-Regeln oder automatische Regeln, die durch VPN-Konfigurationen und Port Forwarding hinzugefügt wurden), die letzte Regel jedoch nicht. Alles kein Problem, sagt Unifi, und erlaubt uns, nach Auswahl einer Zonen-Kombination in der Matrix den “Reorder”-Link anzuklicken und dann via Drag&Drop Regeln dorthin zu schieben, wo sie benötigt werden. Am Ende der automatischen Regeln versteckt sich dann auch ein versteckter Slot, über den man die “Deny Any”-Regel einfach direkt vor die “Allow Any”-Regel ziehen kann. So zumindest die Theorie…

Effektiv scheiterte ich an dieser Stelle jedoch. Regeln neu anordnen: Kein Problem. Danach mit einem Klick auf “Done” speichern: Fehlanzeige, eine Meldung infoirmiert mich darüber, dass das Speichern der Regeln leider nicht erfolgreich war. Speziell Regeln, die irgendwo an den Anfang oder das Ende der Chain geschoben werden, lassen sich partout nicht umsetzen. Was ist da passiert?

Nach mehr als einer Stunde Herumprobieren wendete ich mich schließlich an den Support, der erwartungsgemäß am Sonntagnachmittag etwas Wartezeit hatte. Der vorgeschaltete KI-gestützte Chatbot war wie zu erwarten keine große Hilfe und darüber hinaus stellt Unifi kein direktes Ticket-System bereit. Man muss also über den Chatbot gehen und sich mit einem Techniker verbinden lassen. Das klappte nach einer guten Viertelstunde in der virtuellen Warteschlange dann auch und ich schilderte mein Problem.

Während wir miteinander redeten und ich dem freundlichen Supportmitarbeiter schilderte, wie er den Fehler reproduzieren konnte (konnte er zu meiner Überraschung nicht), klickerte ich weiter auf der Weboberfläche der UDM herum. Ich weiß nicht, ob es etwas war, was der Supporter sagte oder ob mir einfach so der blau leuchtende Indikator auf der Filter-Schaltfläche auffiel, jedenfalls klickte ich auf diese und sah, dass ich ja die alten Regeln ausgeblendet hatte. Da ich tatsächlich bereits einmal erlebt hatte, dass ein User Interface mit ausgeblendeten Einträgen und einer händischen Sortierung der übrigen nicht klar kam, blendete ich die pausierten Regeln kurzerhand wieder ein, verschob eine der aktiven Regeln - und siehe da, das veränderte Regelwerk ließ sich speichern.

Och, Unifi…

Und die Moral von der Geschicht’: Verstecke alte Regeln nicht! Leider war die Fehlermeldung so generisch, dass diese Problematik vollkommen unsichtbar blieb, auch der Supporter kannte dieses Verhalten nicht. Ich hoffe, dass in einer zukünftigen Softwareversion eine Warnung eingeblendet wird, wenn ausgebelendete Regeln existieren und man versucht, die übrigen neu anzuordnen. Das könnte einigen Menschen viel Zeit und Nerven ersparen.

Nach diesem ungewollten deep dive in die Welt der Unifi-Benutzeroberfläche habe ich jedenfalls noch gut eine Stunde damit verbracht, mittels der “Insights”-Registerkarte und dem System-Log die fehlenden Netzwerkzugriffe aufzuspüren, die ich in meinem Regelwerk noch vergessen hatte und die teilweise spannende Erkenntnisse über die Arbeitsweise einiger IoT-Devices mit sich brachten. Und genau das war auch das Ziel der Aktion: Jetzt weiß ich ganz genau, welches Gerät in meinem Netzwerk wann wohin “telefonieren” möchte und alles, was ich noch nicht kenne, erzeugt erst einmal einen Alarm, dem ich dann bei Bedarf nachgehen kann - oder das Gerät bewusst eingeschränkt lasse.

Vermutlich klingt dieser Artikel wieder nach viel Gemeckere, doch das Gegenteil ist der Fall. Ich bin super happy und freue mich über die sinnvollen Funktionen, die Unifi über die Jahre in die UDM Pro eingebaut hat.