サーバーでPowerShell(またはその他の方法)を使用してリモートデスクトップクライアントのIPアドレスを確認する方法はありますか? (Windows Server 2008 R2 x64を使用しています)
編集:私はnetstatのstdoutをgrepして非常に実行可能なこの情報を取得できることがわかりました。クライアントが接続したときにスクリプト/シェルコマンドをどのようにトリガーできますか?
さて、私はtask scheduler
Windowsに付属のアプリケーションは、イベントログのイベントが生成されたときにトリガーされるバッチスクリプトを実行できるように構成できます。 UIを使用して、イベントタイプ、イベントソース、イベントIDを選択します。この場合、4264を使用しました(はい、すべてのログオンタイプをキャプチャします)。ここでは、代わりに単純なバッチスクリプトを使用しました。
SET logfile="rdp_ip_logs.log"
date /T>>%logfile%
time /T>>%logfile%
netstat -n | find ":3389" | find "ESTABLISHED">>%logfile%
また、.NETでイベントの書き込みをサブスクライブ/リッスンする方法について、この非常に役立つ例を見つけました: http://msdn.Microsoft.com/en-us/library/bb552514(v = vs.90) .aspx Webベースの検査のために、特定のイベントをデータベースに書き込むために代わりにそれを使用することになります。
このソリューションの唯一の欠点は、リモートデスクトップサービスを有効にしていて、複数のユーザーが接続している場合、netstat出力でそれらを区別できないことです。
コマンドプロンプトから次のコマンドを実行して、RDP(ポート3389)に接続されているリモートIPのリストを取得できます。
netstat -n | find ":3389" | find "ESTABLISHED"
これは、PowerShellでスクリプト化できると確信しています(または単純な古いバッチファイルでも可能です)。興味があれば、明日の例を提供できます。
スクリプトを記述する必要がない場合は、セキュリティイベントログでイベントID 4624を確認できます。次の行があります。
送信元ネットワークアドレス:192.168.xxx.xxx