当前位置: 代码迷 >> 综合 >> openresty + waf 搭建
  详细解决方案

openresty + waf 搭建

热度:5   发布时间:2024-02-23 12:55:32.0

Centos7安装Openresty通过yum安装
在 /etc/yum.repos.d/ 下新建 OpenResty.repo 内容

[openresty]
name=Official OpenResty Repository
baseurl=https://copr-be.cloud.fedoraproject.org/results/openresty/openresty/epel-releasever?releasever-releasever?basearch/
skip_if_unavailable=True
gpgcheck=1
gpgkey=https://copr-be.cloud.fedoraproject.org/results/openresty/openresty/pubkey.gpg
enabled=1
enabled_metadata=1

安装

yum install openresty -y
默认会安装到 /usr/local/openresty/ 目录下, 目录下包含了 luajit, lualib, nginx, openssl, pcre, zlib 这些组件

安装ngx_lua_waf模块
详见大佬的github https://github.com/loveshell/ngx_lua_waf

下载waf模块

wget https://github.com/loveshell/ngx_lua_waf/archive/v0.7.2.tar.gz

tar zxf v0.7.2.tar.gz

mv ngx_lua_waf-0.7.2 waf

ln -s /usr/local/openresty/lualib /usr/local/lib/lua

ln -s /usr/local/openresty/lualib/resty /usr/local/openresty/nginx/conf/waf/resty

将其放在安装好的/usr/local/ openresty /nginx下面的conf下,然后切换到nginx的安装目录找到conf/nginx.conf配置,在http配置下加入 如下配置,其中的/usr/local/openresty /nginx/conf/waf改为实际安装目录。

lua_package_path “/usr/local/openresty /nginx/conf/waf /?.lua”;

lua_shared_dict limit 10m; #开启拦截cc攻击时需要设置此值

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

access_by_lua_file /usr/local/openresty /nginx/conf/waf /waf.lua;#控制访问的规则

重启nginx。

Nginx 启动
切换到 /usr/local/openresty/nginx

sbin/nginx

重启 nginx sbin/nginx -s reload

倘若waf不起作用检查,/usr/local/ openresty /nginx/waf/config.lua 此文件的第一行

RulePath = “/usr/local/openresty/nginx/conf/waf/wafconf/” 表示规则的路径。检查其路径是否配置的为刚才安装的waf下的wafconf

配置文件详细说明:

  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~~]]--警告内容,可在中括号内自定义备注:不要乱动双引号,区分大小写
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200928140224840.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTYyMzExMQ==,size_16,color_FFFFFF,t_70#pic_center)