网络通信 频道

用MRTG在 IIS 6.0 上实现入侵检测

 MRTG(Multi Router Traffic Grapher)是一个跨平台的监控网络链路流量负载的工具软件,目前它可以运行在大多数Unix系统和WindowsNT之上。它通过SNMP协议从设备得到设备的流量信息,并将流量负载以包含PNG格式的图形的HTML文档方式显示给用户,以非常直观的形式显示流量负载。
  或许你还不知道,MRTG还是一个有效的入侵检测工具。大家都知道,入侵者扫描与破坏后都能生成一些异常的网络流量,而人们在一般情况下是意识不到的。但是,MRTG却能通过图形化的形式给管理员提供入侵的信息,并可以查出数周之前的入侵信息,以备管理员参考。
  攻击行为对服务器造成的信息
  (1)攻击者使用CGI漏洞扫描器对潜在的CGI漏洞脚本进行扫描时,HTTP 404 NotFound errors的记录会增长。
  (2)攻击者尝试暴力破解服务器上的账户,HTTP 4Ol Authorization Required errors的记录会增长。
  (3)一种新的蠕虫出现,某一个特定的协议的流量会增长。
  (4)蠕虫通过傀儡主机,攻击其他的服务器,出外的流量增加,并增大CPU的负荷。
  (5)人侵者尝试SQL injection攻击,HTTP5O0Server Errors记录会增长。
  (6)垃圾邮件发送者在网络上寻找中继SMTP服务器来发送垃圾邮件,会造成SMTPDNS1ookups流量大增,同时造成CPU负荷增大。
  (7)攻击者进行DDOS攻击,会造成ICMP流量、TCP连接、虚假的IP、多播广播流量大增,造成浪费大量的带宽。
  看完上面我们可以总结出,攻击者要入侵必然会影响到服务器的这些资源:CPU、RAM、磁盘空间、网络连接和带宽。人侵者还有可能对服务器建立进程后门,开放端口,还对自己的人侵行为进行伪装掩盖,避免遭到人侵检测系统的监视。
  
  攻击者使用以下的方法避免被检测
  (1)探测扫描很长时间后,才进行真正的入侵进攻。
  (2)乃从多个主机进行攻击,避免单一的主机记录。
  (3)尽量避免入侵造成的CPU、RAM和驱动器的负荷。
  (4)利用管理员无人职守时入侵,在周末或者节假日发起攻击。
  对于1156,我们需要监视的是下列的信息:
  (1)网络流量,包括带宽、数据包、连接的数量等。
  (2)网络协议的异常错误。
  (3)网站的内外流量,包括用户的权限设置、外部请求的错误流量等。
  (4)线程和进程。
  
  在Windows 2003下安装MRTG
  在使用MRTG之前,你需要在服务器里安装SNMP服务。具体步骤如下:从控制面板中选择添加/删除程序,点击添加和删除windows组件,在管理和监视工具中的详细资料里就可以找到简单网络管理协议,即可安装。
  安装成功后,你需要立刻安全配置一下,我们都知道,SNMP在网络上决不是一个安全协议,你可以通过http://support.microsoft.com/?kbid=324261这个连接来具体了解。但是我们只是在本地使用SNMP,还是建议你通过防火墙屏蔽SNMP的161与162端口和使用IPSec,并且要配置为obscure community string。在管理工具中,在服务中选择安全,设为只读访问。尽管communitystring安全问题不多,但是你还是要避免使用com-munitysthng为只读访问。
  MRTG是一个用Perl编译的C程序。你还要安装ActivePerl来解决支持脚本的问题。下载最新的MRTG可以到http://people.ee.ethz.ch/~oetikcr/webtools/mrtg/pub/,注意要选择.zip的文件下载。本文所使用的版本请到http://securitytocus.com/microsoft/images/burnett_MRTG_files.zip下载。
  把MRTG解压到C:\ProgramFiles\MRTG目录下。在你的Inetpub目录下为MRTG建立一个子目录。为了安全,不要建立在wwwroot目录下。然后,使用IIS建立一个MRTG的新站点。如果可能的话,最好能为MRTG站点配置一个主机头和一个独立的IP,也可以在一个已存在的目录下为MRTG站点建立一个合法的虚拟目录,也能达到同样的目的。
  注意,在新建立的MRTG站点上不要运行可执行的脚本,只提供只读访问。在NTFS下,要注意对用户的权限的设置。如果可能的话,最好对指定MRTG站点的IP来选择特定的主机。
  现在,我们就可以把配置文件放到C:\Pro-gram files\MRTG\Bin下了,并把index.html文件拷贝到人Inetpub\MRTG目录下。
  下面我们来测试一下,在命令提示符下输入:
  C:\Programfiles\MRTG>perl mrtg mrtg.cfg
  如果一切正常的话,在你的MRTG站点下就有了一些配置文件。如果安装失败,你可以回顾一下你安装的步骤是否有错误,并参考MRTG的参考手册。
  
  具体配置SNMP计数器
  尽管微软提供了SNMP的计数器,但是我们发现它对一些应用程序文持有些问题,而MRTG却能从很多的应用程序中得到消息。但我们通过Windows Management Instrumentation(WMI)也能得到包括所有的计数器的性能信息。同SNMP不同的是,微软在WMI上下了很大的时间和金钱。比如:想得到关于线程和进程的信息,我们可以使用以下的脚本轻易实现:
  
  Set oWService=GetObject("winmgmts:
  \\localhost\root\cimv2")
  Set colItems=oWService.ExecQuery("SELECT*
  FROMWin32_PerfFormattedDaa_PerfOS_
  System",,48)
  For Each Item in colItems
     Param1=param1+Ote,/[rpcesses
     Param2=Param2+Item.Threads
     Uptime=Item.SystemUptime
  Next
  WScript.Echo Param1
  WXcript.Echo Param2
  WScript.Echo Uptime&"seconds"
  WScript.Echo "LocalHost"
  Another problem I had was getting detailed or
  custom web statistics through either SNMP or
  WMI.To solve that, I used Microsoft''s LogParser
  tool to run custom queries from a simple batch
  file:
  @for/f"tokens=1,2,2,4*delims=/"%i in
  (''date/t)do@set year=%%1&&@set month=
  %%j&& @set day/%%k
  @set logfile=c:\windows\system32
  \LogFiles\%1\ex%YEAR:~2,2%%day%.
  log
  @If Exist %logfile%(
   @logparser "SELECT COUNT(*)FROM
  %logfile%WHERE(sc-status>=400AND sc-status
  <500)
  AND TO_TIMESTAMP(date,time)>SUB
  (SYSTEM_TIMESTAMP(),TO_TIMESTAMP
  @logparser "SELECT COUNT(*)FROM
  %logfile% WHERE(sc-status>=500AND sc-status
  <600)
  AND TO_TIMESTAMP(date,time)>SUB
  (SYSTEM_TIMESTAMP(),TO_TIMESTAMP
  (''5'',''m''))"-q
  )ELSE(
   @Echo %logfile%
   @Echo 0
  )
  @Echo Unknown
  @Echo %1
  
  因为微软的日志记录工具也非常强大,和MRTG的计数器配合使用,再加上免费的入侵检测系统Snort,效果会更好。
  

文章转载地址:http://www.cnpaf.net/Class/hack/06101110492177038787.html

0
相关文章