web-dev-qa-db-ja.com

RDP接続のログファイルはありますか(システム名を使用)

システムをリモートで使用しているシステムのシステム名を知る方法はありますか?ログから、ユーザー名(ただし、これらは一般的なログインIDです)とIP(DHCPを使用していますが、これらは日々変化しています)を知ることができます。

左側のイベントビューアツリーのアプリケーションとサービスログ-> Windows-> ターミナルサービス-*の下。*はすべてそこのログ。ターミナルサービスのローカルセッションマネージャーの操作ログでは、IPアドレスとユーザー名のみの詳細を取得しています。

システム名を見つけることができるログはありますか?

5
user280724

さて、ここに行きます...(これは簡単ではありません;)

まず 監査を有効にする _secpol.msc内。
他のイベントがトリガーされてホスト名を取得するには早すぎるため、これが必要であることがわかりました。

  • [スタート]をクリックしてsecpol.mscと入力してから、 enter
    ローカルセキュリティポリシーウィンドウが表示されます
  • Local Policy> Audit Policyに移動します
    およびAudit account logon eventsポリシーオプションを右クリックし、Propertiesを選択します。
  • Successボックスをチェックします(失敗した試行はこの方法で記録されません)
  • secpol.mscを終了

次に、VBScriptファイル(たとえば、c:\temp\log.vbsと呼ばれる)を作成します。
(目的のログファイルの場所も編集します。ここではc:\temp\rdp.log

Function sessionNumber
 Dim oShell, oExec, sOutput, iUserPos, iUserLen, iStatePos
 Set oShell = CreateObject("WScript.Shell")
 Set oExec = oShell.Exec("query session %username%")
 sOutput = LCase(oExec.StdOut.ReadAll)
 iUserPos = InStr(sOutput,LCase(oShell.ExpandEnvironmentStrings("%username%")))
 iStatePos = InStr(sOutput,"active")
 iUserLen = Len(oShell.ExpandEnvironmentStrings("%username%"))
 sessionNumber = CInt(Trim(Mid(sOutput,iUserPos+iUserLen,iStatePos-iUserPos-iUserLen)))
End Function

Function clientName
 Dim oShell
 Set oShell = CreateObject("WScript.Shell")
 On Error Resume Next
 clientName = LCase(oShell.RegRead("HKCU\Volatile Environment\"&sessionNumber&"\CLIENTNAME"))
 If Err.Number<>0 Then
 clientName =  "unknown"
 End If
End Function

outFile="c:\temp\rdp.log"

Const ForAppending = 8

Set objFSO=CreateObject("Scripting.FileSystemObject")
Set objFile=objFSO.OpenTextFile(outFile,ForAppending,True)
objFile.Write now() & " ; " & clientName & vbCrLf
objFile.Close

最後の部分では、このスクリプトを開始するためのスケジュールされたタスクを作成します。

  • [スタート]をクリックしてtaskschd.mscと入力してから、 enter
  • 右側のペインでCreate Taskを選択します
  • Logon RDPなどの名前を付けます
  • トリガータブで New 「Begin the task」On an eventを選択します
  • 「ログ」でSecurityを選択し、「イベントID」で4624と入力します
  • ヒット Ok
  • アクションタブで選択します New 「プログラムを開始」を選択します
  • プログラムタイプcscript.exeと引数追加タイプc:\temp\log.vbs
  • ヒット Ok 二度

これで、誰かがRDP経由でログインすると、そのホスト名がc:\temp\rdp.logにログインします

ローカルログインも記録されることに注意してください(リモートにいるため、まだテストしていません:)
しかし、それは問題ではないと思います。

もちろん、log.vbsを変更して、ユーザー名、リモートIPなどを含めることもできます。

(ちなみに、Windows XPはずっと簡単でした。イベントにホスト名を記録するだけです)
たぶん誰かがより簡単な解決策を考え出すことができます:)


enter image description hereenter image description hereenter image description here


編集:

また、セキュリティイベントログにイベントID 4624があることもわかりました。Logon Type: 3のイベントIDを探してください。 RDP経由でログインしたマシンのWorkstation Nameが含まれている必要があります。

An account was successfully logged on.

Subject:
    Security ID:        NULL SID
    Account Name:       -
    Account Domain:     -
    Logon ID:       0x0

Logon Type:         3

New Logon:
    Security ID:        User-PC\User
    Account Name:       User
    Account Domain:     User-PC
    Logon ID:       0xcd5c10
    Logon GUID:     {00000000-0000-0000-0000-000000000000}

Process Information:
    Process ID:     0x0
    Process Name:       -

Network Information:
    Workstation Name:   XPS8500
    Source Network Address: -
    Source Port:        -

#2を編集

これは、完全にクリーンなWindows 7インストールからのものです。
(メインマシンはTest-pcで、ログオンしたマシンはXPS8500):

enter image description here

7
Rik