您的位置 首页 网站

宝塔9集成nginx waf免费 组件步骤:

/www/server/nginx/conf/waf

 

宝塔9集成nginx waf免费 组件步骤:(Nginx使用Lua模块实现WAF)

nginx 1.24
mysql-5.7.44
php-72

之前在宝塔6 ,是可以用免费的 waf,不知道什么时候给我自动升级了,有点气人,免费的 lua_waf 还是要搞得。

不过需要我们在宝塔中安装nginx 选择编译安装:

具体如下:

Nginx Waf防护流程

Nginx使用Lua模块实现WAF - lucky_tomato - 博客园 (cnblogs.com)

检查IP白名单,通过就不检测;

检查IP黑名单,不通过即拒绝;

检查CC攻击,匹配即拒绝

检查http_Acunetix_Aspect扫描是否开启

检查http_X_Scan_Memo扫描是否开启

检查白名单URL检查;

检查UA,UA不通过即拒绝;

检查URL参数检查;

检查cookie;

检查post;

 

1安装依赖包

编译需要的插件

yum -y install gcc gcc-c++ autoconf automake make unzip
yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel

2安装LuaJIT2.0

LuaJIT是Lua的即时编译器,简单来说,LuaJIT是一个高效的Lua虚拟机。

cd /usr/local/src/

下载LuaJIT2.0

https://bmshare.oss-cn-beijing.aliyuncs.com/nginx/%E6%8F%92%E4%BB%B6/LUAjit-v2.0.5.tar.gz

 

或者:

wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz
https://github.com/LuaJIT/LuaJIT/archive/refs/tags/v2.0.5.tar.gz

# 解压

tar xf LuaJIT-2.0.5.tar.gz && cd LuaJIT-2.0.5
# 编译
make
# 安装
make install PREFIX=/usr/local/lj2
# 建立软连接
ln -s /usr/local/lj2/lib/libluajit-5.1.so.2 /lib64/
# 添加环境变量
export LUAJIT_LIB=/usr/local/lj2/lib/
export LUAJIT_INC=/usr/local/lj2/include/luajit-2.0/

3安装ngx_devel_kit

kit模块是一个拓展nginx服务器核心功能的模块,第三方模块开发可以基于它来快速实现。

# 进入目录
cd /user/local/src/

# 下载v0.3.0.tar.gz

https://bmshare1.oss-cn-beijing.aliyuncs.com/nginx/%E6%8F%92%E4%BB%B6/ngx_devel_kit-0.3.3.tar.gz

或者:

https://github.com/vision5/ngx_devel_kit/archive/refs/tags/v0.3.3.tar.gz

解压:

/usr/local/src/ngx_devel_kit-0.3.3

我们把目录记一下,下边编译nginx 添加插件的时候用到

4安装lua-nginx-module

ngx_lua_module 是一个nginx http模块,它把 lua 解析器内嵌到 nginx,用来解析并执行lua 语言编写的网页后台脚本。

cd /user/local/src/

下载:

https://bmshare1.oss-cn-beijing.aliyuncs.com/nginx/%E6%8F%92%E4%BB%B6/lua-nginx-module-0.10.9rc7.tar.gz

或者

wget https://github.com/openresty/lua-nginx-module/archive/v0.10.9rc7.tar.gz

5安装Nginx

# 进入目录
cd /user/local/src/
 
# 下载
wget http://nginx.org/download/nginx-1.21.0.tar.gz
 
# 解压
tar xf nginx-1.21.0.tar.gz
 
# 进入nginx目录
cd nginx-1.21.0
 
# 编译
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --with-pcre --add-module=/usr/local/src/lua-nginx-module-0.10.9rc7 --add-module=/usr/local/src/ngx_devel_kit-0.3.0 --with-stream
 
# 安装
make && make install

之后检查:

# 添加nginx配置,在server块里添加下面内容
vim /usr/local/nginx/conf/nginx.conf
 
location /lua {
    default_type 'text/plain';
 
    content_by_lua 'ngx.say("hello, lua")';
}

# 测试

curl 127.0.0.1:80/lua

出现这个说明编译成功

6安装ngx_lua_waf

# 进入目录
cd /user/local/src/
 
# 把ngx_lua_waf下载到conf目录下
wget https://bmshare1.oss-cn-beijing.aliyuncs.com/nginx/%E6%8F%92%E4%BB%B6/ngx_lua_waf.tar.gz

解压:
mv ngx_lua_waf-master /www/server/nginx/conf/waf



或者:


wget https://github.com/loveshell/ngx_lua_waf/archive/master.zip
# 解压命名为waf 
unzip master.zip -d /usr/local/nginx/conf/ 

# 更改目录名 mv /usr/local/nginx/conf/ngx_lua_waf-master /usr/local/nginx/conf/waf

在nginx.conf的http段添加

lua_package_path "/www/server/nginx/conf/waf/?.lua";
lua_shared_dict limit 10m;
init_by_lua_file  /www/server/nginx/conf/waf/init.lua;
access_by_lua_file /www/server/nginx/conf/waf/waf.lua;

 

做个软连接,不然找不到

ln -s /www/server/nginx/lib/lua/resty /www/server/nginx/conf/waf/resty

# 创建日志目录

mkdir /usr/local/nginx/logs/hack
chown www:www  /usr/local/nginx/logs/hack

Lua_waf 配置

cd /www/server/nginx/conf/waf

cat config.lua

 规则存放路径
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
# 是否开启攻击信息记录,需要配置logdir
attacklog = "on"
# log存储目录,该目录需要用户自己新建,切需要nginx用户的可写权限
logdir = "/usr/local/nginx/logs/hack/"
# 是否拦截url访问
UrlDeny="on"
# 是否拦截后重定向
Redirect="on"
# 是否拦截cookie攻击
CookieMatch="on"
# 是否拦截post攻击
postMatch="on"
# 是否开启URL白名单
whiteModule="on"
# 填写不允许上传文件后缀类型
black_fileExt={"php","jsp"}
# ip白名单,多个ip用逗号分隔
ipWhitelist={"127.0.0.1"}
# ip黑名单,多个ip用逗号分隔
ipBlocklist={"192.168.10.1"}
# 是否开启拦截cc攻击(需要nginx.conf的http段增加lua_shared_dict limit 10m;)
CCDeny="off"
# 设置cc攻击频率,单位为秒.
# 默认1分钟同一个IP只能请求同一个地址100次
CCrate="100/60"
# 告警内容
html= []

规则文件 在这里放着:

nginx -s reload

7测试效果

http://192.168.10.132/?id=<script>  

 

到此为止,我们已经做完了

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章