IIS網站的安全性管理 羅英嘉 2007年4月
全球資訊網的威脅 1. 用戶端使用安全性問題 2. 網站安全性問題 3. 網頁內容傳輸安全性問題 全球資訊網的安全性問題來自三個層面:
網站安全性的保護層面 網頁應用程式 網路環境 網站伺服器 (Web Server) 作業系統 Operating System
作業系統安全性原則 若無安全的作業環境,即無法提供安全性的網站 實體安全 (Physical Security) 採用高安全性的範本 即時更新作業系統的安全性修補檔 (自動更新、WSUS) 強制密碼原則 (使用嚴謹不易猜測的密碼) 變更administrator名稱並設嚴謹密碼 停用或移除不必要的帳戶(guest, service account) 定期執行MBSA掃瞄是否存在弱點 關閉不必要及有安全疑慮的服務 (最好是專屬的網站伺服器) File and print share for Microsoft network NetBIOS Over TCP/IP CIFS 啟用並設定稽核日誌功能並定期檢視
IIS 網站安全性管理策略與技術 網站安全性 管理 網頁傳輸安全 備份 資源存取控制 監控 稽核記錄 存取記錄 漏洞稽核 IP 位址/網域名稱 網頁權限 NTFS權限 身份驗證 網頁應用程式安全 應用程式鎖定原則 程式員定期資安教育 應用程式隔離原則 網站安全性 管理 網頁傳輸安全 SSL/TLS 監控 稽核記錄 存取記錄 漏洞稽核 提升攻擊難度 關閉不用服務 防火牆 入侵偵測 備份 備份網頁資料 備份網站組態
網站存取控制的重要性 網站存取控制是一種限制網站資源存取的處理方式及程序,用以保護網站資源不會被非經授權者存取或授權存取者作不當的存取。 存取控制最高原則:最低權限賦予原則(least privilege) 網頁資源只賦予那些被授權存取的使用者為了完成其允許的作業所需要的最低權限即可。
IIS 存取控制機制
使用IP位址來控制存取 IIS可針對目錄或檔案資源以下列方式控制存取 方式: 單一電腦 電腦群組 網域名稱 白名單 黑名單 適合企業網站 黑名單 適合禁止特定機器 適用環境:Intranet, Extranet 伺服器 問題:IP 位址易於假造,無法確保存取控制的目的
利用網域來控制存取 以網域名稱來控制存取雖簡單直接,但需作反向對應,影響效能 DEMO
網頁權限 (Web Permission) 讀取 使用者可瀏覽檔案內容及屬性(預設為選取) 寫入 使用者可變更檔案內容及屬性 指令碼來源存取 允許使用者可存取檔案的原始程式碼;如 ASP 應用程式中的指令碼。如果已指派「讀取」或「寫入」使用權限,則可讀取或寫入原始程式碼。 瀏覽目錄 允許使用者檢視目錄下的檔案清單 記錄查閱 每次造訪資源都會產生記錄項目 編製這個資源的索引 允許「索引服務」編製資源的索引 執行 無:避免執行任何程式或指令碼。 僅指令碼:將應用程式對應到一個指令碼引擎來進行執行 指令碼及執行檔:可執行任何可執行檔
網頁權限使用原則 瀏覽目錄 指令碼來源存取 寫入 指令碼及執行檔 遵循最低權限賦予原則 啟用『寫入』、『指令碼來源存取』、『瀏覽目錄』和『指令碼及執行檔』四個網頁權限易形成可利用的弱點而遭受攻擊,非有必要不要啟用。 瀏覽目錄 指令碼來源存取 寫入 指令碼及執行檔
共用網頁權限和NTFS使用權限 IIS網頁權限的權限等級通常不夠細分化,只針對網頁物件。 二者合併使用時,最後的有效權限為二者最嚴謹的權限 (取二者允許權限的交集關係)
不同網頁程式的建議存取權限 網頁檔案類型 網頁權限 NTFS 權限 讀取 指令碼及執行檔 讀取及執行 CGI 程式(.exe, .dll, .cmd, .pl) 、ISAPI程式 讀取 指令碼及執行檔 讀取及執行 指令檔 (.asp .aspx、php、jsp) 僅指令碼 引入檔 (.inc, .shtm, .shtml) 靜態網頁 (.txt, .gif, .jpg, .html)
設定網頁目錄與檔案權限 DEMO
IIS 身份驗證方法 匿名驗證 基本驗證 摘要式驗證 整合的 Windows 驗證 憑證驗證
使用IIS驗證方法 預設啟用匿名及整合的 Windows 驗證。 只有在下列情況下,Web 伺服器才可使用「基本」、「摘要式」或整合的 Windows 驗證方法: [匿名存取] 並沒有被選取。 匿名存取失敗或檔案及目錄的存取受到 NTFS 權限的限制。 摘要式及整合的 Windows 驗證不能用於 FTP 站台 如果 .NET passport被核選,則無法使用其它驗證方法 驗證方法的使用優先順序: 匿名 整合的 Windows 驗證 摘要式驗證 基本驗證
IIS 驗證方法比較 驗證方法 伺服器需求 用戶端需求 說明 匿名驗證 匿名帳戶:IUSR_computername 沒有限制,適用各種瀏覽器 一般Internet的網站需允許匿名存取、Intranet、ExtraNet的網站通常會禁止匿名存取 基本驗證 有效的機器或網域使用者帳戶並具備「登入本機」的權利 沒有限制,適用各種流覽器 明碼傳送驗證,效率佳、相容性最佳,安全性差 需搭配SSL才具安全性 摘要式驗證 需Active Directory環境下使用 IIS 5需設定可回復的密碼 IE 5 以上的流覽器 使用雜錯演算法加密傳送,安全性較高,支援代理驗證 整合的 Windows 驗證 有效的機器或網域使用者帳戶 IE 2 以上的流覽器 採用挑戰/回應演算法驗證,高安全性,但NTLM無法支援代理驗證 iiS 5 的摘要驗證需存成可回復密碼 Iis 6 的進階摘要驗證並不需存成可回復密碼 Iis 6的進階摘要驗證需設realm(範圍), 而非預設網域
IIS 驗證功能比較 X.509 Certs Basic Digest NTLM Kerberos Passport 需要Windows 帳戶? Y N 支援委派驗證(delegation)?* N** 密碼明文傳送? 支援非IE瀏覽器? 易通過防火牆? Seamless user experience? *Windows 2003 Server的 Kerberos 協定可以支援委派 **某些憑證對應是可委派,但大部份均不支援
設定身份驗證方法 套用順序 匿名 整合式 摘要式 基本 DEMO
IIS 驗證方法的安全性等級 驗證方法 安全性等級 匿名存取(Anonymous) 無 基本驗證 (Basic) * 摘要式驗證(Digest) ** .NET Passport驗證 *** 整合式(Integrated) **** 基本驗證+SSL 用戶端憑證 *****
實務問題 若需建構一個高度安全性的商業網站,所以需要執行身份驗證 網際網路上也不適合強制用戶端應使用何種瀏覽器 管理員該採用何種驗證方法?
SSL (Secure Sockets Layer ) 源自1994年netscape,架構在TCP 之上的安全性通訊協定 SSL為目前最廣泛應用的網頁傳輸安全性協定,即HTTP+SSL=HTTPS SSL支援的安全性服務: 驗證 (Authentication) :使用RSA、DSS和X.509憑證等公開金鑰加密技術 傳輸的機密性 (Confidentiality):使用IDEA、3DES、RC4 對稱性加密技術 完整性(Integrity):使用MD5、SHA等雜湊為基礎的訊息確認碼 (MAC) 網站啟用SSL 並無法提供「不可否認性」證明
SSL 握手協定流程 用戶端 伺服端 第一階段:建立安全機制 包括協定版本、會談識別碼、加密套件(包括金鑰交換或產生方法)、壓縮方法,起始亂數 Client_hello Server_hello 第二階段:伺服器確認和金鑰交換 伺服器送出憑證、金鑰交換訊息或RSA公開金鑰、請求憑證訊息,最後伺服器送出“hello message”的結束訊息 Certificate Server_key_exchange Certificate_request Server_hello_done 第三階段:用戶端認證和金鑰交換 用戶端可能被要求送出憑證,用戶送出金鑰交換或產生之前置之主金鑰(以伺服器之RSA公開金鑰加密),用戶可能送出憑證驗證 Certificate Client_key_exchange Certificate_verify Change_cipher_spec 第四階段:完成 雙方產生主金鑰,變更加密套件,完成握手協定 Finish Change_cipher_spec Finish
SSL實作步驟 IIS管理員向憑證管理中心請求SSL伺服憑證 利用「網頁伺服器憑證精靈」建立網站使用的憑證請求檔 利用產生出來的憑證請求檔向CA申請下載憑證 將申請下來的憑證安裝在IIS網站 在需要安全通訊的網站、虛擬或真實目錄或個別網頁檔上啟動「使用安全通道(SSL)」 大部份的情況均會以目錄為啟動SSL的對象 考慮是否啟用128位元加密連線 用戶端必需利用https 協定存取網頁
DEMO ※ 使用SSL會影響到效率,故通常建議只有必要的目錄才設定啟用SSL
用戶端使用SSL 連線 HTTP HTTPS SSL 憑證
備份SSL憑證與金鑰 管理員必需備份SSL憑證與金鑰 使用伺服器憑證精靈程式 使用「憑證」工具
用戶端憑證 利用憑證取代傳統的密碼系統來進行驗證 一種高度安全性的網頁驗證方法 適用在需要高度安全性需求的商業網站 使用者需要申請用戶端憑證 用戶端對應使用者只要請求獨立CA內的『網頁瀏覽器憑證』即可. 不過即使已下載正確的用戶端憑證, 仍然常見二個錯誤: 請求需要用戶端憑證的網頁時, 出現的『用戶端驗證』對話方塊是空的(empty client certificate dialog), 似乎沒有捉到您的用戶端憑證讓您選取. 原因: IIS 沒有將用戶端憑證的 CA放在信任根CA儲存區, 所以您必需先下載CA的憑證並將它儲存成 .cer檔, 然後在IIS機器上啟動 “mmc+憑證嵌入單元” ,在 【憑證(本機電腦信任的根憑證授權所有工作匯入】 途徑匯入CA憑證 如果還不行則可能是用戶端本身也沒有將用戶端憑證的 CA放在信任根CA儲存區, 一樣要在用戶端機器執行一次 -------------------------------------------------- 第二個常見的錯誤是出現 403.13 Client Certificate Revoked 錯誤, 這是因為IIS會檢查用戶端憑證是否已被撤銷而無效, 但未能成功的在網路上下載 CA 的 CRL Distribution Point所指的 CRL這份清單, 這可能是網路連線問題, 也可能是解析問題, 您可以找到用戶端憑證內的『CRL發佈點』內的URL為何, 例如: URL=http://msd1.lij.local/CertEnroll/LIJ%20CA.crl 則您可以在IIS主機檔(hosts)檔內加入下面一行即可成功的被解析而連線: 192.168.2.41 msd1.lij.local
使用用戶端憑證 用戶端憑證 對應位置 對應方法 Active Directory IIS 一對一 (1-to-1) 多對一 (many-to-1)
IIS 對應 DEMO 取消「啟用Windows 目錄服務對應程式」 編輯IIS對應
IIS 對應 (1-to-1)
網站應用程式安全性管理 只啟用必要的網頁類型、技術與功能 移除不必要的應用程式對應 選擇工作者處理序隔離模式 程式員定期接受資安教育,撰寫安全程式碼
管理IIS MIME類型清單 原則:關閉不使用的檔案類型、應用程式功能與技術 IIS 6只接受副檔名有登錄在MIME類型清單的檔案 可被攻擊的層面就越小、提升攻擊困難度 IIS 6只接受副檔名有登錄在MIME類型清單的檔案 移除不使用的檔案類型 管理MIME類型清單 伺服器層級 網站層級 目錄層級 建議:取消伺服器層級的所有MIME 類型,只於網站/目錄層級加入必要的MIME類型
移除不必要的應用程式對應 如果不使用請移除對應 對應的副檔名 .htr .idc .stm, .shtm, and .shtml 重設網頁密碼 .htr Internet Database Connector .idc Server-side Includes .stm, .shtm, and .shtml Internet Printing .printer Index Server .htw, .ida and .idq
網頁服務延伸 (Web Service Extensions) IIS 6利用網頁服務延伸支援動態網頁內容 只允許已使用的網頁服務延伸 不要啟用『所有未知的CGI擴充程式』與『所有未知的ISAPI擴充程式』二個WSE
使用工作者處理序隔離模式 IIS 6支援二種應用程式隔離模式 建議採用工作者處理序隔離模式,因提供較佳的穩定性與安全性 工作者處理序隔離模式 預設模式 使應用程式在不同的「應用程式集區」處理 保護應用程式集區中的應用程式可以免於受到其它應用程式集區錯誤的影響 IIS 5.0 隔離模式 提供老舊應用程式相容性的執行模式 建議採用工作者處理序隔離模式,因提供較佳的穩定性與安全性
建立應用程式集區 在某些情況,您可能需要讓某個特定應用程式擁有自已獨立的執行空間與環境,所以您需要替它建立獨立的應用程式集區 1. 「應用程式集區新增應用程式集區」 2. 輸入識別碼
替應用程式指定不同的應用程式集區
設定安全的工作處理序身份識別 決定在應用程式集區內的身份識別 內建身份識別 本機系統(LocalSystem) - 權限最高,允許存取整部系統,應避免設定此身份識別 網路服務(NetworkService) - 權限低,可以存取網路上的資源 (預設) 本機服務(LocalService) - 權限最低,只能存取本機資源,適用於不需存取其它伺服服務的應用程式 自訂身份識別 必須加入到IIS_WPG群組
網頁程式撰寫的基本安全原則 不要將使用者及密碼資料直接寫到網頁內 不要將隱藏的輸入欄位私密性資料儲存在網頁或cookies 必需完整確認所有資料輸入的型態檢查、長度檢查並設計正確的查詢方法以降低SQL Injection類型的攻擊威脅 留意所有資料長度的使用檢查以避免不當的程式碼導致緩衝區溢位的攻擊
其它IIS安全性建議 備份Metabase與網頁應用程式 IIS 記錄與稽核 使用虛擬目錄取代真實目錄 利用群組原則控制IIS的安裝 選擇安全性的遠端管理工具與方式
備份 IIS Metabase DEMO Metabase維護IIS大部份的組態 (2)執行備份 (1) 選取備份選項 DEMO (3) 輸入名稱與密碼保護
IIS 記錄 IIS 記錄連線使用者在網站的活動行為,可用來作為網站與網頁使用量分析及安全性查核工作。
稽核Metabase 條件:Windows Server 2003 SP1 稽核物件存取 執行 iiscnfg.vbs指令啟用稽核 cscript.exe iiscnfg.vbs /enableAudit / /r 檢視安全性記錄檔
利用群組原則控制IIS的安裝 透過群組原則可以禁止某些機器安裝IIS,以避免被攻擊 已安裝IIS的機器並不會因此受到限制
選擇安全性的遠端管理工具與方式 遠端桌面連線 (Remote Desktop) 網際網路資訊服務(IIS)管理員 (MMC) 使用憑證、設定逾期時間與128位元加密 網際網路資訊服務(IIS)管理員 (MMC) 使用IPSec 網頁管理工具 (HTTPS) 文字模式設定管理 直接編輯 metabase (%systemroot%\system32\inetsrv\metabase.xml或使用Metabase Explorer) 命令列指令 (%systemroot\system32\iis*) 自行撰寫程式
IIS 安全管理實務指引 即時更新作業系統與IIS的安全性修正程式 關閉不使用的服務 符合最低權限賦予原則的存取控制方法 IP位址 網頁權限 NTFS權限 採用較嚴謹身份驗證方法 啟動IIS日誌功能,作為安全性查核依據
IIS 安全管理指引(續) 移除不必要的應用程式對應、MIME檔案類型與網頁延伸服務 傳送私密性質網頁需使用SSL安全協定 使用工作者處理序隔離模式,設定應用程式集區的的身份識別的特權不能超過「網路服務」
問題與討論
© 2007 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.