目前,WIN2000 SERVER是比較流行的服務器操作系統之一,但是要想安全的配置微軟的這個操作系統,卻不是一件容易的事。本文試圖對win2000 SERVER的安全配置進行初步的探討。
一、定制自己的WIN2000 SERVER:
1.版本的選擇:Win2000有各種語言的版本,對于我們來說,可以選擇英文版或簡體中文版,我強烈建議:在語言不成為障礙的情況下,請一定使用英文版。要知道,微軟的產品是以Bug & Patch而著稱的,中文版的Bug遠遠多于英文版,而補丁一般還會遲至少半個月(也就是說一般微軟公布了漏洞后你的機子還會有半個月處于無保護狀況)
2.組件的定制:
Win2000在默認情況下會安裝一些常用的組件,但是正是這個默認安裝是極度危險的(米特尼科說過,他可以進入任何一臺默認安裝的服務器,我雖然不敢這么說,不過如果你的主機是Win2000 SERVER的默認安裝,我可以告訴你,你死定了)
你應該確切的知道你需要哪些服務,而且僅僅安裝你確實需要的服務,根據安全原則,最少的服務+最小的權限=最大的安全。
典型的WEB服務器需要的最小組件選擇是:只安裝IIS的Com Files,IIS Snap-In,WWW Server組件。如果你確實需要安裝其他組件,請慎重,特別是:Indexing Service, FrontPage 2000 Server Extensions, Internet Service Manager (HTML)這幾個危險服務。
3.管理應用程序的選擇:
選擇一個好的遠程管理軟件是非常重要的事,這不僅僅是安全方面的要求,也是應用方面的需要。
Win2000的Terminal Service是基于RDP(遠程桌面協議)的遠程控制軟件,他的速度快,操作方便,比較適合用來進行常規操作。
但是,Terminal Service也有其不足之處,由于它使用的是虛擬桌面,再加上微軟編程的不嚴謹,當你使用Terminal Service進行安裝軟件或重起服務器等與真實桌面交互的操作時,往往會出現哭笑不得的現象,例如:使用Terminal Service重起微軟的認證服務器(Compaq, IBM等)可能會直接關機。
所以,為了安全起見,我建議你再配備一個遠程控制軟件作為輔助,和Terminal Service互補,象PcAnyWhere就是一個不錯的選擇。
二、正確安裝WIN2000 SERVER:
1.分區和邏輯盤的分配,有一些朋友為了省事,將硬盤僅僅分為一個邏輯盤,所有的軟件都裝在C驅上,這是很不好的,建議最少建立兩個分區,一個系統分區,一個應用程序分區,這是因為,微軟的IIS經常會有泄漏源碼/溢出的漏洞,如果把系統和IIS放在同一個驅動器會導致系統文件的泄漏甚至入侵者遠程獲取ADMIN。
推薦的安全配置是建立三個邏輯驅動器,第一個大于2G,用來裝系統和重要的日志文件,第二個放IIS,第三個放FTP,這樣無論IIS或FTP出了安全漏洞都不會直接影響到系統目錄和系統文件。
要知道,IIS和FTP是對外服務的,比較容易出問題。而把IIS和FTP分開主要是為了防止入侵者上傳程序并從IIS中運行。(這個可能會導致程序開發人員和編輯的苦惱,管他呢,反正你是管理員)
2.安裝順序的選擇:
不要覺得:順序有什么重要?只要安裝好了,怎么裝都可以的。
錯!win2000在安裝中有幾個順序是一定要注意的:
首先,何時接入網絡:Win2000在安裝時有一個漏洞,在你輸入Administrator密碼后,系統就建立了ADMIN$的共享,但是并沒有用你剛剛輸入的密碼來保護它,這種情況一直持續到你再次啟動后,在此期間,任何人都可以通過ADMIN$進入你的機器;同時,只要安裝一完成,各種服務就會自動運行,而這時的服務器是滿身漏洞,非常容易進入的,因此,在完全安裝并配置好win2000 SERVER之前,一定不要把主機接入網絡。
其次,補丁的安裝:補丁的安裝應該在所有應用程序安裝完之后,因為補丁程序往往要替換/修改某些系統文件,如果先安裝補丁再安裝應用程序有可能導致補丁不能起到應有的效果,例如:IIS的HotFix就要求每次更改IIS的配置都需要安裝
三、安全配置WIN2000 SERVER:
即使正確的安裝了WIN2000 SERVER,系統還是有很多的漏洞,還需要進一步進行細致地配置。
1.端口:
端口是計算機和外部網絡相連的邏輯接口,也是計算機的第一道屏障,端口配置正確與否直接影響到主機的安全,一般來說,僅打開你需要使用的端口會比較安全,配置的方法是在網卡屬性-TCP/IP-高級-選項-TCP/IP篩選中啟用TCP/IP篩選,不過對于win2000的端口過濾來說,有一個不好的特性:只能規定開哪些端口,不能規定關閉哪些端口,這樣對于需要開大量端口的用戶就比較痛苦。
2.IIS:
IIS是微軟的組件中漏洞最多的一個,平均兩三個月就要出一個漏洞,而微軟的IIS默認安裝又實在不敢恭維,所以IIS的配置是我們的重點,現在大家跟著我一起來:
首先,把C盤那個什么Inetpub目錄徹底刪掉,在D盤建一個Inetpub(要是你不放心用默認目錄名也可以改一個名字,但是自己要記得)在IIS管理器中將主目錄指向D:Inetpub;
其次,那個IIS安裝時默認的什么scripts等虛擬目錄一概刪除(罪惡之源呀,忘了
我們雖然已經把Inetpub從系統盤挪出來了,但是還是小心為上),如果你需要什么權限的目錄可以自己慢慢建,需要什么權限開什么。(特別注意寫權限和執行程序的權限,沒有絕對的必要千萬不要給)
3: 應用程序配置:
在IIS管理器中刪除必須之外的任何無用映射,必須指的是ASP, ASA和其他你確實需要用到的文件類型,例如你用到stml等(使用server side include),實際上90%的主機有了上面兩個映射就夠了,其余的映射幾乎每個都有一個凄慘的故事:htw, htr, idq, ida……想知道這些故事?去查以前的漏洞列表吧。
什么?找不到在哪里刪?
在IIS管理器中右擊主機->屬性->WWW服務 編輯->主目錄 配置->應用程序映射,然后就開始一個個刪吧(里面沒有全選的,嘿嘿)。接著在剛剛那個窗口的應用程序調試書簽內將腳本錯誤消息改為發送文本(除非你想ASP出錯的時候用戶知道你的程序/網絡/數據庫結構)錯誤文本寫什么?隨便你喜歡,自己看著辦。點擊確定退出時別忘了讓虛擬站點繼承你設定的屬性。
為了對付日益增多的cgi漏洞掃描器,還有一個小技巧可以參考,在IIS中將HTTP404 Object Not Found出錯頁面通過URL重定向到一個定制HTM文件,可以讓目前絕大多數CGI漏洞掃描器失靈。其實原因很簡單,大多數CGI掃描器在編寫時為了方便,都是通過查看返回頁面的HTTP代碼來判斷漏洞是否存在的,例如,著名的IDQ漏洞一般都是通過取1.idq來檢驗,如果返回HTTP200,就認為是有這個漏洞,反之如果返回HTTP404就認為沒有,如果你通過URL將HTTP404出錯信息重定向到HTTP404.htm文件,那么所有的掃描無論存不存在漏洞都會返回HTTP200,90%的CGI掃描器會認為你什么漏洞都有,結果反而掩蓋了你真正的漏洞,讓入侵者茫然無處下手(武俠小說中常說全身漏洞反而無懈可擊,難道說的就是這個境界?)不過從個人角度來說,我還是認為扎扎實實做好安全設置比這樣的小技巧重要的多。
最后,為了保險起見,你可以使用IIS的備份功能,將剛剛的設定全部備份下來,這樣就可以隨時恢復IIS的安全配置。還有,如果你怕IIS負荷過高導致服務器滿負荷死機,也可以在性能中打開CPU限制,例如將IIS的最大CPU使用率限制在70%。
4.賬號安全:
Win2000的賬號安全是另一個重點,首先,Win2000的默認安裝允許任何用戶通過空用戶得到系統所有賬號/共享列表,這個本來是為了方便局域網用戶共享文件的,但是一個遠程用戶也可以得到你的用戶列表并使用暴力法破解用戶密碼。很多朋友都知道可以通過更改注冊表Local_MachineSystemCurrentControlSetControlLSA-RestrictAnonymous = 1來禁止139空連接,
實際上win2000的本地安全策略(如果是域服務器就是在域服務器安全和域安全策略中)就有這樣的選項RestrictAnonymous(匿名連接的額外限制),這個選項有三個值:
0:None. Rely on default permissions(無,取決于默認的權限)
1:Do not allow enumeration of SAM accounts and shares(不允許枚舉SAM帳號和共享)
2:No access without explicit anonymous permissions(沒有顯式匿名權限就不允許訪問)
0這個值是系統默認的,什么限制都沒有,遠程用戶可以知道你機器上所有的賬號、組信息、共享目錄、網絡傳輸 NetServerTransportEnum等等,對服務器來說這樣的設置非常危險。
1 這個值是只允許非NULL用戶存取SAM賬號信息和共享信息。
2 這個值是在win2000中才支持的,需要注意的是,如果你一旦使用了這個值,你的共享估計就全部完蛋了,所以我推薦你還是設為1比較好。 好了,入侵者現在沒有辦法拿到我們的用戶列表,我們的賬戶安全了……
慢著,至少還有一個賬戶是可以跑密碼的,這就是系統內建的administrator,怎么辦?我改改改,在計算機管理->用戶賬號中右擊administrator然后改名,改成什么隨便你,只要能記得就行了。
不對不對,我都已經改了用戶名了,怎么還是有人跑我管理員的密碼?幸好我的密碼夠長,但是這也不是辦法呀?嗯,那肯定是在本地或者Terminal Service的登錄界面看到的,好吧,我們再來把HKEY_LOCAL_MACHINESOFTWAREMicrosoft WindowsNTCurrentVersionwinlogon項中的Don’t Display Last User Name串數據改成1,這樣系統不會自動顯示上次的登錄用戶名。
將服務器注冊表HKEY_LOCAL_ MACHINESOFTWAREMicrosoft WindowsNTCurrentVersionWinlogon項中的Don‘t Display Last User Name串數據修改為1,隱藏上次登陸控制臺的用戶名。
5.安全日志:
我遇到過這樣的情況,一臺主機被別人入侵了,系統管理員請我去追查兇手,我登錄進去一看:安全日志是空的,倒,請記住:Win2000的默認安裝是不開任何安全審核的!那么請你到本地安全策略->審核策略中打開相應的審核,推薦的審核是:
賬戶管理 成功 失敗
登錄事件 成功 失敗
對象訪問 失敗
策略更改 成功 失敗
特權使用 失敗
系統事件 成功 失敗
目錄服務訪問 失敗
賬戶登錄事件 成功 失敗
審核項目少的缺點是萬一你想看發現沒有記錄那就一點都沒轍;審核項目太多不僅會占用系統資源而且會導致你根本沒空去看,這樣就失去了審核的意義。
與之相關的是:
在賬戶策略->密碼策略中設定:
密碼復雜性要求 啟用
密碼長度最小值 6位
強制密碼歷史 5次
最長存留期 30天
在賬戶策略->賬戶鎖定策略中設定:
賬戶鎖定 3次錯誤登錄
鎖定時間 20分鐘
復位鎖定計數 20分鐘
同樣,Terminal Service的安全日志默認也是不開的,我們可以在Terminal Service Configration(遠程服務配置)-權限-高級中配置安全審核,一般來說只要記錄登錄、注銷事件就可以了。
6.目錄和文件權限:
為了控制好服務器上用戶的權限,同時也為了預防以后可能的入侵和溢出,我們還必須非常小心地設置目錄和文件的訪問權限,NT的訪問權限分為:讀取、寫入、讀取及執行、修改、列目錄、完全控制。在默認的情況下,大多數的文件夾對所有用戶(Everyone這個組)是完全敞開的(Full Control),你需要根據應用的需要進行權限重設。
在進行權限控制時,請記住以下幾個原則:
1>限是累計的:如果一個用戶同時屬于兩個組,那么他就有了這兩個組所允許的所有權限;
2>拒絕的權限要比允許的權限高(拒絕策略會先執行)如果一個用戶屬于一個被拒絕訪問某個資源的組,那么不管其他的權限設置給他開放了多少權限,他也一定不能訪問這個資源。所以請非常小心地使用拒絕,任何一個不當的拒絕都有可能造成系統無法正常運行;
3>文件權限比文件夾權限高(這個不用解釋了吧?)
4>利用用戶組來進行權限控制是一個成熟的系統管理員必須具有的優良習慣之一;
5>僅給用戶真正需要的權限,權限的最小化原則是安全的重要保障;
7:預防DoS:
在注冊表HKLMSYSTEMCurrentControlSetServicesTcpipParameters中更改以下值可以幫助你防御一定強度的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的風暴攻擊和碎片攻擊也是NT主機比較頭疼的攻擊方法,其實應付的方法也很簡單,win2000自帶一個Routing & Remote Access工具,這個工具初具路由器的雛形(微軟真是的,什么都要做?聽說最近又要做防火墻了)在這個工具中,我們可以輕易的定義輸入輸出包過濾器,例如,設定輸入ICMP代碼255丟棄就表示丟棄所有的外來ICMP報文。
四、需要注意的一些事:
實際上,安全和應用在很多時候是矛盾的,因此,你需要在其中找到平衡點,畢竟服務器是給用戶用而不是做OPEN HACK的,如果安全原則妨礙了系統應用,那么這個安全原則也不是一個好的原則。網絡安全是一項系統工程,它不僅有空間的跨度,還有時間的跨度。很多朋友(包括部分系統管理員)認為進行了安全配置的主機就是安全的,其實這其中有個誤區:我們只能說一臺主機在一定的情況一定的時間上是安全的,隨著網絡結構的變化、新的漏洞的發現,管理員/用戶的操作,主機的安全狀況是隨時隨地變化著的,只有讓安全意識和安全制度貫穿整個過程才能做到真正的安全。