Wie kann ich normale (Nicht-Administrator-) Benutzer während der Softwareinstallation aussperren?

12

Wir haben viele Thin Clients, auf denen Windows Embedded Standard 7 und ein SCCM 2012 R2-Server ausgeführt werden, um sie zu verwalten. Bei den Thin Clients sind die Schreibfilter aktiviert (FBWF), sodass Änderungen an der Maschine nicht dauerhaft sind. In den seltenen Fällen müssen wir etwas auf ihnen aktualisieren, wir stellen es einfach über SCCM bereit und es kümmert sich automatisch darum, die Schreibfilter zu deaktivieren und wieder einzuschalten, um Änderungen festzuschreiben.

Folgendes sollte passieren: Der
SCCM-Client gibt dem Benutzer eine Benachrichtigung und einen 30-minütigen Countdown, um seine Arbeit zu speichern und das System zu verlassen. Der Thin Client startet dann neu und deaktiviert den Schreibfilter. Der Anmeldebildschirm zeigt ein Vorhängeschloss an und zeigt an, dass das Gerät gewartet wird. Normale Benutzer (ohne Administratorrechte) können sich nicht anmelden, während SCCM das tut. Nach Abschluss von SCCM wird der Schreibfilter erneut aktiviert, der Computer wird neu gestartet, und die Benutzer können sich erneut anmelden.

Das Problem, das ich habe, ist, dass wir Proximity-Kartenleser verwenden, um uns im System anzumelden. Mitarbeiter geben keine Passwörter ein. Sie tippen einfach auf ihr Abzeichen. Dieses System ist nett, aber die Software, die es ausführt, bricht die Schreibfilterautomatisierung mit Windows Embedded.

Hier ist , was tatsächlich passiert:
SCCM - Client gibt den üblichen 15-Minuten - Hinweis vor dem mit dem Schreibfilter aus neu zu starten. Beim Neustart wird der normale Anmeldebildschirm angezeigt. Benutzer können sich beim System anmelden und es verwenden, während SCCM Software installiert. Und da eine Benutzersitzung aktiv ist, wird eine weitere 30-minütige Benachrichtigung angezeigt, bevor der Neustart mit wieder aktiviertem Schreibfilter durchgeführt wird.

In diesem Szenario wird nicht nur die Bereitstellungszeit um 30 Minuten verlängert, sondern es werden auch 30 bis 60 Minuten ungeschützter Zeit für normale Benutzer auf den Thin Clients zur Verfügung gestellt, wobei alle Änderungen, die sie vornehmen, dauerhaft in das Image eingebrannt werden, wenn die Der Schreibfilter wird wieder aktiviert.

Das Problem ergibt sich aus der Tatsache, dass Windows Embedded 7 einen anderen Anbieter von Anmeldeinformationen (alias GINA) verwendet als Windows 7, das SSO-Produkt jedoch den Anbieter von Windows-Anmeldeinformationen ersetzen muss, um zu funktionieren. Ich habe den Verkäufer darüber kontaktiert, aber sie sagen nur, dass es sich um ein bekanntes Problem handelt und es keine Fehlerbehebung oder Problemumgehung gibt.

Hier ist meine Frage:
Wie kann ich das gewünschte Verhalten auf andere Weise simulieren? Ich weiß, dass es eine Gruppenrichtlinieneinstellung gibt, in der Sie die lokale Anmeldung für bestimmte Benutzergruppen verweigern können. Ich dachte, ich könnte die entsprechende Registrierungseinstellung vor und nach der Installation umdrehen, bin aber offen für andere Ideen.

Ich bin nicht über Skript-Installationen, wenn ich muss. Ich beherrsche Skripte, PowerShell, VBScript usw. fließend. Ich frage mich nur, ob jemand gute Ideen zur Lösung dieses Problems hat.


Update:
Ich habe versäumt zu erwähnen, dass diese Geräte in einer Krankenhausumgebung verwendet werden, damit die Mitarbeiter ihre Patienten aufzeichnen können. Sie müssen 24 Stunden am Tag verfügbar sein, damit wir Anmeldestunden nicht einschränken oder Wartungsfenster konfigurieren können. Wir bewältigen Ausfallzeiten, indem wir den Schichtleitern im Voraus Bescheid geben, aber alles, was länger als eine Stunde dauert, wird zu einem Problem der Einhaltung gesetzlicher Vorschriften und erfordert die Durchführung offizieller Ausfallzeiten.

Wes Sayeed
quelle
Gute Frage. Ich wünschte, ich hätte eine bessere Antwort.
Gute Frage - hoffentlich hält Ihre Leidensgeschichte andere davon ab, Thin Clients zu kaufen. Ich hasse all das Gepäck, das diese "wartungsarmen" Geräte mit sich bringen
Jim B,

Antworten:

4

Bevor wir loslegen, möchte ich einen pedantischen Punkt machen, der mehr der allgemeinen Leserschaft als Ihnen selbst dient.

wir schieben es einfach über SCCM

SCCM ist eine Pull-basierte Technologie. Ich weiß, was Sie gemeint haben, aber ich finde, dass bei meinen Tier-1-Leuten jede Gelegenheit, bei der ich betonen kann, dass SCCM keine Push-basierte Technologie ist, ihnen hilft, sie schneller zu verstehen.


Ich habe den Verkäufer darüber kontaktiert, aber sie sagen nur, dass es sich um ein bekanntes Problem handelt und es keine Fehlerbehebung oder Problemumgehung gibt

Das ist schade, denn es scheint, dass die Ursache für dieses Problem das eingebettete Kartenauthentifizierungsprogramm ist. Behalten Sie den Hersteller im Auge, vielleicht reparieren sie tatsächlich ihre Software.



Auf eine echte Antwort - ich sehe einige mögliche Lösungen für Sie, von denen keine besonders gut ist.

  • Konfigurieren Sie ein Wartungsfenster für diese Clients, damit der erste Neustart der Clients aus dem Schreibfilter entfernt wird. Die tatsächliche Nutzlast und der daraus resultierende Neustart erfolgen außerhalb der Geschäftszeiten, wenn keine Mitarbeiter an den Terminals anwesend sind. Dies scheint die am wenigsten schmerzhafte Option zu sein. SCCM muss nicht komplizierter sein als bisher.
  • Erstellen Sie eine lokale Gruppenrichtlinienvorlage, die dem Benutzerrecht "Anmeldung verweigern" eine Sicherheitsgruppe hinzufügt, und weisen Sie diese dann im Rahmen Ihrer Anwendungsbereitstellung zu bzw. heben Sie die Zuweisung auf.
  • Verwenden Sie PowerShell, um das Benutzerrecht "Anmeldung verweigern" festzulegen. Ich glaube, die PowerShell Community Extensions (PSCX) verfügen über Set/Get-PrivilegesCmdlets, mit denen Sie die Zuweisung von Benutzerrechten bearbeiten können
  • Sie können die API verwenden, wenn Sie möchten. Hier ist ein Beispiel .

quelle
Danke für die Antwort. Ich habe meine Frage aktualisiert, um der Umgebung Rechnung zu tragen. Es ist ein 24x7-Betrieb, daher ist Option 1 nicht durchführbar. Option 2 war das, was ich dachte, aber ich kenne keine Möglichkeit, ein Gruppenrichtlinienobjekt nach Bedarf zuzuweisen oder die Zuweisung aufzuheben. Damit bleiben die Optionen 3 und 4, die ich untersuchen werde. Ich dachte, ich müsste mich wahrscheinlich herausarbeiten. Oh und ich habe die Terminologie korrigiert :-)
Wes Sayeed
@WesSayeed Theoretisch sollten Sie in der Lage sein, lokale Gruppenrichtlinienvorlagen mit SecPol.msc zu erstellen , sie als Vorlagen zu speichern und sie secedit.exeüber ein Skript anzuwenden / zu entfernen . Ich spreche nicht über die Verwendung von Active Directory-Gruppenrichtlinien, da die zufällige Abfragezeit für Ihr knappes Wartungsfenster nicht funktioniert.
+1, ich mag diese Antwort und wusste nichts von PSCX.
MDMoore313
4

Es scheint, dass niemand auf die Möglichkeit hingewiesen hat, eine Tasksequenz zu verwenden, um dies zu handhaben. Erlauben Sie mir daher, die Vorteile aufzulisten (vorausgesetzt, Sie kennen sie im Allgemeinen nicht wirklich, aber lesen Sie sie bitte, auch wenn Sie es sind):

Wenn alles, was Sie installieren und konfigurieren, mit SCCM erledigt wird, sollten Sie in der Lage sein, eine Tasksequenz zu verwenden, um dies zu erreichen. In erster Linie für OSD ist die Verwendung eines TS nicht nur für OSD gedacht und bietet die folgenden Vorteile:

Keine Anmeldung an der Workstation

Ein TS wird ausgeführt, bevor winlogon.exe ausgeführt wird. Daher besteht keine Möglichkeit, dass sich ein Benutzer versehentlich anmeldet, da kein Anmeldefenster vorhanden ist. Was mich zu meinem zweiten Punkt bringt:

Benutzerdefinierter Hintergrundbildschirm

Sie können einen Begrüßungsbildschirm bereitstellen, der besagt, dass eine Wartung durchgeführt wird oder was auch immer Sie wirklich sagen möchten.

Ein TS ist eigentlich nur ein verherrlichtes Skript, aber es hat eine Menge Funktionen und ist so zusammengestellt, dass die Entwicklungszeit verkürzt wird, und ich habe Anwendungsfälle gefunden, die über OSD hinausgehen.

Es hört sich so an, als ob Sie bereits ein Skript haben, mit dem Sie das tun können, was Sie tun müssen. Sie sollten also in der Lage sein, dies mit minimalem Debugging in einen TS zu integrieren und loszulegen.

MDMoore313
quelle
1
+1 Ich habe mich immer gefragt, ob es reale Verwendungen für Tasksequenzen ohne OSD gibt.
Alx9r
@BigHomie; Ich habe gerade versucht, eine Bereitstellung mit einer Tasksequenz und nicht mit einer normalen Anwendung durchzuführen. Die Benutzeranmeldung wurde dadurch nicht verhindert. Der erste Schritt in der Tasksequenz besteht darin, den Computer neu zu starten. Sobald der Computer wieder hochgefahren ist, wird ein normaler Anmeldebildschirm angezeigt. Die Tasksequenz wird erst etwa eine Minute später fortgesetzt (da der Dienst auf verzögerten Start eingestellt ist). Ich kann den Dienst so einstellen, dass er sofort mit der Gruppenrichtlinie startet, sodass der Benutzer eine Fortschrittsanzeige sieht. Dies würde jedoch Anmeldungen nur entmutigen, nicht aber verhindern. Vermisse ich etwas?
Wes Sayeed
@WesSayeed !! Wird dieser TS dem Benutzer oder dem Computer angekündigt?
MDMoore313
@BigHomie; AFAIK, Tasksequenzen können nur für Computersammlungen beworben werden.
Wes Sayeed
Das habe ich vergessen. Leider habe ich letztes Jahr einen neuen Job angenommen und bin seit einiger Zeit nicht mehr im sccm-Spiel. Ich werde zwar weiterhin nach der Antwort suchen, aber ich dachte, der gleiche Mechanismus, mit dem Software während eines OSD installiert werden konnte, bevor der Anmeldebildschirm angezeigt wurde, kann auch außerhalb des OSD verwendet werden. Ich nehme an, Sie können nicht bereitgestellt werden, wenn der Computer mit WinPE gestartet wird.
MDMoore313
2

Sie haben nicht angegeben, ob die SSO-Software Active Directory-Anmeldeinformationen verwendet. Daher besteht eine Lösung darin, die Funktion "Anmeldestunden" von Active Directory zu verwenden. Es ist benutzerspezifisch, kann aber leicht in Powershell geschrieben werden ( dies ist ein Beispiel). Grundsätzlich sollten Sie die Anmeldestunden so einstellen, dass die Anmeldung in Ihrem SCCM-Aktualisierungsfenster "verweigert" wird, und die Benutzer können sich nicht bei den Clients anmelden, während SCCM dies tut. Sie müssen diesen ersten erzwungenen Neustart durchführen, der sie abmeldet (die Anmeldestundenfunktion funktioniert bei angemeldeten Benutzern nicht), ansonsten ist die Implementierung jedoch problemlos.

Nathan C
quelle
Die SSO-Software verwendet AD. Es wird lediglich ein RFID-Tag mit einem AD-Konto abgeglichen und die Anmeldeinformationen an Windows übergeben, um die Anmeldung durchzuführen. Ich habe meine Antwort aktualisiert, um zu erklären, warum ich keine Anmeldestunden verwenden kann (ich habe es versäumt, die Umgebung zu erwähnen), aber ich werde mir das Skript ansehen, auf das Sie verwiesen haben. Ich könnte in der Lage sein, so etwas vor Ort zu machen.
Wes Sayeed
-1

Vielleicht möchten Sie dies testen und sehen, ob es funktioniert:

Ein Skript zu Beginn der SCCM-Aktivität, mit dem Folgendes ausgeführt wird:

  • Entfernen Sie die Identität NT-AUTORITÄT \ Authentifizierte Benutzer aus der lokalen Benutzergruppe
  • Entfernen Sie NT AUTHORITY \ Interactive identity aus der lokalen Benutzergruppe
  • Entfernen Sie die Gruppe Domänenbenutzer aus der lokalen Benutzergruppe

Am Ende:

Fügen Sie die Sicherheitsprinzipale, die Sie entfernt haben, wieder der lokalen Benutzergruppe hinzu

Die tatsächlichen Gruppen, die Sie hinzufügen / entfernen, hängen möglicherweise davon ab, wie Ihre Computer derzeit konfiguriert sind.

Etwas mehr Trailer-Parky, könnte der Beginn der SCCM-Aktivität eine Verknüpfung zu logoff.exe in den Ordner Startmenü \ Startup von All Users kopieren (normalerweise C: \ ProgramData \ Microsoft \ Windows \ Startmenü \ Programme \ StartUp). Dies hätte zur Folge, dass eine Sitzung abgemeldet wird, sobald sie sich anmeldet. Aus Sicherheitsgründen möchten Sie möglicherweise ein Start / Herunterfahren-Skript, um diese Verknüpfung zu löschen. (Ich glaube, dass Startverknüpfungen umgangen werden können, indem die Umschalttaste während der Anmeldung gedrückt wird).

Greg Askew
quelle
Ich muss -1 dies, es würde funktionieren, aber wenn das Skript in der Mitte aufgrund eines zufälligen Fehlers oder Murphy's Law getötet wird, kann sich der Benutzer nicht anmelden und sie sind tot im Wasser, bis die IT antworten kann.
MDMoore313