本篇介绍在CentOS7.6上安装、测试使用ngx_lua_waf + openresty。

Preface

# yum install epel-release -y
# yum group install "Development Tools" -y    # 安装基本编译工具

安装Luagit

# cd /opt/
# wget http://luajit.org/download/LuaJIT-2.1.0-beta3.tar.gz
# tar -xvf LuaJIT-2.1.-beta3.tar.gz
# cd LuaJIT-2.1.-beta3/
# make && make install
# ln -sf luajit-2.1.-beta3 /usr/local/bin/luajit

安装OpenResty

安装依赖

# yum install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel -y

下载安装

# cd /opt/
# wget https://openresty.org/download/openresty-1.13.6.1.tar.gz
# tar -xvf openresty-1.13.6.1.tar.gz
# cd openresty-1.13.6.1/
# ./configure --prefix=/usr/local/openresty --with-luajit --with-http_stub_status_module --with-pcre --with-pcre-jit
# gmake && gmake install
# ln -sf /usr/local/openresty/nginx/sbin/nginx /usr/local/openresty/bin/openresty
# /usr/local/openresty/bin/openresty   # 启动openresty
# netstat -lntp | grep 80 # 服务运行正常
tcp 0.0.0.0: 0.0.0.0:* LISTEN

配置ngx_lua_waf

下载

# cd /usr/local/openresty/nginx/conf                  # 到openresty配置文件目录
# git clone https://github.com/loveshell/ngx_lua_waf.git      # 下载
Cloning into 'ngx_lua_waf'...
# mv ngx_lua_waf/ waf/                           # 改个简单的名字

添加配置

修改openresty配置文件。

# vim /usr/local/openresty/nginx/conf/nginx.conf
...
user nobody; # 取消注释
...
http{ # 在http块下添加如下内
...
lua_package_path "/usr/local/openresty/nginx/conf/waf/?.lua";
lua_shared_dict limit 10m;
init_by_lua_file /usr/local/openresty/nginx/conf/waf/init.lua;
access_by_lua_file /usr/local/openresty/nginx/conf/waf/waf.lua;

...

修改ngx_lua_waf配置

# cd /usr/local/openresty/nginx/conf/waf/     # ngx_lua_waf目录
# vim config.lua
...
RulePath = "/usr/local/openresty/nginx/conf/waf/wafconf/" # 规则文件路径
attacklog = "on" # 启用日志
logdir = "/usr/local/openresty/nginx/logs/hack/" # 日志目录
...

创建日志目录

# mkdir -p /usr/local/openresty/nginx/logs/hack/
# chown -R nobody:nobody /usr/local/openresty/nginx/logs/hack/

测试openresty配置是否正常:

# /usr/local/openresty/bin/openresty               # 如果没有启动服务,则启动
# /usr/local/openresty/bin/openresty -s reload # 如果已经启动,则重载配置
# /usr/local/openresty/bin/openresty -t # 测试配置是否正常
nginx: the configuration file /usr/local/openresty/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/openresty/nginx/conf/nginx.conf test is successful

WAF测试

直接访问站点(此处为虚拟机的ip地址),应该能看到Openresty的欢迎页。

攻击测试

尝试目录遍历攻击,即使用../,跳转目录读取文件。

访问:http://192.168.139.139//test.php?id=../etc/passwd

提示,检测到攻击行为,请求被拦截,说明可以正常工作。

ngx_lua_waf配置文件说明

配置文件路径:/usr/local/openresty/nginx/conf/waf/config.lua

RulePath = "/usr/local/openresty/nginx/ngx_lua_waf/wafconf/"   ##指定相应位置
attacklog = "on" ##开启日志
logdir = "/usr/local/openresty/nginx/logs/hack/" ##日志存放位置
UrlDeny="on" ##是否开启URL防护
Redirect="on" ##地址重定向
CookieMatch="on" ##cookie拦截
postMatch="on" ##post拦截
whiteModule="on" ##白名单
black_fileExt={"php","jsp"}
ipWhitelist={"127.0.0.1"} ##白名单IP
ipBlocklist={"1.0.0.1"} ##黑名单IP
CCDeny="on" ##开启CC防护
CCrate="100/60" ##60秒内允许同一个IP访问100次

参考

  centos下安装openresty+ngx_lua_waf防火墙部署

  https://github.com/loveshell/ngx_lua_waf

  https://blog.51cto.com/tar0cissp/1980249

注:参考链接中都有几个小问题,写的不够清晰。

最新文章

  1. jsp前三章测试改错题
  2. 【项目开发】LigerUI+MVC的应用
  3. Pro Git 读书笔记
  4. 利用JAXB实现java实体类和xml互相转换
  5. 《zip命令》-linux命令五分钟系列之九
  6. Ubuntu 修改时区和时间
  7. bin文件格式分析
  8. Delphi 类与对象内存结构浅析(三篇)
  9. Ubuntu 定时任务中的环境变量设置
  10. 关于Application_End 与 Application_Start事件触发情况的测试(待续)
  11. javascript封装函数入门
  12. 微信小程序支付接入实战
  13. VB编写的程序加入防火墙的例外中
  14. HTTP协议中长连接与短连接的区别
  15. C#获取程序运行时间
  16. windows删除文件或目录CMD命令
  17. Azure 虚拟机诊断设置问题排查
  18. Eclipse技术: 项目文件中过滤.o文件
  19. nginx配置web服务器
  20. JavaScrip——DOM操作(查找HTML元素/修改元素)

热门文章

  1. Qt Installer Framework翻译(4)
  2. MNIST数据集
  3. 啥叫ORM
  4. lind 语 api 数据的安全性  第四弹
  5. 剑指Offer对答如流系列 - 重建二叉树
  6. 对比PXC集群与主从架构在一致性上的区别
  7. python学习Day05--字典
  8. Spring(五)核心容器 - 注册 Bean、BeanDefinitionRegistry 简介
  9. Perl Tk在IC设计中的应用、Windows、Linux平台下的安装-各种错误的摸索解决
  10. No