Nach UCS 4.2-2 (-3) Upgrade: System Fehlerdiagnose "Fehler traten auf bei der Ausführung von `kinit` oder `nsupdate`."

kerberos
samba4
samba-dnsupdate

#1

Hallo,

nachdem es unter starker Mithilfe des Kopano Support nun endlich gelungen ist, unser UCS-System auf 4.2-2 zu hieven, habe ich leider einige kritische Fehler, welche in der “System-Fehlerdiagnose” nun angezeigt werden. Es gibt einige in “samba-tool-dbcheck”, welche aber hauptsächlich auf sehr alte Überbleibsel des MS SBS 2011 zurückgehen.
Wesentlich mehr besorgt mich dies:

Kritisch: Überprüfe Kerberos authentifizierte DNS Updates

Fehler traten auf bei der Ausführung von `kinit` oder `nsupdate`. `nsupdate` Prüfung für die Domänne domain.local ist fehlgeschlagen. `kinit` für den Principal dns-ucs mit der Password Tabelle /var/lib/samba/private/dns.keytab ist fehlgeschlagen.

Hierzu finde ich im Forum nur Hilfestellung bei DC-Backup, nicht aber für den DC-Master. Welche Schritte kann ich unternehmen, um das Problem zu diagnostizieren und ggf. zu beheben?

VG,
TP


"external repository for the Kopano Apps ... The update is blocked"
#2

Hallo,

das hatte ich nach dem Update auch. Siehe https://help.univention.com/t/resolved-univention-ldap-auth-is-critical-on-ucs-master/7192.Ich musste einmal das Passwort des Master-DC ändern und dann manuellem Trigger in alle Applikationen verteilen. Danach war die Fehlermeldung weg.

Vg
Ulf


#3

Hallo,

das habe ich nun durchgeführt, leider ohne Erfolg. Die Fehlermeldung bleibt bestehen…

VG,
TP


#4

Hast Du schon mal die Logs nach evtl. Fehlermeldungen durchsucht?


#5

Hallo,

sorry - ich habe mal wieder wenig Zeit zum Debuggen, muss immer noch die eineinhalb Tage UCS 4.2-2 Upgrade aufholen…

Die Logs geben nur genau die Fehlermeldung wieder - warum der Trust nicht funktioniert erschließt sich mir nicht. Vor allem, da auch das manuelle Setzen des Keys nichts bewirkt, obwohl ich den Key abgeglichen habe und dieser hunderprozentig übereinstimmt…

VG,
TP


#6

Moin,

das Problem sollten Sie fixen können, indem Sie die Credentials auf dem DC Master neu in eine Keytab exportieren und diese auf dem betroffenen System dann ersetzen. Ich schreibe das Folgende allgemein für die SItuation, dass der betroffene Host nicht der DC Master sondern ein anderer Server ist. Bei Ihnen ist nur der DC Master betroffen; daher sind bei Ihnen natürlich alle Befehle auf dem DC Master auszuführen.

  1. Auf dem betroffenen System ein Backup der Datei /var/lib/samba/private/dns.keytab anlegen
  2. Auf dem DC Master die nötigen Principals exportieren
  3. Auf dem betroffenen Host die Keytab ersetzen
  4. Erneut testen lassen

Auf der Shell sieht das so aus (mein Beispielhost heißt backup2, ersetzen Sie das jeweils an den drei Stellen durch den betroffenen Servernamen — bei Ihnen also ucs):

# Auf betroffenem Host:
cp /var/lib/samba/private/dns.keytab /var/lib/samba/private/dns.keytab.$(date '+%Y%m%d%H%M%S')
# Auf DC Master:
samba-tool domain exportkeytab dns.keytab.new --principal DNS/backup2.$(ucr get domainname)
samba-tool domain exportkeytab dns.keytab.new --principal dns-backup2@$(ucr get kerberos/realm)
scp dns.keytab.new root@backup2:/var/lib/samba/private/

Anschließend testen Sie das auf dem betroffenen Host manuell mit folgendem Befehl, der im Erfolgsfall keinen Fehler liefert (auch wieder backup2 durch ucs ersetzen):

kinit -t /var/lib/samba/private/dns.keytab dns-backup2

Nun sollte auch der Testfall in der Systemdiagnose wieder OK sein.

Gruß
mosu


#7

Hallo,
danke für die Anleitung!

Ich hatte dies laut einen HowTo von Univention schon ähnlich (scp durch cp ersetzt, da in meinem Fall überflüssig) durchgeführt, allerdings leider bereits damals wie auch jetzt ohne Erfolg:

root@ucs:~# cp /var/lib/samba/private/dns.keytab /var/lib/samba/private/dns.keytab.$(date '+%Y%m%d%H%M%S')
root@ucs:~#
root@ucs:~# samba-tool domain exportkeytab dns.keytab.new --principal DNS/ucs.$(ucr get domainname)
Export one principal to dns.keytab.new
root@ucs:~#
root@ucs:~# samba-tool domain exportkeytab dns.keytab.new --principal dns-ucs@$(ucr get kerberos/realm)
Export one principal to dns.keytab.new
root@ucs:~#
root@ucs:~# scp dns.keytab.new root@ucs:/var/lib/samba/private/
Password:
dns.keytab.new                                                                                         100%  408     0.4KB/s   00:00
root@ucs:~#
root@ucs:~# kinit -t /var/lib/samba/private/dns.keytab dns-ucs
kinit: krb5_get_init_creds: No PKINIT PA found
root@ucs:~#

Die Überprüfung schlägt natürlich nach wie vor fehl, “No PKINIT PA found” ist vermutlich nicht so günstig…!

VG,
TP


#8

Ups, das ist natürlich Quark, weil die Zieldatei dann dns.keytab.new heißt, obwohl die dns.keytab heißen muss. Also scp dns.keytab.new /var/lib/samba/private/dns.keytab


#9

Ja klar, hätte mir auch auffallen müssen. Bewirkt aber nach wie vor nix:

root@ucs:~# cp /var/lib/samba/private/dns.keytab /var/lib/samba/private/dns.keytab.$(date '+%Y%m%d%H%M%S')
root@ucs:~#
root@ucs:~# samba-tool domain exportkeytab dns.keytab.new --principal DNS/ucs.$(ucr get domainname)
Export one principal to dns.keytab.new
root@ucs:~#
root@ucs:~# samba-tool domain exportkeytab dns.keytab.new --principal dns-ucs@$(ucr get kerberos/realm)
Export one principal to dns.keytab.new
root@ucs:~#
root@ucs:~# scp dns.keytab.new root@ucs:/var/lib/samba/private/dns.keytab
Password:
dns.keytab.new                                               100%  408     0.4KB/s   00:00
root@ucs:~#
root@ucs:~# kinit -t /var/lib/samba/private/dns.keytab dns-ucs
kinit: krb5_get_init_creds: No PKINIT PA found
root@ucs:~#
root@ucs:~# cd /var/lib/samba/private/
root@ucs:/var/lib/samba/private# ls -als
...
   4 -rw-------  1 root root     408 Dez 12 15:18 dns.keytab
   4 -rw-------  1 root root     732 Dez 12 15:18 dns.keytab.20171212151819
   4 -rw-------  1 root root     408 Dez 12 14:22 dns.keytab.new
   4 -rw-------  1 root root    1745 Nov 28 11:00 dns_update_cache
   4 -rw-------  1 root root    3183 Jän 16  2017 dns_update_list
1256 -rw-------  1 root root 1286144 Aug 20  2014 hklm.ldb
1572 -rw-------  1 root root 1609728 Nov  7 08:17 idmap.ldb
   4 -rw-r--r--  1 root root     578 Nov 28 11:44 krb5.conf
   4 -rw-------  1 root root      93 Aug 20  2014 krb5.conf.debian
   0 srwxrwxrwx  1 root root       0 Dez  6 16:22 ldapi
   4 drwxr-x---  2 root root    4096 Dez  6 16:22 ldap_priv
   4 drwx------  2 root root    4096 Dez 12 15:19 msg.sock
   4 -r--r--r--  1 root root     222 Aug 20  2014 named.conf.update
   4 -rw-------  1 root root     696 Dez  6 16:22 netlogon_creds_cli.tdb
1256 -rw-------  1 root root 1286144 Aug 20  2014 privilege.ldb
   4 -rw-------  1 root root     696 Aug 20  2014 randseed.tdb
4152 -rw-------  1 root root 4251648 Feb 19  2015 sam.ldb
   4 drwx------  2 root root    4096 Dez 12 03:00 sam.ldb.d
  12 -rw-------  1 root root   12288 Dez 12 15:17 schannel_store.tdb
   4 -rw-------  1 root root    1062 Aug 20  2014 secrets.keytab
1256 -rw-------  1 root root 1286144 Nov 28 20:59 secrets.ldb
 416 -rw-------  1 root root  425984 Nov 28 20:59 secrets.tdb
1256 -rw-------  1 root root 1286144 Aug 20  2014 share.ldb
   4 drwxr-xr-x  3 root root    4096 Aug 20  2014 smbd.tmp
   4 -rw-------  1 root root     955 Aug 20  2014 spn_update_list
   4 drwx------  2 root root    4096 Aug 20  2014 tls
1256 -rw-------  1 root root 1286144 Aug 20  2014 wins_config.ldb
root@ucs:/var/lib/samba/private#

#10

OK, die Fehlermeldung ist auch eine, die mir nichts sagt. Sie können an der Stelle versuchen, den zugehörigen User zu entfernen, ihn neu anzulegen und anschließend die Kerberos-Keytab neu zu exportieren. Konkret:

udm users/user delete --dn=uid=dns-$(hostname),cn=users,$(ucr get ldap/base)
# warten bis S4-Connector synchronisiert hat
/usr/share/univention-samba4/scripts/create_spn_account.sh --samaccountname "dns-$(hostname)" --serviceprincipalname "DNS/$(hostname).$(ucr get domainname)" --privatekeytab dns.keytab
# warten bis S4-Connector synchronisiert hat
/usr/share/univention-s4-connector/resync_object_from_s4.py "cn=dns-$(hostname),cn=users,$(ucr get samba4/ldap/base)"
# warten bis S4-Connector synchronisiert hat
keytab=/var/lib/samba/private/dns.keytab
mv $keytab $keytab.$(date '+%Y%m%d%H%M%S')
samba-tool domain exportkeytab $keytab --principal DNS/$(hostname).$(ucr get domainname)
samba-tool domain exportkeytab $keytab "--principal=dns-$(hostname)@$(ucr get kerberos/realm)"

Anschließend erneut testen mit kinit -t $keytab dns-$(hostname).

Bitte bei den Punkten »warten bis…« unbedingt geduldig sein und die nachfolgenen Schritte nicht zu bald anschließen.

Kommt beim kinit dann als Fehlermeldung “password incorrect”, so wurden Schritte zu schnell durchgeführt. In dem Fall einfach noch mal die Principals exportieren, also die Schritte ab mv $keytab ….

Gruß
mosu


#11

Hallelujah!
Das war es!
Vielen, vielen Dank Herr Bunkus!


#12

Ja cool! Freut mich selber sehr, dass die Prozedur das Problem beheben konnte. Gern geschehen.