基于Windows平臺下IIS運行的網(wǎng)站總給人一種感覺就是脆弱。早期的IIS確實存在很多問題,不過我個人認為自從Windows Server 2003發(fā)布后,IIS6及Windows Server 2003新的安全特性、更加完善的管理功能和系統(tǒng)的穩(wěn)定性都有很大的增強。雖然從Windows Server 2003上可以看到微軟不準備再發(fā)展ASP,特別是不再對Access數(shù)據(jù)庫的完好支持,但是面對它的那些優(yōu)勢迫使我不得不舍棄Windows 2000 Server。況且我也不需要運行太多的ASP+Access,因為我的程序都是PHP+MySQL(說實話我不喜歡微軟的ASP和ASPNET),而且我確實信賴Windows Server 2003!
服務(wù)器、網(wǎng)站,看到這些詞大家都會想到什么,不只是性能更加關(guān)注的是它的安全問題。很多人都無法做到非常完美的安全加固,因為大部分的資料都來源互聯(lián)網(wǎng),而互聯(lián)網(wǎng)的資料總不是那么詳盡,畢竟每個服務(wù)器的應用環(huán)境及運行程序不同。
我從事互聯(lián)網(wǎng)這個行業(yè)只有2年時間,其間遇到了很多問題,我所管理的服務(wù)器部分是開放式(PUBLIC)的,它是向互聯(lián)網(wǎng)的用戶敞開的,所以我所面臨的問題就更加的多!安全性首當其要,其次是系統(tǒng)的穩(wěn)定性,最后才是性能。要知道服務(wù)器上存在很多格式各樣的應用程序,有些程序本身就有缺陷,輕者造成服務(wù)器當機,嚴重的會危及到服務(wù)器的整個數(shù)據(jù)安全。
舉個例子,有一臺運行著300多個網(wǎng)站的Windows 2000 Server,一段時間里它經(jīng)常Down機,發(fā)現(xiàn)內(nèi)存泄漏特別快,幾分鐘時間內(nèi)存使用立刻飆升到900M甚至高達1.2G,這個時候通過遠程是無法訪問服務(wù)器了,但是服務(wù)器系統(tǒng)本身卻還在運行著。這個問題著實讓我頭疼了很長一段時間,因為如果要排查故障就要從這些網(wǎng)站入手,而網(wǎng)站的數(shù)量阻礙了我的解決進度。后來通過Filemon監(jiān)控文件讀取來縮小排查范圍,之后對可疑網(wǎng)站進行隔離,最終找到故障點并解決。要知道一段小小的代碼就可以讓運行IIS5的 Windows 2000 Server 掛掉!而在Windows Server 2003下,應用程序的級別低中高級變更為了程序池,這樣我們就可以對一個池進行設(shè)置對內(nèi)存和CPU進行保護。它的這一特性讓我減輕了很多的工作量并且系統(tǒng)也穩(wěn)定了很多。
另外嚴重的就是安全性的問題了,無論任何文章都有一個宗旨就是盡量在服務(wù)器少開放端口,并開放必要的服務(wù),禁止安裝與服務(wù)器無關(guān)的應用程序。在 Windows 2000 Server中,目錄權(quán)限都是Everyone,很多服務(wù)都是以SYSTEM權(quán)限來運行的,如Serv-U FTP 這款出色的FTP服務(wù)器平臺曾經(jīng)害苦了不少人,它的溢出漏洞可以使入侵者輕松的獲取系統(tǒng)完全控制權(quán),如果做到呢?就是因為Serv-U FTP服務(wù)使用SYSTEM權(quán)限來運行,SYSTEM的權(quán)利比Administrator的權(quán)利可大的多,注冊表SAM項它是可以直接訪問和修改的,這樣入侵者便利用這一特性輕松在注冊表中克隆一個超級管理員賬號并獲取對系統(tǒng)的完全控制權(quán)限。
我的目標:加固WEB服務(wù)器系統(tǒng),使之提高并完善其穩(wěn)定性及安全性。
系統(tǒng)環(huán)境:Windows Server 2003 Enterprise Edition With Service Pack 1(以下簡稱W2k3SP1),WEB平臺為IIS6,F(xiàn)TP平臺為Serv-U FTP Server
安裝配置操作系統(tǒng)
安裝操作系統(tǒng),在安裝前先要先去調(diào)整服務(wù)器的BIOS設(shè)置,關(guān)閉不需要的I/O,這樣節(jié)省資源又可以避免一些硬件驅(qū)動問題。務(wù)必斷開服務(wù)器與網(wǎng)絡(luò)的連接,在系統(tǒng)沒有完成安全配置前不要將它接入網(wǎng)絡(luò)。在安裝過程中如果網(wǎng)卡是PNP類型的,那么應當為其網(wǎng)絡(luò)屬性只配置允許使用TCP/IP協(xié)議,并關(guān)閉在 TCP/IP上的NETBIOS,為了提供更安全的保證,應該啟用TCP/IP篩選,并不開放任何TCP端口。完成操作系統(tǒng)的安裝后,首次啟動 W2K3SP1,會彈出安全警告界面,主要是讓你立刻在線升級系統(tǒng)更新補丁,并配置自動更新功能,這個人性化的功能是W2K3SP1所獨有的,在沒有關(guān)閉這個警告窗口前,系統(tǒng)是一個安全運行的狀態(tài),這時我們應當盡快完成系統(tǒng)的在線更新。
修改Administrator和Guest這兩個賬號的密碼使其口令變的復雜,并通過組策略工具為這兩個敏感賬號更名。修改位置在組策略中Computer Configuration-Windows Settings-Security Setting-Local Policies-Security Options下,這樣做可以避免入侵者馬上發(fā)動對此賬號的密碼窮舉攻擊。
服務(wù)器通常都是通過遠程進行管理的,所以我使用系統(tǒng)自帶的組件 “遠程桌面”來對系統(tǒng)進行遠程管理。之所以選擇它,因為它是系統(tǒng)自帶的組件缺省安裝只需要去啟用它就可以使用,支持驅(qū)動器映射、剪切板映射等應用,并且只要客戶端是WindowsXP PRO都會自帶連接組件非常方便,最主要還有一點它是免費的。當然第三方優(yōu)秀的軟件也有如: PCAnyWhere,使用它可以解決Remote Desktop無法在本地環(huán)境模式下工作的缺點。為了防止入侵者輕易地發(fā)現(xiàn)此服務(wù)并使用窮舉攻擊手段,可以修改遠程桌面的監(jiān)聽端口:
1. 運行 Regedt32 并轉(zhuǎn)到此項:
HKEY_LOCAL_MACHINESystemCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp
注意:上面的注冊表項是一個路徑;它已換行以便于閱讀。
2. 找到“PortNumber”子項,您會看到值 00000D3D,它是 3389 的十六進制表示形式。使用十六進制數(shù)值修改此端口號,并保存新值。
要更改終端服務(wù)器上某個特定連接的端口,請按照下列步驟操作: 運行 Regedt32 并轉(zhuǎn)到此項:
HKEY_LOCAL_MACHINESystemCurrentControlSetControlTerminal ServerWinStationsconnection
注意:上面的注冊表項是一個路徑;它已換行以便于閱讀。
3. 找到“ PortNumber”子項,您會看到值 00000D3D,它是 3389 的十六進制表示形式。使用十六進制數(shù)值修改此端口號,并保存新值。
注意:由于在終端服務(wù)器 4.0 版中尚未完全實現(xiàn)備用端口功能,因此只是“在合理的限度內(nèi)盡量”提供支持,如果出現(xiàn)任何問題,Microsoft 可能要求您將端口重設(shè)為 3389。
原文來源:微軟知識庫KB187623。當然為了達到更加安全的訪問,還可以采用IPSec來保護遠程桌面的連接訪問。
禁用不必要的服務(wù)不但可以降低服務(wù)器的資源占用減輕負擔,而且可以增強安全性。下面列出了可以禁用的服務(wù):
Application Experience Lookup Service
Automatic Updates
BITS
Computer Browser
DHCP Client
Error Reporting Service
Help and Support
Network Location Awareness
Print Spooler
Remote Registry
Secondary Logon
Server
Smartcard
TCP/IP NetBIOS Helper
Workstation
Windows Audio
Windows Time
Wireless Configuration
打開服務(wù)器本地計算機策略(gpedit.msc),參考以下選擇和修改對服務(wù)器進行加固:
1. 設(shè)置帳號鎖定閥值為5次無效登錄,鎖定時間為30分鐘;
2. 從通過網(wǎng)絡(luò)訪問此計算機中刪除Everyone組;
3. 在用戶權(quán)利指派下,從通過網(wǎng)絡(luò)訪問此計算機中刪除Power Users和Backup Operators;
4. 為交互登錄啟動消息文本。
5. 啟用 不允許匿名訪問SAM帳號和共享;
6. 啟用 不允許為網(wǎng)絡(luò)驗證存儲憑據(jù)或Passport;
7. 啟用 在下一次密碼變更時不存儲LANMAN哈希值;
8. 啟用 清除虛擬內(nèi)存頁面文件;
9. 禁止IIS匿名用戶在本地登錄;
10. 啟用 交互登錄:不顯示上次的用戶名;
11. 從文件共享中刪除允許匿名登錄的DFS$和COMCFG;
12. 禁用活動桌面。
強化TCP協(xié)議棧:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters]
"SynAttackProtect"=dword:00000001
"EnablePMTUDiscovery"=dword:00000000
"NoNameReleaseOnDemand"=dword:00000001
"EnableDeadGWDetect"=dword:00000000
"KeepAliveTime"=dword:00300000
" PerformRouterDiscovery"=dword:00000000
"TcpMaxConnectResponseRetransmissions"=dword:00000003
"TcpMaxHalfOpen"=dword:00000100
"TcpMaxHalfOpenRetried"=dword:00000080
"TcpMaxPortsExhausted"=dword:00000005
安裝和配置IIS
進入Windows組件安裝,找到應用程序服務(wù)器,進入詳細信息,勾選ASP.NET后,IIS必須的組件就會被自動選擇,如果你的服務(wù)器需要運行ASP腳本,那么還需要進入Internet信息服務(wù)(IIS)-萬維網(wǎng)服務(wù)下勾選Active Server Pages。完成安裝后,應當在其他邏輯分區(qū)上單獨建立一個目錄用來存儲WEB網(wǎng)站程序及數(shù)據(jù)。
一臺WEB服務(wù)器上都運行著多個網(wǎng)站,他們之間可能互不相干,所以為了起到隔離和提高安全性,需要建立一個匿名WEB用戶組,為每一個站點創(chuàng)建一個匿名訪問賬號,將這些匿名賬號添加到之前建立的匿名WEB用戶組中,并在本地計算機策略中禁止此組有本地登錄權(quán)限。
最后優(yōu)化IIS6應用程序池設(shè)置:
1. 禁用缺省應用程序池的空閑超時;
2. 禁用緩存ISAPI擴展;
3. 將應用程序池標識從NetworlService改為LocalService;
4. 禁用快速失敗保護;
5. 將關(guān)機時間限制從;