Guacamole – LDAP Authentifizierung mit Active Directory (Teil 2)

In meinem ersten Artikel zu Apache Guacamole habe ich die Installation sowie Konfiguration beschrieben. In diesem Beitrag geht es um die Installation, Konfiguration der Erweiterung LDAP in Vebindung mit einem Microsoft Active Directory. Somit ist ein Authentifizierung gegen LDAP als auch adas lokalen Datenbank Backend möglich.

Die Installation der Erweiterung LDP erfolgt über eine sogenannte Extension.

cd /usr/src/
wget --trust-server-names "https://apache.org/dyn/closer.cgi?action=download&filename=guacamole/1.0.0/binary/guacamole-auth-ldap-1.0.0.tar.gz"
tar xvzf guacamole-auth-ldap-1.0.0.tar.gz
cp /usr/src/guacamole-auth-ldap-1.0.0/guacamole-auth-ldap-1.0.0.jar /etc/guacamole/extensions/

Die Konfiguration erfolgt wie bis dato über die Datei /etc/guacamole/guacamole.properties.

cat << EOF >> /etc/guacamole/guacamole.properties
#
#LDAP Einstellungen für Active Directory
#

#The hostname of your LDAP server. If omitted, "localhost" will be used by default. You will need to use a different value if your LDAP server is located elsewhere.
ldap-hostname: 192.168.123.2

#The port your LDAP server listens on. If omitted, the standard LDAP or LDAPS port will be used, depending on the encryption method specified with ldap-encryption-method (if any). Unencrypted LDAP uses the standard port of 389, while LDAPS uses port 636. Unless you manually configured your LDAP server to do otherwise, your LDAP server probably listens on port 389.
ldap-port: 389

#The encryption mechanism that Guacamole should use when communicating with your LDAP server. Legal values are "none" for unencrypted LDAP, "ssl" for LDAP over SSL/TLS (commonly known as LDAPS), or "starttls" for STARTTLS. If omitted, encryption will not be used.
ldap-encryption-method: none

#The DN (Distinguished Name) of the user to bind as when authenticating users that are attempting to log in. If specified, Guacamole will query the LDAP directory to determine the DN of each user that logs in. If omitted, each user's DN will be derived directly using the base DN specified with ldap-user-base-dn.
ldap-search-bind-dn: CN=guacamoleadmin,OU=Serviceobjekte,DC=lab02,DC=wydler,DC=eu

#The password to provide to the LDAP server when binding as ldap-search-bind-dn to authenticate other users. This property is only used if ldap-search-bind-dn is specified. If omitted, but ldap-search-bind-dn is specified, Guacamole will attempt to bind with the LDAP server without a password.
ldap-search-bind-password: Test1234

#The base of the DN for all Guacamole users. This property is absolutely required in all cases. All Guacamole users must be descendents of this base DN.
ldap-user-base-dn: OU=Benutzer,DC=lab02,DC=wydler,DC=eu

#The attribute or attributes which contain the username within all Guacamole user objects in the LDAP directory. Usually, and by default, this will simply be "uid". If your LDAP directory contains users whose usernames are dictated by different attributes, multiple attributes can be specified here, separated by commas, but beware: doing so requires that a search DN be provided with ldap-search-bind-dn.
ldap-username-attribute: samAccountName

#The base of the DN for all user groups that may be used by other extensions to define permissions or that may referenced within Guacamole configurations using the standard seeAlso attribute. All groups which will be used to control access to Guacamole configurations must be descendents of this base DN. If this property is omitted, the seeAlso attribute will have no effect on Guacamole configurations.
ldap-group-base-dn: OU=Gruppen,DC=lab02,DC=wydler,DC=eu

#Das Attribut oder die Attribute, die den eindeutigen Namen der Benutzergruppen im LDAP-Verzeichnis definieren. Normalerweise und standardmäßig ist dies einfach "cn". Wenn Ihr LDAP-Verzeichnis Gruppen enthält, deren Namen durch unterschiedliche Attribute vorgegeben sind, können hier mehrere Attribute angegeben werden, die durch Kommas getrennt sind.
ldap-group-name-attribute: cn

#Diese Option steuert, ob das LDAP-Modul bei der Verarbeitung von Suchergebnissen aus einer LDAP-Suche Verweisen folgt oder nicht. Verweise können Zeiger auf andere Teile eines LDAP-Baums oder auf einen anderen Server / eine andere Verbindung insgesamt sein. Dies ist ein boolescher Parameter mit den gültigen Optionen "true" oder "false". Der Standardwert ist false. Wenn diese Option deaktiviert ist, werden LDAP-Verweise ignoriert, wenn der Guacamole LDAP-Client darauf stößt und der Client mit dem nächsten Ergebnis fortfährt. Wenn diese Option aktiviert ist, folgt der LDAP-Client den Verweis- und Verarbeitungsergebnissen innerhalb des Verweises, vorbehaltlich der unten angegebenen maximalen Hops-Parameter.
ldap-follow-referrals: false

# This option sets the timeout, in seconds, of any single LDAP operation. The default is 30 seconds. When this timeout is reached LDAP operations will be aborted.
ldap-operation-timeout: 30

#The search filter used to query the LDAP tree for users that can log into and be granted privileges in Guacamole. If this property is omitted the default of "(objectClass=*)" will be used.
ldap-user-search-filter: (&(objectClass=*)(memberOf=CN=ggpro-guacamole-logon-access,OU=Gruppen,DC=lab02,DC=wydler,DC=eu))

EOF

Bitte nicht vergessen, die Parameter bzw. Werte für eure Umgebung anzupassen. Bei den base-dn handelt es sich jeweils um Distinguished Name der Organisationsheit, Benutzer oder Gruppe. Der Wer kann im Active Directory des jeweiligen Objekts unter Eigenschafnte im Reiter „Attribut Editor“ einfach kopiert werden.

Ist die Konfiguration um die LDP Parameter erweitert, muss noch der Apache Tomcat neu gestartet werden.

systemctl restart tomcat8.service

Zeit für einen Funktionstest der neuen Authentifizieurngsmethode. Dazu die Guacamole in einem Browser aufrufen und die Anmeldedaten eines Benutzer, der im Active Directory existiert, eingeben. Wichtig dabei ist, dass dieser den Vorgaben der LDAP Konfiguration von Guacamole entspricht. Ist dieser z.B. nicht Mitglied der Gruppe „ggpro-guacamole-logon-access“ so ist grundsätzlich keine Anmeldung möglich. Liegt das Benutzerkonto außerhalb des Pfades, welcher dem Attribut „ldap-user-base-dn“ zugewiesen ist, ist ebenfalls keine Anmeldung möglich.

Sieht doch ganz gut aus. Die Anmeldung funktioniert schon einmal problemlos. Rechts oben steht der Benutzername aus dem Active Directory. Aktuell sieht der Benutzer allerdings noch keine Verbindungen.

Eine Zuweisung ist leider aktuell nur über einen Umweg möglich. Der Benutzer muss in Guacamole mit seinem Benutzernamen (=samAccountName) aus dem Active Directory angelegt werden. Beim Passwort gebt ihr einfach ein  zufälliges, komplexes Passwort ein. Das Feld ist leider erforderlich und theoretisch wäre auch eine Anmeldung möglich, wenn jeman das Passwort erratet. Dazu wie gehabt mit dem guacadmin an der Weboberfläche anmelden.

Im unteren Bereich der Seite kann dem Benutzer noch Verbindungen zugewiesen werden.

Meldet sich danach der Benutzer Mueller nochmals an Guacamole an, sieht der nun die zugewiesene Verbindung.

Bei einer handvoll Benutzern ist dieser Weg einfach, schnell und überschaubar. Sind es aber 10, 20 oder 50 Benutzer und damit auch noch eine komplexe Strutkur, wer welche Verbindungen haben darf, sind Gruppen unausweichlich.

Das Schema ist eigentlich das Selbe wie bei den Benutzern. Über die Attribute „ldap-group-base-dn“ und „ldap-group-name-attribute“ in der Datei /etc/guacamole/guacamole.properties wird konfiguriert, welche Gruppen grundsätzlich auswertet werden können. Der Wert des letztgenannten Parameter ist bereits von mir korrekt gesetzt worden. Anschließend können in der angegeben Organisationseinheit (OU) eine oder mehrere Gruppen vom Typ Global erzeugt werden. Wichtig wäre aus meiner Erfahrung heraus, dass am Gruppennamen schon erkennbar ist, für was die Gruppe benutzt wird. Selbstverständlich kein Roman schreiben, da es natürlich im Objekt noch das Feld Beschreibung gibt. 🙂

Für diesen Artikel habe ich die Gruppe „ggpro-guacamole-ssh-connections“ angelegt und den Benutzer „Mueller“ als Mitglied hinzugefügt.

Sind alle notwendigen Gruppen angelegt, geht es zurück in Weboberfläche von Guacamole. Dort muss die Gruppe mit dem Gruppenname (=cn) ebenfalls angelegt werden.

Nicht vergessen am Seitenende die entsprechende Verbindungen der Gruppe zu zuweisen. Die Gruppe wird mit dem Aklicken der Schaltfläche „Save“ erzeugt. Eine Zuweisung von Benutzern ist an dieser Stelle nicht notwendig. Denn dies erfolgt ja über die Gruppenmitgliedschaften im Active Directory (siehe oben).

Da ich dem Benutzer (Mueller) für Demonstrationszwecke benutze, muss ich natürlich die direkte Zuweisung von Verbindungen wieder aufheben. Dazu wieder in Guacamole in den Reiter „Benutzer“ wechseln.

In der Übersicht von Benutzern auf den Eintrag „Mueller“ klicken, zum Seitenende scrollen und im Bereich „Verbindungen“ alle Haken entfernen.

Anschließend an Guacamole nochmals mit dem Benutzer „Mueller“ anmelden.

Die Verbindungen werden ab sofort durch die Gruppen bzw. Mitgliedschaften gesteuert. So soll sein… 🙂

Bei einem ordentlichen Design wird der Server mit Guacamole in der DMZ stehen und derr Server mit dem Active Directory (Domain Controller) im LAN. Beide Netzsegmente werden in Regel durch eine Firewall geschützt. In diesem Fall ist eine neue Regel notwendig, welche die Verbindung von Guacamole zum Domain Controller über Port 389/TCP erlaubt.

Viel Spaß beim Ausprobieren. 🙂

Abonnieren
Benachrichtige mich bei
guest
1 Kommentar
neueste
älteste
Inline Feedbacks
View all comments
klinsl
klinsl
12.03.2020 09:13

Hallo, man braucht nur 1 Admin-Benutzer in Guacamole anzulegen: z.B „Mueller“(muss in AD existieren) und dem alle Berechtigungen zuteilen, Passwort abweichend von dem Passwort in AD erstellen, Anmelden an Guacamole mit dem Benutzer „Mueller“ und mit dem Passwort von AD. Man sieht unter Einstellungen->Benutzer alle Benutzer aus der AD, und unter Einstellungen->Groups alle Gruppen die man in guacamole.properties konfiguriert hat. https://guacamole.apache.org/doc/gug/ldap-auth.html: „If an administrator account (such as the default guacadmin user provided with the database authentication) has a corresponding user in the LDAP directory with permission to read other LDAP users and groups, the Guacamole administrative interface will include them… Weiterlesen »

1
0
Would love your thoughts, please comment.x
()
x
Back to top