如果我们有使用搬瓦工VPS的朋友应该知道,默认搬瓦工VPS主机包括其他的服务器商家的产品都不会带有防御的。如果有被攻击且超过一定的压力会导致被服务商自动停止服务器。如果我们的搬瓦工VPS主机有被攻击超过三次暂停可能就导致被封服务器。于是,我们在使用建站服务器的时候要做好WAF防火墙设置。在当前这个文章中,我们准备在当前服务器环境用的LNMP脚本安装包WEB环境安装NGINX WAF模块提高安全。
笔者个人建议,如果我们服务器有被攻击,建议更换高防服务器。搬瓦工VPS是不抗攻击的,或者我们可以用CF CDN。
第一、准备环境
这篇文章是在LNMP军哥NGINX环境测试的。如果我们有需要可以参考且注意备份数据。
LNMP = v1.7
Nginx version = 1.20.1
gcc version = 4.8.5
第二、安装WAF防火墙
编译安装 LTS 版本的 ngx_waf 模块。
cd /usr/local/src \
&& git clone -b lts https://github.com/ADD-SP/ngx_waf.git \
&& cd ngx_waf \
&& make
cd /usr/local/src \
&& git clone https://github.com/libinjection/libinjection.git lib/libinjection
cd /usr/local/src/ngx_waf \
&& git clone https://github.com/DaveGamble/cJSON.git lib/cjson
cd /usr/local/src/ngx_waf \
&& git clone https://github.com/libinjection/libinjection.git inc/libinjection
cd /usr/local/src \
&& git clone https://github.com/jedisct1/libsodium.git --branch stable libsodium-src \
&& cd libsodium-src \
&& ./configure --prefix=/usr/local/src/libsodium --with-pic \
&& export LIB_SODIUM=/usr/local/src/libsodium \
&& make -j$(nproc) && make check -j $(nproc) && make install
cd /usr/local/src \
&& git clone https://github.com/troydhanson/uthash.git \
&& export LIB_UTHASH=/usr/local/src/uthash
进入 lnmp1.7 所在目录,编辑
~/lnmp1.7/include/upgrade_nginx.sh 这个文件:
vi ~/lnmp1.7/include/upgrade_nginx.sh
找到 else 后面的 ./configure 这行(大概第 62 行),在这串编译参数末端追加 –add-module=/usr/local/src/ngx_waf –with-cc-opt=’-std=gnu99’。
编译:
cd ~/lnmp1.7
./upgrade.sh nginx
输入版本号,回车,耐心等待编译完成。(Nginx 版本号可在 nginx 下载页 找到预升级的版本号进行输入并按下回车键)。
第三、配置 waf 防火墙
在主机配置文件例如
/usr/local/nginx/conf/vhost/www.cnbanwagong.com.conf 文件 server 块内加入以下代码:
# 启用模块
waf on;
# 指定规则文件所在目录
waf_rule_path /usr/local/src/ngx_waf/assets/rules/;
# 指定防火墙的工作模式
waf_mode DYNAMIC;
# 指定请求频率上限为每分钟1000次,超过请求拉黑60分钟
waf_cc_deny rate=1000r/m duration=60m;
# 最多缓存 50 个检测目标的检测结果
waf_cache capacity=50;
# 被攻击时降低带宽占用
waf_http_status cc_deny=444;
修改完成后,重启 nginx 使配置生效。
总结,如果我们有需要的话还可以配置其他参数。设置各自的参数。安装后,我们可以测试效果。