Nginx 支援 WAF 防護功能實戰

2021-09-08 11:43:10 字數 3560 閱讀 3726

waf的定義是這樣的:web應用防火牆是通過執行一系列針對http/https的安全策略來專門為web應用提供保護的一款產品,通過從上面對waf的定義中,我們可以很清晰地了解到:waf是一種工作在應用層的、通過特定的安全策略來專門為web應用提供安全防護的產品。

用途:用於過濾post,get,cookie方式常見的web攻擊

防止sql注入,本地包含,部分溢位,fuzzing測試,xss,ssrf等web攻擊

防止svn/備份之類檔案洩漏

防止apachebench之類壓力測試工具的攻擊

遮蔽常見的掃瞄黑客工具,掃瞄器

遮蔽異常的網路請求

遮蔽附件類目錄php執行許可權

防止webshell上傳

安裝前準備:

系統:centos6.5

nginx:/opt/nginx-1.4.4(nginx我之前已經安裝,在/opt/nginx/目錄,現在只是安裝 nginx 支援 waf 防護功能實戰 )

yum -y install gcc gcc-c++ autoconf automake make

yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel

開始安裝:

1.安裝luajit 2.0(推薦使用lujit2.1做lua支援)

tar zxf luajit-2.0.0.tar.gz

cd luajit-2.0.0

make && make install

注:lib和include是直接放在/usr/local/lib和usr/local/include

2.安裝ngx_devel_kit

wget --no-check-certificate

tar -zxvf v0.2.18

3.安裝nginx_lua_module

wget --no-check-certificate

tar -zxvf v0.7.18rc2

4.匯入環境變數,編譯

export luajit_lib=/usr/local/lib    

export luajit_inc=/usr/local/include/luajit-2.0

5.進入nginx原始碼目錄對nginx進行重新編譯,將waf功能編譯進nginx中:

6.新建/opt/nginx/logs/hack/目錄攻擊日誌,並賦予nginx使用者對該目錄的寫入許可權.

mkdir -p /opt/nginx/logs/hack/

www賬戶是跑nginx服務的使用者

chown -r www:www /opt/nginx/logs/hack/

chmod -r 755 /opt/nginx/logs/hack/

至此nginx支援waf防護功能已經搭建完成!

nginx安裝路徑假設為:/opt/nginx/conf/

[root@oracle-demo conf]# mv  ngx_lua_waf-master /opt/nginx/conf/waf

在nginx.conf的http段新增:

配置config.lua裡的waf規則目錄(一般在wafconf/目錄下)

rulepath = "/opt/nginx/conf/waf/wafconf/"

絕對路徑如有變動,需對應修改

然後重啟nginx即可

部署完畢可以嘗試如下命令:

返回"please go away~~"字樣,說明規則生效。

#vim test.php

<?phpinfo()?>

rulepath = "/opt/nginx/conf/waf/wafconf/"

--規則存放目錄

attacklog = "off"

--是否開啟攻擊資訊記錄,需要配置logdir

logdir = "/opt/nginx/logs/hack/"

--log儲存目錄,該目錄需要使用者自己新建,切需要nginx使用者的可寫許可權

urldeny="on"

--是否攔截url訪問

redirect="on"

--是否攔截後重定向

cookiematch = "on"

--是否攔截cookie攻擊

postmatch = "on"

--是否攔截post攻擊

whitemodule = "on"

--是否開啟url白名單

black_fileext=

--填寫不允許上傳檔案字尾型別

ipwhitelist=

--ip白名單,多個ip用逗號分隔

ipblocklist=

--ip黑名單,多個ip用逗號分隔

ccdeny="on"

--是否開啟攔截cc攻擊(需要nginx.conf的http段增加lua_shared_dict limit 10m;)

ccrate = "100/60"

--設定cc攻擊頻率,單位為秒.

--預設1分鐘同乙個ip只能請求同乙個位址100次

html=[[please go away~~]]

--警告內容,可在中括號內自定義

備註:不要亂動雙引號,區分大小寫

過濾規則在wafconf下,可根據需求自行調整,每條規則需換行,或者用|分割

args   裡面的規則get引數進行過濾的

url   是只在get請求url過濾的規則

post   是只在post請求過濾的規則

whitelist 是白名單,裡面的url匹配到不做過濾

user-agent是對user-agent的過濾規則

預設開啟了get和post過濾,需要開啟cookie過濾的,編輯waf.lua取消部分--注釋即可

參考文件: 

nginx nginx lua實現waf防護

wget git clone git clone b 0.10.14 wget wget c 二 安裝配置 luajit tar xf luajit 2.0.5.tar gz cd luajit 2.0.5 make j 2 make install 設定環境變數 三 修改配置 vim usr lo...

檔案上傳之WAF繞過及相安全防護

content disposition 一般可更改 name 表單引數值,不能更改 filename 檔名,可以更改 content type 檔案 mime,視情況更改 資料溢位 防止waf匹配 符號變異 防止waf匹配 資料截斷 防止waf匹配 00 換行 重複資料 防止waf匹配 引數多次 我...

nginx中使用waf防火牆

1.安裝依賴 yum install y readline devel ncurses devel 2.安裝lua tar xf lua 5.1.5.tar gz cd lua 5.1.5 make linux make install 3.安裝luajit 4.安裝兩個外掛程式 5.給已經安裝過的...