宝塔面板安装ngx_waf,高性能的Nginx防火墙模块自带类似cf的防cc攻击的5秒盾

ngx_waf,一个新开发的方便且高性能的 Nginx 防火墙模块,ngx_waf的优点包括:

  • 功能齐全:「网络应用防火墙」的基本功能都有。
  • 安装方便:缺少依赖项时会自动提供解决方法。
  • 使用方便:配置指令简单易懂,不用看文档都能猜到大概是什么意思。
  • 高性能:经过较为极限的测试,启动本模块后 RPS(每秒请求数) 降低约 4%。测试说明和结果见使用文档。
宝塔面板安装ngx_waf,高性能的Nginx防火墙模块自带类似cf的防cc攻击的5秒盾

目录

1.简介

项目:https://github.com/ADD-SP/ngx_waf/

2.部署方法1

这篇文章利用两个方法部署该模块,先介绍常规的静态编译方法。此外作者还提供了Docker安装方式,但不在本文讨论范围内。

2.1进入宝塔面板nginx目录

cd /www/server/nginx/sbin/

2.2备份宝塔nginx

cp nginx nginx.bak

2.3查看当前nginx的加载所的模块,在编译加载的PageSpeed模块的时候仍需加载这些模块(下面的路径是宝塔默认的nginx的路径,其他面板请自行更改路径)进入nginx的编译目录,命令如下:

cd /www/server/nginx/src

2.4查看宝塔编译好的nginx加载模块,在重新编译加载新模块时候仍需加载这些模块

nginx -V

注意这个命令是大写的V,如果小写v是不会显示模块的,这里会显示出所有的已经编译的模块。将./configure arguents:之后的内容复制到记事本备用。陌涛这里是:

--user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module

2.5添加ngx_waf防火墙模块,在所有模块的最后面添加如下的模块。

--add-module=/www/server/nginx/src/ngx_waf --with-cc-opt='-std=gnu99'

2.6举例,如果是宝塔直接如下命令回车即可。

./configure --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module --add-module=/www/server/nginx/src/ngx_waf --with-cc-opt='-std=gnu99'

2.7以上命令执行完毕,输入编译命令如下:

make

编译安装过程大概要5分钟左右,还是有点长的。完成后将系统中原有的nginx用重新编译生成的nginx文件替换。

2.8停止nginx

service nginx stop

2.9删除原来的nginx,操作之前请确认自己的nginx已经备份

rm -rf /www/server/nginx/sbin/nginx

2.10复制新编译的nginx

cp /www/server/nginx/src/objs/nginx /www/server/nginx/sbin/

2.11启动nginx

service nginx start

2.12利用nginx -V命令检查模块是否完成,编译成功效果如下:

宝塔面板安装ngx_waf,高性能的Nginx防火墙模块自带类似cf的防cc攻击的5秒盾

3.部署方法2

这里在介绍一个方法编译该模块。

3.1如果你安装nginx,需要在软件商店卸载,之后重新安装,注意请选择编译模式安装。

3.2选择自定义安装模块,看图:

宝塔面板安装ngx_waf,高性能的Nginx防火墙模块自带类似cf的防cc攻击的5秒盾

注意,具体参数填写如下:

模块名称:ngx_waf

模块描述:ngx_waf

模块参数:

--add-module=/www/server/nginx/src/ngx_waf --with-cc-opt='-std=gnu99'

前置脚本:

mkdir -p /www/server/nginx/src
cd /www/server/nginx/src
git clone -b master https://github.com/ADD-SP/ngx_waf.git
cd ngx_waf
git clone https://github.com/libinjection/libinjection.git inc/libinjection

3.3编辑好之后提交,如图:

宝塔面板安装ngx_waf,高性能的Nginx防火墙模块自带类似cf的防cc攻击的5秒盾

提交后,等待安装成功即可。

3.4如果遇到错误,一般是这个错误,

报错:
adding module in /root/ngx_waf
checking for uthash library ... not found
./configure: error: the ngx_http_waf_module module requires the uthash library.

这个错误提示缺少 uthash 库,通过 yum 或者 apt 安装一下。

centos:yum install uthash-devel
ubuntu: apt install uthash-dev

3.5安装成功效果如下:nginx -V 检查!!看到最后已经有了ngx_waf模块,大功告成。

configure arguments: --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module --add-module=/www/server/nginx/src/ngx_waf --with-cc-opt='-std=gnu99'

4.网站配置和效果展示

4.1如果没有网站可以新建一个,点开宝塔的网站配置文件,在server段内找个地方放一下即可。示列代码如下:这段代码开启了waf自带的5秒盾功能。

waf on; # 是否启用模块
waf_rule_path /www/server/nginx/src/ngx_waf/assets/rules/; # 模块规则
waf_mode STD !CC; # 启用普通模式并关闭CC防护
waf_cache capacity=50; # 缓存配置
waf_under_attack on uri=/under-attack.html; # 配置5秒盾
宝塔面板安装ngx_waf,高性能的Nginx防火墙模块自带类似cf的防cc攻击的5秒盾

4.2以上需要注意,把测试用的5秒盾html文件复制到你的站点的根目录下:

cp /www/server/nginx/src/ngx_waf/assets/under-attack.html /www/wwwroot/imotao.com

如果你不用命令可以顺着路径把这个文件直接复制到自己的网站根目录即可。

4.3测试效果,如果你配置正确,此时打开网站,会有5秒盾的效果提示。

宝塔面板安装ngx_waf,高性能的Nginx防火墙模块自带类似cf的防cc攻击的5秒盾

当然,这只是一个静态页面,你可以随意魔改,如果有改的特别好的,不妨贡献一份出来。

5.最后

以上教程只是简单展示了下5秒盾功能的开启,教程是基于宝塔部署,2种方法,推荐用第二种,不过具体看自己的需要来选择方法了。

至于其他的更多的功能,看官方的文档:

https://add-sp.github.io/ngx_waf/zh-cn/advance/directive.html

原创文章,作者:陌涛,如若转载,请注明出处:https://imotao.com/5888.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
陌涛陌涛
上一篇 2021年7月2日 上午11:37
下一篇 2021年7月6日 下午7:23

相关推荐

  • 宝塔那些事(一):NGINX管理篇

    前言 欢迎阅读系列专栏宝塔那些事,强烈建议新手阅读全专栏文章,对你快速上手有极大帮助 本篇是专栏中的第一篇文章,主要集中在基于宝塔面板的NGINX配置教学 默认站点 默认站点可以把…

    2020年8月21日
    39600
  • 宝塔那些事(二):运行环境篇

    前言 欢迎阅读系列专栏宝塔那些事,强烈建议新手阅读全专栏文章,对你快速上手有极大帮助 本篇是专栏中的第二篇文章,主要集中在基于宝塔面板的运行环境的教学(不含常用的网站,数据库等) …

    2020年8月21日
    32300
  • 宝塔面板去除宝塔企业版广告提示

    目前的宝塔面板在进入到软件商店的时候会有一个大大的企业版广告提示,看图: 这个广告本身没啥,不是特别招人烦。不过如果你是个强迫症,可以试试跟着本教程关闭这个提示。当然以下提供的方法…

    2021年6月26日
    61700
  • Bt(宝塔面板)端口号无法登陆的5个解决方法

    陌涛上一篇文章讲了下Bt(宝塔面板)忘记密码的解决方案,因为我们容易忘记密码但是也很容易忘记端口号,比如说我们为了安全问题修改了宝塔后台登录的那个端口号,默认是 8888,额,我们…

    2019年9月15日
    64200
  • 针对SSL证书过期Nginx配置出现问题

    今儿早在更新文章,点击发布的时候,提示我 常操,么问题 随手开了个新页面,输入了本站域名-回车 直接给我卡住,把我整蒙了,赶紧去宝塔控制面板康一康 又往下瞄了一眼 打开Nginx的…

    2020年3月24日
    57900
  • 宝塔面板安装卡在Connecting to download.bt.cn解决方法

    有童鞋在安装宝塔面板的时候,遇到一只卡在Connecting to download.bt.cn,最初以为是机器没解析到这个域名,在机器内ping域名测试,一点毛病没有!机器DNS…

    2020年3月10日
    51100
  • 宝塔那些事(三):系统工具篇

    前言 欢迎阅读系列专栏宝塔那些事,强烈建议新手阅读全专栏文章,对你快速上手有极大帮助 本篇是专栏中的第三篇文章,主要集中在基于宝塔面板的系统工具的教学 系统防火墙 可视化操作,比n…

    2020年8月21日
    34900
  • Bt(宝塔面板)忘记用户名密码的解决方案

    Bt(宝塔面板)用的人还是很多的,但是有的时候不注意忘掉了用户名和密码我们这时候要分2种情况,如果是面板刚安装好,不小心关掉了ssh工具,然后我们忘掉了初始的用户名和密码,或者就是…

    2019年9月15日
    92900
  • 宝塔面板7.4.2及Windows面板6.8数据库鉴权漏洞 – 官方发布紧急安全更新

    据了解,此次更新是为了修复phpmyadmin未鉴权,可通过特定地址直接登陆数据库的严重Bug。存在安全漏洞的面板据悉为linux面板7.4.2版本,Windows面板6.8版本。…

    2020年8月24日
    51702
  • 宝塔设置SSL并开启HSTS

    如何使用宝塔简单的开启https 咱们根据正常的操作,装置宝塔面板,装置各种环境。这里就不写这些了,群里不少人已经用宝塔了。  我预备了一个网站未开启https,方便以图文方法演示…

    2020年1月14日
    53605

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

docker镜像已更新为 https://0-docker.nat.tf/