Jump to content

Frage zum SPN / Netdom Befehl


Direkt zur Lösung Gelöst von MurdocX,

Empfohlene Beiträge

Moin,

 

webservices ist HTTP/, SMB ist CIFS/.

 

SetSPN führt in der Tat einen zusätzlichen Schritt durch, nämlich die Prüfung, ob der SPN nicht schon vergeben ist. Bei @daabm würde ich mich darauf verlassen, dass man weiß, wo was vergeben ist. Wenn man es nicht 100% weiß --> SetSPN, oder vorher eine Abfrage machen.

Link zu diesem Kommentar

Eine Frage ist mir noch eingefallen.

Gibt es eigentlich eine Liste der Service Classes für die SPNs?

Ich habe dazu irgendwie nur die allgemeine Info von MS gefunden
https://learn.microsoft.com/en-us/windows/win32/ad/name-formats-for-unique-spns

Zitat
"<service class>" A string that identifies the general class of service; for example, "SqlServer". There are well-known service class names, such as "www" for a web service or "ldap" for a directory service. In general, this can be any string that is unique to the service class. Be aware that the SPN syntax uses a forward slash (/) to separate elements, so this character cannot appear in a service class name.

 

Das klingt für mich so, als könnte ich beliebig wählen was ich dort eintrage. Aber was genau macht diese dann, wenn ich das einfach beliebig erstellen kann. Oder versteh ich hier was falsch?

 

Wenn wir bisher einen weiteren SPN für einen Server z.B. für einen SMB Share oder eine Webseite benötigt haben, dann hatten wir ja nur den netdom Befehl ausgeführt. Dieser hat dann den SPN gesetzt und auch den DNS Alias erstellt. 

Der Befehl hat dann einfach für alle bestehenden service classes auf dem entsprechenden AD Objekt die SPNs eingetragen.

Als Beispiel

Auf einem Server haben wir den SPN server1 mit dem netdom Befehl hinzugefügt.

In dem Server AD Objekt wurde dann 
HOST/server1

RestrictedKrbHost/server1

Termsrv/server1

WSMAN/server1 

 

hinzugefügt. Ist das jetzt komplett falsch? Mit SetSPN müsste ich ja den Service angeben. Das heißt wenn ich das für einen SMB Share mache, gebe ich als service CIFS/ an.

wenn ich das für einen Webserver mache, gebe ich HTTP/ an, usw.

 

Oder reicht es auch, einfach nur HOST/ anzugeben?

Bin grad etwas verwirrt :engel:

Link zu diesem Kommentar

Was ist eigendlich dein Problem? Wieso brauchst du einen SPN?

 

Die Service Class ist beliebig, wird aber unter Umständen nicht ausgewertet. Ein Websever erwartet HTTP, ein SMB Dienst erwartrt CIFS, ein MSSQL Server erwartet MSSQLSvc usw.

Bestimmte Services (HOST, RestrictedKrbHost, Termsrv, WSMAN) werden automatisch gesetzt!

Du brauchst manuell einen SPN nur, wenn es nicht automatisch gesetzt wird oder du einen Alias (Cluster) nutzt.

Link zu diesem Kommentar

Ich versuche es mal kurz zu erklären.

 

Wir haben früher, z.B. für Web URLs oder SMB Shares, einfach einen weiteren DNS Alias erstellt und diesen auf den Host zeigen lassen. 

Das hat auch erstmal problemlos funktioniert. Mit der Zeit habe ich dann gelesen, dass dies nicht die Beste Lösung ist, da dies z.B. zu Problemen bei der Kerberos Authentifizierung führen kann und man für solche Punkte immer einen SPN erstellen soll.

 

Wenn wir jetzt also eine neue Webseite oder Webserver in Betrieb nehmen und die Webseite nicht über https://server.domain.local aufgerufen werden soll, sondern über https://applicationname.domain.local, dann erstellen wir einen SPN mit applicationname.domain.local.

Das haben wir bisher mit NetDom gemacht. 

Mit dem NetDom Befehl wurde der neue SPN hinzugefügt (und zwar für alle bestehenden service classes wie host, restrictedkrbhost, termserv, wsman, usw).

 

Mit SetSPN muss ich jetzt ja die service class mit angeben. Wenn ich also für eine Webseite einen SPN erstelle, muss ich HTTP/applicationname angeben.

 

Was ich mich jetzt nur Frage, wie wichtig ist die service class? NetDom hat für einen Webseite ja auch kein HTTP/ hinzugefügt, sondern nur die bestehenden service classes um den neuen SPN erweitert (also host/applicationname, termsrv/applicationname, usw) und kein HTTP/applicationname erstellt.

 

Oder stehe ich hier grad komplett auf dem Schlauch und verdrehe etwas? Für mich ist ein SPN ein weitere "Name" über den das Computerobjekt angesprochen werden kann.

Link zu diesem Kommentar

https://www.faq-o-matic.net/2015/08/26/wofuer-braucht-es-eigentlich-diesen-spn/

 

Es gibt keine "Probleme" mit der Kerberos Authentifizierung, es gibt einfach keine Kerberos Authentifizierung, wenn der SPN (mit der richtigen Service Class) fehlt.

Wenn die Applikation doch funktioniert, dann wird eine andere Authentizierung genutzt.

bearbeitet von Dukel
Link zu diesem Kommentar

Danke euch, dass war so auch mein Verständnis, habe mich da dann etwas falsch ausgedrückt.

Bei uns ist NTLM noch nicht deaktiviert, daher fällt die Authentizierung dann darauf zurück und der falsche/fehlende SPN fällt aktuell noch nicht auf.

 

Das wollen wir jetzt eben korrigieren und erstellen die SPNs.

Das heißt dann aber, ich muss wirklich den passenden SNP mit der richtigen Service Class erstellen.

Wie nun schon mehrmals geschrieben, HTTP für Web, CIFS für SMB usw.

Das ist doch soweit richtig, oder?

 

Muss ich einen zusätzlich SPN dann überhaupt für die Service Class "Host" definieren? Wenn ich es jetzt richtig verstehe, ist das ja dann gar nicht notwendig. Ich muss dne SPN nur für die entsprechende Service Class (SQL, Web, SMB, usw) eintragen.

 

Sorry wenn ich mich hier grad etwas blöde anstelle....

Link zu diesem Kommentar
1 hour ago, phatair said:

Eine Frage ist mir noch eingefallen.

Gibt es eigentlich eine Liste der Service Classes für die SPNs?

Ich habe dazu irgendwie nur die allgemeine Info von MS gefunden
https://learn.microsoft.com/en-us/windows/win32/ad/name-formats-for-unique-spns

 

Link\Quelle " https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc772815(v=ws.10)#service-principal-names", Titel "Built-in SPNs Recognized for Computer Accounts"

 

1 hour ago, phatair said:

Oder reicht es auch, einfach nur HOST/ anzugeben?

Bin grad etwas verwirrt :engel:

 

Kurz zu "HOST", hält mehrere classes inne, setze mal ein query auf "CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=[PLACEHOLDER],DC=[PLACEHOLDER]" ab, dann bekommst Du alle classes angezeigt, die HOST inne hält. (Oder ADSI Edit, wenn Dir die GUI mehr liegt). Sidenote: Jeder domain joined computer erhält by default (unteranderem) solch einen HOST SPN Eintrag.

 

Wenn Du nun einen manuell setzen "musst", dann empfehle ich Dir (so wie in allen anderen Bereichen auch), konfiguriere immer nur das was benötigt wird. Macht Dokumentation, Troubleshooting, CleanUp, etc. um einiges transparenter, einfacher.

 

24 minutes ago, NorbertFe said:

 

Ich habs mal konkretisiert ;)


... "dann wird (wahrscheinlich) eine (NTLM) Authentizierung genutzt" ... die es natürlich zu verhindern gilt. Das fällt manchen nicht auf, setzen einen CNAME, Authentifizierung läuft in der Annahme es ist Kerberos, jedoch NTLM lässt grüßen...

Gruß,

toao

Link zu diesem Kommentar
vor 12 Minuten schrieb toao:

Kurz zu "HOST", hält mehrere classes inne, setze mal ein query auf "CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=[PLACEHOLDER],DC=[PLACEHOLDER]" ab, dann bekommst Du alle classes angezeigt, die HOST inne hält. (Oder ADSI Edit, wenn Dir die GUI mehr liegt). Sidenote: Jeder domain joined computer erhält by default (unteranderem) solch einen HOST SPN Eintrag.

 

Danke für den Tip, dass ist ja in der Tat so einiges und deckt unsere Vorgaben zu 100% erstmal ab. (das ist das Attribut sPNMappings, richtig?).

 

vor 15 Minuten schrieb toao:

Diese Liste hatte ich tatsächlich jetzt auch schon gefunden. 

Das war für mich nur nicht so richtig hilfreich, da ich mir eine Tabelle gewünscht hätte, in der dann steht "service class cifs" wird genutzt für "smb" usw.

Aber da habe ich wahrscheinlich zu hohe Ansprüche bzw. zu wenig Wissen um mit der Liste etwas anfangen zu können :engel:

So steht in der Liste z.b. www und http - da würde ich jetzt erstmal nicht wissen welche der Klassen jetzt für eine Webseite zu nutzen ist. Aber dafür gibt es dann ja google ;-)

vor 17 Minuten schrieb toao:

... "dann wird (wahrscheinlich) eine (NTLM) Authentizierung genutzt" ... die es natürlich zu verhindern gilt. Das fällt manchen nicht auf, setzen einen CNAME, Authentifizierung läuft in der Annahme es ist Kerberos, jedoch NTLM lässt grüßen...

Genau - deswegen wollen wir jetzt die SPNs pflegen und dann Stück für Stück schauen wie wir NTLM abschalten können und haben dann hoffentlich im Bereich der SPNs keine böse Überraschung mehr. 

Link zu diesem Kommentar
vor 41 Minuten schrieb phatair:

Genau - deswegen wollen wir jetzt die SPNs pflegen und dann Stück für Stück schauen wie wir NTLM abschalten können und haben dann hoffentlich im Bereich der SPNs keine böse Überraschung mehr. 

 

Das wäre die die Antwort auf die Frage von mir nach dem eigendlichen Problem.

 

Wenn Ihr NTLM abschalten und Kerberos nutzen wollt, dann sollet Ihr das auch prüfen, wo welche Auth. genutzt wird.

 

Link zu diesem Kommentar

Sorry, hätte ich gleich so schreiben sollen :)

 

Im NTLM Logging haben wir das jetzt auch so nachvollziehen können. Aktuell fällt es auf NTLM zurück, wenn wir über einen DNS Alias zugreifen und kein SPN gepflegt ist. Ist der SPN gepflegt läuft alles sauber über Kerberos.

Dann haben wir ein bisschen Arbeit vor uns.

 

Danke für eure Hilfe!

Link zu diesem Kommentar
vor 23 Minuten schrieb phatair:

Im NTLM Logging haben wir das jetzt auch so nachvollziehen können. Aktuell fällt es auf NTLM zurück, wenn wir über einen DNS Alias zugreifen und kein SPN gepflegt ist. Ist der SPN gepflegt läuft alles sauber über Kerberos.

Works as designed würde ich sagen. Habt ihr da was erwartet? ;)

Link zu diesem Kommentar

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...