前言
在前一篇如何使用 ModSecurity WAF 來保護 Windows IIS - 安裝已將 ModSecurity 安裝在 Windows 上,
接下來需要再設定目錄及安裝一些 Rules 來偵測防範 SQL Injection、XSS等資安風險。
設定目錄
1.在 C:\inetpub\wwwroot\modsecurity 目錄中分別建立 audit, data, rules, tmp, upload 等目錄。
2.在上述目錄安全性中,加入 IIS_IUSR 使用者,並允許 修改
3.修改 C:\inetpub\wwwroot\modsecurity\modsecurity.conf 檔案,修改 Filesystem configuration 區段
1 | SecTmpDir C:\inetpub\wwwroot\modsecurity\tmp\ |
設定 Rules
1.下載 OWASP ModSecurity Core Rule Set
2.將 crs-setup.conf.example 改名成 crs-setup.conf ,Copy 到 C:\inetpub\wwwroot\modsecurity\ 目錄
3.將 Rules 中的 REQUEST-901-INITIALIZATION.conf, REQUEST-942-APPLICATION-ATTACK-SQLI.conf, REQUEST-941-APPLICATION-ATTACK-XSS.conf 等檔案 Copy 到 C:\inetpub\wwwroot\modsecurity\rules 目錄
4.修改 C:\inetpub\wwwroot\modsecurity\modsecurity_iis.conf 檔案,加入 Rules 設定
1 | Include modsecurity.conf |
5.重啟 IIS (iisreset) ,查看事件檢視器中 ModSecurity 是否設定正常,沒有錯誤
註:如果沒有任何 ModSecurity Event ,請開啟 Browser 連到 localhost ,再查看一次。
測試 audit logging
1.開啟 Browser 連到 http://localhost/?testparam=test ,檢查網頁會被 ModSecurity 給擋住
2.查看 C:\inetpub\wwwroot\modsecurity\audit\ 目錄中,是否有產生 modsec_audit.log,並記錄 id:1234 的 Rule
測試 XSS Rule
1.開啟 Browser 連到 http://localhost/?a=document.cookie;//
2.查看 C:\inetpub\wwwroot\modsecurity\audit\modsec_audit.log 中,是否有 REQUEST-941-APPLICATION-ATTACK-XSS.conf 的記錄
測試 SQL Injection Rule
1.開啟 Browser 連到 https://localhost/?a=%27%20or%201=1;--
2.查看 C:\inetpub\wwwroot\modsecurity\audit\modsec_audit.log 中,是否有 REQUEST-942-APPLICATION-ATTACK-SQLI.conf 的記錄
註:目前雖然 Rule 有偵測到,但只會記錄到 modsec_audit.log 中,
如果想要 Match 到 Rule 的行為被 Block 住,請修改 C:\inetpub\wwwroot\modsecurity\crs-setup.conf
1 | #SecDefaultAction "phase:2,log,auditlog,pass" |
存檔後,重啟 IIS ,再進行 XSS & SQL Injection 的設定,就會發現行為被 ModSecurity Block 住