利用OpenResty构建简单WAF拦截

OpenResty® 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。

openresty其实是对nginx进行了再次的封装,利用各种模块对Nginx进行了深度定制,也可以根据用户个人的喜好进行重新定制。

我们可以借助上面的特点,使用openresty结合 git clone https://github.com/unixhot/waf.git该项目,可以构建出一个简易而实用的waf防火墙,该防火墙可以防止绝大部分的SQL注入攻击,webshell上传等漏洞。

OpenResty的安装:

依赖包安装:

yum install -y pcre-devel openssl-devel git wget openssl-devel gcc curl readline-devel

 

下载并加压安装包:

cd /usr/local/src/ && wget "https://openresty.org/download/openresty-1.15.8.1.tar.gz"  && tar -zxvf openresty-1.15.8.1.tar.gz  && cd openresty-1.15.8.1

利用下面的参数进行编译:

./configure --frefix=/usr/local/openresty \
            --with-luajit --with-http_stub_status_module \
            --with-pcre --with-pcre-jit

编译并安装:make && make install

上面就完成了对openresty的安装,下面是克隆waf项目

克隆waf的规则库:这个规则库中存放了一些访问限制的规则,正是这些规则,在起着防御危险访问的限制,具体的可以限制哪些非法访问,可以看waf/rule-config/下的rule文件。所有需要拦截的格式都是通过这个规则库来配置的.

cd /usr/local/src/ && git clone https://github.com/unixhot/waf.git

该waf是在https://github.com/loveshell/ngx_lua_waf项目之上进行开发的。如有什么需要深入研究得话,可以参考这个原生项目。

cp -a /usr/local/src/waf/waf /usr/local/openresty/conf/

vim /usr/local/openresty/nginx/conf/nginx.conf

http {

        .........

        lua_shared_dict limit 50m;

        lua_package_path "/usr/local/openresty/nginx/conf/waf/?.lua*";

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

        access_by_lua_file "/usr/local/openresty/nginx/conf/waf/access.lua";

        ..........

}

接下来可以配置下文件:/usr/local/src/waf/waf/config.lua,如错误回显。
 

检查上面得配置是否成功:

/usr/local/openresty/nginx/sbin/nginx -t
如果返回成功,则开启nginx

/usr/local/openresty/nginx/sbin/nginx 

这时候,我们就可以在网页上进行测试,看是否配置生效,我们可以通过在网页上使用ip/a.sql进行测试,如下图

 这样我们就利用了waf.git中得规则,对某些危险项进行了屏蔽和过滤。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值