Port 636 oder 3268 (.htaccess-Datei für AD-Verbindung über SSL) (HowTo)

Hi.
Ich bin gerade etwas irritiert, welcher Port für LDAP/AD-Abfragen denn nun richtig ist.

Das hier klappt mit den ldap-utils (2.4.45+dfsg-1ubuntu1.4):

ldapsearch -H ldap://10.16.1.1:3268  -D global-binduser@linuxmuster.meine-schule.de -w super-geheimes-passwort (ggf noch cn=suchbegriff dahinter)

… aber es funktioniert nicht, wenn ich Port 636 oder gar keinen Port angebe (auch nicht auf dem Server selbst).
Ebenso wenig geht es, wenn ich dort ldaps:// verwende.

Zudem bin ich nicht ganz sicher, ob Port 3268 verschlüsselt überträgt?! Eigentlich sollte dazu imho 3269 dienen; was aber ebenfalls hier nicht funktioniert.

Daher Frage in die Runde: Was ist der richtige Weg? Vor laaaanger Zeit hatten wir mal ldap-Anfragen auf Port 389, die unverschlüsselt über’s Netz gingen. Ist das jetzt auch wieder so, wenn dort 3268 verwendet wird?

Zur Info: http://www.selfadsi.de/global-catalog.htm
und http://pbraun.nethence.com/unix/www/apache_ad.html

Wer kann da etwas Klarheit in die Sache bringen?
Schöne Grüße,
Michael

Hallo Michael,

vielleicht hilft dir der folgende Link weiter:

https://informatics.perkinelmer.com/Support/KnowledgeBase/details/Default.aspx?TechNote=3142

Grüße,
Sven

… ach ja:
Der lmn70-Server zeigt ja durchaus an, dass diese Ports offen sind:

netstat -tulnp |grep samba

tcp        0      0 0.0.0.0:636             0.0.0.0:*               LISTEN      850/samba           
tcp        0      0 0.0.0.0:49152           0.0.0.0:*               LISTEN      845/samba           
tcp        0      0 0.0.0.0:49153           0.0.0.0:*               LISTEN      845/samba           
tcp        0      0 0.0.0.0:49154           0.0.0.0:*               LISTEN      845/samba           
tcp        0      0 0.0.0.0:3268            0.0.0.0:*               LISTEN      850/samba           
tcp        0      0 0.0.0.0:3269            0.0.0.0:*               LISTEN      850/samba           
tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      850/samba           
tcp        0      0 0.0.0.0:135             0.0.0.0:*               LISTEN      845/samba           
tcp        0      0 0.0.0.0:464             0.0.0.0:*               LISTEN      852/samba           
tcp        0      0 0.0.0.0:53              0.0.0.0:*               LISTEN      859/samba           
tcp        0      0 0.0.0.0:88              0.0.0.0:*               LISTEN      852/samba           
tcp6       0      0 :::636                  :::*                    LISTEN      850/samba           
tcp6       0      0 :::49152                :::*                    LISTEN      845/samba           
tcp6       0      0 :::49153                :::*                    LISTEN      845/samba           
tcp6       0      0 :::49154                :::*                    LISTEN      845/samba           
tcp6       0      0 :::3268                 :::*                    LISTEN      850/samba           
tcp6       0      0 :::3269                 :::*                    LISTEN      850/samba           
tcp6       0      0 :::389                  :::*                    LISTEN      850/samba           
tcp6       0      0 :::135                  :::*                    LISTEN      845/samba           
tcp6       0      0 :::464                  :::*                    LISTEN      852/samba           
tcp6       0      0 :::53                   :::*                    LISTEN      859/samba           
tcp6       0      0 :::88                   :::*                    LISTEN      852/samba         

… dennoch ist mir die Konfiguration bzw die externe Abfrage des AD/LDAP nicht ganz klar: Wann/von wo funktioniert :636 und wann :3268 / :3269 (und warum)?

Lokal funktioniert übrigens auch das hier:

ldbsearch -H /var/lib/samba/private/sam.ldb '(objectclass=person)' | grep sAMAccountName

Der Tipp kam von dieser Seite.

Ob man „gefahrlos“ kinit auf dem Server benutzen kann, habe ich bisher nicht ausprobiert … https://www.kania-online.de/ldb-tools-nach-badlock/
… wäre aber auch interessant zu erfahren.

Wer blickt da durch und kann ein paar Tipps loswerden?
Danke
Michael

… weiß nicht, ob noch jemand mitliest … es geht nur millimeterweise voran:

Wenn man samba-tool testparm -v | egrep "ldap|tls" eingibt (und einmal Enter drückt), sieht man, dass TLS aktiviert ist und die Zertifikate richtig zugeordnet sind. Demzufolge sollte es nach meinem Verständnis auch auf Port 3269 eine Antwort geben, oder?? Andererseits ist in der smb.conf jedoch als Port cldap port = 389 angegeben …

Samba-Wizzards? Wo seid ihr? Ich blicke es nicht …

https://wiki.samba.org/index.php/Samba_AD_DC_Port_Usage

… noch ein Nachtrag:
ldapsearch -LLL -H ldaps://localhost:3269 -U mein-login
funktioniert ja doch – warum geht’s dann nicht auch via .htaccess auf Port 3269?

Heute habe ich den entscheidenen Hinweis gefunden :+1: … und der kam von Chris (@cweikl) in diesem Beitrag.

Ich habe nun eine .htaccess-Datei für einen Apache 2.4 Server, mit der man SSL verschlüsselt den AD abfragen kann.

Also hier nochmal die Schritte, die bei mir zum Erfolg geführt haben:
1.) Da ich dem apache2 in der DMZ nur ein self-signed-cert gegönnt habe, war bei mir der Eintrag
LDAPVerifyServerCert Off ganz am Ende unter /etc/apache2/conf-enabled/security.conf notwendig!

2.) Unter Apache 2.4 ein Verzeichnis test unter /var/www/html (default) erstellen. Ich habe diese Rechte gewählt:

<Directory /var/www/html/test>
    Options Indexes FollowSymLinks Includes MultiViews
    AllowOverride All
    Require all granted
</Directory>

3.) Eine .htaccess-Datei anlegen wie diese:

# .htaccess-File in Unterordner Test zur AD/LDAP-Auth an Server:
AuthName "Stundenplan der Schule"
AuthBasicProvider ldap
AuthType Basic
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN Off
#Ports 3268 und 3269: Global Catalog (over SSL)
#AuthLDAPURL "ldap://10.16.1.1:3268/ou=default-school,ou=SCHOOLS,dc=linuxmuster,dc=meine-schule,dc=de?samaccountname?sub?(objectClass=*)" 
AuthLDAPURL "ldaps://server.linuxmuster.meine-schule.de:3269/ou=default-school,ou=SCHOOLS,dc=linuxmuster,dc=meine-schule,dc=de?samaccountname?sub?(objectClass=*)" 
AuthLDAPBindDN "global-binduser@linuxmuster.meine-schule.de"
AuthLDAPBindPassword "super-geheim"
# Nachschlagen unter: sophomorix-user -i -u global-binduser

# Nur für Lehrer:
Require ldap-attribute memberOf="CN=teachers,OU=Teachers,OU=default-school,OU=SCHOOLS,DC=linuxmuster,DC=meine-schule,DC=de" 
# Für alle User mit gültigem Login:
#Require valid-user

4.) Apache2 neu starten: service apache2 restart

5.) Zugriff auf Port 3269 des Servers in der OPNSense-Firewall (z.B. für die DMZ) öffnen.

6.) Seite http://mein-apache-server-in-der-dmz/test aufrufen und sich mit einem Lehrer-Account anmelden.

7.) Grinsen?!?

Schönen Gruß,
Michael

Hallo Michael!

Super! Glückwunsch! Noch besser wäre Du würdest die gefundene Lösung in deinen/diesem Thread als gelöst markieren.

Lieben Gruß

Thorsten

Warum nutzt du eine .htaccess-Datei, könntest du die Direktiven nicht statt der Zeile Require all granted in der Apache-Konfiguration haben?

Ich bin generell kein Freund von .htaccess-Dateien, drum frage ich.

Das funktioniert genauso; hab’s ausprobiert
Eine .htaccess-Datei ist vielleicht etwas schneller auf andere Verzeichnisse angepasst?

Warum bist du keine Freund davon? Was spricht dagegen?

separation of concerns :wink:

Ein solches Verzeichnis enthält Inhalte, nicht Konfiguration oder gar Programme (ja, ich mag auch PHP nicht aus demselben Grund).