fenris14
Goto Top

Samba AD Kerberos PKINIT Failure

Hallo,

hoffentlich kann mir hier jemand helfen: Seit Monaten versuche ich eine Samba AD mit Kerberos, Zertifikaten und entsprechenden Smartcards ans Laufen zu bekommen. Aber es klappt nicht.

Schwierigkeit liegt darin das ich zusätzlich zum Root-CA auch Sub-CA verwenden will. Wenn ich nur die Root-CA verwende und eine Domain, dann klappt es. Ansonsten kommt bei der Kerberos-Auth mit Sub-CA jedes Mal: NT_STATUS_PKINIT_FAILURE und das dazugehörige normale Windows Event 4625.

Dem Client-PC sind beide CA-Zertifikate bekannt und im Zertifikatespeicher hinterlegt. Auf der Smartcard liegt das P12-Cert das auch Lokal mit OpenSSL einwandfrei verifiziert werden kann. Aber aus irgendeinem mir nicht bekannten Grund, wird, sobald eine Sub-CA/Intermediate im Spiel ist, die Authentifizierung abgelehnt. Im Login-Screen sagt er dann immer: Ihre Anmeldeinformationen konnten nicht überprüft werden.

Vom Client als auch vom DC, habe ich die Verbindung zur CRL überprüft, beide haben Zugriff. Hier die Config von Kerberos:

[libdefaults]
        default_realm = TEST.EXAMPLE.DE
        dns_lookup_realm = false
        dns_lookup_kdc = true
        pkinit_anchors = FILE:/var/lib/samba/private/tls/cacert.pem,/var/lib/samba/private/tls/interca.pem
#       pkinit_pool= FILE:/var/lib/samba/private/tls/interca.pem

[appdefaults]
        pkinit_anchors = FILE:/var/lib/samba/private/tls/cacert.pem,/var/lib/samba/private/tls/interca.pem
#       pkinit_pool = FILE:/var/lib/samba/private/tls/interca.pem

[realms]
TEST.EXAMPLE.DE = {
        default_domain = test.example.de
        pkinit_require_eku = true
}

[domain_realm]
        dc0 = TEST.EXAMPLE.DE

[kdc]
        enable-pkinit = yes
        pkinit_identity = FILE:/var/lib/samba/private/tls/dc0-cert.pem,/var/lib/samba/private/tls/secure/dc0-privkey.pem
        pkinit_anchors = FILE:/var/lib/samba/private/tls/cacert.pem,/var/lib/samba/private/tls/interca.pem
#       pkinit_pool = FILE:/var/lib/samba/private/tls/interca.pem
        pkinit_revoke = FILE:/var/lib/samba/private/tls/interca.crl,/var/lib/samba/private/tls/rootca.crl
#       pkinit_require_crl_checking = false
        pkinit_principal_in_certificate = yes
        pkinit_win2k = no
        pkinit_win2k_require_binding = yes

Hier die Config vom Samba-DC:

# Global parameters
[global]
        dns forwarder = 10.0.0.2
        netbios name = DC0
        realm = TEST.EXAMPLE.DE
        server role = active directory domain controller
        dns forwarder = 10.0.0.1
        workgroup = TEST
        idmap_ldb:use rfc2307 = yes
        log level = 9
#       log level = 1 auth_audit:3 auth_json_audit:3
        tls enabled = yes
        tls certfile = /var/lib/samba/private/tls/dc0-cert.pem
        tls keyfile = /var/lib/samba/private/tls/secure/dc0-privkey.pem
        tls cafile = /var/lib/samba/private/tls/cacert.pem
        tls cafile = /var/lib/samba/private/tls/interca.pem
        tls crlfile = /var/lib/samba/private/tls/rootca.crl
        tls crlfile = /var/lib/samba/private/tls/interca.crl
        tls dhparams file = /var/lib/samba/private/tls/dc0-dhparams.pem

[sysvol]
        path = /var/lib/samba/sysvol
        read only = No

[netlogon]
        path = /var/lib/samba/sysvol/test.example.de/scripts
        read only = No

Wie man sehen kann, habe ich schon einiges durchprobiert und leider findet man durch reines Googlen nichts. Scheinbar wurde das noch nie probiert oder diejenigen machen irgendwas anders.

Jemand eine Idee?

Gruß

Content-ID: 7846388228

Url: https://administrator.de/contentid/7846388228

Ausgedruckt am: 21.11.2024 um 21:11 Uhr

LordGurke
LordGurke 14.07.2023 um 10:17:47 Uhr
Goto Top
Dass in deiner smb.conf mehrfach "tls cafile" für die verschiedenen CAs auftaucht sieht nicht richtig aus.
Samba erwartet hier vermutlich nur genau eine Datei, die in umgekehrter hierarchischer Reihenfolge die CA-Zertifikate gesammelt enthält.
Gleiches gilt für das Certfile, wo du eventuell neben dem Serverzertifikat auch die Intermediates hineinwerfen musst.
Fenris14
Fenris14 14.07.2023 um 10:22:25 Uhr
Goto Top
Komischerweise wird das gar nicht von Samba muniert. Startet einfach trotzdem ohne Fehler. Die Frage ist: Welche Reihenfolge und reicht es die einfach per cat zusammenzulegen?
Fenris14
Fenris14 14.07.2023 um 10:46:25 Uhr
Goto Top
Ich habe jetzt mal beide CAs in eine Datei zusammengeworfen. InterCA als erstes, direkt folgende RootCA. Dementsprechend dann die Configs angepasst. Nach Anmeldeversuch, hat sich in den Logs nicht weiter geändert.

Was mir auch schon vorher aufgefallen ist, dem ich aber erstmal keine Bedeutung zugeteilt habe:

[2023/07/14 10:41:58.968037,  3] ../../source4/auth/kerberos/krb5_init_context.c:90(smb_krb5_debug_wrapper)
  Kerberos: PKINIT request but PKINIT not enabled

Gibt es da irgendwo noch einen anderen Schalter?

Weil in der krb5.conf habe ich bereits explizit gesagt das ich es anschalten will.
Fenris14
Fenris14 17.07.2023 um 15:32:01 Uhr
Goto Top
Ich habe das Problem finden können:

Die alten Dokus waren falsch und leider haben die Updates dieser aufsich warten lassen. In der krb5.conf wird die Angabe der beiden CRL, der DH-Parameter und der Root CA nicht gebraucht!

Auch wird in der smb.conf nur die Zertifikate der Intermediate-CA angegeben und nicht noch zusätzlich die der Root-CA. Allerdings muss man die Zertifikate der Root-CA dem Windows-Client bekannt machen, das passiert über die Gruppenrichtlinien.