本節涵蓋IIS5所特有的安全問題,同時微軟的IIS默認安裝實在不敢恭維,所以IIS的配置是也將是重點。
(1) 在虛擬目錄上設置ACL。盡管該步驟與應用程序稍微有些關系,但是經驗仍適用,正如表5.4中列出的那樣。
文件類型:
訪問控制列表
CGI (.exe, .dll, .cmd, .pl) |
① 按文件類型推薦使用的默認ACL。
無需在每個文件上設置ACL,最好為每個文件類型創建一個新目錄、在每個目錄上設置ACL、允許ACL傳給各個文件。例如,目錄結構可為以下形式:
· c:\inetpub\wwwroot\myserver\static (.html) |
同樣,請特別注意以下兩個目錄:
· c:\inetpub\FTProot(FTP 服務器) |
在這兩個目錄上的ACL是Everyone(完全控制),并且應被更緊密的事物所覆蓋(閏。
⑤ 從“活動日志格式”下拉列表中選擇“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) 禁用或刪除所有的示例應用程序。示例只是示例;在默認情況下,并不安裝它們,且從不在生產服務器上安裝。請注意一些示例安裝,它們只可從 或127.0.0.1訪問;但是,它們仍應被刪除。
表5.5列出一些示例的默認位置。
表5.5
示例 |
虛擬目錄 |
位置 |
IIS 示例 |
\IISSamples |
c:\inetpub\iissamples |
IIS 文檔 |
\IISHelp |
c:\winnt\help\iishelp |
數據訪問 |
\MSADC |
c:\program files\common files\system\msadc |
啟用或刪除不需要的 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 的密碼重設 |
.htr |
Internet 數據庫連接器(所有的 IIS 5 Web 站點應使用 ADO 或類似的技術) |
.idc |
服務器端包括 |
.stm、.shtm 和 .shtml |
Internet 打印 |
.printer |
索引服務器 |
.htw、.ida 和 .idq |
(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 RegExp reg.Pattern = "\W+" ' One or more characters which ' are NOT 0-9a-zA-Z or '_' strUnTainted = reg.Replace(strTainted, "") 以下示例可除去 | 操作符后面的所有文本: Set reg = New RegExp reg.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|COM\d|LPT\d)+\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)