Sofortiges Abmelden des authentifizierten Benutzers erzwingen (Notfall)


24

Wenn Sie in Active Directory verhindern möchten, dass sich ein Benutzer anmeldet, können Sie entweder sein Konto deaktivieren oder einfach sein Kennwort zurücksetzen. Wenn Sie jedoch einen Benutzer haben, der bereits an einer Arbeitsstation angemeldet ist, und Sie müssen verhindern, dass diese Benutzer so schnell wie möglich auf Ressourcen zugreifen können - wie geht das? Ich spreche von einer Notsituation, in der ein Arbeitnehmer mit sofortiger Wirkung entlassen wird und die Gefahr besteht, dass sie Schaden anrichten, wenn sie nicht sofort aus dem Netzwerk ausgesperrt werden.

Vor ein paar Tagen war ich mit einem ähnlichen Fall konfrontiert. Anfangs war ich mir nicht sicher, wie ich mich verhalten sollte. Das Verhindern des Benutzerzugriffs auf Netzwerkfreigaben ist einfach, reicht jedoch nicht aus. Schließlich habe ich den Zielcomputer mit dem Stop-Computer -ComputerName <name> -ForcePowerShell-Cmdlet ausgeschaltet und in meinem Fall das Problem behoben. In einigen Fällen ist dies jedoch möglicherweise nicht die beste Wahl. Sagen Sie, wenn der Benutzer, den Sie trennen möchten, an mehreren Arbeitsstationen oder auf einem Computer angemeldet ist, der einen wichtigen Dienst bereitstellt, und Sie ihn einfach nicht ausschalten können.

Was ist die bestmögliche Lösung, um aus der Ferne eine sofortige Benutzerabmeldung von allen Arbeitsstationen zu erzwingen? Ist das überhaupt in Active Directory möglich?


5
Gute Frage, und ich bin daran interessiert, die Antworten zu sehen. Wäre der entlassene Mitarbeiter in einer solchen Situation nicht zu 100% von dem Zeitpunkt an, an dem er die Nachricht von seiner Entlassung erhält, bis er aus dem Gebäude begleitet wird, mit einem HR-Begleiter?
EEAA

Ja, sicher sollten sie sein. Ich bin jedoch daran interessiert, dieses Problem in
Bezug auf

Rufen Sie die Sicherheitsbehörde an und lassen Sie sie physisch zum Standort der Person gehen und sie entfernen? Wenn sie sich außerhalb Ihres Netzwerks befinden, blockieren Sie sie in Ihrer Firewall? Verwenden Sie Ihr Powershell-Skript, um alle Prozesse auf allen Computern, die mit diesem Benutzerkonto ausgeführt werden, abzubrechen.
Zoredache

Antworten:


20

Beste Lösung: Ein Wachmann eskortiert die Person aus ...

Zweitbeste Lösung:

  1. Überprüfen Sie zunächst die Sitzungsnummer mit qwinsta: QWINSTA / server: computername
  2. Notieren Sie die Sitzungs-ID.
  3. Verwenden Sie dann den Abmeldebefehl: LOGOFF sessionID / server: computername.
C:\>qwinsta /?
Display information about Remote Desktop Sessions.

QUERY SESSION [sessionname | username | sessionid]
              [/SERVER:servername] [/MODE] [/FLOW] [/CONNECT] [/COUNTER] [/VM]

  sessionname         Identifies the session named sessionname.
  username            Identifies the session with user username.
  sessionid           Identifies the session with ID sessionid.
  /SERVER:servername  The server to be queried (default is current).
  /MODE               Display current line settings.
  /FLOW               Display current flow control settings.
  /CONNECT            Display current connect settings.
  /COUNTER            Display current Remote Desktop Services counters information.
  /VM                 Display information about sessions within virtual machines.


C:\>logoff /?
Terminates a session.

LOGOFF [sessionname | sessionid] [/SERVER:servername] [/V] [/VM]

  sessionname         The name of the session.
  sessionid           The ID of the session.
  /SERVER:servername  Specifies the Remote Desktop server containing the user
                      session to log off (default is current).
  /V                  Displays information about the actions performed.
  /VM                 Logs off a session on server or within virtual machine. The unique ID of the session needs to be specified.

Ich habe dafür ein rudimentäres Batch-Skript geschrieben. Ich brauche auch welche unixtoolsauf dem Weg psexec.

@ECHO OFF
:: Script to log a user off a remote machine
::
:: Param 1: The machine
:: Param 2: The username

psexec \\%1 qwinsta | grep %2 | sed 's/console//' | awk '{print $2}' > %tmp%\sessionid.txt
set /p sessionid=< %tmp%\sessionid.txt
del /q %tmp%\sessionid.txt
psexec \\%1 logoff %sessionid% /v

2
Ist es möglich, diese beiden Befehle zu einer automatisierten Batch- / Powershell-Datei zu kombinieren? Es kann sehr nützlich sein, nur ein schnelles Skript auszuführen, um alle Sitzungen abzumelden.
EtherDragon

1
Ist es möglich, eine Liste aller Computer abzurufen, mit denen ein Benutzer verbunden ist?
NothingsImpossible

@NothingsImpossible - Wenn ich das herausfinde, schaue ich auf meinen Dateiserver. Da Benutzer ihr Profil auf einen Server umgeleitet haben, suche ich dort nach offenen Dateifreigabesitzungen.
ETL

@NothingsImpossible Ich neige dazu, das mit psloggedon
BE77Y

5

Nicht ganz AD-basiert, sollte aber tun, was Sie wollen.

Konto deaktivieren oder verfallen lassen

import-module activedirectory
set-aduser -identity "username" -accountexperationdate "12:09 pm"

oder

set-aduser -identity "username" -enabled $false

Melden Sie dann den Benutzer von seinem Computer ab

shutdown -m "\\computername" -l

Eine andere Möglichkeit, sich vom Benutzer abzumelden, ist die Verwendung eines integrierten Windows-Dienstprogramms über eine administrative Eingabeaufforderung

logoff 1 /SEVER:computername

Dadurch wird die Sitzungs-ID 1 vom Remotecomputer abgemeldet. Wenn Sie die Sitzungs-ID nicht kennen (1 ist die Standardeinstellung), können Sie sie mit quser auf dem Remotecomputer suchen.


1
Das wird die Maschine herunterfahren, nicht den Benutzer abmelden, dachte, was die Frage war.
Slybloty

2
Verstehen Sie mich bitte nicht falsch, aber Ihre Antwort ist genau das, was ich nicht wollte, und ich habe all das in meine Frage aufgenommen: Das Deaktivieren / Ablaufen des Kontos oder das Ändern des Passworts erzwingt nicht das Abmelden des Benutzers, sondern verhindert lediglich, dass sich dieser anmeldet ist in dem im OP beschriebenen Fall nicht von Nutzen.
Erathiel,

3
Der shutdownBefehl wird standardmäßig nicht beendet, sondern meldet den Benutzer ab .
Michael Hampton

Es wurde eine alternative Methode zum Abmelden des Benutzers hinzugefügt. Lassen Sie mich wissen, ob dies dem entspricht, wonach Sie suchen. Bearbeiten: ETL hat die Antwort nicht gesehen, also hat er +1 gegeben, weil er mich geschlagen hat.
David V

3
Die Richtlinien bei meiner Arbeit lauten normalerweise wie folgt: Die Person wird zu einer "Besprechung" (Beendigung) gerufen, während bei der Besprechung das Konto deaktiviert und die Sitzung remote abgemeldet wird (auf allen Desktops sind gesicherte VNC-Server installiert).
Avery Payne

4

Sie können die Sitzung des Benutzers remote mit wmic sperren:

1 - Ändern Sie zuerst das Benutzerpasswort:

C:\> wmic /node:[IPaddr] /user:[Admin] /password:[password] process call
  create "net user [user] [NewPassword]"

2 - Deaktivieren Sie dann das Konto:

C:\> wmic /node:[IPaddr] /user:[Admin] /password:[password] process call
  create "net user [user] /active:no"

3 - Trennen Sie dann die Benutzersitzung:

C:\> wmic /node:[IPaddr] /user:[Admin] /password:[password] process call
  create "tsdiscon"

Dies hat einen Mehrwert, da Sie die aktuelle Benutzersitzung nicht verlieren und daher beim Entsperren der Workstations sehen können, ob er versucht hat, etwas Böses zu tun, bevor er zur Tür eskortiert wird.

Alle Credits für Command Line Kung Fu Blog . Es gibt eine Menge verrückter Dinge im Zusammenhang mit Sicherheit und Forensik!

UPDATE: Die ersten beiden Schritte richten sich an lokale Benutzer. In einer Active Directory-Umgebung ist es tatsächlich einfacher, das Konto zu deaktivieren und das Kennwort in AD zu ändern. Führen Sie dann den dritten Befehl für die IP-Adresse des böswilligen Benutzers aus.


Leider wmic..."tsdiscon" funktioniert der Befehl nur unter XP . Unter Vista + kann dieser Befehl die Konsolensitzung nicht trennen.
Ich sage Reinstate Monica

0

Ändern Sie einfach die Anmeldestunden in Anmeldeverweigerung für alle Stunden in den Benutzereigenschaften. Dadurch werden sie sofort von dem Ort abgemeldet, an dem sie angemeldet sind.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.