Forza disconnessione immediata dell'utente autenticato (caso di emergenza)


24

In Active Directory se si desidera impedire a un utente di accedere, è possibile disabilitare il proprio account o semplicemente reimpostare la propria password. Tuttavia, se si dispone di un utente che ha già effettuato l'accesso a una workstation e si deve impedire loro di accedere a qualsiasi risorsa il più rapidamente possibile, come si fa? Parlo di una situazione di emergenza in cui un lavoratore viene licenziato con effetto immediato e c'è il rischio che scatenino il caos se non vengono immediatamente esclusi dalla rete.

Qualche giorno fa ho dovuto affrontare un caso simile. All'inizio non ero sicuro di come comportarmi. Prevenire l'accesso degli utenti alle condivisioni di rete è facile ma non è sufficiente. Alla fine, ho spento il computer di destinazione con il Stop-Computer -ComputerName <name> -Forcecmdlet PowerShell e nel mio caso ciò ha risolto il problema. Tuttavia, in alcuni casi questa potrebbe non essere la scelta migliore, ad esempio se l'utente che è necessario interrompere è connesso su più workstation o su un computer che fornisce un servizio importante e non è possibile disattivarlo.

Qual è la migliore soluzione possibile per forzare in remoto un logoff immediato dell'utente da tutte le workstation? È possibile anche in Active Directory?


5
Bella domanda, e sono interessato a vedere le risposte. Tuttavia, in una situazione come questa, il dipendente licenziato non starebbe con una scorta di risorse umane il 100% delle volte da quando riceve la notizia della sua risoluzione fino a quando non viene scortato dall'edificio?
SEE

Sì, certo che dovrebbero essere. Sono comunque interessato a risolvere questo problema in Active Directory :)
Erathiel,

Chiamare la sicurezza e farli andare fisicamente nella posizione della persona e rimuoverli? Se sono al di fuori della tua rete, bloccali sul tuo firewall? Utilizzare lo script PowerShell per terminare tutti i processi su tutti i computer in esecuzione con tale account utente.
Zoredache,

Risposte:


20

La migliore soluzione: una guardia di sicurezza scorta la persona fuori ...

Seconda migliore soluzione:

  1. Innanzitutto, controlla il numero di sessione con qwinsta: QWINSTA / server: nomecomputer
  2. Annota l'ID della sessione.
  3. Quindi utilizzare il comando di disconnessione: LOGOFF sessionID / server: nomecomputer.
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.

Ho scritto uno script batch rudimentale per quello. Ne ho bisogno anche unixtoolsnel percorso 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
È possibile combinare questi due comandi in un file batch / powershell automatizzato? Potrebbe essere molto utile eseguire uno script rapido per disconnettersi da tutte le sessioni.
EtherDragon,

1
È possibile ottenere un elenco di tutti i computer a cui è connesso un utente?
NothingsImpossible

@NothingsImpossible - il modo in cui lo scopro è guardando il mio file server, poiché gli utenti hanno reindirizzato il profilo su un server, cerco lì sessioni di condivisione file aperte.
ETL

@NothingsImpossible Tendo a raggiungerlo usando psloggedon
BE77Y

5

Non interamente basato su AD, ma dovrebbe fare quello che vuoi.

Disabilita o scade l'account

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

o

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

Quindi disconnettere l'utente dalla propria macchina

shutdown -m "\\computername" -l

Un altro modo per disconnettersi è utilizzare un'utilità di Windows integrata, da un prompt dei comandi amministrativo

logoff 1 /SEVER:computername

Ciò disconnette l'ID sessione 1 dal computer remoto. Se non si conosce l'id di sessione (1 è l'impostazione predefinita), è possibile utilizzare quser sul computer remoto per trovarlo.


1
Ciò spegnerà la macchina, non disconnetterà l'utente, pensò, qual è la domanda.
slybloty,

2
Per favore, non fraintendetemi, ma la vostra risposta è esattamente ciò che non volevo e ho incluso tutto ciò nella mia domanda: la disabilitazione / scadenza dell'account o la modifica della password non impone la disconnessione dell'utente, ma semplicemente impedisce loro di accedere non è utile nel caso descritto nel PO.
Erathiel,

3
Il shutdowncomando di default non si spegne, ma disconnette l'utente .
Michael Hampton

Aggiunto un metodo alternativo per disconnettere l'utente, fammi sapere se è più simile a quello che stai cercando. Modifica: non ho visto la risposta di ETL, quindi gli ho dato +1 per avermi battuto sul pugno.
David V,

3
La politica del mio lavoro in genere va così: la persona viene chiamata a una "riunione" (terminazione), mentre alla riunione l'account viene disabilitato e la sessione viene disconnessa da remoto (i desktop hanno tutti server VNC protetti installati).
Avery Payne,

4

Puoi bloccare la sessione dell'utente da remoto con wmic:

1 - Innanzitutto, modifica la password utente:

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

2 - Quindi, disabilitare l'account:

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

3 - Quindi, disconnetti la sessione utente:

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

Questo ha un valore aggiunto, poiché non perderai la sessione dell'utente corrente e quindi quando sbloccherai le stazioni di lavoro, sarai in grado di vedere se stava cercando di fare qualcosa di brutto prima di essere scortato alla porta.

Tutti i crediti a Command Line Kung Fu Blog . Ci sono un sacco di cose pazze legate alla sicurezza / alla medicina legale lì dentro!

AGGIORNAMENTO: I primi due passaggi sono destinati agli utenti locali, in un ambiente di directory attiva è in realtà più semplice, disabilitare l'account e modificare la password in Active Directory, quindi eseguire il terzo comando sull'indirizzo IP dell'utente maligno.


Sfortunatamente il comando wmic..."tsdiscon" funziona solo su XP . In Vista + questo comando non può disconnettere la sessione della console.
Dico Reintegrare Monica il

0

Basta modificare le ore di accesso per l'accesso negato per tutte le ore nelle proprietà dell'utente. Ciò li disconnetterà immediatamente da dove sono stati registrati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.