NGINX-LUA

nginx 1.13.3編譯安裝ngx_lua_waf安全防護

文章目錄

[隱藏]

前言

ngx_lua_waf是一個基於ngx_lua的web應用防火牆,使用簡單,高性能和輕量級。

  • 防止sql注入,本地包含,部分溢出,fuzzing測試,xss,SSRF等web攻擊
  • 防止svn/備份之類文件泄漏

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

  • 屏蔽常見的掃描黑客工具,掃描器

  • 屏蔽異常的網絡請求

  • 屏蔽圖片附件類目錄php執行權限

  • 防止webshell上傳

準備

ngx_lua_waf推薦使用Luajit做lua支持,而Luajit需要ngx_devel_kit模塊與lua-nginx-module模塊。進入/usr/local/src目錄準備以上文件。

1、下載ngx_devel_kit

wget https://github.com/simpl/ngx_devel_kit/archive/v0.3.0.tar.gz
tar zxvf v0.3.0.tar.gz

2、下載lua-nginx-module

wget https://github.com/openresty/lua-nginx-module/archive/v0.10.10.tar.gz
tar zxvf v0.10.10.tar.gz

3、安裝Lua環境

wget http://luajit.org/download/LuaJIT-2.0.3.tar.gz
tar xf LuaJIT-2.0.5.tar.gz
cd LuaJIT-2.0.5
make && sudo make install

編譯

1、進入Nginx安裝目錄:

cd /usr/local/src/nginx-1.13.3

2、導入環境變量

#這個很有可能不一樣
export LUAJIT_LIB=/usr/local/lib
#這個很有可能不一樣
export LUAJIT_INC=/usr/local/include/luajit-2.0

3、查看目前Nginx的版本

nginx -V

4、加載模塊

./configure(Nginx-V已有的模塊)--add-module=/usr/local/src/ngx_devel_kit-0.3.0 --add-module=/usr/local/src/lua-nginx-module-0.10.10 --with-ld-opt=-Wl,-rpath,$LUAJIT_LIB

5、編譯參數

# 注意不要make install
make
#重命名nginx舊版本二進制文件
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
#拷貝一份新編譯的二進制文件
cp objs/nginx /usr/local/nginx/sbin/
#升級
make upgrade
#確認
nginx -V
#重新加載Nginx
nginx -s reload

安裝

1、準備Luajit

https://github.com/loveshell/ngx_lua_waf下載Luajit。

nginx安裝路徑假設爲/usr/local/nginx/,把ngx_lua_waf下載到conf目錄下,解壓命名爲waf。

2、在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;

配置config.lua裏的waf規則目錄(一般在waf/conf/目錄下),絕對路徑如有變動,需對應修改:

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

然後重啓nginx即可

service nginx restart

配置

1、配置文件詳細說明

    RulePath = "/usr/local/nginx/conf/waf/wafconf/"
    --規則存放目錄
    attacklog = "on"n
    --是否開啓攻擊信息記錄,需要配置logdir
    logdir = "/home/wwwlogs/"
    --log存儲目錄,需要nginx用戶的可寫權限。該目錄LNMP默認建立,放在這個目錄即可
    --日誌文件名稱格式如下:虛擬主機名_sec.log
    UrlDeny="on"
    --是否攔截url訪問
    Redirect="on"
    --是否攔截後重定向
    CookieMatch = "on"
    --是否攔截cookie攻擊
    postMatch = "on"
    --是否攔截post攻擊
    whiteModule = "on"
    --是否開啓URL白名單
    black_fileExt={"php","jsp"}
    --填寫不允許上傳文件後綴類型
    ipWhitelist={"127.0.0.1"}
    --ip白名單,多個ip用逗號分隔
    ipBlocklist={"1.0.0.1"}
    --ip黑名單,多個ip用逗號分隔
    CCDeny="on"
    --是否開啓攔截cc攻擊(需要nginx.conf的http段增加lua_shared_dict limit 10m;)
    CCrate = "100/60"
    --設置cc攻擊頻率,單位爲秒.
    --默認1分鐘同一個IP只能請求同一個地址100次
    html=[[Please go away~~]]
    --警告內容,可在中括號內自定義
    備註:不要亂動雙引號,區分大小寫

2、部署完畢可以嘗試如下命令進行測試:

curl https://www.youfencun.com/index.php?id=../etc/passwd

返回網站防火牆Html源碼即表示配置成功,也可通過網頁訪問,返回如下圖所示:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章