[轉貼,教學]Win2000 Server安全入門



贊助商連結


tsungchi
2001-03-26, 03:42 PM
Win2000 Server安全入門<一>
安全配置Win2000伺服器
目前,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中運行。(這個可能會導致程式開發人員和編輯的苦惱,管他呢,反正你是管理員J)
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等虛擬目錄一概刪除(罪惡之源呀,忘了http://www.target.com/scripts/..%c1%1c../winnt/system32/cmd.exe了?我們雖然已經把Inetpub從系統盤挪出來了,但是還是小心爲上),如果你需要什麽許可權的目錄可以自己慢慢建,需要什麽許可權開什麽。(特別注意寫許可權和執行程式的許可權,沒有絕對的必要千萬不要給)
第三,應用程式配置:在IIS管理器中刪除必須之外的任何無用映射,必須指的是ASP, ASA和其他你確實需要用到的文件類型,例如你用到stml等(使用server side include),實際上90%的主機有了上面兩個映射就夠了,其餘的映射幾乎每個都有一個淒慘的故事:htw, htr, idq, ida……想知道這些故事?去查以前的漏洞列表吧。什麽?找不到在哪里刪?在IIS管理器中右擊主機->屬性->WWW服務 編輯->主目錄 配置->應用程式映射,然後就開始一個個刪吧(堶惆S有全選的,嘿嘿)。接著在剛剛那個視窗的應用程式調試書簽內將腳本錯誤消息改爲發送文本(除非你想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%。

3.賬號安全:
Win2000的賬號安全是另一個重點,首先,Win2000的默認安裝允許任何用戶通過空用戶得到系統所有賬號/共用列表,這個本來是爲了方便局域網用戶共用文件的,但是一個遠端用戶也可以得到你的用戶列表並使用暴力法破解用戶密碼。很多朋友都知道可以通過更改註冊表Local_Machine\System\CurrentControlSet\Control\LSA-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_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\winlogon項中的Don’t Display Last User Name串資料改成1,這樣系統不會自動顯示上次的登錄用戶名。
將伺服器註冊表HKEY_LOCAL_ MACHINE\SOFTWARE\Microsoft\ WindowsNT\CurrentVersion\Winlogon項中的Don't Display Last User Name串資料修改爲1,隱藏上次登陸控制臺的用戶名。(哇,世界清靜了)
  
5.安全日誌:我遇到過這樣的情況,一台主機被別人入侵了,系統管理員請我去追查兇手,我登錄進去一看:安全日誌是空的,倒,請記住:Win2000的默認安裝是不開任何安全審核的!那麽請你到本地安全策略->審核策略中打開相應的審核,推薦的審核是:
賬戶管理 成功 失敗
登錄事件 成功 失敗
物件訪問 失敗
策略更改 成功 失敗
特權使用 失敗
系統事件 成功 失敗
目錄服務訪問 失敗
賬戶登錄事件 成功 失敗
審核專案少的缺點是萬一你想看發現沒有記錄那就一點都沒轍;審核專案太多不僅會佔用系統資源而且會導致你根本沒空去看,這樣就失去了審核的意義。

與之相關的是:
在賬戶策略->密碼策略中設定:
密碼複雜性要求 啓用
密碼長度最小值 6位
強制密碼歷史 5次
最長存留期 30天
在賬戶策略->賬戶鎖定策略中設定:
賬戶鎖定 3次錯誤登錄
鎖定時間 20分鐘
重定鎖定計數 20分鐘

同樣,Terminal Service的安全日誌默認也是不開的,我們可以在Terminal Service Configration(遠端服務配置)-許可權-高級中配置安全審核,一般來說只要記錄登錄、登出事件就可以了。


7.目錄和文件許可權:
爲了控制好伺服器上用戶的許可權,同時也爲了預防以後可能的入侵和溢出,我們還必須非常小心地設置目錄和文件的訪問許可權,NT的訪問許可權分爲:讀取、寫入、讀取及執行、修改、列目錄、完全控制。在默認的情況下,大多數的文件夾對所有用戶(Everyone這個組)是完全敞開的(Full Control),你需要根據應用的需要進行許可權重設。
在進行許可權控制時,請記住以下幾個原則:
1>限是累計的:如果一個用戶同時屬於兩個組,那麽他就有了這兩個組所允許的所有權限;
2>拒絕的許可權要比允許的許可權高(拒絕策略會先執行)如果一個用戶屬於一個被拒絕訪問某個資源的組,那麽不管其他的許可權設置給他開放了多少許可權,他也一定不能訪問這個資源。所以請非常小心地使用拒絕,任何一個不當的拒絕都有可能造成系統無法正常運行;
3>文件許可權比文件夾許可權高(這個不用解釋了吧?)
4>利用用戶組來進行許可權控制是一個成熟的系統管理員必須具有的優良習慣之一;
5>僅給用戶真正需要的許可權,許可權的最小化原則是安全的重要保障;

8.預防DoS:
在註冊表HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters中更改以下值可以幫助你防禦一定強度的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的,如果安全原則妨礙了系統應用,那麽這個安全原則也不是一個好的原則。
網路安全是一項系統工程,它不僅有空間的跨度,還有時間的跨度。很多朋友(包括部分系統管理員)認爲進行了安全配置的主機就是安全的,其實這其中有個誤區:我們只能說一台主機在一定的情況一定的時間上是安全的,隨著網路結構的變化、新的漏洞的發現,管理員/用戶的操作,主機的安全狀況是隨時隨地變化著的,只有讓安全意識和安全制度貫穿整個過程才能做到真正的安全。
本文在撰寫過程中參閱了大量Win2000安全的文章,在此向這些作者表示感謝。

贊助商連結


tsungchi
2001-03-26, 03:45 PM
希望這篇能對各位網管有幫助~~

stw_cbx
2001-04-17, 04:09 PM
很好的文章喔....只是有一些亂碼....
可以再貼一次嗎?

tsungchi
2001-04-17, 04:31 PM
原始作者是 : stw_cbx
很好的文章喔....只是有一些亂碼....
可以再貼一次嗎?
因為這篇原本是簡體的~我是用word轉的所以可能會有亂碼

jeffwu
2001-05-10, 01:42 PM
我想這是一遍很有價值的文章
謝謝!!
只是有些亂碼 可惜了
請問這遍文章原始出處?
我想保存起來

jeffwu
2001-05-10, 01:45 PM
原出處在
http://www.softhouse.com.cn/docs/southpark1205.html
剛試著用google去找 竟然找到了 google真是利害