開源框架openresty+nginx 實現web應用防火牆(WAF)
1、簡介
Web應用防火牆(Web Application Firewall, WAF),通過對HTTP(S)請求進行檢測,識別並阻斷SQL注入、跨站腳本攻擊(Cross Site Scripting xss)、網頁木馬上傳、命令/代碼注入、文件包含、敏感文件訪問、第三方應用漏洞攻擊、CC(挑戰黑洞)攻擊、惡意爬蟲掃描、跨站請求偽造等攻擊,保護Web服務安全穩定。
本文主要是通過春哥的開源框架openresty來實現WAF;
參考:https://github.com/openresty
2、架構
整體架構:春哥的openresty開源框架(該框架集成了nginx、lua、lua-nginx-module等模塊),推薦使用該框架;
如果想使用原生的nginx、lua來搭建waf,請參閱 nginx lua lua-nginx-module構建web應用防火牆(waf)


3、實現功能
支持IP白名單和黑名單功能,直接將黑名單的IP訪問拒絕。支持URL白名單,將不需要過濾的URL進行定義。支持User-Agent的過濾,匹配自定義規則中的條目,然後進行處理(返回403)。支持CC攻擊防護,單個URL指定時間的訪問次數,超過設定值,直接返回403。支持Cookie過濾,匹配自定義規則中的條目,然後進行處理(返回403)。支持URL過濾,匹配自定義規則中的條目,如果用戶請求的URL包含這些,返回403。支持URL參數過濾,原理同上。支持日誌記錄,將所有拒絕的操作,記錄到日誌中去。日誌記錄為JSON格式,便於日誌分析,例如使用ELKStack進行攻擊日誌收集、存儲、搜索和展示。
4、安裝包下載
提供了各種版本openresty,點擊鏈接,去下載適合版本。
openresty-1.13.6.2.tar.gz
5、安裝openresty
創建安裝包目錄並將下載的安裝包上傳至該目錄(也可以直接通過wget命令直接下載)
mkdir -p /app/openresty/install
cd /app/openresty/install/

解壓 tar zxvf openresty-1.13.6.2.tar.gz

cd openresty-1.13.6.2

安裝基本包
yum install -y readline-devel pcre-devel openssl-devel gcc gcc-c++ perl.x86_64

配置環境
./configure --prefix=/usr/local/openresty --with-luajit --with-http_v2_module --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module --with-pcre --with-pcre-jit --with-file-aio --with-http_dav_module



編譯 gmake

安裝 gmake install

修改nginx.conf,測試是否安裝成功

編輯nginx.conf
vi nginx.conf

啟動nginx 一次執行下面代碼段
cd ../sbinps -efgrep nginx -t ps -efgrep nginx

關閉防火牆或者開放虛擬機防火牆端口,
這裡為了方便,直接就關閉防火牆了,生產中必須採用開放防火牆端口的方式
systemctl stop firewalld
systemctl status firewalld

瀏覽器訪問測試 http://10.10.91.23/hello

6、部署waf
下載waf包 https://github.com/unixhot/waf
可以使用wget,也可以下載到本地,讓後上傳到虛擬機
解壓後,將waf復制到 /usr/local/openresty/nginx/conf/
cp -r waf /usr/local/openresty/nginx/conf/

修改Nginx的配置文件,加入以下配置。注意路徑,同時WAF日誌默認存放在/tmp/日期_waf.log
/usr/local/openresty/nginx/conf
vi nginx.conf

修改waf中的配置信息
cd /waf
vi config.lua


重啟nginx即可測試
----------------------------------------------------------------------------
作者:ccx_jy
來源:CSDN
原文:https://blog.csdn.net/chuanxincui/article/details/86089763
