IIS 要求篩選的設定筆記 (Requests Filtering)
2021-02-25
筆記如何活用 IIS 要求篩選來提升網站存取的安全性 😀
說明
如何啟用要求篩選
從伺服器管理員的新增角色及功能來進行功能啟用,如下圖所示
應用要求篩選
篩選 URL
連線目標的 URL 只要包含拒絕的字串,就會回應 404 。例如拒絕字串為 sensitive ,則下列 URL 都會被拒絕:
http://example.domain/sensitive/path
http://example.domain/sensitive/
http://sensitive/.domain/
http://example.domain/sensitive/
http://sensitive/.domain/
篩選查詢字串
連線目標的 URL 只要查詢字串包含被拒絕的字串,就會回應 404 。例如拒絕查詢字串為 web.config ,則下列 URL 都會被拒絕:
http://example.domain?q=web.config
http://example.domain?query=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>