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

guiyun affiliate
  1. 功能说明

 

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

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



2.功能介绍


通过以上申明,也就大致给 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 拉黑一段时间,如果没有则不会执行任何拉黑操作。


3.工具安装

①、在线安装

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

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

curl -ko install.sh https://zhang.ge/wp-content/uploads/files/cckiller/install.sh?ver=1.0.7 && sh install.sh -i

②、工具配置

因为每个服务器的情况可能不一样,所以有一个自定义配置的过程。

执行上述安装命令后,将会进入自选配置部分,如图:

image.png

提示否使用脚本默认配置,如果选择是(y),那么显示默认配置,并询问是否继续:

image.png

默认配置如下:

The Time interval : 20 s       #每 20s 检查一次系统请求情况
The Forbidden Time: 600 s  #拉黑时长设为 10 分钟
Adminstrator Email: root@localhost   #邮件对象设置为 root@localhost(即关闭邮件发送)
Connections Allow: 100      #单个 IP 并发限制为 100


如果不符合你的需求,你可以使用 ctrl + c 组合键终止脚本,或者先继续安装,因为工具设计了配置修改的功能,所以无需着急。

如果不使用默认配置(n),则会要你输入参数来自定义配置:

如图,我将参数依次定义为每 10 秒进行检查,拉黑时长为 300 秒,发件人设置为博客邮箱,并发限制设置为 60,回车后会弹出一个提示,让你检查,如果没问题你直接回车就会安装并启动:

image.png

image.png


③、服务控制

安装后,会将 cckiller 注册成系统服务,这时你就可以使用 service 来控制 cckiller 了。

使用标准的 service 定义,支持 start | stop | restart | status 四个参数。所以,你可以使用

service cckiller stop 来停止 cckiller,也可以使用 service cckiller status 来查看状态。

 ④、集成命令

成功安装后,系统还会多出一个 cckiller 的命令,这个命令现有功能如下:

cckiller -h 可以调出帮助信息:

CCkiller version 1.0.0 Author: Jager <ge@zhang.ge>
Copyright ©2015 zhang.ge. All rights reserved. 
Usage: cckiller [OPTIONS] [N]
N : number of tcp/udp   connections (default 100)
OPTIONS:
-h | --help: Show       this help screen
-k | --kill: Block the offending ip making more than N connections
-s | --show: Show The TOP "N" Connections of System Current

我蹩脚的英文也能凑合解释一下功能了吧~

-k 是拉黑功能,需要在后面带上你想拉黑的并发数,比如 cckiller -k 100 就会拉黑当前请求数大于 100 的 IP 一段时间(和拉黑时长一致)

-s 是显示并发排名,也需要在后面带上数字,比如 cckiller -s 10 就能显示当前并发数排行前 10 名的 IP。

⑤、文件结构

如上图所示,脚本安装目录为/usr/local/cckiller,其结构如下:


cckiller/
├── cckiller       #主程序
├── log/           #日志目录(ver 1.0.1新增特性)
├── ck.conf        #配置文件
├── ignore.ip.list #白名单
└── install.sh     #安装和卸载脚本
 
0 directories, 5 files

很简单也比较规范的的结构,当然,后续功能如果越来越多,此结构可能会有所更新,这是后话。

如果你熟悉 vim 的话,只要编辑 ck.conf 就可以定义工具参数了:

##### Paths of the script and other files
PROGDIR="/usr/local/cckiller"
PROG="/usr/local/cckiller/cckiller"
LOGDIR="/usr/local/cckiller/log"
IGNORE_IP_LIST="/usr/local/cckiller/ignore.ip.list"
IPT="/sbin/iptables"
DKName=CCkiller
DKVer=1.0.5
##### SLEEP_TIME设定检查频率,单位为秒
SLEEP_TIME=10
##### NO_OF_CONNECTIONS设定并发限制
NO_OF_CONNECTIONS=60
##### EMAIL_TO设定邮件的发送对象(请改为自己的邮箱地址)
EMAIL_TO="xxxxx@qq.com" 
##### BAN_PERIOD设定拉黑时长,单位为秒
BAN_PERIOD=300
##### 设置忽略端口,比如 21,2121,8000 (默认不忽略)
IGNORE_PORT=
 
##### 定义日志级别 INFO,DEBUG,WARNING,OFF (默认 INFO)
LOG_LEVEL=INFO

如果不熟悉也没关系。你还可以执行 ./install.sh -c 进行工具初始化,重新设定所有参数,过程和首次安装时一致,这里就不赘述了。

⑥、白名单

工具安装时会默认将系统所有 IP 都加入白名单,避免自己把自己给拉黑的尴尬。如果你还有其他要加白的 IP,可以将 IP 加入到 cckiller 安装目录下的 ignore.ip.list 文件中,每行一个。

Ps:目前白名单还不支持 IP 段,敬请期待后续更新。

⑦、卸载工具

有心的朋友可能注意到了 install.sh 是可以带参数的。我写代码的时候已经设计了几个常用的安装卸载功能,具体如下:

#直接执行./install.sh 将会显示如下帮助信息
###################################################################
#  CCkiller version 1.0.5 Author: Jager <ge@zhang.ge>          #
#  For more information please visit https://zhang.ge/5066.html #
#-----------------------------------------------------------------#
#  Copyright @2015 zhang.ge. All rights reserved.              #
###################################################################
 
Usage: configure.sh [OPTIONS]
 
OPTIONS:
-h | --help : Show help of CCkiller
-u | --update : update Check for CCkiller [not available now]
-c | --config : Edit The configure of CCkiller again
-i | --install : install CCkiller version 1.0.0 to This System
-U | --uninstall : Uninstall cckiller from This System


其中:

-u 参数用来升级工具,不过目前由于没时间还没写,所以不可用(Ver 1.0.2 已支持在线更新)
-i  参数用来安装工具,如果已安装则会提示并终止
-c 参数用来配置工具,方便安装后随时修改工具配置
-U 参数用来卸载工具,注意是大写哦!

因此,我们可以使用 ./install.sh -U  如图卸载 CCKiller:

image.png


原文地址:https://zhang.ge/5066.html (张戈博客)

guiyun affiliate

作者头像
南宫俊逸创始人

君子好学,自强不息~

上一篇:linux 系统初始化脚本
下一篇:U 盘安装苹果系统

相关推荐

4

发表评论