配置nginx支援ngx lua waf

2022-03-02 13:06:15 字數 2509 閱讀 7133

個人學習筆記,謝絕**!!!

原文:ngx_lua_waf 是乙個基於 ngx_lua 的 開源的web 應用防火牆,使用簡單,高效能和輕量級。

1、安裝luajit2.0

luajit是採用c語言寫的lua**的直譯器, 這裡推薦使用lujit2.1做lua支援

# wget 

# tar xf luajit-2.0.5.tar.gz

# cd luajit-2.0.5

# make && make install

ngx_lua如果是0.9.2以上版本,建議正則過濾函式改為ngx.re.find,匹配效率會提高三倍左右。

2、安裝ngx_devel_kit

ndk(nginx development kit)模組是乙個拓展nginx伺服器核心功能的模組,第三方模組開發可以基於它來快速實現

# wget 

# tar xf v0.3.0.tar.gz

3、安裝nginx_lua_module
# wget 

# tar xf v0.10.13.tar.gz

4、環境變數
# export luajit_lib=/usr/local/lib

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

5、編譯安裝nginx
# ./configure \

...略... \

--add-module=/dist/ngx_devel_kit-0.3.0 \

--add-module=/dist/lua-nginx-module-0.10.13 \

--with-ld-opt="-wl,-rpath,$luajit_lib"

如果報錯: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: no such file or directory

解決方法:ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2

# wget 

# unzip master.zip

# mv ngx_lua_waf-master /usr/local/nginx/conf/waf

7、nginx.conf http欄位裡新增配置:
lua_package_path "/usr/local/nginx/conf/waf/?.lua";

lua_shared_dict limit 10m;

init_by_lua_file /usr/local/nginx/conf/waf/init.lua;

access_by_lua_file /usr/local/nginx/conf/waf/waf.lua;

8、配置詳解:

/usr/local/nginx/conf/waf/config.lua

rulepath = "/usr/local/nginx/conf/waf/wafconf/"

--規則存放目錄

attacklog = "off"

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

logdir = "/usr/local/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下,可根據需求自行調整,每條規則需換行,或者用|分割:

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

參考

配置Nginx支援php

nginx.conf中配置 server error page 404 404.html redirect server error pages to the static page 50x.html error page 500 502 503 504 50x.html location 50x....

配置nginx支援Https

配置nginx支援https一定要先使用stop停止nginx然後重新代開不能使用reload 一 安裝letsencrypt 1.從git上轉殖下來 git clone 2.切換到letsencrypt中 cd letsencrypt 執行以下的命令 a c certbot auto certon...

配置nginx支援pathinfo功能

nginx模式不支援pathinfo模式,類似info.php hello形式的url會被提示找不到頁面。下面的通過正則找出實際檔案路徑和pathinfo部分的方法,讓nginx支援pathinfo。location php fastcgi param script filename documen...