說明: ngx_waf 是最近新出的一款方便且高性能的 Ng-inx 防火墻模塊,功能齊全,「網絡應用防火墻」的基本功能都有。安裝方便,大多數情況下你可以直接下載使用預構建的模塊。使用便捷,配置指令簡單易懂。規則靈活,提供高級規則,將動作(如攔截或放行)和多個條件表達式組合起來。Github 項目地址:https://github.com/ADD-SP/ngx_waf

功能特性
1、SQL 注入防護(Powered By libinjection)。
2、XSS 攻擊防護(Powered By libinjection)。
3、支持 IPV4 和 IPV6。
4、支持開啟驗證碼(CAPTCHA),支持 hCaptcha、reCAPTCHAv2 和 reCAPTCHAv3。此功能僅限最新的 Current 版本。
5、支持識別友好爬蟲(如 BaiduSpider)并自動放行(基于 User-Agent 和 IP 的識別)。此功能僅限最新的 Current 版本。
6、CC 防御,超出限制后自動拉黑對應 IP 一段時間。
7、IP 黑白名單,同時支持類似 192.168.0.0/16 和 fe80::/10,即支持點分十進制和冒號十六進制表示法和網段劃分。
8、POST 黑名單。
9、URL 黑白名單
10、查詢字符串(Query String)黑名單。
11、UserAgent 黑名單。
12、Cookie 黑名單。
13、Referer 黑白名單。
14、高級規則,將動作(如攔截或放行)和多個條件表達式組合起來。
編譯安裝 ngx_waf 模塊
?? 本教程基于軍哥的 LNMP 一鍵包環境!若環境相同,可供參考!
當前各程序版本信息如下:
LNMP = v1.7
Nginx version = 1.20.1
gcc version = 4.8.5
編譯安裝 LTS
版本的 ngx_waf
模塊:
cd /usr/local/src \ && git clone -b lts https://github.com/ADD-SP/ngx_waf.git \ && cd ngx_waf \ && make cd /usr/local/src \ && git clone https://github.com/libinjection/libinjection.git lib/libinjection cd /usr/local/src/ngx_waf \ && git clone https://github.com/DaveGamble/cJSON.git lib/cjson cd /usr/local/src/ngx_waf \ && git clone https://github.com/libinjection/libinjection.git inc/libinjection cd /usr/local/src \ && git clone https://github.com/jedisct1/libsodium.git --branch stable libsodium-src \ && cd libsodium-src \ && ./configure --prefix=/usr/local/src/libsodium --with-pic \ && export LIB_SODIUM=/usr/local/src/libsodium \ && make -j$(nproc) && make check -j $(nproc) && make install cd /usr/local/src \ && git clone https://github.com/troydhanson/uthash.git \ && export LIB_UTHASH=/usr/local/src/uthash
進入 lnmp1.7
所在目錄,編輯 ~/lnmp1.7/include/upgrade_nginx.sh
這個文件:
nano ~/lnmp1.7/include/upgrade_nginx.sh
找到 else
后面的 ./configure
這行(大概第 62 行),在這串編譯參數末端追加 --add-module=/usr/local/src/ngx_waf --with-cc-opt='-std=gnu99'
(注意:有空格!!有空格!!不要換行!!!不要換行!!!)
編譯模塊
cd ~/lnmp1.7
./upgrade.sh nginx
輸入版本號,回車,耐心等待編譯完成。(Ng-inx 版本號可在 nginx 下載頁 找到預升級的版本號進行輸入并按下回車鍵)
配置 waf 防火墻
在主機配置文件例如 /usr/local/nginx/conf/vhost/www.moewah.com.conf
文件 server
塊內加入以下代碼:
waf on; waf_rule_path /usr/local/src/ngx_waf/assets/rules/; waf_mode DYNAMIC; waf_cc_deny rate=1000r/m duration=60m; waf_cache capacity=50; waf_http_status cc_deny=444;