为 discuz 论坛智能开启 CC 对抗

discuz 论坛的 config_global.php 文件中有一个$_config['security']['attackevasive'] 配置,打开的时候可以对抗部分CC攻击,主要对抗策略是: 0不启用 1 cookie刷新限制 2代理服务器访问限制 4页面二次请求 8验证问答 。

但是在没有收到攻击的时候如果默认开启这个对抗策略,一方面用户体验会受损,另一方面ucenter和discuz的通讯会被阻断,很多管理操作都通知不到discuz。那有没有办法只在收到攻击的时候开启这个策略,在攻击结束的时候关闭掉这个策略呢?我们可以写这样一个脚本:

cat mon_load.sh

#!/bin/bash
#配置文件路径
config_path="在这里填写你自己的discuz路径/config/config_global.php"
#日志文件路径
log_path="在这里填写你自己的日志路径/anti_CC.log"
if [ ! -f $log_path ]; then touch $log_path; fi
#配置项匹配模式
patten="\$_config\['security'\]\['attackevasive'\]\s*=\s*'"
#检查当前对抗是否打开,并记录到$mon_stat变量中
if grep -q $patten"0'\s*;" $config_path; then mon_stat="stop";else mon_stat="start"; fi

#如果1分钟负载大于1立刻开启,否则如果5分钟负载回落到1以下则停止
action=`uptime | awk '{print ($(NF-2)>1?"start":$(NF-1)<1?"stop":"keep")}'`

if [ $action = "start" -a "$mon_stat" = "stop" ] ; then
	#1分钟负载过高,打开对抗
	sed -i "s/\($patten\)[0-9|]\+'\s*;/\14';/" $config_path
	date +%F\ %H:%M:%S\ start >> $log_path
elif [ $action = "stop" -a "$mon_stat" = "start" ] ; then
	#5分钟平均负载回落,关闭对抗
	sed -i "s/\($patten\)[0-9|]\+'\s*;/\10';/" $config_path
	date +%F\ %H:%M:%S\ stop >> $log_path
fi

这样在系统负载过高的时候就可以自动打开对抗策略,在系统负载降低的时候又可以及时关闭对抗策略降低影响了。最后可以把上面的脚本加入到crontab中定时运行监测:

crontab -e

*/1 * * * * /你的脚本路径/mon_load.sh > /dev/null 2>&1 &

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

换个角度看待MySQL死锁的一点简单认识

在MySQL锁机制的部分,一般都会提到一个所模式的兼容矩阵,看起来比较枯燥,而且不大容易理解。 ? 那我们可以换个角度,取出其中的一个冲突场景,比如下面的场景...

35010
来自专栏用户画像

MAC使用pip安装Tensorflow

官网英文版安装教程:https://www.tensorflow.org/install/install_mac#common_installation_pro...

802
来自专栏一“技”之长

Git命令集之七——差异查询命令 原

551
来自专栏后端技术探索

nginx 直接在配置文章中设置日志分割

直接在nginx配置文件中,配置日志循环,而不需使用logrotate或配置cron任务。需要使用到$time_iso8601 内嵌变量来获取时间。$time_...

971
来自专栏Hongten

python开发_platform_获取操作系统详细信息工具

=======================================================

842
来自专栏ml

PIL中的Image和numpy中的数组array相互转换

1. PIL image转换成array img = np.asarray(image) 需要注意的是,如果出现read-only错误,并不是转换的错...

3799
来自专栏算法channel

完整教程:使用caffe测试mnist数据集

想要入门深度学习没有几个趁手的兵器是不行的,目前流行的框架tensorflow、pytorch、caffe等,笔者也是最近接触了caffe,发现caffe非常适...

1276
来自专栏技术博文

smarty模板引擎原理解析

//php 控制器文件 <?php //引入模板引擎文件 include("20130304.php"); $smarty = new TinySmarty()...

2846
来自专栏Petrichor的专栏

Tensorflow源码 目录树

很多博客中提到的 models/(位于根目录下,该目录下存放这多个使用python实现的模型实例),我并没有看到。估计是最新版的Tensorflow源码取消了这...

1671
来自专栏CreateAMind

ls-gan bedroom数据集 pretrain model 和代码

pretrain model 和代码 https://pan.baidu.com/s/1dFbzjlZ pretrain 下载

982

扫码关注云+社区