Bem, aqui vai ... (isso não vai ser fácil;)
Primeiro, habilite a auditoria em secpol.msc
.
Achei que isso é necessário porque os outros eventos foram acionados cedo demais para obter o nome do host.
- Clique em Iniciar, digite
secpol.msc
e, em seguida, pressione enter .
a janela Política de Segurança Local será exibida - agora navegue até
Local Policy
>Audit Policy
e clique com o botão direito na opçãoAudit account logon events
policy e escolhaProperties
. - Agora, verifique a caixa
Success
(tentativas malsucedidas não serão registradas dessa maneira) - Sair de
secpol.msc
Agora crie um arquivo VBScript (por exemplo, chamado c:\temp\log.vbs
):
(também edite a localização do arquivo de log desejado, aqui 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
Agora, para a última parte, crie uma tarefa agendada para iniciar este script.
- Clique em Iniciar, digite
taskschd.msc
e, em seguida, pressione enter . - Escolha
Create Task
no painel direito - Nomeie-o como
Logon RDP
ou algo - Na guia Trigger, escolha Novo e escolha "Iniciar a tarefa"
On an event
- Em "Log", escolha
Security
e em "ID do evento" digite4624
- Clique em Ok
- Na aba Ação, escolha Novo e escolha "Iniciar um programa"
- No tipo de programa
cscript.exe
e em Adicionar tipo de argumentoc:\temp\log.vbs
- Pressione Ok duas vezes
Agora, quando alguém faz login via RDP, seu nome de host é registrado em c:\temp\rdp.log
Note que também logins locais serão registrados (eu não testei isso ainda porque estou em um controle remoto :)
mas eu acho que isso não é um problema.
Você poderia, é claro, adaptar o log.vbs
para incluir nome de usuário, ip remoto ... etc.
(pfew, o Windows XP foi muito mais fácil. Esse apenas registra o nome do host no evento)
Talvez alguém possa encontrar uma solução mais fácil:)
Editar:
Tambémdescobrique,nologdeeventosdesegurança,háasIDsdeeventos4624.ProcureaquelascomLogonType:3
.EledeveconteroWorkstationName
damáquinaqueefetuouloginviaRDP.
Anaccountwassuccessfullyloggedon.Subject:SecurityID:NULLSIDAccountName:-AccountDomain:-LogonID:0x0LogonType:3NewLogon:SecurityID:User-PC\UserAccountName:UserAccountDomain:User-PCLogonID:0xcd5c10LogonGUID:{00000000-0000-0000-0000-000000000000}ProcessInformation:ProcessID:0x0ProcessName:-NetworkInformation:WorkstationName:XPS8500SourceNetworkAddress:-SourcePort:-
Editar#2
IstoédeumainstalaçãodoWindows7completamentelimpa.
(AmáquinaprincipaléTest-pc
eamáquinacomaqualeufizlogonéXPS8500
):