当前位置: 首页 > 图文教程 > 服务器 > 安全防护 > 网络入侵检测初步探测方法

安全防护
服务器安全设置(十六)
服务器安全设置(十七)
服务器安全设置(十八)
服务器安全设置(十九)
服务器安全设置(二十)
服务器安全设置(二十一)
服务器安全设置(二十二)
Windows Server 2003 虚拟主机的安全配置
Win2000 Server入侵监测
Web服务器的安全和攻击防范 (一)
Web服务器的安全和攻击防范 (二)
Web服务器的安全和攻击防范 (三)
Web服务器的安全和攻击防范 (四)
Web服务器的安全和攻击防范 (五)
安全配置和维护Apache WEB Server (上)
安全配置和维护Apache WEB Server (下)
安全性与IIS (一)
安全性与IIS (二)
安全性与IIS (三)
安全性与IIS (四)

安全防护 中的 网络入侵检测初步探测方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-18   浏览: 49 ::
收藏到网摘: n/a

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

  所以,安全配置服务器并不是安全工作的结束,相反却是漫长乏味的安全工作的开始,本文我们将初步探讨Win2000服务器入侵检测的初步技巧,希望能帮助您长期维护服务器的安全。

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

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

  WWW服务大概是最常见的服务之一了,而且由于这个服务面对广大用户,服务的流量和复杂度都很高,所以针对这个服务的漏洞和入侵技巧也最多。对于NT来说,IIS一直是系统管理员比较头疼的一部分,不过好在IIS自带的日志功能从某种程度上可以成为入侵检测的得力帮手。IIS自带的日志文件默认存放在System32/LogFiles目录下,一般是按24小时滚动的,在IIS管理器中可以对它进行详细的配置。

  我们假设一台WEB服务器,开放了WWW服务,你是这台服务器的系统管理员,已经小心地配置了IIS,使用W3C扩展的日志格式,并至少记录了时间(Time)、客户端IP(Client IP)、方法(Method)、URI资源(URI Stem)、URI查询(URI Query),协议状态(Protocol Status),我们用最近比较流行的Unicode漏洞来进行分析:打开IE的窗口,在地址栏输入:127.0.0.1/scripts/..%c1% 1c../winnt/system32/cmd.exe?/c+dir默认的情况下你可以看到目录列表,让我们来看看IIS的日志都记录了些什么,打开Ex010318.log(Ex代表W3C扩展格式,后面的一串数字代表日志的记录日期):07:42:58 127.0.0.1 GET /scripts/..\../winnt/system32\cmd.exe /c+dir 200上面这行日志表示在格林威治时间07:42:58(就是北京时间23:42:58),有一个家伙(入侵者)从127.0.0.1的IP在你的机器上利用Unicode漏洞(%c1%1c被解码为“\”,实际的情况会因为Windows版本的不同而有略微的差别)运行了cmd.exe,参数是/c dir,运行结果成功(HTTP 200代表正确返回)。

  大多数情况下,IIS的日志会忠实地记录它接收到的任何请求(也有特殊的不被IIS记录的攻击,这个我们以后再讨论)。但是,IIS的日志动辄数十兆、流量大的网站甚至数十G,人工检查几乎没有可能,唯一的选择就是使用日志分析软件,用任何语言编写一个日志分析软件(其实就是文本过滤器)都非常简单。

  告诉大家一个简单的方法,比方说你想知道有没有人从80端口上试图取得你的Global.asa文件,可以使用以下的命令:find “Global.asa” ex010318.log /i。这个命令使用的是NT自带的find.exe工具,可以轻松的从文本文件中找到你想过滤的字符串,“Global.asa”是需要查询的字符串,ex010318.log是待过滤的文本文件,/i代表忽略大小写。因为我无意把这篇文章写成微软的Help文档,所以关于这个命令的其他参数以及它的增强版FindStr.exe的用法请去查看Win2000的帮助文件。

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

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

  2.基于安全日志的检测

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

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

  Win2000自带了相当强大的安全日志系统,从用户登录到特权的使用都有非常详细的记录,可惜的是,默认安装下安全审核是关闭的,以至于一些主机被黑后根本没法追踪入侵者。所以,我们要做的第一步是在管理工具-本地安全策略-本地策略-审核策略中打开必要的审核,一般来说,登录事件与账户管理是我们最关心的事件,同时打开成功和失败审核非常必要,其他的审核也要打开失败审核,这样可以使得入侵者步步维艰,一不小心就会露出马脚。仅仅打开安全审核并没有完全解决问题,如果没有很好的配置安全日志的大小及覆盖方式,一个老练的入侵者就能够通过洪水般的伪造入侵请求覆盖掉他真正的行踪。通常情况下,将安全日志的大小指定为50MB并且只允许覆盖7天前的日志可以避免上述情况的出现。

  除了安全日志,系统日志和应用程序日志也是非常好的辅助监测工具,一般来说,入侵者除了在安全日志中留下痕迹(如果他拿到了Admin权限,那么他一定会去清除痕迹的),在系统和应用程序日志中也会留下蛛丝马迹,作为系统管理员,要有不放过任何异常的态度,这样入侵者就很难隐藏他们的行踪。

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

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

  文件访问有很多的选项:访问、修改、执行、新建、属性更改……一般来说,关注访问和修改就能起到很大的监视作用。

  例如,如果我们监视了系统目录的修改、创建,甚至部分重要文件的访问(例如cmd.exe,net.exe,system32目录),那么,入侵者就很难在不引起我们注意的情况下安放后门。要注意的是,监视的关键文件和项目不能太多,否则不仅增加系统负担,还会扰乱日常的日志监测工作。关键文件不仅仅指的是系统文件,还包括有可能对系统管理员和其他用户构成危害的任何文件,例如系统管理员的配置、桌面文件等等,这些都是有可能被用来窃取系统管理员资料和密码的。

  4.进程监控

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

  5.注册表校验


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

  6.端口监控

  虽然说不使用端口的木马已经出现,但是大部分的后门和木马还是使用TCP连接的,监控端口的状况对于由于种种原因不能封锁端口的主机来说就是非常重要的了。对于系统管理员来说,了解自己服务器上开放的端口甚至比对进程的监控更加重要,常常使用netstat查看服务器的端口状况是一个良好的习惯,但是并不能24小时这样做,而且NT的安全日志有一个缺陷,喜欢记录机器名而不是IP,如果你既没有防火墙又没有入侵检测软件,倒是可以用脚本来进行IP日志记录的,看着这个命令:netstat -n -p tcp 10>>Netstat.log,这个命令每10秒钟自动查看一次TCP的连接状况,基于这个命令我们做一个Netlog.bat文件:time /t>>Netstat.log Netstat -n -p tcp 10>>Netstat.log。这个脚本将会自动记录时间和TCP连接状态,需要注意的是:如果网站访问量比较大,这样的操作是需要消耗一定的CPU时间的,而且日志文件将越来越大,所以请慎之又慎。

  一旦发现异常的端口,可以使用特殊的程序来关联端口、可执行文件和进程(如inzider就有这样的功能,它可以发现服务器监听的端口并找出与该端口关联的文件,inzider可以从http://www.nttoolbox.com下载),这样无论是使用TCP还是UDP的木马都无处藏身。

  7.终端服务的日志监控

  单独将终端服务(Terminal Service)的日志监控分列出来是有原因的,微软Win2000服务器版中自带的终端服务Terminal Service是一个基于远程桌面协议(RDP)的工具,它的速度非常快,也很稳定,可以成为一个很好的远程管理软件,但是因为这个软件功能强大而且只受到密码的保护,所以也非常的危险,一旦入侵者拥有了管理员密码,就能够像本机一样操作远程服务器。虽然很多人都在使用终端服务来进行远程管理,但是,并不是人人都知道如何对终端服务进行审核。大多数的终端服务器上并没有打开终端登录的日志。其实打开日志审核是很容易的,在管理工具中打开远程控制服务配置(Terminal Service Configration),点击“连接”,右击你想配置的RDP服务(比如RDP-TCP Microsoft RDP 5.0),选中书签“权限”,点击左下角的“高级”,看见上面那个“审核”了么?我们来加入一个Everyone组,这代表所有的用户,然后审核它的“连接”、“断开”、“注销”的成功和“登录”的成功和失败就足够了。审核太多了反而不好,这个审核是记录在安全日志中的,可以从“管理工具”→“日志查看器”中查看。建立一个bat文件,叫做TSLog.bat。这个文件用来记录登录者的IP,内容如下:time /t >>TSLog.log netstat -n -p tcp   find “:3389”>>TSLog.logstart Explorer。我来解释一下这个文件的含义:第一行是记录用户登录的时间,time /t的意思是直接返回系统时间(如果不加/t,系统会等待你输入新的时间),然后我们用追加符号“>>”把这个时间记入TSLog.log作为日志的时间字段;第二行是记录用户的IP地址,netstat是用来显示当前网络连接状况的命令,-n表示显示IP和端口而不是域名、协议,-ptcp是只显示tcp协议,然后我们用管道符号“ ”把这个命令的结果输出给find命令,从输出结果中查找包含“