终端服务TerminalService的几个使用技巧

发表于:2007-05-25来源:作者:点击数: 标签:
微软的win2000 服务器 版中带了一个终端服务Terminal Service,这个服务基于远程桌面协议RDP,他的速度非常快,也很稳定,是一个比较好的远程管理软件,不过这个终端服务有几个不方便的地方: 第一是没有改端口的地方,终端服务只能使用默认得3389端口。对于
微软的win2000服务器版中带了一个终端服务Terminal Service,这个服务基于远程桌面协议RDP,他的速度非常快,也很稳定,是一个比较好的远程管理软件,不过这个终端服务有几个不方便的地方: 
第一是没有改端口的地方,终端服务只能使用默认得3389端口。对于一个谨慎地管理员来说,服务器开着3389端口,随便哪个人都能上去试试密码;再加上前些时候微软输入法的漏洞,不需密码就是System权限。第二是没有完善的功能日志,这样什么人什么时候连结上都不知道。 

其实这两个问题都可以非常容易的解决: 
对于端口问题,微软提供了一个方法允许用户自己更改服务器端和客户端的端口: 微软的原文在:http://support.microsoft.com/suppor...s/Q187/6/23.ASP 
上面这个连接是英文的。如果愿意,可自己看。^_^ 

1、第一步,更改终端服务的服务器端设置。 
打开注册表,找到类似这样的键值HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\Wds\Repwd\Tds\Tcp, 看到那个PortNumber没有?0xd3d,这个是16进制,就是3389啦,我改...这个值是RDP(远程桌面协议)的默认值,也就是说用来配置以后新建的RDP服务的,要改已经建立的RDP服务,我们去下一个键值: 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\WinStations这里应该有一个或多个类似RDP-TCP的子健(取决于你建立了多少个RDP服务),一样改掉PortNumber。 (转者注:在这里可以在HKEY_LOCAL_MACHINE下面通过搜索3389来找到所有的portnumber项)

2、第二步,改客户端。 
服务端改了端口而客户端端口没有改变,我们岂不是白瞪眼?再来改客户端:打开客户端连接管理器,按照正常的步骤建立一个客户端连接的快捷方式,选中这个连接,然后在“文件”菜单里选择“导出”(Menu->File->Export),这个操作会生成一个cns文件,就是终端服务客户端的配置文件,你可以用文本编辑器(比如记事本)编辑这个文件,找到“Server Port=3389”,改成你要的端口,然后再选导入(Menu->File->Import),这是的客户端快捷方式已经变成你需要的端口了。 

需要主义的是,从微软主页上下载的终端服务客户端Terminal Service Client(MSI版)以及ActiveX版都不能更改端口,只有使用Win2000服务器版终端服务自带的“制作安装盘”功能制作版本可以改端口,这个功能在管理工具的“终端服务客户端生成器”(Terminal Service Client Creator)中。 

对于日志的问题,其实Terminal Service自己是有日志功能的,在管理工具中打开远程控制服务配置(Terminal Service Configration),点击“连接”,右击你想配置的RDP服务(比如RDP-TCP(Microsoft RDP5.0)),选中书签“权限”,点击左下角的“高级”,看见上面那个“审核”了吗?我们来加入一个Everyone组,这代表所有的用户,然后审核他的“连接”、“断开”、“注销”的成功和“登陆”的功能和失败就足够了,审核太多了反而不好,这个审核试记录在安全日志中的,可以从“管理工具”->“日志查看器”中查看。 
现在什么人什么时候登陆都一清二楚了,可是它却不记录客户端的IP(只能查看在线用户的ip)而是记录计算机名,要是别人起个PIG的机器名你只好受他嘲弄了。我们来自己写个程序,一切搞定,你会c么?反正我不会,vb呢?我也不会^_^,Delphi??我还是不会^_^,别急,如果你和我一样,还有一个办法,我们建立一个.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表示显示ip和端口而不是域名、协议,-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文件放在比较隐蔽的目录里就足够了,不过需要注意的是这只是一个简单的终端服务日志攻略,并没有太多的安全保障措施和权限机制,如果服务器有更高的安全要求,那还是需要通过编程后购买入侵检测 软件来完成。

原文转自:http://www.ltesting.net