| Dneska jsem na konferenci ms-fest prezentoval svoji léty vyzkoušenou, ověřenou a vyladěnou metodu, jak opravit Active Directory (AD) replikaci (replication) potom, co řadič(e) domény přešly tombstone lifetime a vznikly lingering objecty. O této situaci jste zřejmě už slyšeli. Jenže problém je prakticky vždycky kombinován s problémem rozhozených hesel počítačových účtů řadičů domén.
Každý řadič domény (DC - domain controller) si totiž mění heslo svého účtu (machine password) každých 30 dnů, stejně jako libovolný jiný členský stroj domény. Naproti tomu tombstone lifetime je obvykle 180 dnů. Pokud si řadič sám sobě změní heslo dvakrát a během té doby se to nedokáže zreplikovat, tak přestane fungovat Kerberos. Tzn. už po 30 dnech možná, po 60 dnech zaručeně. Takže tombstone lifetime a lingering objects je obvykle až druhý následek rozházeného času.
Důvody pro rozházený čas DC:
- nějaká DC se prostě už dlouho neviděla - tento důvod není už dneska tak obvyklý, jako ten druhý
- máte jedno, nebo více DC, na nějakém cloudu a oné virtualizaci se rozhodí čas a posune to čas na všech virtuálkách - to je dneska, jak pozoruji, velmi běžné (chyba obsluhy, chyba hardware, baterka, ...)
To co nastane mezi domain controllery je totální rozklad. Přestávají replikovat a ověřovat jak sebe, tak uživatele a počítače. V případě ověřování klientů to je chaticky podle toho, které DC si kdo vybere. Jsou to chyby jako třeba:
The directory service cannot replicate with this server because the time since the last replication with this server has exceeded the tombstone lifetime
Event Id: 2042
Message: It has been too long since this machine last replicated with the named source machine. The time between replications with this source has exceeded the tombstone lifetime.
Kerberos error: The target principal name is incorrect
error: 2148074274 = 0x80090322 = SEC_E_WRONG_PRINCIPAL
The Kerberos client received a KRB_AP_ERR_MODIFIED error from the server.
The target name used was LDAP/._msdcs. This indicates that the target server
failed to decrypt the ticket provided by the client.
Na opravu těchto dvou problémů existují standardní postupy. Problém je v jejich praktickém využití. Pokud nevíte přesně jak, bude vám oprava trvat minimálně několik hodin, ne-li dnů, a navíc to ještě neuděláte správně.
Po zkušenostech jsem si vypracoval ideální postup, který je nejrychlejší možný, spolehlivý a obecně funkční. Dneska jsem takto opravil pět DC během cca 40 minut, a to jsme u toho ještě vysvětloval.
Celý postup je na screenshotech a s popisky v následující prezentaci:
Fastest ever steps to repair tombstone lifetime, lingering objects and Kerberos machine passwords
Základní vysokoúrovňové kroky
Detailní návod je v prezentaci. Pro shrnutí jen nejdůležitější body. Prostě nepřemýšlejte a udělejte všechno na všech řadičích:
- nejprve opravte čas
- vytvořte si nějaký samostatný DNS server - něco nainstalujte, nebo použijte existující, ale potřebujete DNS server, který není na žádném AD DC, aby na tom nefunkčním AD nebyl závislý. Do tohoto DNS serveru nasměrujte všechna DC. Budete mít jen jeden DNS server a nebudete záviset na replikaci, která nefunguje
- vypněte všechny Kerberos Key Distribution Center (KDC) služby, a nechejte si jen jednu - každé KDC používá svůj místní AD. Je to stejné jako s tím DNS serverem. Pokud nefunguje AD a nereplikuje, každé KDC potom vydává jinak špatné Kerberos tikety a celé se to chaotizuje. Stejně jako jedinný DNS server budeme mít tedy jen jediný KDC.
- vyresetujete hesla počítačových účtů pomocí netdom resetpwd - tohle rozjede ověřování
- vyčistíte lingering objecty - musíte to ale udělat správně a úplně. V prezentaci je na to skript. Musíte čistit každé DC oproti každému a navíc po jednom všechny AD partition (naming context).
- no a nakonec pustíte replikaci
- a nezapomenete to zase uvést do původního stavu - vrátit DNS servery a vypnout registrovou hodnotu
Tak ať slouží! |