用MRTG在IIS上實現(xiàn)入侵檢測功能
用MRTG在IIS上實現(xiàn)入侵檢測功能
MRTG(Multi Router Traffic Grapher)是一個跨平臺的監(jiān)控網絡鏈路流量負載的工具軟件,目前它可以運行在大多數Unix系統(tǒng)和Windows NT之上。它通過snmp協(xié)議從設備得到設備的流量信息,并將流量負載以包含PNG格式的圖形的HTML 文檔方式顯示給用戶,以非常直觀的形式顯示流量負載。
或許你還不知道,MRTG還是一個有效的入侵檢測工具。大家都知道,入侵者掃描與破壞后都能生成一些異常的網絡流量,而人們在一般情況下是意識不到的。但是MRTG卻能通過圖形化的形式給管理員提供入侵的信息。并可以查出數周之前的入侵信息,以備管理員參考。
一,攻擊行為對服務器造成的信息
1,攻擊者使用CGI漏洞掃描器對潛在的CGI漏洞腳本進行掃描時,HTTP 404 Not Found errors的記錄會增長。
2,攻擊者嘗試暴力破解服務器上的帳戶,HTTP 401 Authorization Required errors 的記錄會增長。
3,一種新的蠕蟲出現(xiàn),某一個特定的協(xié)議的流量會增長。
4,蠕蟲通過傀儡主機,攻擊其他的服務器,出外的流量增加,并增大CPU的負荷。
5,入侵者嘗試SQL injection攻擊,HTTP 500 Server Errors記錄會增長。
6,垃圾郵件發(fā)送者在網絡上尋找中繼SMTP服務器來發(fā)送垃圾郵件,會造成SMTP的和DNS lookups流量大增,同時造成CPU負荷增大。
7,攻擊者進行DDOS攻擊,會造成ICMP流量,TCP連接,虛假的IP,多播廣播流量大增。造成浪費大量的帶寬。
看完上面的,我們可以總結出,攻擊者要入侵必須會影響到服務器的這些資源:: CPU, RAM,磁盤空間,網絡連接和帶寬。入侵者還有可能對服務器建立進程后門,開放端口,他們還對他們的入侵行為進行偽裝掩蓋,避免遭到入侵檢測系統(tǒng)的監(jiān)視。
二,攻擊者使用以下的方法避免被檢測到:
1,探測掃描很長時間后,才進行真正的入侵進攻。
2,從多個主機進行攻擊,避免單一的主機記錄。
3,盡量避免入侵造成的CPU, RAM和驅動器的負荷。
4,利用管理員無人職守時入侵,在周末或者節(jié)假日發(fā)起攻擊。
#p#
三,對于IIS 6,我們需要監(jiān)視的是
1,網絡流量,包括帶寬,數據包,連接的數量等。
2,網絡協(xié)議的異常錯誤。
3,網站的內外流量,包括用戶的權限設置,外部請求的錯誤流量等。
4,線程和進程。
四,在Windows 2003下安裝MRTG
在使用MRTG之前,你需要在你的服務器里安裝SNMP 服務。具體步驟如下:從控制面板中選擇添加/刪除程序,點擊添加和刪除windows組件。管理和監(jiān)視工具中的詳細資料里就可以找到簡單網絡管理協(xié)議,即可安裝。
安裝成功后,你需要立刻安全配置一下,我們大家都知道,SNMP在網絡上決不是一個安全的協(xié)議,你可以通過http://support.microsoft.com/?kbid=324261這個連接來具體了解。但是我們只是在本地使用SNMP,但是還是建議你通過防火墻屏蔽SNMP的161與162端口和使用IPSec。并且要配置為obscure community string。在管理工具中,在服務中選擇安全,設為只讀訪問。盡管community string安全問題不多,但是你還是要避免使用community string為只讀訪問。
MRTG是一個用Perl編譯的C程序。你還要安裝ActivePerl來解決支持腳本的問題。下載最新的MRTG??梢缘絟ttp://people.ee.ethz.ch/~oetiker/webtools/mrtg/pub/下載,
注意要選擇.zip的文件下載。這篇文章所使用的版本請到http://securityfocus.com/microsoft/images/burnett_MRTG_files.zip下載。
把MRTG解壓到C:\Program Files\MRTG目錄下。
在你的Inetpub目錄下為MRTG建立一個子目錄。為了安全,不要建立在wwwroot目錄下。然后,使用IIS建立一個MRTG的新站點。如果可能的話,最好能為MRTG站點配置一個主機頭和一個獨立的IP。也可以在一個已存在的目錄下為MRTG站點建立一個合法的虛擬目錄,也能達到同樣的目的。
注意,在新建立的MRTG站點不要運行可執(zhí)行的腳本,只提供只讀訪問。在NTFS下,要注意對用戶的權限的設置。如果可能的話,最好對指定MRTG站點的IP來選擇特定的主機。
現(xiàn)在,就可以把配置文件放到C:\Program Files\MRTG\Bin下了,并把index.html 文件拷貝到你的\Inetpub\MRTG 目錄下。
#p#
五,具體配置SNMP計數器
我所配置的MRTG的以及所獲得流量:
盡管微軟提供了SNMP的計數器,但是我發(fā)現(xiàn)它對一些應用程序支持有些問題,然而,MRTG卻能從很多的應用程序中得到消息。但是我們通過Windows Management Instrumentation (WMI) 也能得到包括所有的計數器的性能信息。同SNMP不同的是,微軟在WMI下了很大的時間和金錢。比如:我想得到關于線程和進程的信息,我可以使用以下的腳本輕易實現(xiàn):
- Set oWService=GetObject("winmgmts:\\localhost\root\cimv2")
- Set colItems=oWService.ExecQuery("SELECT * FROM Win32_PerfFormattedData_PerfOS_System",,48)
- For Each Item in colItems
- Param1Param1=Param1 + Item.Processes
- Param2Param2=Param2 + Item.Threads
- Uptime=Item.SystemUptime
- Next
- WScript.Echo Param1
- WScript.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,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%%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(’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的計數器配合使用,在加上免費的入侵檢測系統(tǒng)Snort,效果會更好。
六,最后
在你自定義的完你的計數器完成之后,通過圖行化的狀況就可以輕易的找出入侵者。
下面,我們來測試一下,在命令提示符下輸入:
- C:\ProgramFiles\MRTG>perl mrtg mrtg.cfg
如果一些正常的話,就會在在你的MRTG站點就有了一些配置文件。如果安裝失敗,你可以回顧一下你安裝的步驟,是否有錯誤,并參考MRTG 。
【編輯推薦】