LDAP Kerberos Passwortspeicher (SASL)

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: LDAP Kerberos Passwortspeicher

Beitrag von joe2017 » 07.08.2018 09:52:46

Ich habe jetzt einige Seiten zu SASL gelesen. Ich habe das Gefühl, dass folgende Seite nicht den vollen Umfang beschreibt
http://labs.opinsys.com/blog/2010/03/16 ... sing-sasl/

Ich muss sagen, dass dieses Thema etwas verwirrend für mich ist.
Die Installation von LDAP und (MIT) Kerberos war eigentlich überschaubar. Hier habe ich aktuell auch keine Probleme. Meine Services funktionieren auch. Jedoch eben nur mit den getrennten Passwörtern. So wie ich das sehe, ist SASL die richtige Vorgehensweise um den LDAP Benutzern mitzuteilen, dass die Passwörter im Kerberos hinterlegt sind. Irgendwie hakt es hierbei noch etwas. Hat jemand eine gute Anleitung für Debian 9.5.0. Hierbei bräuchte ich leider etwas Unterstützung.

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: LDAP Kerberos Passwortspeicher

Beitrag von joe2017 » 07.08.2018 11:45:34

Anbei meine LDAP Kerberos Installation. Ich hoffe das hilft.
Ich habe natürlich einige Inhalte (Servername, IP, Domain) angepasst. Ich habe hier jetzt auch nur den Primary LDAP/Kerberos aufgelistet. Der Secondary LDAP/Kerberos wird bis auf die Replication identisch installiert. Es wäre prima wenn ich das mit dem Passwortspeicher im Kerberos noch irgendwie hinbekommen könnte. Ich hab jetzt schon dutzende Seiten hierzu durchgelesen und komme nicht wirklich weiter damit. Alles was ich bisher getestet habe funktioniert nicht. Ich habe auf jeden Fall einen Snapshot meiner Virtuellen Maschine. ;-)

LDAP PRIMARY

sudo nano /etc/hostname

Code: Alles auswählen

LDAP-Server-1.domain.net
sudo reboot

sudo apt -y install slapd ldap-utils
sudo nano /folder/logging.ldif

Code: Alles auswählen

dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f /folder/logging.ldif

sudo cp /etc/rsyslog.conf /etc/rsyslog.conf.1st
sudo nano /etc/rsyslog.conf

Code: Alles auswählen

# add to the end....

# Disable rate limiting
# (default is 200 messages in 5 seconds; below we make the 5 become 0)
$SystemLogRateLimitInterval 0
sudo systemctl restart syslog.service

REPLICATION - PROVIDER
sudo nano /folder/provider_sync.ldif

Code: Alles auswählen

# Add indexes to the frontend db.
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: entryCSN eq
-
add: olcDbIndex
olcDbIndex: entryUUID eq

#Load the syncprov and accesslog modules.
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: syncprov
-
add: olcModuleLoad
olcModuleLoad: accesslog

# Accesslog database definitions
dn: olcDatabase={2}mdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDatabase: {2}mdb
olcDbDirectory: /var/lib/ldap/accesslog
olcSuffix: cn=accesslog
olcRootDN: cn=admin,dc=domain,dc=net
olcDbIndex: default eq
olcDbIndex: entryCSN,objectClass,reqEnd,reqResult,reqStart

# Accesslog db syncprov.
dn: olcOverlay=syncprov,olcDatabase={2}mdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpNoPresent: TRUE
olcSpReloadHint: TRUE

# syncrepl Provider for primary db
dn: olcOverlay=syncprov,olcDatabase={1}mdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpNoPresent: TRUE

# accesslog overlay definitions for primary db
dn: olcOverlay=accesslog,olcDatabase={1}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcAccessLogConfig
olcOverlay: accesslog
olcAccessLogDB: cn=accesslog
olcAccessLogOps: writes
olcAccessLogSuccess: TRUE
# scan the accesslog DB every day, and purge entries older than 7 days
olcAccessLogPurge: 07+00:00 01+00:00
sudo -u openldap mkdir /var/lib/ldap/accesslog
sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /folder/provider_sync.ldif


KERBEROS SCHEMA IMPORT
sudo apt install -y krb5-kdc krb5-admin-server krb5-kdc-ldap

sudo gzip -d /usr/share/doc/krb5-kdc-ldap/kerberos.schema.gz
sudo cp /usr/share/doc/krb5-kdc-ldap/kerberos.schema /etc/ldap/schema/

sudo nano /folder/schema_convert.conf

Code: Alles auswählen

include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/ppolicy.schema
include /etc/ldap/schema/kerberos.schema
mkdir /tmp/ldif_output
sudo slapcat -f /folder/schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={12}kerberos,cn=schema,cn=config" > /tmp/cn=kerberos.ldif

sudo nano /tmp/cn\=kerberos.ldif ### DELETE ###

Code: Alles auswählen

structuralObjectClass: olcSchemaConfig
entryUUID: 18ccd010-746b-102d-9fbe-3760cca765dc
creatorsName: cn=config
createTimestamp: 20090111203515Z
entryCSN: 20090111203515.326445Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20090111203515Z
sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /tmp/cn\=kerberos.ldif

sudo ldapmodify -Q -Y EXTERNAL -H ldapi:///

Code: Alles auswählen

dn: olcDatabase={1}mdb,cn=config
add: olcDbIndex
olcDbIndex: krbPrincipalName eq,pres,sub
sudo ldapmodify -Q -Y EXTERNAL -H ldapi:///

Code: Alles auswählen

dn: olcDatabase={1}mdb,cn=config
replace: olcAccess
olcAccess: to attrs=userPassword,shadowLastChange,krbPrincipalKey by dn="cn=admin,dc=domain,dc=net" write by anonymous auth by self write by * none
-
add: olcAccess
olcAccess: to dn.base="" by * read
-
add: olcAccess
olcAccess: to * by dn="cn=admin,dc=domain,dc=net" write by * read
KERBEROS SETUP
sudo cp /etc/krb5.conf /etc/krb5.conf.1st
sudo nano /etc/krb5.conf

Code: Alles auswählen

[libdefaults]
        default_realm = DOMAIN.NET
...

[realms]
        domain.NET = {
                kdc = LDAP-Server-1.domain.net
                kdc = LDAP-Server-2.domain.net
                admin_server = LDAP-Server-1.domain.net
                admin_server = LDAP-Server-2.domain.net
                default_domain = domain.net
                database_module = openldap_ldapconf
        }
...

[domain_realm]
        .domain.net = DOMAIN.NET
        domain.net = DOMAIN.NET
...

[dbdefaults]
        ldap_kerberos_container_dn = cn=krbContainer,dc=domain,dc=net

[dbmodules]
        openldap_ldapconf = {
                db_library = kldap
                ldap_kdc_dn = "cn=admin,dc=domain,dc=net"

                # this object needs to have read rights on
                # the realm container, principal container and realm sub-trees
                ldap_kadmind_dn = "cn=admin,dc=domain,dc=net"

                # this object needs to have read and write rights on
                # the realm container, principal container and realm sub-trees
                ldap_service_password_file = /etc/krb5kdc/service.keyfile
                # ldap_servers = ldap://LDAP-Server-1.domain.net ldap://LDAP-Server-2.domain.net
                ldap_servers = ldaps://LDAP-Server-1.domain.net ldaps://LDAP-Server-2.domain.net
                ldap_conns_per_server = 5
        }
sudo kdb5_ldap_util -D cn=admin,dc=domain,dc=net create -subtrees \ dc=domain,dc=net -r domain.NET -s -H ldap://LDAP-Server-1.domain.net

sudo kdb5_ldap_util -D cn=admin,dc=domain,dc=net stashsrvpw -f /etc/krb5kdc/service.keyfile cn=admin,dc=domain,dc=net
sudo nano /etc/krb5kdc/kadm5.acl

Code: Alles auswählen

# This file is the access control list for krb5 administration.
# When this file is edited run /etc/init.d/krb5-admin-server restart to activate
# One common way to set up Kerberos administration is to allow any principal
# ending in /admin  is given full administrative rights.
# To enable this, uncomment the following line:
*/admin@domain.NET	*
sudo /etc/init.d/krb5-admin-server restart

LDAP SSL/TLS

sudo apt install ssl-cert
sudo chgrp openldap /etc/ssl/private/LDAP-Server-1_ecdsa_re.key.pem
sudo chmod 0640 /etc/ssl/private/LDAP-Server-1_ecdsa_re.key.pem
sudo gpasswd -a openldap ssl-cert
sudo systemctl restart slapd.service

sudo nano /folder/certinfo.ldif

Code: Alles auswählen

dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ssl/certs/ca.int_ecdsa.crt.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ssl/certs/LDAP-Server-1_ecdsa.crt.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ssl/private/LDAP-Server-1_ecdsa_re.key.pem
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f /folder/certinfo.ldif

sudo nano /etc/default/slapd

Code: Alles auswählen

# SLAPD_SERVICES="ldap:/// ldapi:/// ldaps:///"
SLAPD_SERVICES="ldaps:///"
sudo service slapd restart

sudo nano /etc/ldap/ldap.conf

Code: Alles auswählen

BASE	dc=domain,dc=net
URI	ldaps://LDAP-IP-1 ldaps://LDAP-IP-2

TLS_CACERT	/etc/ssl/certs/ca.int_ecdsa.crt.pem
TLS_REQCERT	never
sudo service slapd restart
sudo systemctl start krb5-kdc.service
sudo systemctl start krb5-admin-server.service

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: LDAP Kerberos Passwortspeicher

Beitrag von joe2017 » 20.08.2018 10:35:56

Guten Morgen zusammen,

hat hier keiner einen Tipp für mich? Es wäre wirklich toll wenn ich das Problem mit SASL noch lösen könnte. Ich komm hier irgendwie nicht weiter.
Ich habe mir jetzt noch einmal das Thema LDAP Kerberos und Passwortspeicher angeschaut. Auf folgender Seite https://wiki.ubuntuusers.de/Kerberos/LDAP/wird beschrieben, dass LDAP als KDC ungleich einfacher wäre als SASL - Kerberos als Passwordspeicher. Genau so habe ich meinen LDAP/Kerberos auch installiert. Jedoch habe ich immer noch unterschiedliche Passwörter in LDAP und Kerberos. Können diese nicht synchronisiert werden. Bzw. nur in einem Benutzer hinterlegt werden?

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: LDAP Kerberos Passwortspeicher (SASL)

Beitrag von joe2017 » 27.08.2018 16:07:50

Also ich bin echt amverzweifeln. Hat denn niemand eine Installation von einem LDAP Server mit einem MIT Kerberos Server und SASL durchgeführt? Ich bekomme die Installation des SASL (pass through authentication) nicht hin.

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: LDAP Kerberos Passwortspeicher (SASL)

Beitrag von joe2017 » 25.10.2018 16:17:56

So ich bin jetzt schon mal einen kleinen Schritt weiter.
Ich habe nach der Installation von LDAP und Kerberos (auf einem Server) folgendes Setup durchgeführt.

sudo apt install libsasl2-modules-gssapi-mit
sudo kadmin -p admin/admin
addprinc -randkey ldap/LDAP-Server-1.domain.net
ktadd -k /etc/ldap/ldap.keytab ldap/LDAP-Server-1.domain.net
exit
sudo klist -e -k /etc/ldap/ldap.keytab
sudo chown openldap. /etc/ldap/ldap.keytab

sudo nano /etc/default/slapd

Code: Alles auswählen

export KRB5_KTNAME=/etc/ldap/ldap.keytab
sudo /etc/init.d/slapd restart

sudo nano /tmp/sasl.ldif

Code: Alles auswählen

dn: cn=config
changetype: modify
add: olcSaslHost
olcSaslHost: LDAP-Server-1.domain.net
-
add: olcSaslRealm
olcSaslRealm: DOMAIN.NET
-
add: olcAuthzRegexp
olcAuthzRegexp: {0}"uid=([^/]*),cn=GSSAPI,cn=auth" "uid=$1,ou=Users,dc=domain,dc=net"
-
add: olcAuthzRegexp
olcAuthzRegexp: {1}"uid=([^/]*),cn=realm,cn=GSSAPI,cn=auth" "uid=$1,ou=Users,dc=domain,dc=net"
-
add: olcAuthzRegexp
olcAuthzRegexp: {2}"uid=host/([^/]*).realm,cn=realm,cn=gssapi,cn=auth" "cn=$1,ou=Hosts,dc=domain,dc=net"
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f /tmp/sasl.ldif


Auf meinem Client hab ich zusätzlich zu der Client Installation von LDAP und Kerberos folgendes durchgeführt.

sudo apt install libsasl2-modules-gssapi-mit
sudo kadmin -p admin/admin
addprinc -randkey host/client.domain.net
ktadd host/client.domain.net

sudo nano /etc/ldap/ldap.conf

Code: Alles auswählen

SASL_MECH GSSAPI
Das sieht eigentlich alles gut aus. Ich habe auch schon diverse Tests durchgeführt.
ldapwhoami
kdestroy
klist
kinit ldap-username
klist


Das funktioniert schon mal alles.

Womit ich noch Probleme habe, sind die unterschiedlichen Passwörter von LDAP und Kerberos. Eigentlich sollte ich das LDAP Passwort doch jetzt nicht mehr benötigen oder?
Mein user verwendet jetzt doch die SASL/GSSAPI authentication (username@DOMAIN.NET)

Benutzeravatar
joe2017
Beiträge: 1125
Registriert: 07.08.2017 14:29:51

Re: LDAP Kerberos Passwortspeicher (SASL)

Beitrag von joe2017 » 26.10.2018 16:28:56

Ich hab jetzt folgende Konfiguration gefunden. Hier wurden die LDAP Benutzer ohne Passwort angelet und die Kerberos Benutzer mit einem Passwort. Dies funktioniert soweit auch.

Folgendes Szenario habe ich in Firefox und Thunderbird getestet.
Wenn ich z.B. einen WebDAV (Apache) Server aufsetzte und diverse Bereiche nur einer bestimmten LDAP Gruppe zugänglich mache, wird immer nach einem Benutzer/Passwort gefragt. Hier sollte einfach der angemeldete Kerberos Benutzer verwendet werden. Ist das eine Einstellung im LDAP/Kerberos, in meinem WebDAV Server oder sogar nur eine Client Einstellung in Firefox/Thunderbird.

Zur Information. Meine LDAP Gruppen-Berechtigungen auf meinem NFS4 Server funktionieren einwandfrei nach der Anmeldung. Hier darf nur der User auf einen Ordner zugreifen wenn er auch in der freigegebenen LDAP Gruppe gelistet ist.

Ich vermute fast, dass dieses Problem bei Firefox/Thunderbird zu suchen ist.

Antworten