realjoe
Goto Top

Zentraler automatisierter Client Rename in einer W2K8 Domöne mit Win8.1 Clients

Hallo Gemeinde, ich habe seit einiger zeit ein Problem mit meinen bestehenden Scripten, die ständig durch UAC Mechanismen ausgehebelt werden.

Die Anforderung:
Ein Clint soll erhält organisatorisch durch einen Umzug einen neuen Namen.
Dies soll vollständig durch einen Automatismus auf technischer Seite abgewickelt werden. Jedoch nicht am User vorbei, sondern mit entsprechender Eingriffsmöglichkeit.

Unter Windows 7 konnte ich das recht einfach durch ein Anmeldescript bei abgeschalteter UAC abbilden, welches zunächst in einer SQL DB Die Seriennummer des Clients sucht, und dann den Vergleich zum Iststand zieht.
Passt der Name, steige ich einfach aus.
Passt der Name nicht, wird dem User die Wahl überlassen, ob der Name jetzt geändert werden soll, und ein Neustart folgt, ober er den Hinweis beim nächsten Anmelden wieder sieht.

Klickt der User auf ändern, wird ein zweites Script mit entsprechenden rechten gestartet, welches den Rename dann durchführt, und zentrale logs schreibt.

Bei eigeschalteter UAC ist damit aber Pustekuchen. und der Store funktioniert nicht, wenn die UAC komplett aus ist.


zur eigentlichen Frage(n):
1. Da UAC schon oft behandelt wurde und ich diverse Tests mit elevatorScripten schon durch habe, wollte ich einfach mal Fragen, was ihr so einsetzt, um Clientnamen nachträglich zu organisieren.
Da muss es doch Möglichkeiten geben.
2. Auch die Verhinderung das GPOs Kennwörter enthalten dürfen um gewisse zentrale Änderungen durchzuführen stört mich administrativ gewaltig.
Sei es nur ein geplanterTask der großflächig an die Maschinen soll. Da muss man immer stricken. hier wäre ich auch für Tips dankbar.

Tobt euch einfach mal aus.

Ich danke euch im Voraus

Content-Key: 280620

Url: https://administrator.de/contentid/280620

Printed on: April 25, 2024 at 05:04 o'clock

Member: emeriks
emeriks Aug 19, 2015 at 14:01:14 (UTC)
Goto Top
Hi,
das Script läuft im Kontext des angemeldeten Benutzers? Und dieses darf den Computernamen ändern? Also ist er ein lokaler Administrator?
Falls ja, dann könntest Du das Script statt über GPO Loginscript (wie ich vermute) als Geplante Aufgabe "bei Anmeldung" starten und in der Aufgabendefinition "mit höchsten Privilegien" aktivieren.

E.
Member: Dani
Dani Aug 19, 2015 at 18:42:32 (UTC)
Goto Top
Hi,
Unter Windows 7 konnte ich das recht einfach durch ein Anmeldescript bei abgeschalteter UAC abbilden, welches zunächst in einer SQL DB Die Seriennummer des Clients sucht, und dann den Vergleich zum Iststand zieht.
Das Skript mit der SQL-Abfrage lief performant? Wahrscheinlich nur am Standort wo die Datenbank lag oder ihr habt ein überschaubare Landschaft. Bei unseren Versuchen sowas zu implementieren haben die Jungs vom Firewall und Dev-Team die Hände über dem Kopf zusammengeschlagen.

Ich würde keiner Benutzeraktion zu lassen. Somit sind Fehlerquellen ausgeschlossen und du musst dich nicht ärgern. Auf jeden Fall als Geplate Task welche beim Start vom Rechner läuft, bevor der Benutzer sich anmeldet. Wird der Computername geändert abschließend einen Neustart auslösen. Ich überlege gerade, ob ein Computer beim Start auf das Netzwerk zugreifen darf? Dann ...auf einer Freigabe jeweils eine Textdatei anlegen: Dateiname: Seriennummer, Inhalt: Hostnamen. Die Seriennummer kann man sicher am Client über WMI entsprechend auslesen. Dürfe auf jeden Fall im Vergleich zu SQL und den Sicherheitsrisiken performant sein.


Gruß,
Dani
Member: RealJoe
RealJoe Aug 20, 2015 at 05:36:26 (UTC)
Goto Top
Hi Dani,
Mag sein, das dein Performace Einwand korrekt ist. Trotzdem Läuft das an etwa 600 deutschladweiten Standorten einwandfrei. Der User bemerkt von dem Script ja auch nichts, bis eine Abweichung erkannt wird. Keine Abweichung ist ja die Regel. Erst dann bekommt er eine Info, die nicht in meiner Entscheidungsgewalt liegt. (Muss also sein)

Auch die SQL Abfrage (auf CMDB) ist effizienter, ich will ja "Administrativer Aufwand = 0" und möchte die Daten nicht noch vorher da raus ziehen müssen, sie sind ja vorhanden. Und funktioniert ja auch.
und da die CMDB von anderer Stelle gepflegt wird, bin ich da fein raus. face-smile
Das ganze läuft zudem ja nicht undokumentiert. Bin mit dem Grunddesign also hochzufrieden. bis auf die Tatsache, dass ich ab Win 8 die UAC eingeschaltet lassen muss und da halt manuell ran muss.

Um die Sicherheit wird sich auch gekümmert. Der SQL Server lässt nur diesen einen Port an die Standorte zu, und ist zudem geschützt. Da gabs nie Probleme und wird auch vom BSI nicht bemängelt.

Meine eigentliche Frage jedoch kann wohl nicht beantwortet werden.
Wie macht ihr das für >Win 8?
SystemCenter oder sowas hätte ich als Anworten erwartet. Jedoch fände ich Eigenlösungen irgendwie Schicker.
Member: RealJoe
RealJoe Aug 20, 2015 updated at 06:16:21 (UTC)
Goto Top
Hi emeriks,
Klickt der User auf ändern, wird ein zweites Script mit entsprechenden rechten gestartet, welches den Rename dann durchführt, und zentrale logs schreibt.

Was deinen Tip angeht:
Wie verteilt man so eine Aufgabe an 4000 Clients, ohne die Möglichkeit in der Policy ein Kennwort mit zu geben? Im System Kontext?
Die Idee hatte ich schon und bin kläglich gescheitert. Bin für Anregungen aber dankbar.
Member: emeriks
emeriks Aug 20, 2015 at 06:43:08 (UTC)
Goto Top
Klickt der User auf ändern, wird ein zweites Script mit entsprechenden rechten gestartet, welches den Rename dann durchführt, und zentrale logs schreibt.
OK, das hatt ich dann überlesen.
Aber woher kommen denn hier Benutzername und Passwort für das zweite Script? Die musst Du doch dann auch irgendwo hinterlegt haben?
Member: RealJoe
RealJoe Aug 20, 2015 at 09:35:59 (UTC)
Goto Top
Da dies mit Windows Bordmitteln GPO nicht mehr geht, stehen die Credentials im ersten Script als Hash, um das 2. Script zu starten und mit erweiterten Rechten auszuführen. Das Verwendete Konto dort hat jedoch wirklich nur die Rechte um einen Computer und das Domänenkonto umzubenennen.

Securitymäßig auch nicht einwandfrei, aber sei es drum.....

Ich suche ja nach einer anderen Lösung. face-smile
Member: emeriks
emeriks Aug 20, 2015 at 11:49:56 (UTC)
Goto Top
Irgendwo müsstest Du das PW hinterlegen. Intweder in der GPO oder in einem Script. Oder in einer kompilierten EXE.
Aus einem Script könntest Du mit "schtasks.exe" eine Aufgabe erstellen.
Member: RealJoe
RealJoe Aug 20, 2015 at 13:31:05 (UTC)
Goto Top
Das werde ich mal Probieren.

Bin trotzdem weiterhin an anderen praktizierten Lösungen interessiert.

Danke nochmal
Member: emeriks
emeriks Aug 20, 2015 at 13:43:45 (UTC)
Goto Top
Wie "praktizierten Lösung"? Ich habe noch nie gehört, das jemand das so macht. Von daher kann ich mir nur schwer vosratellen, dass Du dafür eine vorhandene Lösung findest.

Mal am Rande: Lohnt der Aufwand überhaupt? Ziehen den Clients so oft um, dass der Name automatisch geändert werden muss? (um den Admin nicht zu belasten) Und warum überhaupt? Namen sind doch nur Schall und Rauch ...

E.
Member: Dani
Dani Aug 20, 2015 at 18:56:17 (UTC)
Goto Top
@RealJoe
Da gabs nie Probleme und wird auch vom BSI nicht bemängelt.
Das ist natürlich ein Argument... die Jungs von BSI als Maßstab zu nehmen finde ich witzig. Die haben selber ihren Laden nicht im Griff. Interessanter sind da schon Pentrationstests innerhalb des Netzwerks.

Securitymäßig auch nicht einwandfrei, aber sei es drum.....
Solange dadurch kein Schaden entsteht, interessiert's auch keinen. Aber wenn das Ding ne Lück aufweist, wirds eng.

Wie verteilt man so eine Aufgabe an 4000 Clients, ohne die Möglichkeit in der Policy ein Kennwort mit zu geben? Im System Kontext?
Softwareverteilung?

Ich würde zwei Tasks planen:
  • Eine holt den Computernamen über eine WebAPI aus der DB und speichert diese in eine Datei. Dort hat nur der Benutzer, unter dem die Task ausgeführt Zugriff.
  • Die andere Task führt den Rename durch. Eine Interaktion ist nach meinem Wissensstand aus einer Task heraus, welche unter einem anderen Benutzer läuft, als der im Moment angemeldet ist, nicht möglich. Die Task läuft als SYSTEM. Somit benötigt der Benutzer aus Task1 keinerlei Sonderrechte und kein Benutzer aus lokale Admins können die Textdatei mit Computernamen manipulieren.

Aber ganz ehrlich: Das ist eine Anforderung, welche nicht in ein paar Tagen erarbeitet ist.

@emeriks
Falls ja, dann könntest Du das Script statt über GPO Loginscript (wie ich vermute) als Geplante Aufgabe "bei Anmeldung" starten und in der Aufgabendefinition "mit höchsten Privilegien" aktivieren.
Aber was machst du mit der Benutzerinteraktion? Denn schließlich soll dieser informiert werden und eine Auswahl (a oder b) treffen.

Aber woher kommen denn hier Benutzername und Passwort für das zweite Script? Die musst Du doch dann auch irgendwo hinterlegt haben?
Ich denke da noch ein Stück weiter. Wo sind die Anmeldedaten für den SQL-Server hinterlegt.


Gruß,
Dani
Member: RealJoe
RealJoe Aug 21, 2015 at 05:39:18 (UTC)
Goto Top
@emeriks
Naja, ich denke nicht, das der Rest der Welt nur statische Client Konzepte verfolgt. Unsere Computernamen verfolgen ein recht eingängiges Nummernkonzept, welche Rückschlüsse auf den Standort und die Geräteart zulässt.
Das finden alle, die damit zu tun haben recht schick. Und ja, du hast Recht, ein Umzug geschieht verhältnismäßig selten. Und doch kann es einem schwer aufs scrotum gehen, wenn für die manuelle Änderung zunächst mal 30 Anrufe nötig sind, um den User zu erreichen. face-wink
Ich würde also ungern dazu übergehen, die Namen als einfach nur Namen zu setzen.
Member: emeriks
emeriks Aug 21, 2015 at 05:48:57 (UTC)
Goto Top
enn für die manuelle Änderung zunächst mal 30 Anrufe nötig sind, um den User zu erreichen
... das kann man da ja remote machen. Da reicht es, wenn der Client eingeschaltet ist.
Member: RealJoe
RealJoe Aug 21, 2015 at 05:58:16 (UTC)
Goto Top
@RealJoe
Das ist natürlich ein Argument... die Jungs von BSI als Maßstab zu nehmen finde ich witzig. Die haben selber ihren
Laden nicht im Griff. Interessanter sind da schon Pentrationstests innerhalb des Netzwerks.
Was bleibt einem übrig? Die geben das Tempo vor. Und wenn man darauf verweist, denkt zumindest jeder, man würde sich damit intensiv beschäftigen. face-wink


> Wie verteilt man so eine Aufgabe an 4000 Clients, ohne die Möglichkeit in der Policy ein Kennwort mit zu geben? Im
System Kontext?
Softwareverteilung?
Hab ich nunmal nicht. face-plain Nur dafür ist der Spaß auch etwas teuer. Aber auch daran wird gearbeitet, da die Clientanforderungen gerade einen Wandel vollziehen. Wenn es die einzige Möglichkeit bleibt, werde ich auch an dieser Stelle zu einer Softwareverteilung tendieren. Derzeit, haben jedoch alle ein Standardimage, welches inhaltlich statisch bleiben kann. Der Rest passiert in der Citrix Farm, welche hochfluktuativ alle 4 Wochen neu betankt wird und neue Pakete erhält.

Ich würde zwei Tasks planen:
  • Eine holt den Computernamen über eine WebAPI aus der DB und speichert diese in eine Datei. Dort hat nur der Benutzer, unter
dem die Task ausgeführt Zugriff.
  • Die andere Task führt den Rename durch. Eine Interaktion ist nach meinem Wissensstand aus einer Task heraus, welche unter
einem anderen Benutzer läuft, als der im Moment angemeldet ist, nicht möglich. Die Task läuft als SYSTEM. Somit
benötigt der Benutzer aus Task1 keinerlei Sonderrechte und kein Benutzer aus lokale Admins können die Textdatei mit
Computernamen manipulieren.

Aber ganz ehrlich: Das ist eine Anforderung, welche nicht in ein paar Tagen erarbeitet ist.
Ich bin gar nicht mehr sicher, ob ich System in einer Aufgabe mal getestet habe. Das werde ich jedoch einfach nochmal machen, sobald Zeit dafür da ist.
Am Prüfscript bracht ja nichts geändert werden. Der User hat generell einige lesende Rechte in der SQL DB, da dort auch für ihn relevante Selfservicedaten hinterlegt sind. Auf das Feld Seriennummer kommt es da nicht an, das ist unkritisch.

Ich denke da noch ein Stück weiter. Wo sind die Anmeldedaten für den SQL-Server hinterlegt.
Die Frage ist damit auch beantwortet.


Ich habe schonmal überlegt, dem Userkontext einfach lokal und im AD die Rechte zum ändern des Computernamens zu geben, dann könnte das 2. Script komplett entfallen. bleibt leider immer noch die UAC. Was haltet ihr vom Grundgedanken?
Member: etschbi
etschbi Aug 21, 2015 at 13:03:44 (UTC)
Goto Top
Hallo,

Weiterer Ansatz: Du kannst Computer auch remote umbenennen, z.B. mit netdom.exe Link auf www.windowspro.de .

Angenehmes Wochenende