CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放 | 张戈博客

CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放 | 张戈博客

张戈博客很久以前分享过一个CC 攻击的防御脚本,写得不怎么样,不过被 51CTO 意外转载了。博客从此走上了经常被人拿来练手的不归之路。

当然,还是有不少朋友在生产环境使用,并且会留言询问相关问题。根据这些问题的需求,我花了一些时间重新写了一个比较满意的轻量级 CC 攻击防御脚本,我给它取了一个比较形象的名字:CCKiller,译为 CC 终结者。

CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放

一、功能申明

分享之前我必须先申明一下,众所周知,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 拉黑一段时间,如果没有则不会执行任何拉黑操作。

三、工具安装

①、在线安装

由于我可能经常会更新一些功能,或修复一些 BUG,所以仅提供在线安装,以保证脚本是最新的。

安装非常简单,执行如下命令就能进入配置步骤了:

wget O install.sh