IIS 5安全注意事項和安全配置
06-14
http://netsecurity.51cto.com 2006-02-05 17:39 51CTO.COM論壇 51CTO.COM論壇 我要評論(0)摘要:本節涵蓋IIS5所特有的安全問題,同時微軟的IIS默認安裝實在不敢恭維,所以IIS的配置是也將是重點。 標籤:IIS5Oracle幫您準確洞察各個物流環節本節涵蓋IIS5所特有的安全問題,同時微軟的IIS默認安裝實在不敢恭維,所以IIS的配置是也將是重點。(1) 在虛擬目錄上設置ACL。儘管該步驟與應用程序稍微有些關係,但是經驗仍適用,正如表5.4中列出的那樣。文件類型:訪問控制列表 CGI (.exe, .dll, .cmd, .pl)Everyone (X)Administrators(完全控制)System(完全控制)腳本文件 (.asp)Everyone (X)Administrators(完全控制)System(完全控制)Include 文件 (.inc, .shtm, .shtml)Everyone (X)Administrators(完全控制)System(完全控制)靜態內容 (.txt, .gif, .jpg, .html)Everyone (R)Administrators(完全控制)System(完全控制)① 按文件類型推薦使用的默認ACL。無需在每個文件上設置ACL,最好為每個文件類型創建一個新目錄、在每個目錄上設置ACL、允許ACL傳給各個文件。例如,目錄結構可為以下形式: · c:inetpubwwwrootmyserverstatic (.html)· c:inetpubwwwrootmyserverinclude (.inc)· c:inetpubwwwrootmyserverscript (.asp)· c:inetpubwwwrootmyserverexecutable (.dll)· c:inetpubwwwrootmyserverimages (.gif, .jpeg)同樣,請特別注意以下兩個目錄: · c:inetpubFTProot(FTP 伺服器)· c:inetpubmailroot(SMTP 伺服器)在這兩個目錄上的ACL是Everyone(完全控制),並且應被更緊密的事物所覆蓋(取決於您的功能級別)。如果打算支持 Everyone(寫入),則將該文件夾放在IIS伺服器以外的不同卷上,或使用Windows 2000磁碟配額限制可寫入這些目錄的數據量。② 設置適當的IIS日誌文件ACL請確保IIS產生的日誌文件 (%systemroot%system32LogFiles) 上的ACL是 · Administrators(完全控制)· System(完全控制)· Everyone (RWC)這有助於防止惡意用戶為隱藏他們的蹤跡而刪除文件。當您希望確定伺服器是否被攻擊時,日誌記錄是極其重要的。應使用 W3C 擴展日誌記錄格式,步驟如下:① 裝載 Internet Information Services工具。② 右鍵單擊所述站點,然後從上下文菜單中選擇「屬性」。③ 單擊「Web 站點」選項卡。④ 選中「啟用日誌記錄」複選框。⑤ 從「活動日誌格式」下拉列表中選擇「W3C擴展日誌文件格式」。⑥ 單擊「屬性」。⑦ 單擊「擴展屬性」選項卡,然後設置客戶IP地址、用戶名、方法、URI資源、HTTP狀態、Win32 狀態、用戶代理、伺服器IP地址、伺服器埠。如果在一台計算機上有多個Web伺服器,則後兩種屬性非常有用。Win32狀態屬性對於調試非常有用。檢查日誌時,密切注意錯誤5,這意味著訪問被拒絕。在命令行上輸入 net helpmsg err,可找出其他Win32錯誤的含義,其中err是要查找的錯誤號。(2) 設置IP地址/DNS 地址限制。這不是常用選項,但是如果您希望限制某些用戶對 Web 站點的訪問,則這是可採用的選項。請注意,如果您輸入IIS擁有的域名系統(DNS) 名稱以執行 DNS 查找,則這將非常耗時。(3) 驗證可執行內容的可靠性。很難知道可執行內容是否可靠。一個試驗就是使用 DumpBin工具查看可執行內容是否調用某些API。DumpBin 包括在多種Win32開發工具中。例如,如果要查看名為MyISAPI.dll的文件是否調用 RevertToSelf,請使用以下語法:dumpbin /imports MyISAPI.dll | find "RevertToSelf"如果屏幕上未顯示任何結果,則MyISAPI.dll不直接調用 RevertToSelf。它可能通過 LoadLibrary調用API,在這種情況下,也可使用類似的命令搜索它。(4) 在IIS伺服器上更新根CA證書。這個過程分為兩步:第一步,添加任何您信任的新根證書頒發機構 (CA) 證書 - 特別是,使用Microsoft證書服務2.0創建的根CA證書。第二步,刪除您不信任的所有根CA證書。請注意,如果您不知道頒髮根證書的公司名,千萬別信他們。IIS 使用的所有根CA證書都駐留在計算機的機器存儲中。可通過以下步驟訪問該存儲: · 打開 Microsoft 管理控制台 (MMC)。· 從「控制台」菜單中選擇「添加/刪除管理單元」,然後單擊「添加」。· 選擇「證書」,然後單擊「添加」。· 單擊「計算機帳戶」選項按鈕。· 單擊「下一步」。· 選擇所述機器。· 單擊「完成」。· 依次單擊「關閉」和「確定」。· 擴展「證書」節點。· 打開「受信任的根證書頒發機構」。· 選擇「證書」。右窗格上將顯示當前可信的全部根CA證書。如果願意,可以刪除多個證書。(5) 禁用或刪除所有的示例應用程序。示例只是示例;在默認情況下,並不安裝它們,且從不在生產伺服器上安裝。請注意一些示例安裝,它們只可從http://localhost或127.0.0.1訪問;但是,它們仍應被刪除。表5.5列出一些示例的默認位置。表5.5示例虛擬目錄位置IIS 示例IISSamplesc:inetpubiissamplesIIS 文檔IISHelpc:winnthelpiishelp數據訪問MSADCc:program filescommon filessystemmsadc啟用或刪除不需要的 COM 組件(6) 啟用或刪除不需要的COM組件。某些COM組件不是多數應用程序所必需的,應加以刪除。特別是,應考慮禁用文件系統對象組件,但是要注意這將也會刪除 Dictionary 對象。切記某些程序可能需要您禁用的組件。例如,Site Server 3.0使用File System Object。以下命令將禁用 File System Object:regsvr32 scrrun.dll /u(7) 刪除 IISADMPWD 虛擬目錄。該目錄可用於重置 Windows NT 和 Windows 2000 密碼。它主要用於 Intranet 情況下,並不作為 IIS 5 的一部分安裝,但是 IIS 4 伺服器升級到 IIS 5 時,它並不刪除。如果您不使用 Intranet 或如果將伺服器連接到 Web 上,則應將其刪除。有關該功能的詳細信息,請參閱 Microsoft 知識庫文章 Q184619。(8) 刪除無用的腳本映射。IIS 被預先配置為支持常用的文件名擴展如 .asp 和 .shtm 文件。IIS 接收到這些類型的文件請求時,該調用由 DLL 處理。如果您不使用其中的某些擴展或功能,則應刪除該映射,步驟如下:· 打開Internet服務管理器。· 右鍵單擊Web伺服器,然後從上下文菜單中選擇「屬性」。· 主屬性· 選擇WWW 服務 | 編輯 | 主目錄 | 配置刪除這些引用:如果您不使用...刪除該項:基於 Web 的密碼重設.htrInternet 資料庫連接器(所有的 IIS 5 Web 站點應使用 ADO 或類似的技術).idc伺服器端包括.stm、.shtm 和 .shtmlInternet 列印.printer索引伺服器.htw、.ida 和 .idq(9) 要從IIS 5刪除的擴展。除非您特別需要使用 .htr 功能,否則應刪除 .htr 擴展。(10) 少用或不用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)。當然有時不得不用CGI程序。因此這裡提供了一個小技巧來對付日益增多的cgi漏洞掃描器。在IIS中將HTTP404 Object Not Found出錯頁面通過URL重定向到一個定製HTM文件,可以讓目前絕大多數CGI漏洞掃描器失靈。其實原因很簡單,大多數CGI掃描器在編寫時為了方便,都是通過查看返回頁面的HTTP代碼來判斷漏洞是否存在的,例如,著名的IDQ漏洞一般都是通過取1.idq來檢驗,如果返回HTTP200,就認為是有這個漏洞,反之如果返回HTTP404就認為沒有,如果你通過URL將HTTP404出錯信息重定向到HTTP404.htm文件,那麼所有的掃描無論存不存在漏洞都會返回HTTP200,90%的CGI掃描器會認為你什麼漏洞都有,結果反而掩蓋了你真正的漏洞,讓入侵者茫然無處下手。(11) 檢查ASP代碼中的和查詢字元串輸入。許多站點使用用戶的輸入以調用其他代碼或直接創建 SQL 語句。換句話說,它們將該輸入視作有效的、格式正確的、非惡意的輸入。不應這樣看待;仍存在許多攻擊,用戶的輸入被誤以為是有效的輸入,而該用戶仍可獲得對伺服器的訪問權或引起破壞。應對每一個輸入和查詢字元串進行檢查,然後才能將它轉到另一個可能使用外部資源(如文件系統或資料庫)的進程或方法調用。可用JScript V5和VBScript V5 正規表達式功能執行文本檢查。以下示例代碼可除去包含所有無效(不是0-9a-zA-Z或 _ 的字元)字元串: Set reg = New RegExpreg.Pattern = "W+" " One or more characters which" are NOT 0-9a-zA-Z or "_"strUnTainted = reg.Replace(strTainted, "")以下示例可除去 | 操作符後面的所有文本:Set reg = New RegExpreg.Pattern = "^(.+)|(.+)" " Any character from the start of" the string to a | character.strUnTainted = reg.Replace(strTainted, "$1")同樣,在用Scripting File System Object打開文件或創建文件時要千萬小心。如果文件名是基於用戶的輸入的,則該用戶可能試圖打開一個串口或印表機。以下JScript代碼可除去無效的文件名:var strOut = strIn.replace(/(AUX|PRN|NUL|COMd|LPTd)+s*$/i,"");(12) 禁用父路徑。「父路徑」選項允許您在對諸如MapPath函數調用中使用「..」。在默認情況下,該選項處於啟用狀態,應該禁用它。禁用該選項的步驟如下:· 右鍵單擊該Web站點的根,然後從上下文菜單中選擇「屬性」。· 單擊「主目錄」選項卡。· 單擊「配置」。· 單擊「應用程序選項」選項卡。· 取消選擇「啟用父路徑」複選框。(13) 禁用-內容位置中的IP地址。「內容-位置」標頭可暴露通常在網路地址轉換 (NAT) 防火牆或代理伺服器後面隱藏或屏蔽的內部IP地址。(14) 徹底刪掉C盤Inetpub目錄徹底刪掉。在D盤建一個Inetpub(要是你不放心用默認目錄名也可以改一個名字,但是自己要記得)在IIS管理器中將主目錄指向D:Inetpub。(15) 備份。為了保險起見,你可以使用IIS的備份功能,將剛剛的設定全部備份下來,這樣就可以隨時恢復IIS的安全配置。還有,如果你怕IIS負荷過高導致伺服器滿負荷死機,也可以在性能中打開CPU限制,例如將IIS的最大CPU使用率限制在70%。(責任編輯:zhaohb)
推薦閱讀:
推薦閱讀:
※女生應該如何自保?
※為什麼現在提醒注意安全會被很多人撕政治不正確?
※這些安全裝備,分分鐘會救你的命!
※安全瑜伽:如何保護並防止我們的膝蓋、腘繩肌和骶骨受傷(附圖)
※Osann Fox 弗克巴巴0+/I組0-18kg 安全座椅基本介紹