web-dev-qa-db-fra.com

Forcer la déconnexion immédiate de l'utilisateur authentifié (cas d'urgence)

Dans Active Directory, si vous souhaitez empêcher un utilisateur de se connecter, vous pouvez désactiver son compte ou simplement réinitialiser son mot de passe. Cependant, si un utilisateur est déjà connecté à un poste de travail et que vous devez l'empêcher d'accéder aux ressources le plus rapidement possible - comment procédez-vous? Je parle d'une situation d'urgence dans laquelle un travailleur est licencié avec effet immédiat et il y a un risque qu'il fasse des ravages s'il n'est pas immédiatement verrouillé du réseau.

Il y a quelques jours, j'ai été confronté à un cas similaire. Au début, je ne savais pas trop comment agir. Il est facile d'empêcher l'accès des utilisateurs aux partages réseau, mais cela ne suffit pas. Finalement, j'ai éteint l'ordinateur cible avec le Stop-Computer -ComputerName <name> -Force Applet de commande PowerShell et dans mon cas, cela a résolu le problème. Cependant, dans certains cas, cela peut ne pas être le meilleur choix, par exemple si l'utilisateur que vous devez couper est connecté sur plusieurs postes de travail ou sur un ordinateur qui fournit un service important et que vous ne pouvez tout simplement pas le désactiver.

Quelle est la meilleure solution possible pour forcer à distance une déconnexion immédiate de l'utilisateur de tous les postes de travail? Est-ce même possible dans Active Directory?

25
Erathiel

Meilleure solution: un gardien de sécurité escorte la personne ...

Deuxième meilleure solution:

  1. Tout d'abord, vérifiez le numéro de session avec qwinsta: QWINSTA/serveur: nomordinateur
  2. Notez l'ID de session.
  3. Utilisez ensuite la commande de déconnexion: 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.

J'ai écrit un script batch rudimentaire pour cela. J'ai besoin de unixtools dans le chemin ainsi que 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
21
ETL

Pas entièrement basé sur AD, mais devrait faire ce que vous voulez.

Désactiver ou expirer le compte

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

ou

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

Déconnectez ensuite l'utilisateur de sa machine

shutdown -m "\\computername" -l

Une autre façon de déconnecter l'utilisateur consiste à utiliser un utilitaire Windows intégré, à partir d'une invite de commande administrative

logoff 1 /SEVER:computername

Cela déconnecte l'ID de session 1 de l'ordinateur distant. Si vous ne connaissez pas l'ID de session (1 par défaut), vous pouvez utiliser quser sur la machine distante pour le trouver.

5
David V

Vous pouvez verrouiller la session de l'utilisateur à distance avec wmic:

1 - Tout d'abord, changez le mot de passe utilisateur:

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

2 - Ensuite, désactivez le compte:

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

3 - Ensuite, déconnectez la session utilisateur:

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

Cela a une valeur ajoutée, car vous ne perdrez pas la session utilisateur en cours et donc lorsque vous déverrouillerez les postes de travail, vous pourrez voir s'il essayait de faire quelque chose de méchant avant d'être escorté jusqu'à la porte.

Tous les crédits à Command Line Kung Fu Blog . Il y a un tas de choses folles liées à la sécurité/criminalistique là-dedans!

MISE À JOUR: Les deux premières étapes sont destinées aux utilisateurs locaux, dans un environnement Active Directory est en fait plus facile, désactivez le compte et modifiez le mot de passe dans AD, puis exécutez la 3e commande par rapport à l'adresse IP de l'utilisateur malveillant.

4
Gabriel Talavera

Modifiez simplement les heures d'ouverture de session en ouverture de session refusée pour toutes les heures dans les propriétés de l'utilisateur. Cela les déconnectera immédiatement de l'endroit où ils sont connectés.

0
Guestposter