萬盛學電腦網

 萬盛學電腦網 >> 健康知識 >> 用MRTG在IIS 6.0上實現入侵檢測功能

用MRTG在IIS 6.0上實現入侵檢測功能

  MRTG(Multi Router Traffic Grapher)是一個跨平台的監控網絡鏈路流量負載的工具軟件,目前它可以運行在大多數Unix系統和Windows NT之上。它通過snmp協議從設備得到設備的流量信息,並將流量負載以包含PNG格式的圖形的HTML 文檔方式顯示給用戶,以非常直觀的形式顯示流量負載。或許你還不知道,MRTG還是一個有效的入侵檢測工具。大家都知道,入侵者掃描與破壞後都能生成一些異常的網絡流量,而人們在一般情況下是意識不到的。但是MRTG卻能通過圖形化的形式給管理員提供入侵的信息。並可以查出數周之前的入侵信息,以備管理員參考。 一,攻擊行為對服務器造成的信息1,攻擊者使用CGI漏洞掃描器對潛在的CGI漏洞腳本進行掃描時,HTTP 404 Not Found errors的記錄會增長。 2,,攻擊者嘗試暴力破解服務器上的帳戶,HTTP 401 Authorization Required errors 的記錄會增長。 3,一種新的蠕蟲出現,某一個特定的協議的流量會增長。 4,蠕蟲通過傀儡主機,攻擊其他的服務器,出外的流量增加,並增大CPU的負荷。 5,入侵者嘗試SQL injection攻擊,HTTP 500 Server Errors記錄會增長。 6,垃圾郵件發送者在網絡上尋找中繼SMTP服務器來發送垃圾郵件,會造成SMTP的和DNS lookups流量大增,同時造成CPU負荷增大。 7,攻擊者進行DDOS攻擊,會造成ICMP流量,TCP連接,虛假的IP,多播廣播流量大增。造成浪費大量的帶寬。 看完上面的,我們可以總結出,攻擊者要入侵必須會影響到服務器的這些資源:: CPU, RAM,磁盤空間,網絡連接和帶寬。入侵者還有可能對服務器建立進程後門,開放端口,他們還對他們的入侵行為進行偽裝掩蓋,避免遭到入侵檢測系統的監視。 二,攻擊者使用以下的方法避免被檢測到:1,探測掃描很長時間後,才進行真正的入侵進攻。2,從多個主機進行攻擊,避免單一的主機記錄。3,盡量避免入侵造成的CPU, RAM和驅動器的負荷。4,利用管理員無人職守時入侵,在周末或者節假日發起攻擊。三,對於IIS 6,我們需要監視的是1,網絡流量,包括帶寬,數據包,連接的數量等。2,網絡協議的異常錯誤。3,網站的內外流量,包括用戶的權限設置,外部請求的錯誤流量等。4,線程和進程。四,在Windows 2003下安裝MRTG 在使用MRTG之前,你需要在你的服務器裡安裝SNMP 服務。具體步驟如下:從控制面板中選擇添加/刪除程序,點擊添加和刪除windows組件。管理和監視工具中的詳細資料裡就可以找到簡單網絡管理協議,即可安裝。安裝成功後,你需要立刻安全配置一下,我們大家都知道,SNMP在網絡上決不是一個安全的協議,你可以通過?kbid=324261這個連接來具體了解。但是我們只是在本地使用SNMP,但是還是建議你通過防火牆屏蔽SNMP的161與162端口和使用IPSec。並且要配置為obscure community string。在管理工具中,在服務中選擇安全,設為只讀訪問。盡管community string安全問題不多,但是你還是要避免使用community string為只讀訪問。MRTG是一個用Perl編譯的C程序。你還要安裝ActivePerl來解決支持腳本的問題。下載最新的MRTG。可以到~oetiker/webtools/mrtg/pub/下載,注意要選擇.zip的文件下載。這篇文章所使用的版本請到下載。把MRTG解壓到C:\Program Files\MRTG目錄下。安裝Perl的過程其實很簡單。首先打開PERL的安裝文件 ,點下一步,然後同意軟件使用權的協議,下一個畫面會讓您確認是否使用[PPM3發送個人信息至ASPN],還是省著點兒,不要選它,直接按下一步。然後就是下一步直通車,直至Perl安裝成功。由於MRTG是一個Perl寫的程序,不需要安裝,稍後有些安裝過程需要在DOS裡面完成,所以建議解壓的路徑為C:\MRTG。下面給出詳細的安裝步驟:1. 運行cmd,進入DOS窗口; c:\>cd\MRTG\bin 進入剛才解壓的MRTG目錄,准備執行命令; 使用perl MRTG 命令測試MRTG是否正確; 執行命令行perl cfgmaker [email protected] --global "WorkDir: C:\Inetpub\wwwroot\MRTG" --output caacnetwork.cfgcaacnetwork.cfg是輸出配置文件,位置在MRTG\bin。 workdir內是MRTG生成的網頁文件。本例指定在IIS默認目錄。[email protected] 注釋: caacnetwork是團體名, 10.3.0.20是IP地址。當有多個設備要監控時,用下面的命令:perl cfgmaker caacnetwork@ip1 caacnetwork@IP2 community@ip3 --global "WorkDir: C:\Inetpub\wwwroot\MRTG" --output caacnetwork.cfg2.為了讓MRTG每個五分鐘監視一次,在DOS下MRTG\bin目錄用下面的命令:(1)echo RunAsDaemon:yes>>caacnetwork.cfg(2)echo Interval:5>>caacnetwork.cfg3.使用indexmaker生成報表首頁:perl indexmaker caacnetwork.cfg>c:\Inetpub\wwwroot\MRTG\index.htm4.運行MRTG: perl MRTG --logging=caacnetwork.log caacnetwork.cfg 訪問c:\Inetpub\wwwroot\MRTG\index.htm檢查MRTG是否可以正常工作,生成統計圖形。5.將MRTG 配置為系統服務使用windows 2003 resource kit中的Instsrv.exe和srvany.exe。首先安裝win2003 rerouse kit 將srvany.exe拷貝到c:\MRTG\bin 目錄1.添加srvany.exe為服務instsrv MRTG "c:\MRTG\bin\srvany.exe"2. 配置srvany:在注冊表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MRTG中,添加一個parameters子鍵。在該子鍵中添加以下項目:Application的字串值,內容為c:\perl\bin\perl.exe ---該值為perl程序目錄。AppDirectory的字串值,內容為c:\MRTG\BIN\ ----該值為MRTG程序目錄。 AppParameters的字串值,內容為MRTG --logging=caacnetwork.log caacnetwork.cfg。3.管理工具---服務中,找到MRTG服務,啟用服務。MRTG就可以全天監視制定主機的網絡信息了。五,具體配置SNMP計數器盡管微軟提供了SNMP的計數器,但是我發現它對一些應用程序支持有些問題,然而,MRTG卻能從很多的應用程序中得到消息。但是我們通過Windows Management Instrumentation (WMI) 也能得到包括所有的計數器的性能信息。同SNMP不同的是,微軟在WMI下了很大的時間和金錢。比如:我想得到關於線程和進程的信息,我可以使用以下的腳本輕易實現:Set oWService=GetObject("winmgmts:\\localhost\root\cimv2")Set colItems=oWService.ExecQuery("SELECT * FROM Win32_PerfFormattedData_PerfOS_System",,48)For Each Item in colItemsParam1=Param1 Item.ProcessesParam2=Param2 Item.ThreadsUptime=Item.SystemUptimeNextWScript.Echo Param1WScript.Echo Param2WScript.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,3,4* delims=/ " %%i in ('date /t') do @set year=%%l&& @set month=%%j&& @set day=%%k@set logfile=c:\windows\system32\LogFiles\%1\ex%YEAR:~2,2%%month%趛%.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('5','m'))" -q@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://snmpboy.msft.net看到在Windows 2003 server中的snmp更多的信息。
copyright © 萬盛學電腦網 all rights reserved