IIS 要求篩選的設定筆記 (Requests Filtering)


  1. 說明
    1. 如何啟用要求篩選
  2. 應用要求篩選
    1. 篩選 URL
    2. 篩選查詢字串
    3. 篩選 Header
    4. 隱藏區段
  3. Web.config
  4. 參考資料

筆記如何活用 IIS 要求篩選來提升網站存取的安全性 😀

logo

說明

要求篩選位於 IIS 的選單位置

如何啟用要求篩選

伺服器管理員新增角色及功能來進行功能啟用,如下圖所示

應用要求篩選

篩選 URL

連線目標的 URL 只要包含拒絕的字串,就會回應 404 。例如拒絕字串為 sensitive ,則下列 URL 都會被拒絕:

http://example.domain/sensitive/path
http://example.domain/sensitive/
http://sensitive/.domain/

篩選查詢字串

連線目標的 URL 只要查詢字串包含被拒絕的字串,就會回應 404 。例如拒絕查詢字串為 web.config ,則下列 URL 都會被拒絕:

http://example.domain?q=web.config
http://example.domain?query=web.config

篩選 Header

連線的 Requests,其標頭的 key-value 只要符合被拒絕內容就會以 404 作為回應。例如拒絕 Header 中 UserAgent 包含 python 字串,則使用 python requests library 的連線要求就會被拒絕。

隱藏區段

區段為 URL 中 // 所包覆的字串內容,網頁伺服器上敏感的資料夾如果不想被存取,可以藉由設定隱藏區段的方式來避免。例如設定 .git 來防止 .git folder 暴露網站中的原始碼以及敏感設定資訊。

Web.config

上述的操作動作,都會對應生成到 web.config 之中,如下所示l

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <security>
            <requestFiltering>
                <hiddenSegments>
                    <add segment=".git" />
                </hiddenSegments>
                <denyQueryStringSequences>
                    <add sequence="../" />
                    <add sequence="web.config" />
                </denyQueryStringSequences>
                <filteringRules>
                </filteringRules>
            </requestFiltering>
        </security>
    </system.webServer>
</configuration>

參考資料

Block Bots with IIS 7.5 and 8.0

笑傲紅塵路 IIS 7要求篩選規則

MS Docs - Request Filtering (requestFiltering)