前言
之前有写过一篇 《利用 NGINX 和 LuaJIT 构建简单的 WAF》 ,利用 NGINX 和 LuaJIT + ngx_lua_waf 拓展就可以实现简单的 WAF,其实也已经不简单了。
但是这次的主角 OpenStar,中文名 开心,23333。则是一款 WAF 中集大成的作品,吸收了多种 WAF 拓展,如 ngx_lua_waf 和 Apache HTtpd 上著名的 mod_security 拓展。是一款非常不错的 WAF 应用。
概览
OpenStar是一个基于 OpenResty 的,高性能 web 平台,不仅仅包含了传统 WAF 的功能模块,还相应增加了其他灵活、友好、实用的功能,是增强的 WAF、WEB 扩展、CC 防护的集合。
WAF 防护
在OpenStar中的WAF防护模块,采用传统的黑白名单、正则过滤的方式(有人会问现在不是流行自主学习么;正则、黑白名单会有盲点、会被绕过……)。这里我简单说明一下,自主分析学习引擎是我们的日志分析引擎做的,这里是高性能、高并发的点,就用简单粗暴的方法解决,根据业务实际调整好防护策略,可以解决绝大多数WEB安全1.0和WEB安全2.0类型的漏洞(90%+的问题)。 WAF 防护从header,args,post,访问频率等,分层进行按顺序防护
安装
下载
cd /root
git clone https://github.com/starjun/openstar.git
mv openstar-master openstar
修改
由于 Openstar 的参数加多,内容复杂,所以默认的 Openresty 的安装地址是 /opt/openresty
, 需要我们找到相应文件手动更改:
需要修改的文件目录如下:
conf/nginx.conf
conf/waf.conf
config.json
init.lua
假设我们的 Openresty 是安装在 /usr/local/openresty
,那么将 openstar 目录 移动成 /usr/local/openresty/openstar
那么,将 /opt/openresty
修改成 /usr/local/openresty
即可!
配置
一、修改 nginx.conf
在 http{ }
中间插入 include /usr/local/openresty/openstar/conf/waf.conf;
例如:
http{
...
include /usr/local/openresty/openstar/conf/waf.conf;
...
}
二、如果有安装 redis 的同学,可以通过 redis 来提高 WAF 的效率,适用于大平台的 WAF 应用。
修改 openstar 下的 config.json
可以看到有:
"redis_Mod" : {"state":"off","ip":"127.0.0.1","Port" : 6379,"Password":"yesorno@123"},
修改为:
"redis_Mod" : {"state":"on","ip":"127.0.0.1","Port" : 6379},
如果有给 redis 加密码或者说 redis 是云厂商的则根据实际情况修改,一般情况就是这样的。
三、重启 nginx
service nginx restart
验证
在终端输入
curl http://www.mf8.biz/test.php?id=../etc/passwd
如果返回:request error!
,差不多就是了
也可以直接浏览器访问
http://www.mf8.biz/test.php?id=../etc/passwd
自定义
如果想玩的更好更大的话,还可以自己写一套规则。
作者的对 openstar 的介绍(https://github.com/starjun/openstar)也写的是十分详细,直接看完,根据需求就可以修改了。