目前,WIN2000 SERVER是比較流行的服務(wù)器操作系統(tǒng)之一,但是要想安全的配置微軟的這個操作系統(tǒng),卻不是一件容易的事。本文試圖對win2000 SERVER的安全配置進(jìn)行初步的探討。
一、 定制自己的WIN2000 SERVER
1.版本的選擇:WIN2000有各種語言的版本,對于我們來說,可以選擇英文版或簡體中文版,我強(qiáng)烈建議:在語言不成為障礙的情況下,請一定使用英文版。要知道,微軟的產(chǎn)品是以Bug & Patch而著稱的,中文版的Bug遠(yuǎn)遠(yuǎn)多于英文版,而補(bǔ)丁一般還會遲至少半個月(也就是說一般微軟公布了漏洞后你的機(jī)子還會有半個月處于無保護(hù)狀況)
2.組件的定制:win2000在默認(rèn)情況下會安裝一些常用的組件,但是正是這個默認(rèn)安裝是極度危險的(米特尼科說過,他可以進(jìn)入任何一臺默認(rèn)安裝的服務(wù)器,我雖然不敢這么說,不過如果你的主機(jī)是WIN2000 SERVER的默認(rèn)安裝,我可以告訴你,你死定了)你應(yīng)該確切的知道你需要哪些服務(wù),而且僅僅安裝你確實需要的服務(wù),根據(jù)安全原則,最少的服務(wù)+最小的權(quán)限=最大的安全。典型的WEB服務(wù)器需要的最小組件選擇是:只安裝IIS的Com Files,IIS Snap-In,WWW Server組件。如果你確實需要安裝其他組件,請慎重,特別是:Indexing Service, FrontPage 2000 Server Extensions, Internet Service Manager (HTML)這幾個危險服務(wù)。
3. 管理應(yīng)用程序的選擇
選擇一個好的遠(yuǎn)程管理軟件是非常重要的事,這不僅僅是安全方面的要求,也是應(yīng)用方面的需要。Win2000的Terminal Service是基于RDP(遠(yuǎn)程桌面協(xié)議)的遠(yuǎn)程控制軟件,他的速度快,操作方便,比較適合用來進(jìn)行常規(guī)操作。但是,Terminal Service也有其不足之處,由于它使用的是虛擬桌面,再加上微軟編程的不嚴(yán)謹(jǐn),當(dāng)你使用Terminal Service進(jìn)行安裝軟件或重起服務(wù)器等與真實桌面交互的操作時,往往會出現(xiàn)哭笑不得的現(xiàn)象,例如:使用Terminal Service重起微軟的認(rèn)證服務(wù)器(Compaq, IBM等)可能會直接關(guān)機(jī)。所以,為了安全起見,我建議你再配備一個遠(yuǎn)程控制軟件作為輔助,和Terminal Service互補(bǔ),象PcAnyWhere就是一個不錯的選擇。
二、 正確安裝WIN2000 SERVER
1.分區(qū)和邏輯盤的分配,有一些朋友為了省事,將硬盤僅僅分為一個邏輯盤,所有的軟件都裝在C驅(qū)上,這是很不好的,建議最少建立兩個分區(qū),一個系統(tǒng)分區(qū),一個應(yīng)用程序分區(qū),這是因為,微軟的IIS經(jīng)常會有泄漏源碼/溢出的漏洞,如果把系統(tǒng)和IIS放在同一個驅(qū)動器會導(dǎo)致系統(tǒng)文件的泄漏甚至入侵者遠(yuǎn)程獲取ADMIN。推薦的安全配置是建立三個邏輯驅(qū)動器,第一個大于2G,用來裝系統(tǒng)和重要的日志文件,第二個放IIS,第三個放FTP,這樣無論IIS或FTP出了安全漏洞都不會直接影響到系統(tǒng)目錄和系統(tǒng)文件。要知道,IIS和FTP是對外服務(wù)的,比較容易出問題。而把IIS和FTP分開主要是為了防止入侵者上傳程序并從IIS中運(yùn)行。(這個可能會導(dǎo)致程序開發(fā)人員和編輯的苦惱,管他呢,反正你是管理員J)
2.安裝順序的選擇:不要覺得:順序有什么重要?只要安裝好了,怎么裝都可以的。錯!win2000在安裝中有幾個順序是一定要注意的:
首先,何時接入網(wǎng)絡(luò):Win2000在安裝時有一個漏洞,在你輸入Administrator密碼后,系統(tǒng)就建立了ADMIN$的共享,但是并沒有用你剛剛輸入的密碼來保護(hù)它,這種情況一直持續(xù)到你再次啟動后,在此期間,任何人都可以通過ADMIN$進(jìn)入你的機(jī)器;同時,只要安裝一完成,各種服務(wù)就會自動運(yùn)行,而這時的服務(wù)器是滿身漏洞,非常容易進(jìn)入的,因此,在完全安裝并配置好win2000 SERVER之前,一定不要把主機(jī)接入網(wǎng)絡(luò)。
其次,補(bǔ)丁的安裝:補(bǔ)丁的安裝應(yīng)該在所有應(yīng)用程序安裝完之后,因為補(bǔ)丁程序往往要替換/修改某些系統(tǒng)文件,如果先安裝補(bǔ)丁再安裝應(yīng)用程序有可能導(dǎo)致補(bǔ)丁不能起到應(yīng)有的效果,例如:IIS的HotFix就要求每次更改IIS的配置都需要安裝(變不變態(tài)?)
三、 安全配置WIN2000 SERVER
即使正確的安裝了WIN2000 SERVER,系統(tǒng)還是有很多的漏洞,還需要進(jìn)一步進(jìn)行細(xì)致地配置。
1.端口:端口是計算機(jī)和外部網(wǎng)絡(luò)相連的邏輯接口,也是計算機(jī)的第一道屏障,端口配置正確與否直接影響到主機(jī)的安全,一般來說,僅打開你需要使用的端口會比較安全,配置的方法是在網(wǎng)卡屬性-TCP/IP-高級-選項-TCP/IP篩選中啟用TCP/IP篩選,不過對于win2000的端口過濾來說,有一個不好的特性:只能規(guī)定開哪些端口,不能規(guī)定關(guān)閉哪些端口,這樣對于需要開大量端口的用戶就比較痛苦。
2.IIS:IIS是微軟的組件中漏洞最多的一個,平均兩三個月就要出一個漏洞,而微軟的IIS默認(rèn)安裝又實在不敢恭維,所以IIS的配置是我們的重點(diǎn),現(xiàn)在大家跟著我一起來:
首先,把C盤那個什么Inetpub目錄徹底刪掉,在D盤建一個Inetpub(要是你不放心用默認(rèn)目錄名也可以改一個名字,但是自己要記得)在IIS管理器中將主目錄指向D:\Inetpub;
其次,那個IIS安裝時默認(rèn)的什么scripts等虛擬目錄一概刪除(罪惡之源呀,忘http://www.target.com/scripts/..%c1%1c../winnt/system32/cmd.exe了?我們雖然已經(jīng)把Inetpub從系統(tǒng)盤挪出來了,但是還是小心為上),如果你需要什么權(quán)限的目錄可以自己慢慢建,需要什么權(quán)限開什么。(特別注意寫權(quán)限和執(zhí)行程序的權(quán)限,沒有絕對的必要千萬不要給)
第三,應(yīng)用程序配置:在IIS管理器中刪除必須之外的任何無用映射,必須指的是ASP, ASA和其他你確實需要用到的文件類型,例如你用到stml等(使用server side include),實際上90%的主機(jī)有了上面兩個映射就夠了,其余的映射幾乎每個都有一個凄慘的故事:htw, htr, idq, ida……想知道這些故事?去查以前的漏洞列表吧。什么?找不到在哪里刪?在IIS管理器中右擊主機(jī)->屬性->WWW服務(wù)編輯->主目錄配置->應(yīng)用程序映射,然后就開始一個個刪吧(里面沒有全選的,嘿嘿)。接著在剛剛那個窗口的應(yīng)用程序調(diào)試書簽內(nèi)將腳本錯誤消息改為發(fā)送文本(除非你想ASP出錯的時候用戶知道你的程序/網(wǎng)絡(luò)/數(shù)據(jù)庫結(jié)構(gòu))錯誤文本寫什么?隨便你喜歡,自己看著辦。點(diǎn)擊確定退出時別忘了讓虛擬站點(diǎn)繼承你設(shè)定的屬性。
為了對付日益增多的cgi漏洞掃描器,還有一個小技巧可以參考,在IIS中將HTTP404 Object Not Found出錯頁面通過URL重定向到一個定制HTM文件,可以讓目前絕大多數(shù)CGI漏洞掃描器失靈。其實原因很簡單,大多數(shù)CGI掃描器在編寫時為了方便,都是通過查看返回頁面的HTTP代碼來判斷漏洞是否存在的,例如,著名的IDQ漏洞一般都是通過取1.idq來檢驗,如果返回HTTP200,就認(rèn)為是有這個漏洞,反之如果返回HTTP404就認(rèn)為沒有,如果你通過URL將HTTP404出錯信息重定向到HTTP404.htm文件,那么所有的掃描無論存不存在漏洞都會返回HTTP200,90%的CGI掃描器會認(rèn)為你什么漏洞都有,結(jié)果反而掩蓋了你真正的漏洞,讓入侵者茫然無處下手(武俠小說中常說全身漏洞反而無懈可擊,難道說的就是這個境界?)不過從個人角度來說,我還是認(rèn)為扎扎實實做好安全設(shè)置比這樣的小技巧重要的多。
最后,為了保險起見,你可以使用IIS的備份功能,將剛剛的設(shè)定全部備份下來,這樣就可以隨時恢復(fù)IIS的安全配置。還有,如果你怕IIS負(fù)荷過高導(dǎo)致服務(wù)器滿負(fù)荷死機(jī),也可以在性能中打開CPU限制,例如將IIS的最大CPU使用率限制在70%。
3.賬號安全:
Win2000的賬號安全是另一個重點(diǎn),首先,Win2000的默認(rèn)安裝允許任何用戶通過空用戶得到系統(tǒng)所有賬號/共享列表,這個本來是為了方便局域網(wǎng)用戶共享文件的,但是一個遠(yuǎn)程用戶也可以得到你的用戶列表并使用暴力法破解用戶密碼。很多朋友都知道可以通過更改注冊表Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous = 1來禁止139空連接,實際上win2000的本地安全策略(如果是域服務(wù)器就是在域服務(wù)器安全和域安全策略中)就有這樣的選項RestrictAnonymous(匿名連接的額外限制),這個選項有三個值:
0:None. Rely on default permissions(無,取決于默認(rèn)的權(quán)限)
1:Do not allow enumeration of SAM accounts and shares(不允許枚舉SAM帳號和共享)
2:No access without explicit anonymous permissions(沒有顯式匿名權(quán)限就不允許訪問)
0這個值是系統(tǒng)默認(rèn)的,什么限制都沒有,遠(yuǎn)程用戶可以知道你機(jī)器上所有的賬號、組信息、共享目錄、網(wǎng)絡(luò)傳輸列表(NetServerTransportEnum等等,對服務(wù)器來說這樣的設(shè)置非常危險。
1這個值是只允許非NULL用戶存取SAM賬號信息和共享信息。
2這個值是在win2000中才支持的,需要注意的是,如果你一旦使用了這個值,你的共享估計就全部完蛋了,所以我推薦你還是設(shè)為1比較好。
好了,入侵者現(xiàn)在沒有辦法拿到我們的用戶列表,我們的賬戶安全了……慢著,至少還有一個賬戶是可以跑密碼的,這就是系統(tǒng)內(nèi)建的administrator,怎么辦?我改改改,在計算機(jī)管理->用戶賬號中右擊administrator然后改名,改成什么隨便你,只要能記得就行了。
不對不對,我都已經(jīng)改了用戶名了,怎么還是有人跑我管理員的密碼?幸好我的密碼夠長,但是這也不是辦法呀?嗯,那肯定是在本地或者Terminal Service的登錄界面看到的,好吧,我們再來把HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\winlogon項中的Don’t Display Last User Name串?dāng)?shù)據(jù)改成1,這樣系統(tǒng)不會自動顯示上次的登錄用戶名。
將服務(wù)器注冊表HKEY_LOCAL_ MACHINE\SOFTWARE\Microsoft\ WindowsNT\CurrentVersion\Winlogon項中的Don‘t Display Last User Name串?dāng)?shù)據(jù)修改為1,隱藏上次登陸控制臺的用戶名。
5.安全日志:我遇到過這樣的情況,一臺主機(jī)被別人入侵了,系統(tǒng)管理員請我去追查兇手,我登錄進(jìn)去一看:安全日志是空的,倒,請記。篧in2000的默認(rèn)安裝是不開任何安全審核的!那么請你到本地安全策略->審核策略中打開相應(yīng)的審核,推薦的審核是:
賬戶管理 成功 失敗
登錄事件 成功 失敗
對象訪問 失敗
策略更改 成功 失敗
特權(quán)使用 失敗
系統(tǒng)事件 成功 失敗
目錄服務(wù)訪問 失敗
賬戶登錄事件 成功 失敗
審核項目少的缺點(diǎn)是萬一你想看發(fā)現(xiàn)沒有記錄那就一點(diǎn)都沒轍;審核項目太多不僅會占用系統(tǒng)資源而且會導(dǎo)致你根本沒空去看,這樣就失去了審核的意義。
與之相關(guān)的是:
在賬戶策略->密碼策略中設(shè)定:
密碼復(fù)雜性要求 啟用
密碼長度最小值 6位
強(qiáng)制密碼歷史 5次
最長存留期 30天
在賬戶策略->賬戶鎖定策略中設(shè)定:
賬戶鎖定 3次錯誤登錄
鎖定時間 20分鐘
復(fù)位鎖定計數(shù) 20分鐘
同樣,Terminal Service的安全日志默認(rèn)也是不開的,我們可以在Terminal Service Configration(遠(yuǎn)程服務(wù)配置)-權(quán)限-高級中配置安全審核,一般來說只要記錄登錄、注銷事件就可以了。
7.目錄和文件權(quán)限:
為了控制好服務(wù)器上用戶的權(quán)限,同時也為了預(yù)防以后可能的入侵和溢出,我們還必須非常小心地設(shè)置目錄和文件的訪問權(quán)限,NT的訪問權(quán)限分為:讀取、寫入、讀取及執(zhí)行、修改、列目錄、完全控制。在默認(rèn)的情況下,大多數(shù)的文件夾對所有用戶(Everyone這個組)是完全敞開的(Full Control),你需要根據(jù)應(yīng)用的需要進(jìn)行權(quán)限重設(shè)。
在進(jìn)行權(quán)限控制時,請記住以下幾個原則:
1>限是累計的:如果一個用戶同時屬于兩個組,那么他就有了這兩個組所允許的所有權(quán)限;
2>拒絕的權(quán)限要比允許的權(quán)限高(拒絕策略會先執(zhí)行)如果一個用戶屬于一個被拒絕訪問某個資源的組,那么不管其他的權(quán)限設(shè)置給他開放了多少權(quán)限,他也一定不能訪問這個資源。所以請非常小心地使用拒絕,任何一個不當(dāng)?shù)木芙^都有可能造成系統(tǒng)無法正常運(yùn)行;
3>文件權(quán)限比文件夾權(quán)限高(這個不用解釋了吧?)
4>利用用戶組來進(jìn)行權(quán)限控制是一個成熟的系統(tǒng)管理員必須具有的優(yōu)良習(xí)慣之一;
5>僅給用戶真正需要的權(quán)限,權(quán)限的最小化原則是安全的重要保障;
8.預(yù)防DoS:
在注冊表HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters中更改以下值可以幫助你防御一定強(qiáng)度的DoS攻擊
SynAttackProtect REG_DWORD 2
EnablePMTUDiscovery REG_DWORD 0
NoNameReleaseOnDemand REG_DWORD 1
EnableDeadGWDetect REG_DWORD 0
KeepAliveTime REG_DWORD 300,000
PerformRouterDiscovery REG_DWORD 0
EnableICMPRedirects REG_DWORD 0
ICMP攻擊:ICMP的風(fēng)暴攻擊和碎片攻擊也是NT主機(jī)比較頭疼的攻擊方法,其實應(yīng)付的方法也很簡單,win2000自帶一個Routing & Remote Access工具,這個工具初具路由器的雛形(微軟真是的,什么都要做?聽說最近又要做防火墻了)在這個工具中,我們可以輕易的定義輸入輸出包過濾器,例如,設(shè)定輸入ICMP代碼255丟棄就表示丟棄所有的外來ICMP報文(讓你炸?我丟、丟、丟)
四、需要注意的一些事:
實際上,安全和應(yīng)用在很多時候是矛盾的,因此,你需要在其中找到平衡點(diǎn),畢竟服務(wù)器是給用戶用而不是做OPEN HACK的,如果安全原則妨礙了系統(tǒng)應(yīng)用,那么這個安全原則也不是一個好的原則。
網(wǎng)絡(luò)安全是一項系統(tǒng)工程,它不僅有空間的跨度,還有時間的跨度。很多朋友(包括部分系統(tǒng)管理員)認(rèn)為進(jìn)行了安全配置的主機(jī)就是安全的,其實這其中有個誤區(qū):我們只能說一臺主機(jī)在一定的情況一定的時間上是安全的,隨著網(wǎng)絡(luò)結(jié)構(gòu)的變化、新的漏洞的發(fā)現(xiàn),管理員/用戶的操作,主機(jī)的安全狀況是隨時隨地變化著的,只有讓安全意識和安全制度貫穿整個過程才能做到真正的安全。
本文在撰寫過程中參閱了大量Win2000安全的文章,在此向這些作者表示感謝。
Win2000 Server入侵監(jiān)測
--------------------------------------------------------------------------------
入侵檢測初步
上一章我們談到了Win2000 Server的安全配置,經(jīng)過精心配置的Win2000服務(wù)器可以防御90%以上的入侵和滲透,但是,就象上一章結(jié)束時我所提到的:系統(tǒng)安全是一個連續(xù)的過程,隨著新漏洞的出現(xiàn)和服務(wù)器應(yīng)用的變化,系統(tǒng)的安全狀況也在不斷變化著;同時由于攻防是矛盾的統(tǒng)一體,道消魔長和魔消道長也在不斷的轉(zhuǎn)換中,因此,再高明的系統(tǒng)管理員也不能保證一臺正在提供服務(wù)的服務(wù)器長時間絕對不被入侵。
所以,安全配置服務(wù)器并不是安全工作的結(jié)束,相反卻是漫長乏味的安全工作的開始,本文我們將初步探討Win2000服務(wù)器入侵檢測的初步技巧,希望能幫助您長期維護(hù)服務(wù)器的安全。
本文中所說的入侵檢測指的是利用Win2000 Server自身的功能及系統(tǒng)管理員自己編寫的軟件/腳本進(jìn)行的檢測,使用防火墻(Firewall)或入侵監(jiān)測系統(tǒng)(IDS)的技巧并不在本文的討論范圍之內(nèi)。
現(xiàn)在假定:我們有一臺Win2000 Server的服務(wù)器,并且經(jīng)過了初步的安全配置(關(guān)于安全配置的詳情可以參閱Win2000 Server安全配置入門<一>),在這種情況下,大部分的入侵者將被拒之門外。(哈哈,我管理員可以回家睡大覺去了)慢著,我說的是大部分,不是全部,經(jīng)過初步安全配置的服務(wù)器雖然可以防御絕大多數(shù)的Script kid(腳本族-只會用別人寫的程序入侵服務(wù)器的人),遇到了真正的高手,還是不堪一擊的。雖然說真正的高手不會隨便進(jìn)入別人的服務(wù)器,但是也難保有幾個品行不端的邪派高手看上了你的服務(wù)器。(我真的這么衰么?)而且,在漏洞的發(fā)現(xiàn)與補(bǔ)丁的發(fā)布之間往往有一段時間的真空,任何知道漏洞資料的人都可以乘虛而入,這時,入侵檢測技術(shù)就顯得非常的重要。
入侵的檢測主要還是根據(jù)應(yīng)用來進(jìn)行,提供了相應(yīng)的服務(wù)就應(yīng)該有相應(yīng)的檢測分析系統(tǒng)來進(jìn)行保護(hù),對于一般的主機(jī)來說,主要應(yīng)該注意以下幾個方面:
1、 基于80端口入侵的檢測
WWW服務(wù)大概是最常見的服務(wù)之一了,而且由于這個服務(wù)面對廣大用戶,服務(wù)的流量和復(fù)雜度都很高,所以針對這個服務(wù)的漏洞和入侵技巧也最多。對于NT來說,IIS一直是系統(tǒng)管理員比較頭疼的一部分(恨不得關(guān)了80端口),不過好在IIS自帶的日志功能從某種程度上可以成為入侵檢測的得力幫手。IIS自帶的日志文件默認(rèn)存放在System32/LogFiles目錄下,一般是按24小時滾動的,在IIS管理器中可以對它進(jìn)行詳細(xì)的配置。(具體怎么配我不管你,不過你要是不詳細(xì)記錄,回頭查不到入侵者的IP可不要哭)
現(xiàn)在我們再假設(shè)(怎么老是假設(shè)呀,煩不煩?)別急呀,我不能為了寫這篇文章真的去黑掉一臺主機(jī),所以只好假設(shè)了,我們假設(shè)一臺WEB服務(wù)器,開放了WWW服務(wù),你是這臺服務(wù)器的系統(tǒng)管理員,已經(jīng)小心地配置了IIS,使用W3C擴(kuò)展的日志格式,并至少記錄了時間(Time)、客戶端IP(Client IP)、方法(Method)、URI資源(URI Stem)、URI查詢(URI Query),協(xié)議狀態(tài)(Protocol Status),我們用最近比較流行的Unicode漏洞來進(jìn)行分析:打開IE的窗口,在地址欄輸入:127.0.0.1/scripts/..%c1% 1c../winnt/system32/cmd.exe?/c+dir 默認(rèn)的情況下你可以看到目錄列表(什么?你已經(jīng)做過安全配置了,看不到?恢復(fù)默認(rèn)安裝,我們要做個實驗),讓我們來看看IIS的日志都記錄了些什么,打開Ex010318.log(Ex代表W3C擴(kuò)展格式,后面的一串?dāng)?shù)字代表日志的記錄日期):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在你的機(jī)器上利用Unicode漏洞(%c1%1c被解碼為"\",實際的情況會因為Windows語言版本的不同而有略微的差別)運(yùn)行了cmd.exe,參數(shù)是/c dir,運(yùn)行結(jié)果成功(HTTP 200代表正確返回)。(哇,記錄得可真夠全的,以后不敢隨便亂玩Unicode了)
大多數(shù)情況下,IIS的日志會忠實地記錄它接收到的任何請求(也有特殊的不被IIS記錄的攻擊,這個我們以后再討論),所以,一個優(yōu)秀的系統(tǒng)管理員應(yīng)該擅長利用這點(diǎn)來發(fā)現(xiàn)入侵的企圖,從而保護(hù)自己的系統(tǒng)。但是,IIS的日志動輒數(shù)十兆、流量大的網(wǎng)站甚至數(shù)十G,人工檢查幾乎沒有可能,唯一的選擇就是使用日志分析軟件,用任何語言編寫一個日志分析軟件(其實就是文本過濾器)都非常簡單,不過考慮到一些實際情況(比如管理員不會寫程序,或者服務(wù)器上一時找不到日志分析軟件),我可以告訴大家一個簡單的方法,比方說你想知道有沒有人從80端口上試圖取得你的Global.asa文件,可以使用以下的CMD命令:find "Global.asa" ex010318.log /i這個命令使用的是NT自帶的find.exe工具(所以不怕緊急情況找不著),可以輕松的從文本文件中找到你想過濾的字符串,"Global.asa"是需要查詢的字符串,ex010318.log是待過濾的文本文件,/i代表忽略大小寫。因為我無意把這篇文章寫成微軟的Help文檔,所以關(guān)于這個命令的其他參數(shù)以及它的增強(qiáng)版FindStr.exe的用法請去查看Win2000的幫助文件。
無論是基于日志分析軟件或者是Find命令,你都可以建立一張敏感字符串列表,包含已有的IIS漏洞(比如"+.htr")以及未來將要出現(xiàn)的漏洞可能會調(diào)用的資源(比如Global.asa或者cmd.exe),通過過濾這張不斷更新的字符串表,一定可以盡早了解入侵者的行動。
需要提醒的是,使用任何日志分析軟件都會占用一定的系統(tǒng)資源,因此,對于IIS日志分析這樣低優(yōu)先級的任務(wù),放在夜里空閑時自動執(zhí)行會比較合適,如果再寫一段腳本把過濾后的可疑文本發(fā)送給系統(tǒng)管理員,那就更加完美了。同時,如果敏感字符串表較大,過濾策略復(fù)雜,我建議還是用C寫一個專用程序會比較合算。
2、 基于安全日志的檢測
通過基于IIS日志的入侵監(jiān)測,我們能提前知道窺伺者的行蹤(如果你處理失當(dāng),窺伺者隨時會變成入侵者),但是IIS日志不是萬能的,它在某種情況下甚至不能記錄來自80端口的入侵,根據(jù)我對IIS日志系統(tǒng)的分析,IIS只有在一個請求完成后才會寫入日志,換言之,如果一個請求中途失敗,日志文件中是不會有它的蹤影的(這里的中途失敗并不是指發(fā)生HTTP400錯誤這樣的情況,而是從TCP層上沒有完成HTTP請求,例如在POST大量數(shù)據(jù)時異常中斷),對于入侵者來說,就有可能繞過日志系統(tǒng)完成大量的活動。
而且,對于非80 Only的主機(jī),入侵者也可以從其它的服務(wù)進(jìn)入服務(wù)器,因此,建立一套完整的安全監(jiān)測系統(tǒng)是非常必要的。
Win2000自帶了相當(dāng)強(qiáng)大的安全日志系統(tǒng),從用戶登錄到特權(quán)的使用都有非常詳細(xì)的記錄,可惜的是,默認(rèn)安裝下安全審核是關(guān)閉的,以至于一些主機(jī)被黑后根本沒法追蹤入侵者。所以,我們要做的第一步是在管理工具-本地安全策略-本地策略-審核策略中打開必要的審核,一般來說,登錄事件與賬戶管理是我們最關(guān)心的事件,同時打開成功和失敗審核非常必要,其他的審核也要打開失敗審核,這樣可以使得入侵者步步維艱,一不小心就會露出馬腳。僅僅打開安全審核并沒有完全解決問題,如果沒有很好的配置安全日志的大小及覆蓋方式,一個老練的入侵者就能夠通過洪水般的偽造入侵請求覆蓋掉他真正的行蹤。通常情況下,將安全日志的大小指定為50MB并且只允許覆蓋7天前的日志可以避免上述情況的出現(xiàn)。
設(shè)置了安全日志卻不去檢查跟沒有設(shè)置安全日志幾乎一樣糟糕(唯一的優(yōu)點(diǎn)是被黑了以后可以追查入侵者),所以,制定一個安全日志的檢查機(jī)制也是非常重要的,作為安全日志,推薦的檢查時間是每天上午,這是因為,入侵者喜歡夜間行動(速度快呀,要不你入侵到一半的時候連不上了,那可是哭都哭不出來)上午上班第一件事正好看看日志有沒有異常,然后就可以放心去做其他的事了。如果你喜歡,也可以編寫腳本每天把安全日志作為郵件發(fā)送給你(別太相信這個了,要是哪個高手上去改了你的腳本,每天發(fā)送"平安無事"……)
除了安全日志,系統(tǒng)日志和應(yīng)用程序日志也是非常好的輔助監(jiān)測工具,一般來說,入侵者除了在安全日志中留下痕跡(如果他拿到了Admin權(quán)限,那么他一定會去清除痕跡的),在系統(tǒng)和應(yīng)用程序日志中也會留下蛛絲馬跡,作為系統(tǒng)管理員,要有不放過任何異常的態(tài)度,這樣入侵者就很難隱藏他們的行蹤。
3、 文件訪問日志與關(guān)鍵文件保護(hù)
除了系統(tǒng)默認(rèn)的安全審核外,對于關(guān)鍵的文件,我們還要加設(shè)文件訪問日志,記錄對他們的訪問。
文件訪問有很多的選項:訪問、修改、執(zhí)行、新建、屬性更改......一般來說,關(guān)注訪問和修改就能起到很大的監(jiān)視作用。
例如,如果我們監(jiān)視了系統(tǒng)目錄的修改、創(chuàng)建,甚至部分重要文件的訪問(例如cmd.exe,net.exe,system32目錄),那么,入侵者就很難安放后門而不引起我們的注意,要注意的是,監(jiān)視的關(guān)鍵文件和項目不能太多,否則不僅增加系統(tǒng)負(fù)擔(dān),還會擾亂日常的日志監(jiān)測工作
(哪個系統(tǒng)管理員有耐心每天看四、五千條垃圾日志?)
關(guān)鍵文件不僅僅指的是系統(tǒng)文件,還包括有可能對系統(tǒng)管理員/其他用戶構(gòu)成危害的任何文件,例如系統(tǒng)管理員的配置、桌面文件等等,這些都是有可能用來竊取系統(tǒng)管理員資料/密碼的。
4、 進(jìn)程監(jiān)控
進(jìn)程監(jiān)控技術(shù)是追蹤木馬后門的另一個有力武器,90%以上的木馬和后門是以進(jìn)程的形式存在的(也有以其他形式存在的木馬,參見《揭開木馬的神秘面紗三》),作為系統(tǒng)管理員,了解服務(wù)器上運(yùn)行的每個進(jìn)程是職責(zé)之一(否則不要說安全,連系統(tǒng)優(yōu)化都沒有辦法做),做一份每臺服務(wù)器運(yùn)行進(jìn)程的列表非常必要,能幫助管理員一眼就發(fā)現(xiàn)入侵進(jìn)程,異常的用戶進(jìn)程或者異常的資源占用都有可能是非法進(jìn)程。除了進(jìn)程外,DLL也是危險的東西,例如把原本是exe類型的木馬改寫為dll后,使用rundll32運(yùn)行就比較具有迷惑性。
5、 注冊表校驗
一般來說,木馬或者后門都會利用注冊表來再次運(yùn)行自己,所以,校驗注冊表來發(fā)現(xiàn)入侵也是常用的手法之一。一般來說,如果一個入侵者只懂得使用流行的木馬,那么由于普通木馬只能寫入特定的幾個鍵值(比如Run、Runonce等等),查找起來是相對容易的,但是對于可以自己編寫/改寫木馬的人來說,注冊表的任何地方都可以藏身,靠手工查找就沒有可能了。(注冊表藏身千變?nèi)f化,例如需要特別提出來的FakeGina技術(shù),這種利用WINNT外嵌登錄DLL(Ginadll)來獲得用戶密碼的方法最近比較流行,一旦中招,登錄用戶的密碼就會被記錄 無遺,具體的預(yù)防方法我這里就不介紹了。)應(yīng)對的方法是監(jiān)控注冊表的任何改動,這樣改寫注冊表的木馬就沒有辦法遁形了。監(jiān)控注冊表的軟件非常多,很多追查木馬的軟件都帶有這樣的功能,一個監(jiān)控軟件加上定期對注冊表進(jìn)行備份,萬一注冊表被非授權(quán)修改,系統(tǒng)管理員也能在最短的時間內(nèi)恢復(fù)。
6、端口監(jiān)控
雖然說不使用端口的木馬已經(jīng)出現(xiàn),但是大部分的后門和木馬還是使用TCP連接的,監(jiān)控端口的狀況對于由于種種原因不能封鎖端口的主機(jī)來說就是非常重要的了,我們這里不談使用NDIS網(wǎng)卡高級編程的IDS系統(tǒng),對于系統(tǒng)管理員來說,了解自己服務(wù)器上開放的端口甚至比對進(jìn)程的監(jiān)控更加重要,常常使用netstat查看服務(wù)器的端口狀況是一個良好的習(xí)慣,但是并不能24小時這樣做,而且NT的安全日志有一個壞習(xí)慣,喜歡記錄機(jī)器名而不是IP(不知道比爾蓋子怎么想的),如果你既沒有防火墻又沒有入侵檢測軟件,倒是可以用腳本來進(jìn)行IP日志記錄的,看著這個命令:
netstat -n -p tcp 10>>Netstat.log,這個命令每10秒鐘自動查看一次TCP的連接狀況,基于這個命令我們做一個Netlog.bat文件:
time /t>>Netstat.log
Netstat -n -p tcp 10>>Netstat.log
這個腳本將會自動記錄時間和TCP連接狀態(tài),需要注意的是:如果網(wǎng)站訪問量比較大,這樣的操作是需要消耗一定的CPU時間的,而且日志文件將越來越大,所以請慎之又慎。(要是做個腳本就完美無缺,誰去買防火墻?:)
一旦發(fā)現(xiàn)異常的端口,可以使用特殊的程序來關(guān)聯(lián)端口、可執(zhí)行文件和進(jìn)程(如inzider就有這樣的功能,它可以發(fā)現(xiàn)服務(wù)器監(jiān)聽的端口并找出與該端口關(guān)聯(lián)的文件,inzider可以http://www.nttoolbox.com下載到),這樣無論是使用TCP還是UDP的木馬都無處藏身。
7、終端服務(wù)的日志監(jiān)控
單獨(dú)將終端服務(wù)(Terminal Service)的日志監(jiān)控分列出來是有原因的,微軟Win2000服務(wù)器版中自帶的終端服務(wù)Terminal Service是一個基于遠(yuǎn)程桌面協(xié)議(RDP)的工具,它的速度非常快,也很穩(wěn)定,可以成為一個很好的遠(yuǎn)程管理軟件,但是因為這個軟件功能強(qiáng)大而且只受到密碼的保護(hù),所以也非常的危險,一旦入侵者擁有了管理員密碼,就能夠象本機(jī)一樣操作遠(yuǎn)程服務(wù)器(不需要高深的NT命令行技巧,不需要編寫特殊的腳本和程序,只要會用鼠標(biāo)就能進(jìn)行一切系統(tǒng)管理操作,實在是太方便、也實在是太可怕了)。雖然很多人都在使用終端服務(wù)來進(jìn)行遠(yuǎn)程管理,但是,并不是人人都知道如何對終端服務(wù)進(jìn)行審核,大多數(shù)的終端服務(wù)器上并沒有打開終端登錄的日志,其實打開日志審核是很容易的,在管理工具中打開遠(yuǎn)程控制服務(wù)配置(Terminal Service Configration),點(diǎn)擊"連接",右擊你想配置的RDP服務(wù)(比如 RDP-TCP(Microsoft RDP 5.0),選中書簽"權(quán)限",點(diǎn)擊左下角的"高級",看見上面那個"審核"了么?我們來加入一個Everyone組,這代表所有的用戶,然后審核他的"連接"、"斷開"、"注銷"的成功和"登錄"的成功和失敗就足夠了,審核太多了反而不好,這個審核是記錄在安全日志中的,可以從"管理工具"->"日志查看器"中查看,F(xiàn)在什么人什么時候登錄我都一清二楚了,可是美中不足的是:這個破爛玩藝居然不記錄客戶端的IP(只能查看在線用戶的IP),而是華而不實的記錄什么機(jī)器名,倒!要是別人起個PIG的機(jī)器名你只好受他的嘲弄了,不知道微軟是怎么想的,看來還是不能完全依賴微軟呀,我們自己來吧?寫個程序,一切搞定,你會C么?不會?VB呢?也不會?Delphi?……什么?你什么編程語言都不會?我倒,畢竟系統(tǒng)管理員不是程序員呀,別急別急,我給你想辦法,我們來建立一個bat文件,叫做TSLog.bat,這個文件用來記錄登錄者的IP,內(nèi)容如下:
time /t >>TSLog.log
netstat -n -p tcp | find ":3389">>TSLog.log
start Explorer
我來解釋一下這個文件的含義:
第一行是記錄用戶登錄的時間,time /t的意思是直接返回系統(tǒng)時間(如果不加/t,系統(tǒng)會等待你輸入新的時間) ,然后我們用追加符號">>"把這個時間記入TSLog.log作為日志的時間字段;
第二行是記錄用戶的IP地址,netstat是用來顯示當(dāng)前網(wǎng)絡(luò)連接狀況的命令,-n表示顯示IP和端口而不是域名、協(xié)議,-ptcp是只顯示tcp協(xié)議,然后我們用管道符號"|"把這個命令的結(jié)果輸出給find命令,從輸出結(jié)果中查找包含":3389"的行(這就是我們要的客戶的IP所在的行,如果你更改了終端服務(wù)的端口,這個數(shù)值也要作相應(yīng)的更改),最后我們同樣把這個結(jié)果重定向到日志文件TSLog.log中去,于是在SLog.log文件中,記錄格式如下:
22:40
TCP192.168.12.28:3389192.168.10.123:4903 ESTABLISHED
22:54
TCP192.168.12.28:3389 192.168.12.29:1039 ESTABLISHED
也就是說只要這個TSLog.bat文件一運(yùn)行,所有連在3389端口上的IP都會被記錄,那么如何讓這個批處理文件自動運(yùn)行呢?我們知道,終端服務(wù)允許我們?yōu)橛脩糇远x起始的程序,在終端服務(wù)配置中,我們覆蓋用戶的登錄腳本設(shè)置并指定TSLog.bat為用戶登錄時需要打開的腳本,這樣每個用戶登錄后都必須執(zhí)行這個腳本,因為默認(rèn)的腳本(相當(dāng)于shell環(huán)境)是Explorer(資源管理器),所以我在TSLog.bat的最后一行加上了啟動Explorer的命令startExplorer,如果不加這一行命令,用戶是沒有辦法進(jìn)入桌面的!當(dāng)然,如果你只需要給用戶特定的Shell:
例如cmd.exe或者word.exe你也可以把start Explorer替換成任意的shell。這個腳本也可以有其他的寫法,作為系統(tǒng)管理員,你完全可以自由發(fā)揮你的想象力、自由利用自己的資源,例如寫一個腳本把每個登錄用戶的IP發(fā)送到自己的信箱對于重要的服務(wù)器也是一個很好的方法。正常情況下一般的用戶沒有查看終端服務(wù)設(shè)置的權(quán)限,所以他不會知道你對登錄進(jìn)行了IP審核,只要把TSLog.bat文件和TSLog.log文件放在比較隱蔽的目錄里就足夠了,不過需要注意的是這只是一個簡單的終端服務(wù)日志策略,并沒有太多的安全保障措施和權(quán)限機(jī)制,如果服務(wù)器有更高的安全要求,那還是需要通過編程或購買入侵監(jiān)測軟件來完成的。
8、陷阱技術(shù)
早期的陷阱技術(shù)只是一個偽裝的端口服務(wù)用來監(jiān)測掃描,隨著矛和盾的不斷升級,現(xiàn)在的陷阱服務(wù)或者陷阱主機(jī)已經(jīng)越來越完善,越來越象真正的服務(wù),不僅能截獲半開式掃描,還能偽裝服務(wù)的回應(yīng)并記錄入侵者的行為,從而幫助判斷入侵者的身份。
我本人對于陷阱技術(shù)并不是非常感興趣,一來從技術(shù)人員角度來說,低調(diào)行事更符合安全的原則;二來陷阱主機(jī)反而成為入侵者跳板的情況并不僅僅出現(xiàn)在小說中,在現(xiàn)實生活中也屢見不鮮,如果架設(shè)了陷阱反而被用來入侵,那真是偷雞不成了。
記得CoolFire說過一句話,可以用來作為對陷阱技術(shù)介紹的一個結(jié)束:在不了解情況時,不要隨便進(jìn)入別人的系統(tǒng),因為你永遠(yuǎn)不能事先知道系統(tǒng)管理員是真的白癡或者偽裝成白癡的天才......
入侵監(jiān)測的初步介紹就到這里,在實際運(yùn)用中,系統(tǒng)管理員對基礎(chǔ)知識掌握的情況直接關(guān)系到他的安全敏感度,只有身經(jīng)百戰(zhàn)而又知識豐富、仔細(xì)小心的系統(tǒng)管理員才能從一點(diǎn)點(diǎn)的蛛絲馬跡中發(fā)現(xiàn)入侵者的影子,未雨綢繆,扼殺入侵的行動。
|