- 程式
ModSecurity被設計成Apache、Nginx 及IIS網站伺服器的模組,並與Web Server協同工作,也可以將之部署在Reverse Proxy上,本文將以Nginx Reverse Proxy搭配 ModSecurity為例。
- 規則
ModSecurity是執行者,至於要如何進行安全防護則需要 “規則”,如果您對網站的攻擊手法很了解,那麼 ”規則” 您可以自己動作撰寫,有興趣的朋友們可以參考 https://coreruleset.org/docs/rules/creating/ ,或者我們可以下載別人寫好的規則來使用,例如:
dnf install nginx-mod-modsecurity
- 安裝OWASP Core Rule Set (CRS)
[root@Reverse-Proxy tmp]# cd /etc/nginx/
[root@Reverse-Proxy nginx]# git clone https://github.com/coreruleset/coreruleset.git
Cloning into 'coreruleset'...
remote: Enumerating objects: 34159, done.
remote: Counting objects: 100% (47/47), done.
remote: Compressing objects: 100% (30/30), done.
remote: Total 34159 (delta 33), reused 18 (delta 17), pack-reused 34112 (from 3)
Receiving objects: 100% (34159/34159), 9.62 MiB | 15.82 MiB/s, done.
Resolving deltas: 100% (26980/26980), done.
[root@Reverse-Proxy nginx]#
[root@Reverse-Proxy nginx]# cp coreruleset/crs-setup.conf.example coreruleset/crs.conf
[root@Reverse-Proxy nginx]#
[root@Reverse-Proxy nginx]# vi /etc/nginx/modsecurity.conf
在檔案的最後加上如下兩行
Include /etc/nginx/coreruleset/crs.conf
Include /etc/nginx/coreruleset/rules/*.conf
[root@Reverse-Proxy nginx]#
- 修改 Web Site 設定檔 /etc/nginx/conf.d/abc.conf
server {
listen 80;
listen [::]:80;
server_name www.abc.io;
root /usr/share/nginx/html;
# 加入以下兩行
modsecurity on;
modsecurity_rules_file /etc/nginx/modsecurity.conf;
location/{
proxy_pass http://www.abc.io:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
}
}
- 修改 Web Site 設定檔 /etc/nginx/conf.d/xyz.conf
server {
listen 80;
listen [::]:80;
server_name www.xyz.io;
root /usr/share/nginx/html;
# 加入以下兩行
modsecurity on;
modsecurity_rules_file /etc/nginx/modsecurity.conf;
location/{
proxy_pass http://www.xyz.io:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
}
}
systemctl restart nginx
重啟後如果一切順利,且可在 /var/log/nginx/ 目錄下看到 modsec_audit.log的記錄檔,這個檔案即是用戶端存取 Web Server 的違規記錄。
您可在下列課程中了解更多技巧喔!