Interner Server-Fehler

Hi, ich bekomme gerade folgenden Fehler angezeigt:

{‘msgtype’: 97, ‘msgid’: 2, ‘result’: 49, ‘desc’: ‘Invalid credentials’, ‘ctrls’: }

Fehlernachricht des Servers:

Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/univention/management/console/ldap.py”, line 186, in getter
raise KeyError()
KeyError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/tornado/web.py”, line 1713, in _execute
result = await result
^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/univention/management/console/resources.py”, line 480, in post
result = await session.authenticate(self.request.body_arguments)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/univention/management/console/session.py”, line 150, in authenticate
self.set_credentials(**result.credentials)
File “/usr/lib/python3/dist-packages/univention/management/console/session.py”, line 174, in set_credentials
self._search_user_dn()
File “/usr/lib/python3/dist-packages/univention/management/console/session.py”, line 185, in _search_user_dn
lo = get_machine_connection(write=False)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/univention/management/console/ldap.py”, line 142, in get_machine_connection
return connection()
^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/univention/management/console/ldap.py”, line 198, in _decorated
kwargs[loarg], kwargs[poarg] = lo, po = getter()
^^^^^^^^
File “/usr/lib/python3/dist-packages/univention/management/console/ldap.py”, line 188, in getter
conn = connection()
^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/univention/management/console/ldap.py”, line 99, in connection
return _getMachineConnection(**kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/univention/admin/uldap.py”, line 180, in getMachineConnection
lo = univention.uldap.getMachineConnection(start_tls, ldap_master=ldap_master)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/univention/uldap.py”, line 177, in getMachineConnection
return access(host=server, port=port, base=ucr[‘ldap/base’], binddn=ucr[‘ldap/hostdn’], bindpw=bindpw, start_tls=start_tls, reconnect=reconnect)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/univention/uldap.py”, line 266, in init
self.__open(ca_certfile)
File “/usr/lib/python3/dist-packages/univention/uldap.py”, line 361, in __open
self.bind(self.binddn, self.bindpw)
File “/usr/lib/python3/dist-packages/univention/uldap.py”, line 193, in _decorated
return func(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/univention/uldap.py”, line 279, in bind
self.lo.simple_bind_s(self.binddn, self.bindpw)
File “/usr/lib/python3/dist-packages/ldap/ldapobject.py”, line 986, in simple_bind_s
res = self._apply_method_s(SimpleLDAPObject.simple_bind_s,*args,**kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/ldap/ldapobject.py”, line 968, in _apply_method_s
return func(self,*args,**kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/ldap/ldapobject.py”, line 249, in simple_bind_s
resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/ldap/ldapobject.py”, line 543, in result3
resp_type, resp_data, resp_msgid, decoded_resp_ctrls, retoid, retval = self.result4(
^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/ldap/ldapobject.py”, line 553, in result4
ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/ldap/ldapobject.py”, line 128, in _ldap_call
result = func(*args,**kwargs)
^^^^^^^^^^^^^^^^^^^^
ldap.INVALID_CREDENTIALS: {‘msgtype’: 97, ‘msgid’: 2, ‘result’: 49, ‘desc’: ‘Invalid credentials’, ‘ctrls’: }

Der Server lief (in einer VM auf Proxmox) absolut stabil. Aktuelles Update auf errata-level 34 habe ich über die Konsole einspielen können, Reboot, gleiche Meldung wie oben.
Betrifft meine Prinary- und meinen Backup-DC auf UCS-5.2

Was kann das sein?

Ok, scheint sich um ein lokales Problem zu handeln. Habe gerade ein Backup eingespielt und aktualisiert, und beide Server laufen wieder ohne Probleme.

Hallo zusammen,
das Zurückspielen eines Bankup auf meinem Proxmox Server hat zwar das Problem mit dem oben dargestellten Fehler behoben, aber ein anderes erzeugt.
Nach dem Zurückspielen des Backup musste ich feststellen, dass die Vertrauensstellungen zwischen den Clients und den UCS-Servern als DCs nicht mehr gültig waren. Der DC und die Clients erneuern im Hintergrund alle ca. 30 Tage die Passwörter zur Aufrechterhaltung der Vertrauensstellungen.

Abhilfe konnte ich nur dadurch schaffen, dass ich ein etwas aktuelleres Backup eingespielt habe, was aber wieder den oben dargestellten Fehler verursacht.

Ich kann jetzt natürlich beigehen und die Clients alle aus der Domäne löschen und anschließend wieder einbinden, aber das möchte ich gerne vermeiden. Es muss doch einen intelligenteren Weg geben, den oben beschriebenen Fehler abzustellen, und gleichzeitig die Vertrauensstellungen zu den Clients aufrecht zu erhalten. Im LDAP sind die Computer noch alle vorhanden.

Vorschläge?

Weitere Frage: Was nützen mir ältere Backups von einem UCS-DC, wenn zwischenzeitlich die Passwörter automatisch geändert werden, und damit das Zurückspielen eines Backups des DC diesen für die Clients nicht mehr als vertrauenswürdig dastehen lässt?

Hi Frank,
this is not a bug, but a feature :wink: of MS SMB and samba domain. This is to make sure devices are who they say they are, and the trust is maintained. Simply put, you wouldn’t want a client to connect to the domain after it sat on a shelf for a long period of time. This could be a malicious machine connecting.

Your initial error _search_user_dnlo = get_machine_connection suggest there’s already something wrong with the ldap authentication. Restoring 30 days old backup will only delay the issue reappearing.

Depending on how many machines you have in your system, this might be an option:
PS# Test-ComputerSecureChannel -Repair -Credential <domain>\administrator

Couldn’t find if there’s an option for samba-tool to do this on UCS directly.

You could try reseting machine password from the RSATs.


Sorry, German google translate:
Hallo Frank,
das ist kein Fehler, sondern eine Funktion von MS SMB und Samba-Domänen. Damit wird sichergestellt, dass die Geräte die sind, für die sie sich ausgeben, und das Vertrauen bleibt erhalten. Einfach ausgedrückt möchten Sie nicht, dass ein Client eine Verbindung zur Domäne herstellt, nachdem diese lange Zeit unbenutzt war. Dies könnte eine Verbindung von einem böswilligen Computer sein.

Ihr anfänglicher Fehler _search_user_dnlo = get_machine_connection deutet darauf hin, dass bereits etwas mit der LDAP-Authentifizierung nicht stimmt. Das Wiederherstellen eines 30 Tage alten Backups verzögert nur das erneute Auftreten des Problems.

Je nachdem, wie viele Computer Sie in Ihrem System haben, könnte dies eine Option sein:
PS# Test-ComputerSecureChannel -Repair -Credential <domain>\administrator

ThanX. Just a few machines in my homelab. Entering the domain credentials again has solved the issue.
Nevertheless, I can now dump all backups on my proxmox server older than 30 days and pray for the rest …

Frank,

Keeping more than 30 days of backup always makes sense. Even if you consider single file recovery for configuration or shares. Don’t fall out with it straight away, it might get handy.

Restoring DC should really be a last resort and you should plan it very carefully, especially if other services depend on it (even more so if you have secondary DC).

If you haven’t done so already, look at Proxmox Backup Server. This does add some complexity to the network, but it has deduplication and some other handy features.