Nginx+Lua簡單實現(xiàn)waf

LuaJIT安裝

yum -y install gcc gcc-c++ autoconf automake make unzip
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
cd /usr/local/src/
wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz
tar xf LuaJIT-2.0.5.tar.gz
cd LuaJIT-2.0.5
make && make install

安裝Lua Ngx模塊

wget https://github.com/simplresty/ngx_devel_kit/archive/v0.3.0.tar.gz
tar xf v0.10.13.tar.gz

echo "export LUAJIT_LIB=/usr/local/lib" >> /etc/profile
echo "export LUAJIT_INC=/usr/local/include/luajit-2.0" >> /etc/profile
source /etc/profile

Nginx添加Lua模塊

cd /usr/local/src/
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar xf nginx-1.14.0.tar.gz
cd nginx-1.14.0
useradd -s /sbin/nologin -M www
 ./configure --user=www --group=www \
--prefix=/usr/local/nginx-1.14.0 \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--pid-path=/usr/local/nginx-1.14.0/nginx.pid \
--with-http_realip_module \
--add-module=/usr/local/src/ngx_devel_kit-0.3.0 \
--add-module=/usr/local/src/lua-nginx-module-0.10.13 \
--with-ld-opt="-Wl,-rpath,$LUAJIT_LIB"
make -j2
make install
ln -s /usr/local/nginx-1.14.0 /usr/local/nginx

準備Lua waf防護腳本

https://github.com/loveshell/ngx_lua_waf
mkdir -p /usr/local/nginx/logs/hack/
chown -R www.www /usr/local/nginx/logs/hack/
chmod -R 755 /usr/local/nginx/logs/hack/

至此nginx支持WAF防護功能已經(jīng)搭建完成方援!

使用說明:

nginx配置文件路徑為:/usr/local/nginx/conf/

把ngx_lua_waf下載到conf目錄下,解壓命名為waf

wget https://github.com/loveshell/ngx_lua_waf/archive/master.zip
unzip master.zip -d /usr/local/nginx/conf/
mv /usr/local/nginx/conf/ngx_lua_waf-master /usr/local/nginx/conf/waf

在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規(guī)則目錄(一般在waf/conf/目錄下):

RulePath = "/usr/local/nginx/conf/waf/wafconf/"   #絕對路徑如有變動欢揖,需對應(yīng)修改

然后重啟nginx即可。

配置文件詳細說明:

RulePath = "/usr/local/nginx/conf/waf/wafconf/"
--規(guī)則存放目錄
attacklog = "off"
--是否開啟攻擊信息記錄玉凯,需要配置logdir
logdir = "/usr/local/nginx/logs/hack/"
--log存儲目錄,該目錄需要用戶自己新建漫仆,切需要nginx用戶的可寫權(quán)限
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"
--設(shè)置cc攻擊頻率歹啼,單位為秒.
--默認1分鐘同一個IP只能請求同一個地址100次
html=[[Please go away~~]]
--警告內(nèi)容,可在中括號內(nèi)自定義
備注:不要亂動雙引號玄渗,區(qū)分大小寫

啟動nginx:

/usr/local/nginx/sbin/nginx

檢查規(guī)則是否生效:

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

curl http://your_ip/test.php?id=../etc/passwd

結(jié)果如下則說明規(guī)則生效(頁面修改地址:/usr/local/nginx/conf/waf/config.lua):

圖片.png

注意:默認座菠,本機在白名單不過濾,可自行調(diào)整config.lua配置

一些說明:

過濾規(guī)則在wafconf下藤树,可根據(jù)需求自行調(diào)整浴滴,每條規(guī)則需換行,或者用|分割

args里面的規(guī)則get參數(shù)進行過濾的 url是只在get請求url過濾的規(guī)則 post是只在post請求過濾的規(guī)則 whitelist是白名單,里面的url匹配到不做過濾 user-agent是對user-agent的過濾規(guī)則

默認開啟了get和post過濾岁钓,需要開啟cookie過濾的升略,編輯waf.lua取消部分--注釋即可

日志文件名稱格式如下:虛擬主機名_sec.log

一件腳本

#!/bin/bash
#Author: Template
yum -y install gcc gcc-c++ autoconf automake make unzip wget
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel
cd /usr/local/src/

[ ! -f "LuaJIT-2.0.5.tar.gz" ] && wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz 
[ ! -f "nginx-1.14.0.tar.gz" ] && wget http://nginx.org/download/nginx-1.14.0.tar.gz && 
[ ! -f "v0.3.0.tar.gz" ] && wget https://github.com/simplresty/ngx_devel_kit/archive/v0.3.0.tar.gz 
[ ! -f "v0.10.13.tar.gz" ] && wget https://github.com/openresty/lua-nginx-module/archive/v0.10.13.tar.gz
[ ! -f "master.zip" ] && wget https://github.com/loveshell/ngx_lua_waf/archive/master.zip --no-check-certificate

ls *.tar.gz | xargs -n 1  tar xf

cd LuaJIT-2.0.5 && make && make install && cd ..

echo "export LUAJIT_LIB=/usr/local/lib" >> /etc/profile && \
echo "export LUAJIT_INC=/usr/local/include/luajit-2.0" >> /etc/profile
source /etc/profile
cd nginx-1.14.0 && useradd -s /sbin/nologin -M www
./configure --user=www --group=www \
--prefix=/usr/local/nginx-1.14.0 \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--pid-path=/usr/local/nginx-1.14.0/nginx.pid \
--with-http_realip_module \
--add-module=/usr/local/src/ngx_devel_kit-0.3.0 \
--add-module=/usr/local/src/lua-nginx-module-0.10.13 \
--with-ld-opt="-Wl,-rpath,$LUAJIT_LIB" && make -j8 && make install && ln -s /usr/local/nginx-1.14.0 /usr/local/nginx

mkdir -p /usr/local/nginx/logs/hack/ && chown -R www.www /usr/local/nginx/logs/hack/ && chmod -R 755 /usr/local/nginx/logs/hack/

sed -i '25 a lua_package_path \"/usr/local/nginx/conf/waf/?.lua\";\nlua_shared_dict limit 10m;\ninit_by_lua_file  /usr/local/nginx/conf/waf/init.lua;\naccess_by_lua_file /usr/local/nginx/conf/waf/waf.lua;' /usr/local/nginx/conf/nginx.conf

cd /usr/local/src/ && unzip master.zip -d /usr/local/nginx/conf/ && mv /usr/local/nginx/conf/ngx_lua_waf-master /usr/local/nginx/conf/waf

/usr/local/nginx/sbin/nginx

來源

https://www.cnblogs.com/Template/p/9668305.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市屡限,隨后出現(xiàn)的幾起案子品嚣,更是在濱河造成了極大的恐慌,老刑警劉巖钧大,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翰撑,死亡現(xiàn)場離奇詭異,居然都是意外死亡啊央,警方通過查閱死者的電腦和手機眶诈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瓜饥,“玉大人逝撬,你說我怎么就攤上這事∨彝粒” “怎么了宪潮?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長趣苏。 經(jīng)常有香客問我狡相,道長,這世上最難降的妖魔是什么拦键? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任谣光,我火速辦了婚禮,結(jié)果婚禮上芬为,老公的妹妹穿的比我還像新娘萄金。我一直安慰自己,他們只是感情好媚朦,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布氧敢。 她就那樣靜靜地躺著,像睡著了一般询张。 火紅的嫁衣襯著肌膚如雪孙乖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音唯袄,去河邊找鬼弯屈。 笑死,一個胖子當著我的面吹牛恋拷,可吹牛的內(nèi)容都是我干的资厉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蔬顾,長吁一口氣:“原來是場噩夢啊……” “哼宴偿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起诀豁,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤窄刘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后舷胜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體娩践,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年逞带,在試婚紗的時候發(fā)現(xiàn)自己被綠了欺矫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纱新。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡展氓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出脸爱,到底是詐尸還是另有隱情遇汞,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布簿废,位于F島的核電站空入,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏族檬。R本人自食惡果不足惜歪赢,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望单料。 院中可真熱鬧埋凯,春花似錦、人聲如沸扫尖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽换怖。三九已至甩恼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背条摸。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工悦污, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人钉蒲。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓塞关,卻偏偏與公主長得像,于是被迫代替她去往敵國和親子巾。 傳聞我的和親對象是個殘疾皇子帆赢,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容