Openstar – 基于 OpenResty 的高性能 WAF 拓展
本文最后更新于 2806 天前,其中的信息可能已经有所发展或是发生改变。

前言

之前有写过一篇 《利用 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.confhttp{ } 中间插入 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)也写的是十分详细,直接看完,根据需求就可以修改了。

上一篇
下一篇