近段时间站点被各类攻击频繁骚扰,虽已接入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