Il nome principale del servizio di integrazione LDAP di Active Directory 2012 non è più visualizzato?


8

Creazione del servizio Python per eseguire query sugli attributi AD

Sto integrando il nostro AD con i servizi Web che eseguono Python su Linux usando Python-LDAP su SASL (DIGEST-MD5) per interrogare gli attributi utente di AD 2012 (divisione, dipartimento, estensione del telefono, e-mail, ecc.). Dopo aver elaborato i nodi specifici del mio servizio su un AD 2003, ho iniziato a riscontrare un errore SPN sul nostro nuovo AD 2012, che digest-uri non corrispondeva a nessun SPN sul server. Ho fatto un riferimento incrociato all'elenco SPN per entrambi i server e contengono analoghi identici tra loro.

L'errore: digest-uri non corrisponde a nessun SPN LDAP registrato per questo server

La correzione?

Questo è stato risolto eseguendo:

setspn -A ldap/<Domain_Name> <Computer_Name>

Si noti che la creazione di un account di servizio non ha corretto l'errore SPN anche quando è stato eseguito il comando seguente:

setspn -A ldap/<Domain_Name> <Domain_Name>/<Service_Account_Name>

simple_bind_s () non ha bisogno di SPN, sasl_interactive_bind_s () ha bisogno di SPN

Solo l'aggiunta dell'SPN all'elenco SPN del computer locale ha funzionato per il mio servizio Python-LDAP usando sasl_interactive_bind_s (). Dovrei anche notare che il passaggio SPN può essere ignorato se uso simple_bind_s () ma questo metodo invia credenziali in chiaro che è inaccettabile.

Tuttavia ho notato che il record rimane nell'elenco SPN solo per circa un minuto prima di scomparire? Non ci sono errori quando eseguo il comando setspn, i registri degli eventi sono completamente vuoti, non ci sono duplicati da nessuna parte, controllati con la ricerca a livello di foresta -F sulla base dn e niente. Ho aggiunto e provato a aggiungere nuovamente e rimosso e spostato l'SPN da un oggetto all'altro per verificare che non si nascondesse da nessuna parte, ma il secondo aggiungo l'oggetto ovunque e quindi provo a aggiungere nuovamente mi avvisa di un duplicato. Quindi sono molto fiducioso che non ci sia un duplicato nascosto da qualche parte.

L'hack

Per ora ho un'attività pianificata che esegue nuovamente il comando per mantenere il record nell'elenco in modo che il mio servizio funzionerà appropriatamente chiamato "SPN Hack"

cmd.exe /C "setspn -A ldap/<Domain_Name> <Computer_Name>"

fino a quando non riesco a scoprire perché l'SPN viene rimosso dall'elenco.

Non sono l'amministratore principale di questo particolare annuncio pubblicitario, l'amministratore potrebbe avere un servizio in esecuzione che sincronizza l'SPN da un altro servizio nell'AD e non esserne consapevole? Il mio titolo è Web Developer, non come una scusa ma per spiegare la mia ignoranza in materia di Active Directory. Mi è stato detto di rendere l'AD il DB utente principale e ho letto molto, ma non riesco a trovare da nessuna parte dove le persone hanno un problema con l'SPN che viene "sovrascritto" o "ripulito" periodicamente e nessuno dei gli amministratori hanno molta familiarità con SPN al di fuori delle voci di SQL Server.

Perché ho bisogno dell'hack?

Finora il mio hack non sembra aver causato problemi a nessun utente o servizio e non abbia generato alcun errore, quindi l'amministratore dice che lo lascerà semplicemente funzionare e continuerò a cercare. Ma poi mi trovo nella situazione precaria di scrivere un servizio la cui implementazione è basata, essenzialmente un cron hack / brividi ... Quindi, qualsiasi aiuto sarebbe apprezzato.


Aggiornare

Dopo una conversazione con l'amministratore di sistema ha concordato che la creazione di un servizio in cima a un hack non è una soluzione, quindi mi ha dato il permesso di creare un servizio locale con crittografia endpoint che posso usare per i miei scopi, il risultato è lo stesso . Terrò d'occhio ciò che sta causando la cancellazione dell'SPN. I bind locali non sono un problema con Python-LDAP e il servizio locale è già attivo e funzionante dopo solo un'ora circa. È un peccato che essenzialmente stia avvolgendo le funzionalità integrate in LDAP ma facciamo quello che dobbiamo fare.


Bene, questo è un mistero. Gli SPN di solito non scompaiono da soli. Scommetto che un'applicazione lo sta eliminando. Python-Ldap registra automaticamente i propri nomi SPN? Se è così, lo sta facendo correttamente? Inoltre, potrebbe essere necessario configurare il controllo dell'accesso agli oggetti sul controller di dominio per cercare di individuare chi è responsabile dell'eliminazione dell'SPN ogni due minuti.
Ryan Ries,

1
Python-LDAP non registra il proprio SPN. Ho sfuggito ai miei servizi di test e, per quanto riguarda la rete, sembra proprio un flusso di accesso standard, ora se la richiesta iniziale lo avrebbe registrato o meno sul lato AD che sembra che avrebbe vanificato lo scopo dell'SPN innanzitutto? So che il collegamento in chiaro funziona senza lo spn, è solo la richiesta sasl che fallisce senza il record SPN su AD ... Ho iniziato a cercare servizi che potrebbero gestire l'SPN all'esterno, quasi mi sento come un wipe e lo script di sostituzione è in esecuzione da qualche parte ...
Melignus,

Ehi, hai scoperto perché il tuo SPN stava scomparendo? Sembriamo avere lo stesso comportamento dopo poche ore ...
David

Risposte:


6

Questo è un fenomeno davvero interessante (e fastidioso) e insisto sul fatto che scopriamo cosa sta succedendo qui.

Fortunatamente, Windows Server ha adottato alcuni criteri di controllo accurati dal 2008 e possiamo utilizzare il controllo per rintracciare chi ha fatto questo. Per fare ciò, dovremo:

  1. Scopri dove si verifica la modifica SPN
  2. Abilita controllo modifiche oggetto AD DS
  3. Impostare un controllo ACE sull'oggetto
  4. Riprodurre l'errore
  5. Ispeziona il registro di sicurezza sul controller offensivo

Scopri dove si verifica la modifica SPN:

Aprire un prompt dei comandi con privilegi elevati su un controller di dominio ed emettere questo comando:

repadmin /showobjmeta . "CN=computerAccount,DC=domain,DC=local"|findstr servicePricipalName

L'output conterrà il nome del controller di dominio che originariamente ha scritto la versione corrente del valore degli attributi servicePrincipalName: repadmin iz boss

Abilita controllo modifiche oggetto AD DS:

Se non è già stata definita una politica di controllo globale, è possibile apportare questa modifica alla politica di sicurezza locale sul controller di dominio identificato nel passaggio precedente

Aprire la Console Gestione criteri di gruppo ( gpmc.msc), individuare Default Domain Controllers Policye modificarlo.

  1. Vai a Computer Configuration -> Windows Settings -> Security Settings
  2. Seleziona ed espandi Local Policies -> Security Options
  3. Assicurati che Controllo: Forza impostazioni sottocategoria criteri di controllo ... sia impostato su Abilitato Forza le sottocategorie di controllo in cui le categorie classiche sono già state applicate
  4. Seleziona ed espandi Advanced Audit Policy -> Audit Policies -> DS Access
  5. Assicurarsi che le modifiche al servizio Directory di controllo siano impostate almeno su Successo Modifiche al servizio directory di controllo

Impostare un controllo ACE sull'oggetto:

Apri Utenti e computer di Active Directory ( dsa.msc) e controlla l'impostazione "Funzionalità avanzate" nel menu "Visualizza".
Passare all'oggetto account del computer, fare clic con il tasto destro del mouse e selezionare Proprietà. Scegli la scheda Sicurezza e premi il pulsante "Avanzate".

Nel prompt, selezionare la scheda Controllo e assicurarsi che "Scrivi tutte le proprietà" sia stato verificato per Tutti . In caso contrario, o in caso di dubbi, aggiungere una nuova voce:

  1. Premi Aggiungi .
  2. Inserisci "Everyone" come principale target
  3. Seleziona "Successo" come tipo
  4. Scorri verso il basso sotto le proprietà e seleziona "Scrivi servicePrincipalName"
  5. Premere OK per aggiungere la voce e uscire da ADUC

( Se sei pigro puoi semplicemente selezionare "Scrivi tutte le proprietà" )

Riprodurre l'errore

Dalla tua domanda sembra che l'SPN venga cancellato ogni minuto o giù di lì, quindi questo è probabilmente il passaggio più semplice. Prendi una lezione di musica da 1 minuto nel frattempo.

Ispeziona il registro di sicurezza sul controller offensivo

Ora che è passato un minuto, esaminiamo il registro di sicurezza sul controller di dominio identificato come il creatore nel passaggio 1. Questo può essere un problema in domini di grandi dimensioni, ma il filtro può aiutare con questo:

  1. Apri il Visualizzatore eventi e vai a Windows Logs -> Security
  2. Nel riquadro destro, seleziona Filtra registro corrente
  3. Nel campo di input che dice " <All Event IDs>", inserisci 5136 (questo è l'id evento per la modifica dell'oggetto directory)

Ora dovresti essere in grado di trovare una voce di evento per ogni modifica servicePrincipalNameall'attributo sull'account del computer.

Identificare il "Soggetto" responsabile della modifica e vedere da dove proviene. Uccidi quel processo / macchina / account con il fuoco!

Se l'argomento viene identificato come SYSTEM, ANONYMOUS LOGONo una descrizione similmente generica, abbiamo a che fare con l'elaborazione interna sul controller di dominio stesso e dovremo rompere alcune registrazioni diagnostiche NTDS per scoprire cosa sta succedendo. Si prega di aggiornare la domanda se questo è il caso


Stavo riscontrando lo stesso identico problema nel mio tentativo di risolvere lo stesso problema SPN LDAP. Ho seguito i tuoi suggerimenti, ma vedo solo le mie (riuscite) modifiche dell'SPN e nessuna traccia della loro successiva rimozione.
Grisha Levit,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.