李承武

宝塔极速安装Nginx环境下开启云锁Nginx自编译防护

近段时间站点被各类攻击频繁骚扰,虽已接入cloudflare并添加了相关cc策略,但不直接启用5秒盾感觉效果不太理想(可能是我配的策略还不够好吧。。),启用5秒盾还得放行搜索引擎爬虫ip,虽然cloudflare也有提拱大部分常见搜索引擎机器人规则,但首次访问或隔段时间访问总要等待5秒感觉体验非常不好。。。

一直想试用云锁的敏感词过滤功能,但对Nginx的操作感觉十分麻烦(弄懂后还满简单。。),固之前在服务器上安装了云锁之后就不了了之。。。但碍于最近的频频cc攻击,急需稳固且强大的Nginx防cc功能,道听途说云锁的抗CC功能不错,查阅了云锁Github上的Nginx模块发现最近还在更新,好吧于是做足功课直接拿下,现分享出来希望能为诸位节省点宝贵时间。。。

网上能搜索到的教程基本上都要求在编译安装的Nginx环境下添加云锁Nginx模块,其实极速安装和编译安装就只差了个src目录,src目录其实就是Nginx的源码目录,极速安装下Nginx目录里是没有src目录的,清楚这点就简单了,直接下载个Nginx源码包基本就跟编译安装一样(宝塔编译安装还自带了一些模块,我们要自己加进去)

首先你得注册并安装云锁,google教程很多在这里就不展开了。。。

下载Nginx源码包

以Nginx1.15.10为例,进入宝塔nginx目录并下载Nginx源码包,解压源码包并重命名为src

如果你还没有安装nginx,直接编译安装nginx就完事了,这里以极速安装环境下操作

cd /www/server/nginx/
wget https://nginx.org/download/nginx-1.15.10.tar.gz
tar xzvf nginx-1.15.10.tar.gz
mv nginx-1.15.10 src

下载云锁Nginx模块

进入src目录,下载云锁Nginx模块并解压

cd /www/server/nginx/src
wget https://codeload.github.com/yunsuo-open/nginx-plugin/zip/master -O nginx-plugin-master.zip
unzip nginx-plugin-master.zip

查看宝塔Nginx原有的模块

nginx -V 

把 ./configure arguents:之后的内容复制到记事本备用

恢复宝塔原有的Nginx模块

用你能想到的办法把宝塔原有的Nginx模块移进src目录,你可以在其它服务器或本地安装宝塔并编译安装Nginx,把相关的8个模块打包进来,其它版本没有测试,反正大同小异,如果别的版本./configure的时候报缺少相关模块,同样把缺少的模块移进来就完事啦。。。

  • lua_nginx_module
  • nginx-dav-ext-module
  • nginx-http-concat
  • nginx-sticky-module
  • ngx_cache_purge
  • ngx_devel_kit
  • openssl
  • pcre-8.43

添加云锁Nginx模块

./configure {刚才复制的内容} --add-module=/www/server/nginx/src/nginx-plugin-master

./configure  --user=www --group=www --prefix=/www/server/nginx --with-openssl=/www/server/nginx/src/openssl --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-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-stream --with-stream_ssl_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-openssl-opt='enable-tls1_3 enable-weak-ssl-ciphers' --with-ld-opt=-ljemalloc --add-module=/www/server/nginx/src/nginx-plugin-master

成功后报 ./configure: warning: the "--with-ipv6" option is deprecated 正常,别慌!

编译Nginx

等待添加模块命令结束,输入编译命令

make

喝杯茶抽根烟静待编译结束。。。

重命名并备份原来的Nginx

不会影响你正在运行的Nginx服务,don't worry

mv /www/server/nginx/sbin/nginx /www/server/nginx/sbin/nginx.bak

复制编译后的Nginx文件到宝塔Nginx目录并添加权限

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

重启并测试

重启Nginx服务

service nginx restart

查看云锁PC客户端自编译是否成功点亮,没意外你的云锁Nginx自编译图标应该就亮起来了。。。

在你的域名后加上/?order%20by,如果被拦截。。恭喜你。。成功上锁。。。

调整防御CC相关参数

设置成每60秒允许请求10次足矣(开启中级防护要注意程序是否有拦截非法参数功能,否则程序拦截了云锁的url参数会跳转失败)这里因为攻击来得猛我调得猛:)

频频拦截,酸爽!

enjoy life

参考:
https://www.vpskp.com/post/3153.html
https://www.vpskp.com/post/2164.html
https://www.madapang.com/technology/btyunsuo.html

评论