Linux轻量级CC攻击防御工具 自动拉黑和释放一键安装脚本

分类:IT-互联网 - 时间:2023-02-05 - 浏览:
一、简要说明

众所周知,DDoS攻击指的是分布式拒绝服务。而CC攻击只是DDoS攻击的一种,本文所阐述的CC攻击,指的是单个IP达到我们设定好的阈值并发请求,而非海量IP的低并发攻击!对于个人低配服务器,除了使用CDN来防护,至少我是没有想到如何抵挡海量IP攻击的!因为每个IP都模拟正常的用户浏览器请求,并不会触发防御阈值,同时来1000个,甚至上万个,个人低配服务器的带宽在第一时间就会被占满,就无法继续提供服务了。

当然,用脚本也是无法防御DDoS大流量攻击的,因为所有机房的防御带宽是有限的,当攻击的流量超过了机房的防御带宽,要么机房把你的服务器IP拉黑洞,要么就一起死。因此,如果你的服务器正遭受大流量攻击,比如几十G上百G,一般机房或CDN节点都是扛不住的,脚本也无能为力了,赶紧换高防服务器吧!

二、脚本功能特点

通过以上申明,也就大致给CCKiller一个定位:CCKiller是用于个人低配服务器的轻量级CC攻击防御,可以抵挡单个IP产生的高并发攻击。

目前设计的功能特性如下:

①、秒级检查
很多人写的防御脚本都是使用了Linux系统的计划任务crontab来定时检查的。而crontab的最细颗粒是1分钟,也就是说脚本最快也只能1分钟检查一次。对于一些强迫症来说就会很不爽。
所以,我还是按照以前分享的思路,利用while循环实现秒级检查,实现更细的颗粒。当然,CCKiller更是被我写成了系统服务,更加灵活稳定。

②、拉黑时长
CCKiller可以设置拉黑时长,默认为10分钟。当发现有恶意请求时,会自动拉黑目标IP,并在拉黑时长结束后自动释放,这个功能算是对我之前写的脚本的一个大的改进。

③、并发阈值
CCKiller 可以设定单个IP的最高请求数,如果某个IP同时请求数超过了设定的阈值,就会被暂时拉黑一段时间。

④、邮件发送
这个功能没啥好说的,意义并不大。而且发送成功率和服务器的环境也有很大关系。

⑤、并发显示
安装后,直接运行cckiller会列出当前系统的请求排行,可以清晰的看到当前请求IP和并发数。使用-s参数还可以继续定制需求,比如 cckiller -s 10 就能显示当前并发数排行前10名的IP。

⑥、手动拉黑
支持手动拉黑,执行后会立即检查,将并发请求超过n的IP拉黑一段时间,比如 cckiller -k 100 就会将目前超过100个请求的IP拉黑一段时间,如果没有则不会执行任何拉黑操作。

三、工具安装


Github地址:https://github.com/jagerzhang/CCKiller

本脚本需要Linux root账户权限才能正常安装运行,所以如果不是 root账号,请先切换为root,如果是 root账号,那么请跳过!
  1. sudo su
Linux轻量级CC攻击防御工具自动拉黑和释 复制代码
输入上面代码回车后会提示你输入当前用户的密码,输入并回车后,没有报错就继续下面的步骤。

执行如下命令就能进入配置步骤了:
  1. wget -O install.sh --no-check-certificate https://zhangge.net/wp-content/uploads/files/cckiller/install.sh?ver=1.0.5 && chmod +x install.sh && bash install.sh -i
复制代码
备用下载地址(上面的链接无法下载,就用这个):
  1. wget -N --no-check-certificate https://raw.githubusercontent.com/jagerzhang/CCKiller/master/install.sh?ver=1.0.5 && chmod +x install.sh && bash install.sh -i
复制代码
因为每个服务器的情况可能不一样,所以有一个自定义配置的过程。
执行上述安装命令后,将会进入自选配置部分:
  1. Saving to: `install.sh'

  2. 100%[==============================================>] 11,007      --.-K/s   in 0s      

  3. 2017-11-10 21:39:20 (36.7 MB/s) - `install.sh' saved [11007/11007]

  4. ###################################################################
  5. #  CCKiller version 1.0.7 Author: Jager                #
  6. #  For more information please visit https://zhangge.net/5066.html#
  7. #-----------------------------------------------------------------#
  8. #  Copyright @2015-2016 zhangge.net. All rights reserved.              #
  9. ###################################################################

  10. Do you want to use the default configuration? (y/n): y

  11. You choice the default configuration:
  12. Configure info,Please Review:
  13. =======================================
  14.   The Time interval : 20 s

  15.   The Forbidden Time: 600 s

  16.   Adminstrator Email: root@localhost

  17.   Connections  Allow: 100

  18.   Ignore Port: Null                     

  19.   Log   Level:        INFO        
  20. ========================================
  21. Press any key to continue...
复制代码
默认配置如下:
  1. The Time interval : 20 s       #每20s检查一次系统请求情况
  2. The Forbidden Time: 600 s  #拉黑时长设为10分钟
  3. Adminstrator Email: root@localhost   #邮件对象设置为root@localhost(即关闭邮件发送)
  4. Connections Allow: 100      #单个IP并发限制为100
复制代码
如果不符合你的需求,你可以使用 ctrl + c 组合键终止脚本,或者先继续安装,因为工具设计了配置修改的功能,所以无需着急。
如果不使用默认配置(n),则会要你输入参数来自定义配置:
 
如图,我将参数依次定义为每10秒进行检查,拉黑时长为300秒,发件人设置为博客邮箱,并发限制设置为60,回车后会弹出一个提示,让你检查,如果没问题你直接回车就会安装并启动:
 
服务控制
安装后,会将cckiller注册成系统服务,这时你就可以使用service来控制cckiller了。
使用标准的service定义,支持 start | stop | restart | status 四个参数。所以,你可以使用service cckiller stop来停止cckiller,也可以使用service cckiller status来查看状态。

集成命令
成功安装后,系统还会多出一个cckiller的命令,这个命令现有功能如下:
cckiller -h可以调出帮助信息:
  1. CCkiller version 1.0.0 Author: Jager
复制代码
我蹩脚的英文也能凑合解释一下功能了吧~
-k 是拉黑功能,需要在后面带上你想拉黑的并发数,比如 cckiller -k 100 就会拉黑当前请求数大于100的IP一段时间(和拉黑时长一致)
-s 是显示并发排名,也需要在后面带上数字,比如 cckiller -s 10 就能显示当前并发数排行前10名的IP。

文件结构
如上图所示,脚本安装目录为/usr/local/cckiller,其结构如下:
  1. cckiller/
  2. ├── cckiller       #主程序
  3. ├── log/           #日志目录(ver 1.0.1新增特性)
  4. ├── ck.conf        #配置文件
  5. ├── ignore.ip.list #白名单
  6. └── install.sh     #安装和卸载脚本

  7. 0 directories, 5 files
复制代码
很简单也比较规范的的结构,当然,后续功能如果越来越多,此结构可能会有所更新,这是后话。
如果你熟悉vim的话,只要编辑ck.conf就可以定义工具参数了:
  1. ##### Paths of the script and other files
  2. PROGDIR="/usr/local/cckiller"
  3. PROG="/usr/local/cckiller/cckiller"
  4. LOGDIR="/usr/local/cckiller/log"
  5. IGNORE_IP_LIST="/usr/local/cckiller/ignore.ip.list"
  6. IPT="/sbin/iptables"
  7. DKName=CCkiller
  8. DKVer=1.0.5
  9. ##### SLEEP_TIME设定检查频率,单位为秒
  10. SLEEP_TIME=10
  11. ##### NO_OF_CONNECTIONS设定并发限制
  12. NO_OF_CONNECTIONS=60
  13. ##### EMAIL_TO设定邮件的发送对象
  14. EMAIL_TO="ge@zhangge.net"
  15. ##### BAN_PERIOD设定拉黑时长,单位为秒
  16. BAN_PERIOD=300
  17. ##### 设置忽略端口,比如 21,2121,8000 (默认不忽略)
  18. IGNORE_PORT=

  19. ##### 定义日志级别 INFO,DEBUG,WARNING,OFF (默认 INFO)
  20. LOG_LEVEL=INFO
复制代码
如果不熟悉也没关系。你还可以执行 ./install.sh -c 进行工具初始化,重新设定所有参数,过程和首次安装时一致,这里就不赘述了。

白名单
工具安装时会默认将系统所有IP都加入白名单,避免自己把自己给拉黑的尴尬。如果你还有其他要加白的IP,可以将IP加入到cckiller安装目录下的ignore.ip.list文件中,每行一个。
Ps:目前白名单还不支持IP段,敬请期待后续更新。

卸载工具
有心的朋友可能注意到了install.sh是可以带参数的。我写代码的时候已经设计了几个常用的安装卸载功能,具体如下:
  1. #直接执行./install.sh 将会显示如下帮助信息
  2. ###################################################################
  3. #  CCkiller version 1.0.5 Author: Jager           #
  4. #  For more information please visit http://zhangge.net/5066.html #
  5. #-----------------------------------------------------------------#
  6. #  Copyright @2015 zhangge.net. All rights reserved.              #
  7. ###################################################################

  8. Usage: configure.sh [OPTIONS]

  9. OPTIONS:
  10. -h | --help : Show help of CCkiller
  11. -u | --update : update Check for CCkiller [not available now]
  12. -c | --config : Edit The configure of CCkiller again
  13. -i | --install : install CCkiller version 1.0.0 to This System
  14. -U | --uninstall : Uninstall cckiller from This System
复制代码
其中:
  1. -u 参数用来升级工具,不过目前由于没时间还没写,所以不可用(Ver 1.0.2已支持在线更新)
  2. -i  参数用来安装工具,如果已安装则会提示并终止
  3. -c 参数用来配置工具,方便安装后随时修改工具配置
  4. -U 参数用来卸载工具,注意是大写哦!
复制代码
因此,我们可以使用 ./install.sh -U  如图卸载CCKiller:
 

四、攻防测试

成功安装并启用CCKiller之后,我们可以使用压力测试工具来测试拉黑和释放效果,比如webbench 或 ab等。
假如CCKiller设定的并发限制为100,检查间隔为10s,使用webbench如下测试:
  1. webbench -c 101 -t 60 http://www.xxxxcom/
复制代码
启动测试后,你可以立即去服务器上查看防火墙:
  1. iptables -nvL
复制代码
多刷几下,就可以看到webbench所在服务器IP已经在DROP规则中了。
确定已被拉黑之后,你等个10分钟再来看防火墙,可以发现webbench所在服务器IP已经消失了,成功释放!
Ps:如果邮件发送功能无误,那么应该也收到了工具发来的告警邮件,比如有一个饱受CC攻击煎熬的站长给我发来的反馈:
 

五、更多说明


①、配置并发限制
CCKiller配置最大连接数限制时,建议根据单个网页产生的并发数来判断。

情况A: 你网站做了动静分离,那么静态的请求就到另一个域名了(假设静态资源托管在另一台服务器或是CDN),单个IP请求一个页面可能就只会产生若干并发(假设5个),我们假设某个用户很猛,他喜欢快速拖拽打开你网站的多个网页,比如同时打开10个,那么正常用户的正常最大并发你也可以基本确定了吧?即并发限制:10x5=50。如果有人同时刷新你几十个页面,要说没恶意你也不相信吧?

情况B: 如果没有做动静分离,那么一个页面产生的并发可能就比较多了,每个css、js、图片都会产生一次请求。所以,在这种情况下就需要稍微计算一下你网站单个页面产生的并发请求,比如一个单页面会产生30个请求,那么你也需要考虑用户可能会连续拖拽多个页面的情况,假设我允许用户可以同时刷新10页面,那么并发限制就可以设置为300了,依此类推。

容错:从A和B来看,CCKiller其实是有一个盲点的,那就是如果用户IP是某个公司的统一出口,也就是代理上网IP,那么工具就容易误杀无辜了。所以,除了A和B,你还得考虑你网站的受众人群类型。比如,我就一个个人博客,同一时刻被一个公司的多名同时多窗口拖拽访问,这种情况也不多吧?如果可能存在这种受众人群,那么这个并发限制可以设置大一些,避免错杀无辜。当然,拉黑也就10分钟而已,也不至于“一失足成千古恨”。。。

当然,不管哪种情况,并发限制都可以比预估设置高那么一些,这个自行斟酌吧!

②、不足与完善
CCKiller是我最近利用闲暇时间,匆忙之作,难免会有各种问题。也没时间进行测试和完善。不过目前还是有数位站长在使用,暂未反馈异常。当然, 我分享的是在线安装方式,也是为后续的更新提供方便。不过对比我以前写的防御脚本,CCKiller算是有了长足的进步了,很简单的安装,更强大的功能!

功能计划:
A. 在线升级功能
这个不用多说,现有的工具已经预留了,后面可能会加入版本判断和更新的功能。

B. 加入其他安全防护设置
目前工具其实是赶鸭子上架一样,直接就检查,也没有对系统环境做一些初始化的设置。比如网站通用的iptables设置、sync洪水攻击防御等。后续会在安装的时候会作为一个可选功能。

C. 集成傻瓜式的防火墙控制功能
并不是每个站长都会熟练操作iptables,所以可能考虑给cckiller这个命令集成一个ban和unban ip的功能,比如禁止一个ip,执行 cckiller -D $ip 即可,降低 iptables 的使用门槛

相关标签: CC攻击防抗攻击防护服务器防护

本文地址:https://aiyouzz.com/hlwitwz/35.html

相关内容相关内容
Linux系统防CC攻击自动拉黑IP增强版Shell脚本

功能更强大的轻量级CC攻击防御脚本工具CCKiller,一个防CC攻击的Shell脚本

Linux轻量级CC攻击防御工具 自动拉黑和释放一键安装脚本

轻量级CC攻击防御工具,一建安装配置防护

随机推荐随机推荐
我要自助链秒收录

我要收录网是一个免费自动收录流量互增的自动发布外链和友情链接交换收录查询平台,自动友情链接收录,可以给你网站提高百度权重,网址收录网站收录交换链接增加反向链接加快百度收录,网站自动收录,永久免费的自动收录网站!

606网址导航收录

606网址收录,为您提供免费网站收录提交,收录网,最新秒收录,自动秒收录网,自动审核导航,自动秒收录网,网址导航源码,自动链,友情链接交换的网址导航平台!

星座月份表

西方的十二星座是根据人出生时太阳经过星座区域的时间决定的,按月进行划分,每个星座都跨了两个月份。关于十二星座的日期划分,想知道的朋友们,下面就跟着小编一起来了解一下星座月份表吧。

甲酸钾导航

甲酸钾导航网_分类目录_收录精选的导航网站,免费自动收录,链接,大全

南汇驾校,上海南汇驾校【权益保障】

上海南汇驾校是上海市南汇首家教练员培训部,驾校地址:浦东新区拱极东路8号,联系电话:021-66020058,最新优惠价3980元,南汇驾校1986年成立,是经上海市公安局交通警察总队和上海市政府交办批准的全封闭大型驾驶员培训基地。占地300多亩,座落于南汇拱极东路8号,非常适合浦东的学员学车

申诚驾校,上海申诚驾校【正规驾校】

上海申诚驾驶员培训有限公司在上海浦东新区高桥镇江心沙路9号,联系电话:021-31261760,2024年申诚驾校报名费3980元起,申诚驾校是经“上海市公安局交通警察总队车辆管理所”和“上海市交通运输和港口管理局”批准建立的大型自用培训基地,目前是浦东高桥镇唯一的驾校培训基地,非常适合浦东外高桥、高桥、高行、金桥、地铁10号线沿线、地铁12号线沿线、地铁6号线沿线、杨浦大桥附近、杨浦一带的学员来学车都比较方便

合肥电子皮带秤

合肥美特云智能科技有限公司,一家集研发、设计、生产、系统集成、工程安装、技术服务于一体的高新技术企业,主要产品有电子皮带秤、定量给料机、全自动检重秤,欢迎新老客户电话洽谈合作,曹总13866180726

合肥司法鉴定

安徽天正司法鉴定中心是一家从事合肥司法鉴定、合肥工伤鉴定、合肥伤残鉴定的公司,联系人:王朋,欢迎咨询我们。

比特宠物吧

比特宠物网是一个专注于分享宠物养护的网站,分享的内容主题有宠物喂养与训练,钓鱼与饲养,优美句子等。