Força logoff imediato do usuário autenticado (caso de emergência)

24

No Active Directory, se você quiser impedir que um usuário faça o login, você pode desativar sua conta ou simplesmente redefinir sua senha. No entanto, se você tiver um usuário que já tenha efetuado login em uma estação de trabalho e precisar impedi-los de acessar recursos o mais rápido possível - como você faz isso? Falo de uma situação de emergência em que um trabalhador é demitido com efeito imediato e existe o risco deles causarem estragos se não forem bloqueados imediatamente da rede.

Há alguns dias, enfrentei um caso semelhante. No começo eu não sabia como agir. Evitar o acesso do usuário aos compartilhamentos de rede é fácil, mas isso não é suficiente. Eventualmente, desliguei o computador de destino com o cmdlet Stop-Computer -ComputerName <name> -Force PowerShell e, no meu caso, isso resolveu o problema. No entanto, em alguns casos, isso pode não ser a melhor escolha, digamos, se o usuário que você precisa interromper estiver conectado em várias estações de trabalho ou em um computador que fornece um serviço importante e você não conseguir desativá-lo.

Qual é a melhor solução possível para forçar remotamente um logoff imediato do usuário de todas as estações de trabalho? Isso é possível no Active Directory?

    
por Erathiel 14.02.2014 / 17:40

4 respostas

19

Melhor solução: Um guarda de segurança escolta a pessoa para fora ...

Segunda melhor solução:

  1. Primeiro, verifique o número da sessão com qwinsta: QWINSTA / server: computername
  2. Anote o ID da sessão.
  3. Em seguida, use o comando logoff: 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.

Eu escrevi um script em lote rudimentar para isso. Eu preciso de alguns unixtools no caminho, bem como 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
    
por 14.02.2014 / 19:07
5

Não é totalmente baseado em AD, mas deve fazer o que você quiser.

Desativar ou expirar conta

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

ou

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

Em seguida, faça o logout do usuário em sua máquina

shutdown -m "\computername" -l

Outra maneira de fazer logoff do usuário é usar um utilitário interno do Windows, a partir de um prompt de comando administrativo

logoff 1 /SEVER:computername

Isso faz logoff id de sessão 1 do computador remoto. Se você não sabe o ID da sessão (1 é o padrão), então você pode usar o quser na máquina remota para encontrá-lo.

    
por 14.02.2014 / 18:12
4

Você pode bloquear a sessão do usuário remotamente com o wmic:

1 - Primeiro, altere a senha do usuário:

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

2 - Em seguida, desative a conta:

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

3 - Então, desconecte a sessão do usuário:

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

Isso tem um valor agregado, já que você não perderá a sessão atual do usuário e, portanto, ao desbloquear as estações de trabalho, poderá ver se ele estava tentando fazer algo desagradável antes de ser levado até a porta.

Todos os créditos para Linha de Comando do Kung Fu Blog . Há um monte de coisas relacionadas à segurança / análise forense lá!

ATUALIZAÇÃO: As duas primeiras etapas são destinadas a usuários locais, em um ambiente de diretório ativo é realmente mais fácil, desabilitar a conta e alterar a senha no AD e, em seguida, executar o terceiro comando contra o endereço IP do usuário mal-intencionado.

    
por 14.02.2014 / 23:04
0

Basta alterar as horas de logon para o login negado por todas as horas nas propriedades do usuário. Isso os desconectará imediatamente de onde quer que eles estejam conectados.

    
por 25.05.2018 / 18:47