3.9 Windows 2000/2003 Server的入侵检测

在3.5节里介绍了Windows 2000/2003 Server的安全配置,经过精心配置的Windows 2000/2003 Server服务器可以防御90%以上的入侵和渗透,但是,系统安全是一个连续的过程,随着新漏洞的出现和服务器应用的变化,系统的安全状况也在不断变化着,同时由于攻防是矛盾的统一体,进攻和防御的技术也处在不断的转换中,因此,再高明的系统管理员也不能保证一台正在提供服务的服务器长时间绝对不被入侵。

所以,安全配置服务器并不是安全工作的结束,相反却是漫长乏味的安全工作的开始,最后介绍一些Windows 2000/2003 Server服务器的入侵检测的初步技巧,来帮助读者长期维护服务器的安全。

注意:

这里所说的入侵检测指的是利用Windows 2000/2003 Server自身的功能及系统管理员自己编写的软件/脚本进行的检测,而不关心使用防火墙或入侵检测系统的内容。

入侵的检测主要还是根据应用来进行,提供了相应的服务就应该有相应的检测分析系统来进行保护,对于一般的主机来说,主要应该注意以下几个方面:

1. 基于80端口入侵的检测

WWW服务是最常见的服务之一,而且由于这个服务面对广大用户,服务的流量和复杂度都很高,所以针对这个服务的漏洞和入侵技巧也最多。对于Windows 2000/2003 Server来说,IIS一直是系统管理员比较头疼的一部分,幸好IIS自带的日志功能从某种程度上可以成为入侵检测的得力帮手。大多数情况下,IIS的日志会忠实地记录它接收到的任何请求(也有特殊的不被IIS记录的攻击),所以,一个优秀的系统管理员应该擅长利用这点来发现入侵的企图,从而保护自己的系统。但是,IIS的日志一般数十兆,流量大的网站甚至数十吉,人工检查几乎没有可能,唯一的选择就是使用日志分析软件(其实就是文本过滤器)。还有一个简单的方法:

比方说用户想知道有没有人从80端口上试图取得站点的Global.asa文件,可以使用以下的CMD命令:

      find “Global.asa” ex010318.log /i

这个命令使用的是Windows 2000/2003 Server自带的find.exe工具,可以轻松地从文本文件中找到想过滤的字符串,“Global.asa”是需要查询的字符串,ex010318.log是待过滤的文本文件,/i代表忽略大小写。

无论是基于日志分析软件或者是Find命令,用户都可以建立一张敏感字符串列表,包含已有的IIS漏洞,以及未来将要出现的漏洞可能会调用的资源(比如Global.asa或者cmd。exe),通过过滤这张不断更新的字符串表,一定可以尽早了解入侵者的行动。

需要提醒的是,使用任何日志分析软件都会占用一定的系统资源,因此,对于IIS日志分析这样低优先级的任务,放在夜里空闲时自动执行会比较合适,如果再写一段脚本把过滤后的可疑文本发送给系统管理员,那就更加完美了。同时,如果敏感字符串表较大,过滤策略复杂,建议还是用C语言写一个专用程序会比较好。

2. 基于安全日志的检测

通过基于IIS日志的入侵检测,能提前知道窥伺者的行踪,但是IIS日志不是万能的,它在某种情况下甚至不能记录来自80端口的入侵,通过对IIS日志系统的分析,IIS只有在一个请求完成后才会写入日志,换而言之,如果一个请求中途失败,日志文件中是不会有它的踪影的(这里的中途失败并不是指发生HTTP400错误这样的情况,而是从TCP层上没有完成HTTP请求,例如在POST大量数据时异常中断),对于入侵者来说,就有可能绕过日志系统完成大量的活动。

而且,对于非80 Only的主机,入侵者也可以从其他的服务进入服务器,因此建立一套完整的安全检测系统是非常必要的。

Windows 2000/2003 Server自带了相当强大的安全日志系统,从用户登录到特权的使用都有非常详细的记录,可惜的是,默认安装下安全审核是关闭的,以至于一些主机被黑客袭击后根本没法追踪入侵者。所以,用户要做的第一步是打开必要的审核,一般来说,应同时打开登录事件与账户管理的成功和失败审核,而其他的审核也要打开失败审核,这样可以使得入侵者一不小心就会暴露。

仅仅打开安全审核并没有完全解决问题,如果没有很好的配置安全日志的大小及覆盖方式,一个老练的入侵者就能够通过洪水般的伪造入侵请求覆盖掉他真正的行踪。通常情况下,将安全日志的大小指定为50 MB,并且只允许覆盖7天前的日志可以避免上述情况的出现。

设置了安全日志却不去检查跟没有设置安全日志几乎一样糟糕(唯一的优点是被黑客袭击以后可以追查入侵者),所以,制定一个安全日志的检查机制也是非常重要的。

除了安全日志以外,系统日志和应用程序日志也是非常好的辅助检测工具,一般来说,入侵者除了在安全日志中留下痕迹,在系统和应用程序日志中也会留下蛛丝马迹,作为系统管理员,要有不放过任何异常的态度,这样入侵者就很难隐藏他们的行踪。

3. 文件访问日志与关键文件保护

除了系统默认的安全审核外,对于关键的文件,还要加设文件访问日志,记录对他们的访问。

文件访问有很多的选项:访问、修改、执行、新建、属性更改……一般来说,关注访问和修改就能起到很大的监视作用。例如,如果用户监视了系统目录的修改、创建,甚至部分重要文件的访问(例如cmd.exe,net.exe,system32目录),那么,入侵者就很难安放后门而不引起用户的注意,要注意的是,监视的关键文件和项目不能太多,否则不仅增加系统负担,还会扰乱日常的日志监测工作。

关键文件不仅仅指的是系统文件,还包括有可能对系统管理员/其他用户构成危害的任何文件,例如系统管理员的配置、桌面文件等,这些都是有可能用来窃取系统管理员资料/密码的。

4. 进程监控

进程监控技术是追踪木马后门的另一个有力武器,90%以上的木马和后门是以进程的形式存在的,作为系统管理员,了解服务器上运行的每个进程是职责之一,做一份每台服务器运行进程的列表非常必要,能帮助管理员一眼就发现入侵进程,异常的用户进程或者异常的资源占用都有可能是非法进程。除了进程外,DLL也是危险的东西,例如把原本是exe类型的木马改写为dll后,使用rundll32运行就具有一些迷惑性。

5. 注册表校验

一般来说,木马或者后门都会利用注册表来再次运行自己,所以,校验注册表来发现入侵也是常用的手法之一。一般来说,如果一个入侵者只懂得使用流行的木马,那么由于普通木马只能写入特定的几个键值(比如Run、Runonce等),查找起来是相对容易的。但是对于可以自己编写/改写木马的人来说,注册表的任何地方都可以藏身,靠手工查找就没有可能了。应对的方法是监控注册表的任何改动,这样改写注册表的木马就没有办法遁形了。监控注册表的软件非常多,很多追查木马的软件都带有这样的功能,一个监控软件加上定期对注册表进行备份,万一注册表被非授权修改,系统管理员也能在最短的时间内恢复。

6. 端口监控

虽然说不使用端口的木马已经出现,但是大部分的后门和木马还是使用TCP连接的。监控端口的状况对于由于种种原因不能封锁端口的主机来说是非常重要的,对于系统管理员来说,了解自己服务器上开放的端口甚至比对进程的监控更加重要。常常使用netstat查看服务器的端口状况是一个良好的习惯,一旦发现异常的端口,可以使用特殊的程序来关联端口、可执行文件和进程(如inzider就有这样的功能,它可以发现服务器监听的端口并找出与该端口关联的文件,inzider可以到http://www.nttoolbox.com去下载),这样无论是使用TCP还是UDP的木马都无处藏身。

7. 终端服务的日志监控

单独将终端服务的日志监控分列出来是有原因的,微软Windows 2000/2003 Server服务器版本中自带的终端服务Terminal Service是一个基于远程桌面协议(RDP)的工具,它的速度非常快,也很稳定,可以成为一个很好的远程管理软件,但是因为这个软件功能强大而且只受到密码的保护,所以也非常危险,一旦入侵者拥有了管理员密码,就能够像本机一样操作远程服务器。虽然很多人都在使用终端服务来进行远程管理,但是,并不是人人都知道如何对终端服务进行审核,大多数的终端服务器上并没有打开终端登录的日志,其实打开日志审核是很容易的,在管理工具中打开远程控制服务配置,单击“连接”,右击想配置的RDP服务,依次选中书签“权限”→“高级”→“审核”,加入一个Everyone组,这代表所有的用户,然后审核他的“连接”、“断开”、“注销”、“登录”的成功和失败就足够了,这个审核是记录在安全日志中的,可以从“管理工具”→“日志查看器”中查看。

注意:

这里不记录客户端的IP,而是记录计算机名。

8. 陷阱技术

早期的陷阱技术只是一个伪装的端口服务用来监测扫描,随着矛盾的不断升级,现在的陷阱服务或者陷阱主机已经越来越完善,越来越像真正的服务,不仅能截获半开式扫描,还能伪装服务的回应并记录入侵者的行为,从而帮助判断入侵者的身份。