不錯的文章-服務器防黑

 

服務器防黑
目前,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安裝時默認的什麼s cripts等虛擬目錄一概刪除(罪惡之源呀,忘http://www.target.com/s cripts/..%c1%1c../winnt/system32/cmd.exe了?我們雖然已經把Inetpub從系統盤挪出來了,但是還是小心爲上),如果你需要什麼權限的目錄可以自己慢慢建,需要什麼權限開什麼。(特別注意寫權限和執行程序的權限,沒有絕對的必要千萬不要給)
第三,應用程序配置:在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%。
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安全的文章,在此向這些作者表示感謝。
提高IIS 5.0網站伺服器的執行效率的八種方法
 以下是提高IIS 5.0網站伺服器的執行效率的八種方法:
 1. 啓用HTTP的持續作用可以改善15~20%的執行效率。
 2. 不啓用記錄可以改善5~8%的執行效率。
 3. 使用 [獨立] 的處理程序會損失20%的執行效率。
 4. 增加快取記憶體的保存檔案數量,可提高Active Server Pages之效能。
 5. 勿使用CGI程式。
 6. 增加IIS 5.0電腦CPU數量。
 7. 勿啓用ASP偵錯功能。
 8. 靜態網頁採用HTTP 壓縮,大約可以減少20%的傳輸量。
 簡單介紹如下。
 1、啓用HTTP的持續作用
 啓用HTTP的持續作用(Keep-Alive)時,IIS與瀏覽器的連線不會斷線,可以改善執行效率,直到瀏覽器關閉時連線纔會斷線。因爲維持「Keep-Alive」狀態時,於每次用戶端請求時都不須重新建立一個新的連接,所以將改善伺服器的效率。
 此功能爲HTTP 1.1預設的功能,HTTP 1.0加上Keep-Alive header也可以提供HTTP的持續作用功能。
 2、啓用HTTP的持續作用可以改善15~20%的執行效率。
 如何啓用HTTP的持續作用呢?步驟如下:
 在 [Internet服務管理員] 中,選取整個IIS電腦、或Web站臺,於 [內容] 之 [主目錄] 頁,勾選 [HTTP的持續作用] 選項。
 3、不啓用記錄
 不啓用記錄可以改善5~8%的執行效率。
 如何設定不啓用記錄呢?步驟如下:
 在 [Internet服務管理員] 中,選取整個IIS電腦、或Web站臺,於 [內容] 之 [主目錄] 頁,不勾選 [啓用記錄] 選項。
 設定非獨立的處理程序
 使用 [獨立] 的處理程序會損失20%的執行效率,此處所謂「獨立」係指將 [主目錄]、[虛擬目錄] 頁之應用程式保護選項設定爲 [高(獨立的)] 時。因此 [應用程式保護] 設定爲 [低 (IIS處理程序)] 時執行效率較高,設定畫面如下:
 如何設定非「獨立」的處理程序呢?步驟如下:
 在 [Internet服務管理員] 中,選取整個IIS電腦、Web站臺、或應用程式的起始目錄。於 [內容] 之 [主目錄]、[虛擬目錄] 頁,設定應用程式保護選項爲 [低 (IIS處理程序)] 。
 4、調整快取(Cache)記憶體
 IIS 5.0將靜態的網頁資料暫存於快取(Cache)記憶體當中;IIS 4.0則將靜態的網頁資料暫存於檔案當中。調整快取(Cache)記憶體的保存檔案數量可以改善執行效率。
 ASP指令檔案執行過後,會在暫存於快取(Cache)記憶體中以提高執行效能。增加快取記憶體的保存檔案數量,可提高Active Server Pages之效能。
 可以設定所有在整個IIS電腦、「獨立」Web站臺、或「獨立」應用程式上執行之應用程式的快取記憶體檔案數量。
 如何設定快取(Cache)功能呢?步驟如下:
 在 [Internet服務管理員] 中,選取整個IIS電腦、「獨立」Web站臺、或「獨立」應用程式的起始目錄。於 [內容] 之 [主目錄]、[虛擬目錄] 頁,按下 [設定] 按鈕時,即可由 [處理程序選項] 頁設定 [指令檔快取記憶體] 。
 如何設定快取(Cache)記憶體檔案數量呢?步驟如下:
 在 [Internet服務管理員] 中,選取整個IIS電腦、或Web站臺的起始目錄。於 [內容] 之 [伺服器擴充程式] 頁,按下 [設定] 按鈕。
 即可設定快取(Cache)記憶體檔案數量。
 5、勿使用CGI程式
 使用CGI程式時,因爲處理程序(Process)須不斷地產生與摧毀,造成執行效率不佳。
 一般而言,執行效率比較如下:
    靜態網頁(Static):100
    ISAPI:50
    ASP:10
    CGI:1
 換句話說,ASP比CGI可能快10倍,因此勿使用CGI程式可以改善IIS的執行效率。
 以彈性(Flexibility)而言:ASP > CGI > ISAPI > 靜態網頁(Static)。
 以安全(Security)而言:ASP(獨立) = ISAPI(獨立)= CGI > ASP(非獨立) = ISAPI(非獨立)= 靜態網頁(Static)。
 6、增加IIS 5.0電腦CPU數量
 根據微軟的測試報告,增加IIS 4.0電腦CPU數量,執行效率並不會改善多少;但是增加IIS 5.0電腦CPU數量,執行效率會幾乎成正比地提供,換句話說,兩顆CPU的IIS 5.0電腦執行效率幾乎是一顆CPU電腦的兩倍,四顆CPU的IIS 5.0電腦執行效率幾乎是一顆CPU電腦的四倍。
 IIS 5.0將靜態的網頁資料暫存於快取(Cache)記憶體當中;IIS 4.0則將靜態的網頁資料暫存於檔案當中。調整快取(Cache)記憶體的保存檔案數量可以改善執行效率。
 7、啓用ASP偵錯功能
 勿啓用ASP偵錯功能可以改善執行效率。
 如何勿啓用ASP偵錯功能呢?步驟如下:
 於 [Internet服務管理員] 中,選取Web站臺、或應用程式的起始目錄,按右鍵選擇 [內容],按 [主目錄]、[虛擬目錄] 或 [目錄] 頁,按下 [設定] 按鈕,選擇 [應用程式偵錯] 頁,不勾選 [啓用ASP伺服器端指令偵錯]、[啓用ASP用戶端指令偵錯] 選項。
 8、靜態網頁採用HTTP 壓縮
 靜態網頁採用HTTP 壓縮,大約可以減少20%的傳輸量。
 HTTP壓縮功能啓用或關閉,系針對整臺IIS伺服器來設定。
 用戶端使用IE 5.0瀏覽器連線到已經啓用HTTP壓縮IIS 5.0之Web伺服器,纔有HTTP壓縮功能。
 如何啓用HTTP壓縮功能呢?步驟如下:
 若要啓用HTTP壓縮功能,方法爲在 [Internet服務管理員] 中,選取電腦之 [內容],於 [主要內容] 之下選取 [WWW服務]。然後按一下 [編輯] 按鈕,於 [服務] 頁上,選取 [壓縮靜態檔案] 可以壓縮靜態檔案,不選取 [壓縮應用程式檔案] 。
 動態產生的內容檔案(壓縮應用程式檔案)也可以壓縮,但是須耗費額外CPU處理時間,若% Processor Time已經百分之八十或更多時,建議不要壓縮。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章