Die Fortigate, die Security Fabric und das lokale AD können echt ganz gut miteinander…
Fortigate Single Sign On (FSSO) ist eine Technik, die eine Verbindung zwischen dem lokalen Active Directory und der Fortigate ermöglicht, um AD Benutzer oder auch AD Gruppen an der Firewall authentifizieren zu können. Hauptsächlich wird dieses Feature im Zusammenhang mit Webfiltern und deren Segmentierung für bestimmte AD Benutzer oder Gruppen und bspw. auch für das Single Sign On für SSL-VPN User genutzt. Die Authentifizierung der AD Benutzer erfolgt mit FSSO „silent“, der Benutzer muss für den Zugriff auf Webseiten seine Anmeldedaten somit nicht erneut eingeben. Die Funktion FSSO ist im Standard Feature Setup enthalten und muss NICHT gesondert lizenziert werden.
Sollte im Zusammenhang mit SSL-VPN bspw. eine SAML Authentication gegen das Azure AD interessant sein, empfehle ich diesen Microsoft Artikel. Dies wäre übrigens eine Möglichkeit eine Zwei Faktor Authentifizierung ohne zusätzliche Token oder andere MFA Lösungen für SSL-VPN, bspw. mit dem FortiClient VPN zu realisieren, wenn man bereits über ein Azure AD verfügt. Beide Lösungen, also Fortinet FSSO im lokalen Active Directory und SAML Authentication via Azure AD können selbstverständlich koexistent betrieben werden.
Die unterschiedlichen FSSO Modi
FSSO kann in zwei unterschiedlichen Modi integriert und betrieben werden:
- Polling Mode
Im Polling Mode versucht die Fortigate kontinuierich die Authentifizierungsdaten von einem Domain Controller abzurufen, ohne dass eine zusätzliche Software installiert wird. Besonders geeignet für Integrationen, bei denen die Installation einer zusätzlichen Software auf den Domain Controllern ausgeschlossen ist. Quelle ist hier dann ein LDAP Server, der vorab in der Konfiguration zu erstellen ist. - Agent Based FSSO
Hier wird auf den Domain Controllern ein Agent installiert, der die Authentifizierungsdaten an die Fortigate überträgt. Die komplexere aber auch zuverlässigere Variante. Zudem sind hier diverse Funktionen möglich, die der Polling Mode nicht bietet. Bei der Integration im Agent Mode kann man zudem noch zwischen dem Standard Mode und dem Advanced Mode unterscheiden. Hauptunterschied ist die unterschiedliche Zeichenlänge bei Benutzernamen, die im Standard Mode auf 15 reduziert ist. Somit ist bspw. in einer Multi Domain Umgebung immer der Advanced Mode zu integrieren. Der passende Modus wird bei der Installation oder auch nachträglich bei der Konfiguration des Collector Agent definiert.
Die unterschiedlichen Modi werden in der Connector Konfiguration der Security Fabric festgelegt. Erstellt man einen AD Connector, legt man hier den Modus fest:
Komponenten & Funktionsweise des Agent based FSSO – Kurz erklärt
Collector Agent
Der Collector Agent ist die Komponente, welche die Logon Daten von den Domain Controller, oder auch Terminal Server Agents empfängt, speichert und an die Fortigate weiterleitet. Insofern quasi ein „Sammler“ und „Sender“, der regelmäßig die gewünschten Authentifizierungsdaten an die Fortigate überträgt. Es handelt sich konkret um eine Software, die auf einem beliebigen Windows Server installiert werden kann. Theoretisch geht auch auf einem Client, was ich aber persönlich nicht empfehle. Aus Gründen der Hochverfügbarkeit, können/sollten mehrere (min. 2) Collector Agent Server bereitgestellt werden. In der Konfiguration des Collectors an der Fortigate, können diese dann hinterlegt werden.
Quelle:https://docs.fortinet.com/document/fortigate/6.0.0/cookbook/615946/agent-based-fsso-for-windows-ad
Domain Controller Agent
Um die Authentifizierungsinformationen der AD Benutzer mit der Firewall zu synchronisieren, kommt ein sog. „DC Agent“ zum Einsatz, der im Prinzip das Security Protokoll eines Domain Controllers überwacht und die Anmeldungen der Benutzer an den Collector Agent „weiterreicht“. Hat man also mehrere DC’s im Einsatz, ist auf jedem DC innerhalb der Domain dieser Agent zu installieren. In o.g. Download Verzeichnis ist dies das Paket „DCAgent_Setup_X.X.XXXX_x64.exe“ oder als 32bit Paket die „DCAgent_Setup_X.X.XXXX.exe„. Da meine DC’s ausschließlich 64bit Systeme sind, verwende ich die 64bit Variante.
Terminal Server Agent
Der Terminal Server Agent ermöglicht es der Fortigate, gleichzeitige Benutzersitzungen auf einem Terminalserver, basierend auf dem Source Port der Session zu „erkennen“ und so die unterschiedlichen Sessions der Benutzer voneinander zu unterscheiden. Dies macht es somit bspw. Webfilter zwischen einzelnen Usern zu unterscheiden, obwohl die Session von der selben Source IP initiiert wird. Der Terminal Server Agent überträgt die hierfür notwendigen Daten ebenfalls an den Collector Agent.
Voraussetzungen für den Agent based FSSO Mode
- Fortigate Firewall
- Um den Webfilter nutzen zu können, muss eine UTP Subscription für die Firewall vorhanden sein
- Windows Active Directory
- FSSO Software, welche im Fortinet Firmware Verzeichnis und hier immer im Unterordner „FSSO“ heruntergeladen werden kann
Integration Kurzversion
- Festlegen der Installationsorte für den/die Collector Agent(s).
Ich installiere diese(n) auch direkt auf dem Domain Controller und hatte damit bisher nie Probleme. Natürlich hat das den Nachteil, dass man zusätzliche Ports an der Windows Firewall öffnen muss und das könnte in einigen Umgebungen unterbunden werden. Hier stelle ich den/die Collector Agent(s) auf einem oder mehreren dedizierten System(en) bereit. - Konfiguration des Security Fabric Connectors an der Firewall.
Hierzu navigiert man auf der Fortigate zum Punkt Security Fabric -> External Connectors und erstellt hier einen neuen FSSO Agent on Windows AD Connector. Nun trägt man die oben festgelegten IP’s der Systme ein und vergibt einen Pre Shared Key, den man für später notiert. Dieses Passwort beschränkt den Zugriff auf den Collector Agent auf die Fortigate aus Sicherheitsgründen.
Installation und Konfiguration des Collector Agents- Installation der DC Agents
Die Installation der DC Agents kann direkt vom Collector Agent aus erfolgen. In größeren Umgebungen also immer mit dem Collector Agent anfangen, denn von hier aus können in Minuten zig DC Agents ausgerollt werden. Hierfür wird am Collector Agent, bereits bei der Installation ein Domain Admin als Service User angelegt, der dann auch für den Rollout auf die DC’s verwendet wird. - Anpassen der Windows Firewall, falls diese aktiv ist! Übrigens Fehlerquelle Nr.1, wenn FSSO nicht funktioniert…
Also direkt nach der Installation erstmal hier lang…
Alles in Bildern…
Fortigate Connector Konfiguration
Installation des Collector Agent
Hier nun der Domain Admin Account…
Hier die Festlegung des Advanced Mode (siehe oben)…
Hier kann man bestimmte User explizit von der FSSO Filterung ausnehmen…
Hier wähle ich den Agent Mode, da er zuverlässiger ist und mehr Einstellungen möglich sind…
Collector Agent ausgerollt, Agents auf die DC’s verteilt, that’s ist!
Anpassung der Konfiguration des Collector Agent
In der grafischen Verwaltungsoberfläche des Collector Agents findet man nun den Eintrag „Configure Fortinet Single Sign On Agent“. Hier geht’s weiter…
Grundsätzlich sind die Default Einstellungen bereits so gewählt, dass alles funktioniert, aber ein paar Schräubchen zeige ich dennoch hier, die man kennen sollte…
Zuerst den an der Fortigate vergebenen Pre Shared Key eintragen…
Bitte in den „Advanced Settings“ prüfen, ob dieser Haken gesetzt ist. Falls nicht, bitte setzen, denn sonst können Probleme auftreten, falls ein User mehrere Systeme, wie Laptop und Terminalserver verwendet und die Fortigate den User fälschlicherweise als „ausgelogged“ identifiziert und den Webzugriff demzufolge regelmäßig wieder blockt. Bei diesem Phenomen meldet sich der User ab und sofort wieder an und der Webzugriff funktioniert dann für einige Zeit wieder. Ein „dummer“ Fallstrick, auf den mich erst der Fortinet Support hingewiesen hat, nachdem „jemand“ diesen Haken entfernt hat und die Fehlersuche kein Ergebnis brachte.
Hier kann man die AD Gruppen Filtern, die man monitoren möchte. Die Fortigate „sieht“ dann nur die hier konfigurierten Gruppen.
Die Fortigate Serial im Format seriennummer-VDOM eingeben. Sind keine VDOMs aktiviert, dann Seriennummer-root. Die Gruppen werden dann mit Ihrem Distinguished Name hinterlegt.
Hat man evtl. bei der Konfiguration zunächst den Standard Mode aktiviert, kann man das hier in den Advanced Mode ändern.
Das waren schon alle Schritte die notwendig sind, um FSSO zu integrieren. Am Collector sollte jetzt ein grüner Pfeil sichtbar sein, der signalisiert, dass der Connector mit dem Collector spricht und die in der Group Filterung angebenen Gruppen „sieht“, wie hier unten im Screenshot 1 Gruppe…
oder in der Firmware 7.0.11 bspw…
Letzte Schritte…
Jetzt wird noch eine Firewall Policy erstellt, welche als Source min. 1 Adressobjekt und diese FSSO Gruppe hat. Die Gruppe kann direkt, bei der Bearbeitung der Policy als Source, rechts im Auswahlframe als Usergruppe verwendet werden. Dann kann schon getestet werden.
Will man übrigens wissen, welche User die Fortigate bereits sieht, schaut man sich auf der Firewall auf dem Dashboard „User & Devices“ das Widget „Firewall User“ an…
oder eben wieder ab Firmware 7.0.x
Troubleshooting…
Die Fehlrsuche zum Thema FSSO kann durchaus komplexer werden, insofern wichtig einen guten Einstieg in die Basics zu haben:
https://kb.fortinet.com/kb/documentLink.do?externalID=FD47087
Kleiner Disclaimer: Wenn Fortinet im Zusammenhang mit FSSO von „CA“ spricht oder schreibt, ist im Regelfall der Collector Agent gemeint und nicht etwa eine Certificate Authority… 😉
…sehr schöne Anleitung, vielen Dank dafür!
Als Ergänzung um stundenlanges Troubleshooting zu vermeiden, hier ein aktuelles Microsoft Hotfix Thema das uns im Vorfeld viele Tage Analyse erspart hätte:
https://community.fortinet.com/t5/FortiGate/Technical-Tip-FSSO-breaks-after-installing-Microsoft-KB5039227/ta-p/321596
Möge es anderen SysOps dientlich sein 🙂
Herzlichen Dank für die Ergänzung!