web-dev-qa-db-ja.com

認証済みユーザーの即時ログオフを強制します(緊急の場合)

Active Directoryでは、ユーザーがログインできないようにする場合は、ユーザーのアカウントを無効にするか、単にパスワードをリセットします。ただし、すでにワークステーションにログインしているユーザーがいて、そのユーザーがリソースにできるだけ早くアクセスできないようにする必要がある場合は、どうすればよいでしょうか。労働者がすぐに解雇され、ネットワークからすぐに締め出されない場合、従業員が大混乱を起こす危険がある緊急事態について話します。

数日前、私は同様のケースに直面しました。最初はどう行動したらいいのか分かりませんでした。ユーザーがネットワーク共有にアクセスするのを防ぐのは簡単ですが、これだけでは不十分です。結局、私はStop-Computer -ComputerName <name> -Force PowerShellコマンドレットと私の場合、これで問題は解決しました。ただし、場合によっては、これは最適な選択ではない可能性があります。たとえば、遮断する必要のあるユーザーが複数のワークステーションまたは重要なサービスを提供するコンピューターにログインしていて、オフにできない場合などです。

すべてのワークステーションからのユーザーの即時ログオフをリモートで強制するための最良の解決策は何ですか?これはActive Directoryでも可能ですか?

25
Erathiel

最善の解決策:警備員が人を護衛します...

次善のソリューション:

  1. まず、qwinstaでセッション番号を確認します:QWINSTA/server:computername
  2. セッションIDを書き留めます。
  3. 次に、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.

そのための基本的なバッチスクリプトを作成しました。パスにいくつかのunixtoolspsexecが必要です。

@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

完全にADベースではありませんが、必要なことを行う必要があります。

アカウントを無効または期限切れにする

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

または

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

次に、ユーザーをマシンからログオフさせます

shutdown -m "\\computername" -l

ユーザーをログオフする別の方法は、管理コマンドプロンプトから組み込みのWindowsユーティリティを使用することです

logoff 1 /SEVER:computername

これにより、リモートコンピューターからセッションID 1がログオフされます。セッションID(1がデフォルト)がわからない場合は、リモートマシンに対してquserを使用して検索できます。

5
David V

Wmicを使用して、ユーザーのセッションをリモートでロックできます。

1-最初に、ユーザーパスワードを変更します。

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

2-次に、アカウントを無効にします。

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

3-次に、ユーザーセッションを切断します。

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

現在のユーザーセッションを失うことがないため、ワークステーションのロックを解除すると、ドアにエスコートされる前に、彼が何か厄介なことをしようとしていたかどうかを確認できるようになります。

Command Line Kung Fu Blog のすべてのクレジット。そこには、セキュリティ/フォレンジック関連のクレイジーなものがたくさんあります!

更新:最初の2つの手順はローカルユーザーを対象としています。ActiveDirectory環境では実際には簡単です。アカウントを無効にし、ADでパスワードを変更してから、悪意のあるユーザーのIPアドレスに対して3番目のコマンドを実行します。

4

ユーザープロパティで、ログオン時間をすべての時間のログオン拒否に変更するだけです。これにより、ログインしている場所からすぐにログアウトされます。

0
Guestposter