让Nginx支持Lua导入过滤规则担任WAF角色
Posted 运维沙龙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了让Nginx支持Lua导入过滤规则担任WAF角色相关的知识,希望对你有一定的参考价值。
对于互联网业务威胁比较大的网络攻击,大部分是应用层接口的入侵威胁,常见的“拖库”导致企业数据外泄,近年来发生多起,一般以WEB为入侵接口。WAF,Web应用防护系统(也称为:网站应用级入侵防御系统。英文:Web Application Firewall,简称: WAF)。利用国际上公认的一种说法:Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。
一般企业,可以使用nginx + Lua 的方式,在企业网站前端,拦截一些一般攻击,如果是企业互联网业务规模大,依然建议专人专事,站在巨人的肩膀上处理问题,去寻求更专业的解决方案,下面简单的描述一下,Nginx + Lua 的解决方法:
前提技术基础:
1、nginx + php-fpm,能编译完成基本的Nginx + PHP环境。
项目软件源:
1、 https://github.com/loveshell/ngx_lua_waf
2、 http://tengine.taobao.org/
注:tengine 是基于Nginx 的开源项目,也可以选用原生的Nginx。
下载文件:
https://codeload.github.com/loveshell/ngx_lua_waf/zip/master/ngx_lua_waf-master.zip
http://tengine.taobao.org/download/tengine-2.1.2.tar.gz
安装一些常见的系统组件:
yum install wget gcc gcc-c++ pcrepcre-devel openssl openssl-devel zlib zlib-devel
yum install lua
编译安装Tengine,目标让Tengine 支持Lua,正则表达式等等,缺的插件包可以搜索得到。
cd tengine-2.1.2
./configure--add-module=../ngx_cache_purge-2.1 --add-module=../ngx_devel_kit-0.2.17rc2/--add-module=../lua-nginx-module-0.7.4/ --with-http_sub_module--with-http_gzip_static_module --with-pcre-jit
make
make install
把WAF 文件放入到Nginx 目录下:
mkdir nginx/conf/waf
unzip ngx_lua_waf-master.zip
mv ./ngx_lua_waf-master/* nginx/conf/waf
在nginx.conf 里,添加如下配置:
lua_package_path "/usr/local/nginx/conf/waf/?.lua";
lua_shared_dict limit 10m;
init_by_lua_file /usr/local/nginx/conf/waf/init.lua;
access_by_lua_file/usr/local/nginx/conf/waf/waf.lua;
启动Nginx
测试访问:
其他扩展学习:
扩展1:以下的这些项目,建议综合看一下:
https://github.com/oneinstack/ngx_lua_waf
https://github.com/whsir/ngx_lua_waf/
https://github.com/search?o=desc&q=ngx_lua_waf&s=stars&type=Repositories
扩展2:
配置config.lua里的waf规则目录(一般在waf/conf/目录下)
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
--
规则存放目录
attacklog = "off"
--
是否开启攻击信息记录,需要配置
logdir
logdir = "/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~~]]
--
警告内容
,
可在中括号内自定义
备注
:
不要乱动双引号,区分大小写
文章来源于网友投稿、网络转载、自写自撰等,
如果有争议请联系。
以上是关于让Nginx支持Lua导入过滤规则担任WAF角色的主要内容,如果未能解决你的问题,请参考以下文章