• 欢迎访问老司机不开车的博客,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入 TG群 QQ群
  • 老司机提醒您:回复"666666"无需人工审核,即可查看文章!Gmail邮箱的都需要审核!
  • 禁止带HTTP连接和联系方式广告留言。所有含有日文以及英语的评论已经屏蔽。
  • 廣告招租!衹接受比特幣和萊特幣付款。廣告沒有限制!有意向聯係 TG_1024
  • 本站的目的是仅仅是科普知识,绝对没有其他任何用意!请遵守当地相关法律法规!
  • 禁止复读机行为!第一次删除账号,第二次封IP。

Nginx安装ngx_lua_waf – Linux 安装WEB防火墙

学习 老司机 1个月前 (05-24) 1053次浏览 0个评论

自从建立了博客就有闲的蛋疼的无聊脑残 CC DD等攻击,本想着套个CF就完事了(主要是懒)。。。最近CC的比较厉害,还是搞一下。

谷歌了一下 发现Nginx_lua_waf 防 CC效果不错,话不多说开搞~

Nginx_lua_waf 用途:

安装环境为Centos7.x 系统的 lnmp 

需要安装的是ngx_lua_waf (是一个基于LUA-nginx的模块(openresty)的网络应用防火墙

我已经安装了Nginx 1.x.x (1.x.x为版本号)因为在原有 Nginx没有lua 模块,所以需要编译 Nginx 增加 lua 模块

0、查看Nginx版本

首先查看当前 Nginx的版本,configure arguments: 之后的所有配置复制下来后面有用!

nginx -V

配置方法如下

1、安装所需依赖

yum install wget gcc gcc-c++ pcre pcre-devel openssl openssl-devel zlib zlib-devel

2、下载ngx_devel_kit

cd /usr/local/src
wget https://github.com/simplresty/ngx_devel_kit/archive/v0.3.1rc1.tar.gz
tar xf v0.3.1rc1.tar.gz

3、下载lua-nginx-module

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

4、安装luajit

wget https://github.com/openresty/luajit2/archive/v2.1-20190329.tar.gz
tar xf v2.1-20190329.tar.gz
cd luajit2-2.1-20190329
make
make install

5、导入环境变量

export LUAJIT_LIB=/usr/local/lib
export LUAJIT_INC=/usr/local/include/luajit-2.1

6、编译nginx模块 (重点

检查自己的Nginx版本,去Nginx官网下一个一样的版本回来,然后备份正在使用的版本!一定要记得备份!

这里可能会出现make编译错误等问题

cd /usr/local/src
wget http://nginx.org/download/nginx-1.16.0.tar.gz
tar xf nginx-1.16.0.tar.gz
cd nginx-1.16.0
./configure (这里的内容是你之前查看Nginx版本configure arguments: 之后的所有配置,替换括号里的内容)--add-module=/usr/local/src/ngx_devel_kit-0.3.1rc1 --add-module=/usr/local/src/lua-nginx-module-0.10.14 --with-ld-opt=-Wl,-rpath,$LUAJIT_LIB
make
make install

7、根据个人喜好下载ngx_lua_waf的版本。我们这里选择修改版的

原版 https://github.com/loveshell/ngx_lua_waf

修改版:https://github.com/whsir/ngx_lua_waf

nginx 安装路径为:/usr/local/nginx/conf/ 把 ngx_lua_waf 下载到 conf 目录下,解压命名为 waf

cd /usr/local/nginx/conf/
wget https://github.com/whsir/ngx_lua_waf/archive/v1.0.3.tar.gz
tar xf v1.0.3.tar.gz
mv ngx_lua_waf-1.0.3/ waf

8、修改Nginx的配置文件,一般情况Nginx的配置都存放于 /usr/local/nginx/conf/nginx.conf/

在 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/"

9、重启Nginx

我用的是lnmp所以命令是:

lnmp nginx restart

CentOS6.x系统 service nginx reload

CentOS7.x系统 systemctl restart nginx

10、验证waf是否生效

访问http://域名或IP地址/index.php?id=../etc/passwd

例如:http://192.168.157.132/index.php?id=../etc/passwd

看到WAF Block page则表示配置成功

config.lua配置文件说明

一般位于 /usr/local/nginx/conf/waf/conf/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={"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 次
    DenySeconds="360"
    --原来攻击被封默认 60 秒,这里修改为自定义,我这设定为 360 秒(这里是新加的)
    html=[[Please go away~~]]
    --警告内容,可在中括号内自定义

Nginx_lua_waf + CF五秒盾 基本可以防御90%CC攻击

文章参考

https://blog.whsir.com/post-4141.html

https://www.yunloc.com/167.html


博主在此发文(包括但不限于汉字、拼音、拉丁字母)均为随意敲击键盘所出,用于检验本人电脑键盘录入、屏幕显示的机械、光电性能,并不代表本人局部或全部同意、支持或者反对观点。如需要详查请直接与键盘生产厂商法人代表联系。挖井挑水无水表,不会网购无快递。博主只是一名普通的互联网从业者,不懂修电脑,不会卖电脑,不会帮你盗号,不会破解开机密码,找不回你丢失的手机等,如有这样的想法请绕道! 丨本网站采用CC BY 4.0协议进行授权 , 转载请注明Nginx安装ngx_lua_waf – Linux 安装WEB防火墙
喜欢 (0)

说点什么

Please Login to comment
  订阅  
提醒