首页 服务器 编程 必备知识 搜索引擎 圩日手册
站内搜索
最近浏览
推荐文章
热文排行

远程桌面连接日志脚本bat&vbs


功能:
1、每次用户通过终端服务(远程桌面)登录服务器的时候都会在脚本目录下的日志文件中添加记录(日期、时间、终端名、域名、登录用户名、终端IP地址)
2、每条记录一行,可以方便的导入excel等进行进一步的分析
3、配合vbs隐藏运行脚本,可以避免用户登录的时候看到“一闪而过”的dos窗口,运行方式隐蔽
4、对于开启了终端服务的Windows服务器建议,强烈建议设置日志记录,增强安全性~~


::Written by mwm5 http://nkmis02.blog.51cto.com 2009-10-21

@echo off
for /f "tokens=1-4 delims=: " %%i in (' netstat -an ^|find "3389" ') do set ip=%%l
for /f "tokens=1 delims= " %%i in ("%date%") do set mydate=%%i
for /f "tokens=1 delims=." %%i in ("%time%") do set mytime=%%i
::每行记录,字段名依次为:当前日期|当前时间|客户端名称|域名|帐号名|IP地址
echo %mydate% %mytime% %clientname% %userdomain% %username% %ip% >>terminal.log

将以上脚本添加到用户登录脚本中
每次登录会产生一行记录,分别为登录日期、登录时间、登录客户端名、域名、用户名、客户端IP地址
格式化输出样式如下,便于统计分析(利用excel等工具)

2009-10-21 23:36:49 PC1 Domain Administrator 192.168.1.202
2009-10-21 23:43:30 PC2 Domain Administrator 192.168.1.205
2009-10-21 23:43:30 PC3 Domain Administrator 192.168.1.203
2009-10-21 23:43:31 PC1 Domain Administrator 192.168.1.202
2009-10-21 23:43:31 PC4 Domain Administrator 192.168.1.202


直接运行,日志会存放在批处理所在目录,但是如果设置为开机脚本,日志会存放于我写的是在脚本所在文件夹。。
设置为开机脚本之后,实际使用时(非手工直接运行脚本)日志会存放在   C:\WINDOWS\System32\GroupPolicy\User \Scripts\Logon 文件夹下,所以大家用的时候可以根据需要把terminal.log写成需要的绝对路径,以方便使用,并增加安全性,呵呵

另外分享一个让该批处理隐藏运行的简单的vbs脚本

'隐藏运行批处理脚本
set WshShell=CreateObject("Wscript.Shell")
WshShell.run "cmd /c d:\Terminal_Record\Terminal_Record.bat",0


其中 d:\Terminal_Record\Terminal_Record.bat 改为你要运行的批处理的绝对路径

 

记录远程用户登录日志

对于日志的问题,其实Terminal Service自己是有日志功能的,在管理工具中打开远程控制服务配置(Terminal Service Configration),点击“连接”,右击你想配置的RDP服务(比如RDP-TCP(Microsoft RDP5.0)),选中书签“权限”,点击左下角的“高级”,看见上面那个“审核”了吗?我们来加入一个Everyone组,这代表所有的用户,然后审核他的“连接”、“断开”、“注销”的成功和“登陆”的功能和失败就足够了,审核太多了反而不好,这个审核试记录在安全日志中的,可以从“管理工具”->“日志查看器”中查看。
现在什么人什么时候登陆都一清二楚了,可是它却不记录客户端的IP(只能查看在线用户的ip)而是记录计算机名,我们可以建立一个.bat文件,叫做TSLog.bat,这个文件用来记录登录者的ip,内容如下:
time /t>>TSLog.log
netstat -n -p tcp|find ":3389">>TSLog.log
start Explorer
我来解释一下这个文件的含义:
第一行是记录用户登陆的时间,Time/t的意思是直接返回系统时间(如果不加/t,系统会等待你输入新的时间),然后我们用追加符号
>>把这个时间记入TSLog.log
第二行是记录用户的ip地址,Netstat是用来显示当前网络连接状况的命令,-n表示显緄p和端口而不是域名、协议,-p tcp是只显示
tcp协议,然后我们用管道符号“|”把这个命令的结果输出给Find命令,从输出结果中查找包含“:3389”的行(这就是我们要得客户
的ip所在行,如果你改了终端服务的端口,这个数值也要作相应的改变),最后我们同样把这个结果重定向到日志文件TSLog.log中去,
于是在TSLog.log文件中,记录格式如下:
22:40
TCP 192.168.12.28:3389 192.168.10.123:4903ESTABLISHED
22:54
TCP 192.168.12.28:3389 192.168.12.29:1039ESTABLISHED
也就是说只要这个TSLog.bat文件一运行,所有连在3389端口的ip都会被记录,那么如何让这个批处理文件运行呢?我们知道终端服务允许我们为用户自定义起始的程序,在终端服务配置中,我们覆盖用户的登陆脚本设置并指定TSLog.bat为用户登录时需要打开的脚本,这样每个用户登录后都必须执行这个脚本,因为默认得脚本(相当于SHELL环境)是Explorer(资源管理器),所以我在TSLog.bat的最后一行加上了启动Explorer的命令start Explorer,如果不加这一行命令,用户是没有办法进入桌面的。当然,如果你只需要给用户特定的SHELL:例如cmd.exe或者word.exe你也可以把start explorer替换成任意的SHELL。
这个脚本也可以有其他的写法,例如写一个脚本把每个登陆用户的ip发送到自己的信箱对于很重要的服务器也是一个很好的方法。正常情况下,一般的用户没有查看终端服务设置的权限,所以他不会知道你对登陆进行了ip审核,只要把TSLog.bat文件和TSLog.log 文件放在比较隐蔽的目录里就足够了,不过需要注意的是这只是一个简单的终端服务日志攻略,并没有太多的安全保障措施和权限机制 ,如果服务器有更高的安全要求,那还是需要通过编程后购买入侵检测 软件来完成。

 _______________________________________________________


首先建立一个bat 文件,比如:login.bat    //或者login.cmd   ,前提是你的系统上设置允许查看文件后缀名。具体设置选项,可以打开我的电脑/工具/文件夹选项/查看/   清除“隐藏己知文件类型的扩展名”前面的钩。
文件内容如下:


--------------------------------------------------------------------------------

echo off
date /t >>D:\temp\login.log
time /t >>D:\temp\login.log
echo   协议    本地IP地址            远程IP地址             连接状态 >>D:\temp\login.log
netstat -an -p tcp |find ":3389" >>D:\temp\login.log
start explorer
echo __________________________________________________________________ >>D:\temp\login.log
 


--------------------------------------------------------------------------------


其中find ":3389" 为你的3389端口,如果你改过3389端口请改成相应的端口,后面的andy.log 是记录文件的名字!可随意更改(注:要把所有的LOG结尾的文件名改成你命名的文件)。把此文件放到你系统的目录下,本文以C:\winnt 目录为例:

点击 开始--程序--管理工具--终端服务配置--链接 选择右面栏里的RDP-TCP打开属性对话框 ,打开环境选项,在初始程序中的
替代用户配置文件和客户端链接管理器向导的设置 打对号
在 用户登录时,启动下列程序里写入
c:\winnt\3389.bat
在 开始位置 中写入
c:\winnt\
点击确定
重启计算机.
      再次登录时,查看login.log文件,确定脚本是否运行正常.

[wangjy17908]
添加时间:2010-12-10
版权所有(C)2005-2015