PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LDAP und SSL



aptget
16.12.15, 16:04
Hallo,

mal eine Frage an diejenigen die sich mit Ldap auskennen. Ich baue mit php und der ldap extension aus Apache eine Verbindung zu einem externen Windows Server mit ActiveDirectory auf. Ist im Prinzip auch einfach durchzuführen (s. Beispiel unten (http://php.net/manual/de/function.ldap-connect.php) ). Der ActiveDirectory Server wird von jemand anderem administriert. Nun soll die Verbindung verschlüsselt über SSL erfolgen, also statt über ldap würde die Verbindung zu dem Ziel Host mittels ldaps erfolgen.

Frage: Muss auf der Clientseite (Linux System) irgend etwas besonderes eingestellt werden damit die Verbindung über ldaps erfolgen kann (mE kann die ldaps Verbindung direkt aus php aufgebaut werden ohne das ich was, bis auf die ldaps portfreigabe, zusätzlich Einstellen muss), die korrekte SSL Einstellung / Signierung für LDAPS muss doch dagegen auf dem Ziel Host, also dem Win Server, gemacht werden, oder irre ich mich da?

fork
16.12.15, 16:36
Würde mal vermuten, dass Du entweder auf dem AD-Server ein offizielles SSL-Zertifikat von einer vertrauenswürdigen CA beschaffen musst oder in der PHP-Anwendung sagst, dass es Du es nicht validieren willst.

BetterWorld
16.12.15, 18:09
Du solltest erst mal erläutern, wie da die Authentifizierung stattfindet.
Und natürlich auf was du da zugreifen willst.

Normalerweise validiert eine AD mit Kerberos.
LDAP ist quasi nur die "Speicherform" aller AD- Daten.
Daher müsste dein PHP cerberized arbeiten.

TheDarkRose
16.12.15, 21:52
LDAP ist bei AD nicht die unbedingt die Speicherform. Wie es wirklich gespeichert wird, keine Ahnung. Aber auf jeden Fall kann man ein AD offiziel über LDAP ansprechen. Kein Kerberos oder NTLM nötig.

@TS: Die Kommentare in der PHP-Doku sind bzgl AD und SSL recht aufschlussreich: http://php.net/manual/de/function.ldap-connect.php

aptget
16.12.15, 22:03
Auf dem Ziel Host sind in dem Active Directory Controller mehrere Objekte gespeichert, darunter diverse User. Der Client verbindet sich mit dem Ziel host und fragt die Objectattribute ab. Mehr ist es eigtl nicht...

Hier mal das Client Skript das auch funktioniert:


$ldaphost = "ldap://111.111.111.111"; //<-- Verbindung zum host soll nun über ssl stattfinden, also ldaps://....

$ldapconn = ldap_connect($ldaphost)

$bind = @ldap_bind($ldapconn, "username@foo.bar.de", "passwword"); //foo.bar.de ist die active directory domäne

if( $bind ){
//attribute des benutzerobjekts auslesen...
}

Die Frage ist nun ob auf der Clientseite (ist ein Linux Server) irgendwas gemacht werden muss damit der Zugriff auch über ldaps, also verschlüsselt, funktioniert. Oder muss das notwendige hierfür, wie SSL etc, nur auf dem Ziel Host (Win Server) entsprechend konfiguriert werden? (Für den Win Server bin ich nicht zuständig, daher kein Zugriff)

BetterWorld
16.12.15, 22:29
Abgesehen davon, dass der Linuxrechner es können muss (was von Haus aus funktioniert (, oder jedenfalls sollte)), wirst du lediglich "ldaps:<ip|domainname>" brauchen.


Zur Klarstellung:
LDAP ist ein Protokoll für den Zugriff auf Directory Services.
Das sprechen sowohl openLDAP, wie auch AD von MS.
Beide beruhen auf den X.500 Standard.

AD von Microsoft hat noch einige Erweiterungen und Services mehr. (Alle speziell für Windows.)
Bei den Linux- LDAPS und bei AD von MS wird meist als tatsächlicher Backend- Speicher eine Datenbank verwendet.
Da es aber aus Usersicht ziemlich egal ist, wie die Daten im Backend gespeichert werden, sagt man schon "im LDAP gespeichert".
(obwohl LDAP nur das Protokoll ist)

Die Authentifizierung via Kerberos stammt ebenfalls aus der X.500 Familie.
Er ist bei Directory- Services Standard.

Und wenn die AD richtig gesichert ist, dann wird die Microsoft Implementierung von Kerberos verwendet.
Probiers einfach aus.

Wenn du mit ldaps: nicht draufkommst, wirst du eh den Admin bemühen müssen.

TheDarkRose
17.12.15, 12:03
Und wenn die AD richtig gesichert ist, dann wird die Microsoft Implementierung von Kerberos verwendet.
Probiers einfach aus.
Ich denke der jeweilige SysAdmin wird schon LDAP Zugriff ohne Kerberos freigeschaltet haben, sonst würde es ohne SSL auch nicht gehen. Davon ist mal auszugehen?


Die Frage ist nun ob auf der Clientseite (ist ein Linux Server) irgendwas gemacht werden muss damit der Zugriff auch über ldaps, also verschlüsselt, funktioniert. Oder muss das notwendige hierfür, wie SSL etc, nur auf dem Ziel Host (Win Server) entsprechend konfiguriert werden? (Für den Win Server bin ich nicht zuständig, daher kein Zugriff)

Hast du die Kommentare auf http://php.net/manual/de/function.ldap-connect.php gelesen???

BetterWorld
17.12.15, 13:53
Ich denke der jeweilige SysAdmin wird schon LDAP Zugriff ohne Kerberos freigeschaltet haben, sonst würde es ohne SSL auch nicht gehen. Davon ist mal auszugehen?Mag sein, oder auch nicht. Interne Zone? :cool: