本文安装的WAF已不推荐,请移步Zhongkui-WAF,功能更多、更高效。

WAF简介

Web应用防火墙(英文:Web Application Firewall,简称: WAF)。

WAF用来防止Sql注入、XSS、SSRF、CC攻击、IP黑白名单、URL拦截访问等,从而保护我们的应用安全。

安装lua模块

因为使用的WAF模块是基于lua的,所以要先安装lua模块,让Nginx支持lua

安装lua的库:

yum install -y lua lua-devel

下载lua即时编译器LuaJIT:

wget -P /usr/local/src http://luajit.org/download/LuaJIT-2.0.5.tar.gz

这里有个坑,安装官网版本的LuaJIT,在后面安装lua-nginx-module模块时会报错,所以改成openresty版本的:

wget -O /usr/local/src/LuaJIT-2.1-20220411.tar.gz https://github.com/openresty/luajit2/archive/v2.1-20220411.tar.gz

解压:

cd /usr/local/src
tar -zxvf LuaJIT-2.1-20220411.tar.gz

安装LuaJIT:

cd /usr/local/src/LuaJIT-2.1-20220411
make && make install PREFIX=/usr/local/luajit2-2.1

编辑/etc/profile文件,添加LuaJIT环境变量:

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

加载lua库到ld.so.conf文件:

echo "/usr/local/LuaJIT/lib" >> /etc/ld.so.conf

执行动态链接库管理命令,让动态链接库为系统所共享:

ldconfig

下载Nginx模块,ngx_devel_kitlua-nginx-module

 wget -O /usr/local/src/ngx_devel_kit-0.3.1.tar.gz https://github.com/simplresty/ngx_devel_kit/archive/v0.3.1.tar.gzwget -O /usr/local/src/lua-nginx-module-0.10.14.tar.gz https://github.com/openresty/lua-nginx-module/archive/v0.10.14.tar.gz

这里还有个坑,lua-nginx-module模块要下载v0.10.14版本,之后的版本在启动Nginx时会报错。

分别解压两个模块到/usr/local/nginx-modules/目录:

tar -zxvf ngx_devel_kit-0.3.1.tar.gz -C /usr/local/nginx-modules/
tar -zxvf lua-nginx-module-0.10.14.tar.gz -C /usr/local/nginx-modules/

安装Nginx时,通过configure命令添加上面这两个模块:

./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_sub_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-http_secure_link_module \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module --without-http_fastcgi_module \
--without-select_module \
--without-poll_module \
--add-module=/usr/local/nginx-modules/ngx_devel_kit-0.3.1 \
--add-module=/usr/local/nginx-modules/lua-nginx-module-0.10.14 \
--with-ld-opt=-Wl,-rpath,/usr/local/luajit2-2.1/lib

在Nginx配置文件中添加配置:

    location /lua { default_type 'text/html'; content_by_lua 'ngx.say("hello lua")'; }

浏览器访问项目地址/lua,如果可以看到hello lua,说明lua模块安装成功。

安装WAF

本文安装的是GitHub上一款开源的、基于lua-nginx-module的WAF,GitHub地址。

wget -O /usr/local/src/ngx_lua_waf-master.zip https://github.com/loveshell/ngx_lua_waf/archive/refs/heads/master.zip

将WAF压缩包解压到Nginx目录下并命名为waf:

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

修改nginx.conf,在http模块下添加waf相关配置:

lua_package_path "/usr/local/nginx/waf/?.lua";
lua_shared_dict limit 10m;
init_by_lua_file  /usr/local/nginx/waf/init.lua;
access_by_lua_file /usr/local/nginx/waf/waf.lua;

waf目录下的config.lua是配置文件,修改下waf配置文件所在的目录:

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

根据作者文档:

ngx_lua如果是0.9.2以上版本,建议正则过滤函数改为ngx.re.find,匹配效率会提高三倍左右。

修改init.luawaf.lua两个文件,把ngx.re.match替换为ngx.re.find

这里给一个已经修改好了的:

链接: https://pan.baidu.com/s/1qeI9lbnhphThXelIrsLvPA

提取码: 2vgf

重载Nginx配置文件:

nginx -s reload

浏览器访问测试:

http://xxxx/test?id=../etc/passwd

如果出现如下提示,说明waf配置生效:

配置文件说明:

 RulePath = "/usr/local/nginx/conf/waf/wafconf/"--规则存放目录attacklog = "off"--是否开启攻击信息记录,需要配置logdirlogdir = "/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次html=[[Please go away~~]]--警告内容,可在中括号内自定义备注:不要乱动双引号,区分大小写

Nginx安装WAF相关推荐

  1. Linux搭建waf防火墙,Linux入门教程:nginx安装配置naxsi waf防火墙,nginxwaf Naxsi 不依赖...

    Linux入门教程:nginx安装配置naxsi waf防火墙,nginxwaf Naxsi 不依赖 Naxsi 是第三方 nginx 模块 ,它和 Modsecurity 都是开源 WAF ,但是它 ...

  2. 负载均衡—nginx实现waf

    Nginx实现WAF 这个我们说下,基于Nginx的WAF,基本上分两大类,一种是基于第三方插件来实现,一种是使用lua语言通过Nginx-Lua整合到一起,就性能而言,我们推荐选择轻量级的lua来实 ...

  3. nginx openresty waf动态黑名单 白名单 、centos 、windows下部署

    1.WAF 使用Nginx+Lua实现自定义WAF(Web application firewall) 参考网址https://github.com/unixhot/waf 功能列表: 支持IP白名单 ...

  4. nginx安装及安全配置和转发代理

    Nginx安装 1. 新建用户和组 ngxuser:ngxuser groupadd ngxuser useradd -m -g ngxuser ngxuser  #-m自动建立家目录,-g指定组 2 ...

  5. 使用阿里云服务器,nginx安装第三方ssl证书

    使用阿里云服务器,nginx安装第三方ssl证书 环境 服务器:阿里云ECS 系统:Centos 7 ssl证书:DigiCert 1.准备好证书的证书私钥.证书文件 2.上传至服务器 3. ngin ...

  6. 基于 NGINX 的 WAF 配置方法之ModSecurity

    基于Nginx的第7层应用防火墙(Web Application Firewall) 一.前言 Web applications – yours, mine, everyone's – are ter ...

  7. nginx安装、配置文件

    认识Nginx: 1.nginx基本概念: 1.nginx是什么? a: Nginx 是一个高性能的http和反向代理的服务器,特点是占有内存较少,并发能力强,事实上nginx的并发能力确实在同类型的 ...

  8. 一、nginx 安装

    添加官方 yum 源 1 vim /etc/yum.repos.d/nginx.rep 输入以下内容(OS为你的系统,OSRELEASE 系统版本) 1 [nginx] 2 name=nginx re ...

  9. Linux环境Nginx安装多版本PHP

    关于Linux环境Nginx安装与调试以及PHP安装参考此文即可:http://blog.csdn.net/unix21/article/details/8544922 linux版本:64位Cent ...

最新文章

  1. 一句话总结等距映射(流形学习)
  2. mysql用户权限管理和增删改查操作
  3. IT人员需要获得的6个顶级的数据中心教育和认证
  4. iOS - 获取安装所有App的Bundle ID
  5. mysql索引优化实际例子_MySQL索引优化的实际案例分析
  6. 博客杂志CMS模板,wpdx3.6破解版源码WordPress主题
  7. Android Butterknife
  8. Python项目实践:BMI 身体质量指数
  9. powerdesigner中生成数据库脚本时出现长度限制问题的解决方法
  10. 图解deconvolution(transpose convolution)
  11. Matlab 中三角函数
  12. CodeForces 1389G Directing Edges 边联通分量缩点+树形dp+rerooting technique
  13. 我的微信公众号开通了!
  14. Python PrettyTable 模块(美化库)
  15. 计算机数制转换操作方法,计算机基础 数制及其相互转换
  16. 视觉传导通路,光能转化为神经电能后,神经电冲动如何传导?|小白心理-312/347考研答疑
  17. Android中的加密方法
  18. 关于电脑怎么连接隐藏的无线WiFi信号
  19. ADC芯片3421驱动程序
  20. VSCode中安装live server插件时出现Open a folder or workspace... (File -> Open Folder)错误

热门文章

  1. 机房志 | 一篇中二的文章
  2. ORACLE数据库中HAVING用法笔记
  3. 孩子厌学逃课怎么办,家长要从这3个方面入手,引导孩子爱上学习
  4. el表达式string强制转换成long报错
  5. 关于数据可视化Chartjs,Highcharts用法
  6. mysql revoke_MySQL REVOKE:删除用户权限
  7. Python实践:画个动图玩玩,Python绘制GIF图总结
  8. 《CoCoNuT: Combining Context-Aware Neural Translation Models using Ensemble for Program Repair》论文笔记
  9. 飞机大战(wsad上下左右,空格发射子弹,击中敌机加一分,分数达到10,20,30难度增加,敌机飞出显示屏幕游戏失败)
  10. OSChina 娱乐弹弹弹——人怕出名猪怕壮,红薯出名会怎样?