[gelöst] debian OpenLDAP und Kerberos (ldap als backend database)

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
Benutzeravatar
joe2017
Beiträge: 1298
Registriert: 07.08.2017 14:29:51

[gelöst] debian OpenLDAP und Kerberos (ldap als backend database)

Beitrag von joe2017 » 14.02.2025 10:06:19

Guten Morgen,

ich habe einen OpenLDAP Server und MIT-Kerberos auf einem debian 11 Server installiert.
Ich möchte Kerberos jetzt mitteilen, dass er die LDAP Database als Spicher verwendet.

Hierzu habe ich die Datei /etc/krb5kdc/kdc.conf bearbeitet:

Code: Alles auswählen

EXAMPLE.COM = {
	database_module = ldap
	Database_name = ldap://localhost ODER ldap://servername.example.com
	admin_dn = cn=admin,dc=example,dc=com
	password = "ldap-password"
	suffix = dc=example,dc=com
	tls = false
	.....
wenn ich den service neustarten möchte erhalte ich folgende Fehlermeldung:
sudo systemctl restart krb5-kdc

Code: Alles auswählen

cannot open DB2 database 'ldap://localhost'
BZW.
cannot open DB2 database 'ldap://servername.example.com'
Was mache ich falsch? wi kann ich kerberos mitteilen, dass er die ldap database nutzen soll?
Zuletzt geändert von joe2017 am 19.02.2025 13:03:29, insgesamt 2-mal geändert.

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

Re: debian OpenLDAP und Kerberos (ldap als backend database)

Beitrag von joe2017 » 14.02.2025 16:33:32

Ich habe jetzt erstmal die config gelassen wie sie ist. Ldap User in der ldap DB und Kerberos in der krb DB.

Mit kinit ldapUser erhalte ich mein zuvor angelegtes principal als Ticket. Der ldap User und das Kerberos principal haben das gleiche Passwort.

Wenn ich mich am Client mit dem ldap User anmelde, erhalte ich jedoch kein Kerberos Ticket. Ich muss immer den kinit Befehl ausführen und mein Passwort angeben. Anschließend sehe ich mit klist mein Ticket.

Ich habe bereits versucht die /etc/pam.d/common-auth Datei anzupassen. Jedoch funktioniert alles nicht.

Hat jemand eine Idee wie ich bei der Anmeldung am Client mit meinem ldapUser automatisch das Kerberos Ticket erhalte? Muss ich hierzu den Server oder Client konfigurieren? Komm irgendwie nicht weiter?

Würde mich über eine Hilfe freuen.

Danke und ein schönes Wochenende

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

Re: debian OpenLDAP und Kerberos (ldap als backend database)

Beitrag von joe2017 » 17.02.2025 10:36:34

Ich versuche aktuell wieder LDAP als Backend für Kerberos zu konfigurieren.

Anbei meine Konfig

sudo nano /etc/krb5kdc/kdc.conf

Code: Alles auswählen

[kdcdefaults]
    kdc_ports = 750,88

[realms]
    EXAMPLE.COM = {
        database_name = /var/lib/krb5kdc/principal
        database_module = openldap_ldapconf
        admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
        acl_file = /etc/krb5kdc/kadm5.acl
        key_stash_file = /etc/krb5kdc/stash
        kdc_ports = 750,88
        max_life = 10h 0m 0s
        max_renewable_life = 7d 0h 0m 0s
        master_key_type = des3-hmac-sha1
        #supported_enctypes = aes256-cts:normal aes128-cts:normal
        default_principal_flags = +preauth
    }

[dbmodules]
        openldap_ldapconf = {
                db_library = kldap
                ldap_conns_per_server = 5
                ldap_kerberos_container_dn = cn=krbContainer,ou=kerberos,dc=example,dc=com
                ldap_service_password_file = /etc/krb5kdc/service.keyfile
                ldap_servers = ldap://server.example.com
                ldap_kdc_dn = "cn=admin,dc=example,dc=com"
                ldap_kadmind_dn = "cn=admin,dc=example,dc=com"
        }

sudo nano /etc/krb5.conf

Code: Alles auswählen

[libdefaults]
        default_realm = EXAMPLE.COM
        dns_lookup_realm = false
        dns_lookup_kdc = true

[realms]
        EXAMPLE.COM = {
                kdc = server.example.com
                admin_server = server.example.com
                default_domain = example.com
        }

[domain_realm]
        .example.com = EXAMPLE.COM
        example.com = EXAMPLE.COM
In der Datei /etc/krb5kdc/service.keyfile sind die beiden EInträge vorhanden

Code: Alles auswählen

cn=admin,dc=example,dc=com@EXAMPLE.COM
ldap/server.example.com@EXAMPLE.COM
Ich erhalte beim starten des Service immer folgende Meldung im Log:

Code: Alles auswählen

kadmind: Error reading password from stash: Bind-DN-Eintrag »cn=admin,dc=example,dc=com« fehlt in der LDAP-Passwortdatei »/etc/krb5kdc/service.keyfile« bei wird initialisiert, wird abgebrochen
Error reading password from stash: Bind-DN-Eintrag »cn=admin,dc=example,dc=com« fehlt in der LDAP-Passwortdatei »/etc/krb5kdc/service.keyfile« bei wird initialisiert, wird abgebrochen
Ich hoffe mir kann jemand weiterhelfen. Ich komme irgendwie nicht weiter.

Benutzeravatar
n122vu
Beiträge: 1
Registriert: 17.02.2025 21:56:46

Re: debian OpenLDAP und Kerberos (ldap als backend database)

Beitrag von n122vu » 17.02.2025 23:16:57

Ich habe damals für meinen LDAP Server und Kerberos System folgende Anleitung genutzt:

https://ubuntu.com/server/docs/how-to-s ... ap-backend


Er scheint in der Datei "service.keyfile" irgendwas nicht lesen zu können, stimmen die DNS Records? Stimmt das BindDN, etc.?
Ein System ist nur so stabil wie die Grundlage, auf der es läuft.

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

Re: debian OpenLDAP und Kerberos (ldap als backend database)

Beitrag von joe2017 » 18.02.2025 09:33:26

Die BindDN stimmen. Die DNS Auflösung stimmt auch. Zumindest wird mein PING (servernam.domain.com) aufgelöst.
OpenLDAP und Kerberos ist auf einem Server installiert. Ich habe das Ganze jetzt schon unter Debian 11 installiert, da ich in Debian 12 nicht mal mehr das Kerberos Schema importiert bekomme.
Hier wurde anscheinend einiges geändert.

Ich habe jetzt zwar mein LDAP Server in welchem ich Benutzer anlegen kann und einen Kerberos Server in welchem ich Tickets erstellen kann.
Jedoch müssen die Kerberos Inhalte in der LDAP DB gespeichert werden, damit die Tickets für LDAP User automatisch ausgestellt werden.

Und hierbei erhalte ich immer die Fehlermeldung beim starten des Service (krb5-kdc):

Code: Alles auswählen

Error reading password from stash: Bind-DN-Eintrag »cn=admin,dc=example,dc=com« fehlt in der LDAP-Passwortdatei »/etc/krb5kdc/service.keyfile« bei wird initialisiert, wird abgebrochen
Error reading password from stash: Bind-DN-Eintrag »cn=admin,dc=example,dc=com« fehlt in der LDAP-Passwortdatei »/etc/krb5kdc/service.keyfile« bei wird initialisiert, wird abgebrochen
Ich weiß aktuell nicht wo ich noch ansetzen soll?

Vielleicht haben wir hier jemand der sich dem Thema annhmen könnte.

VIelen Dank!

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

Re: debian OpenLDAP und Kerberos (ldap als backend database)

Beitrag von joe2017 » 18.02.2025 12:13:09

Ich bin jetzt einen Schritt weiter. Ich habe jedoch irgendwie eine Misch-Konfiguration.

Wenn ich einen user in ldap anlege wird automatisch ein kerberos ticket angelegt.

Code: Alles auswählen

dn: uid=user1,ou=users,dc=example,dc=com
objectClass: top
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: krbPrincipalAux
uid: ubauer
uidNumber: 1004
gidNumber: 500
homeDirectory: /home/users/user1
cn: Hans Maier
sn: Maier
krbPrincipalName: user1@EXAMPLE.COM
userPassword: b
Wenn ich mit sudo kadmin.local (list_principals) die TIckets anzeigen lasse, sehe ich das Ticket von user1

Wenn ich im LDAP nachschaue ist das Ticket nicht angelegt.

Wenn ich das Ticket manuell lösche und wieder anlege, wird es in LDAP angelegt.

Code: Alles auswählen

sudo kadmin.local -q "delprinc user1@EXAMPLE.COM"
sudo kadmin.local -q "addprinc -pw b user1@EXAMPLE.COM"
Hat jemand eine Idee woran das liegen könnte?

Anbei noch meine /etc/krb5kdc/kdc.conf

Code: Alles auswählen

[kdcdefaults]
    kdc_ports = 750,88

[realms]
    EXAMPLE.COM = {
        database_module = openldap_ldapconf
	# database_name = /var/lib/krb5kdc/principal
        admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
        acl_file = /etc/krb5kdc/kadm5.acl
        key_stash_file = /etc/krb5kdc/stash
        kdc_ports = 750,88
        max_life = 10h 0m 0s
        max_renewable_life = 7d 0h 0m 0s
        master_key_type = des3-hmac-sha1
        # supported_enctypes = aes256-cts:normal aes128-cts:normal
        default_principal_flags = +preauth
    }


[dbmodules]
        openldap_ldapconf = {
                db_library = kldap
                ldap_kerberos_container_dn = "cn=krbContainer,ou=kerberos,dc=example,dc=com"
                ldap_servers = ldap://server.example.com
                ldap_krb5_base_dn = "dc=example,dc=com"
                ldap_krb5_bind_dn = "cn=admin,dc=example,dc=com"
                ldap_search_base = "dc=example,dc=com"

                ldap_kdc_dn = "cn=admin,dc=example,dc=com"
                ldap_kadmind_dn = "cn=admin,dc=example,dc=com"
                ldap_service_password_file = /etc/krb5kdc/service.keyfile
        }

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

Re: debian OpenLDAP und Kerberos (ldap als backend database)

Beitrag von joe2017 » 18.02.2025 14:18:59

Es sieht so aus, als ob die lokale kerberos db nicht in die LDAP db synchronisiert wird. Hierzu habe ich jetzt aber nichts gefunden?

Ich habe jatzt auch mal ein Stunde gewartet. Ich dachte vielleicht gibt es hier eine Verzögerung. Jedoch sind die principals nicht in der LDAP vorhanden.

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

Re: debian OpenLDAP und Kerberos (ldap als backend database)

Beitrag von joe2017 » 19.02.2025 06:59:59

Hat niemand eine Idee wo ich das prüfen kann?

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

Re: debian OpenLDAP und Kerberos (ldap als backend database)

Beitrag von joe2017 » 19.02.2025 13:03:13

Ich habe den Fehler gefunden! Das Problem war nicht die Konfiguration.
LDAP war erfolgreich installiert und konfiguriert.
Kerberos war erfolgreich installiert und konfiguriert.
LDAP war als Backend für Kerberos konfiguriert.

Das Problem war beim hinzufügen eines USERS:

Code: Alles auswählen

dn: uid=user1,ou=users,dc=example,dc=com
objectClass: top
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: krbPrincipalAux
uid: ubauer
uidNumber: 1004
gidNumber: 500
homeDirectory: /home/users/user1
cn: Hans Maier
sn: Maier
krbPrincipalName: user1@EXAMPLE.COM
userPassword: b
Ich hab jetzt folgendes herausgenommen:

Code: Alles auswählen

krbPrincipalName: user1@EXAMPLE.COM
Meine User lege ich sowieso mittels Script an. Somit lass ich mir automatisch mein principal anlegen.

Antworten