位置: 编程技术 - 正文

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

编辑:rootadmin

推荐整理分享CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

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

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

一、功能申明

分享之前我必须先申明一下,众所周知,DDoS攻击指的是分布式拒绝服务。而CC攻击只是DDoS攻击的一种,本文所阐述的CC攻击,指的是每个IP都以高并发请求攻击,而非分布式海量IP的低并发DDoS攻击!

对于个人低配服务器,除了使用CDN来防护,至少我是没有想到如何抵挡海量IP攻击的!因为每个IP都用正常的UA来请求,而且每个IP的低并发请求和正常用户请求一样,并不会触发防御阈值,同时来个,甚至上万个,个人低配服务器的带宽在第一时间就会被占满,无法继续提供服务!

所以,如果你的网站正受到海量IP的低并发DDoS攻击,那么本文分享的CCKiller就无能为力了。赶紧去开启CDN来拓展带宽吧!

二、功能介绍

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

目前设计的功能特性如下:①、秒级检查很多人写的防御脚本都是使用了Linux系统的计划任务crontab来定时检查的。而crontab的最细颗粒是1分钟,也就是说脚本最快也只能1分钟检查一次。对于一些强迫症来说就会很不爽。

所以,我还是按照以前分享的思路,利用while循环实现秒级检查,实现更细的颗粒。当然,CCKiller更是被我写成了系统服务,更加灵活稳定。②、拉黑时长CCKiller可以设置拉黑时长,默认为分钟。当发现有恶意请求时,会自动拉黑目标IP,并在拉黑时长结束后自动释放,这个功能算是对我之前写的脚本的一个大的改进。③、并发阈值CCKiller 可以设定单个IP的最高请求数,如果某个IP同时请求数超过了设定的阈值,就会被暂时拉黑一段时间。④、邮件发送这个功能没啥好说的,意义并不大。而且发送成功率和服务器的环境也有很大关系。⑤、并发显示安装后,直接运行cckiller会列出当前系统的请求排行,可以清晰的看到当前请求IP和并发数。使用-s参数还可以继续定制需求,比如 cckiller -s 就能显示当前并发数排行前名的IP。⑥、手动拉黑支持手动拉黑,执行后会立即检查,将并发请求超过n的IP拉黑一段时间,比如 cckiller -k 就会将目前超过个请求的IP拉黑一段时间,如果没有则不会执行任何拉黑操作。

三、工具安装①、在线安装

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

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

②、工具配置

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

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

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

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

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

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

③、服务控制

安装后,会将cckiller注册成系统服务,这时你就可以使用service来控制cckiller了。使用标准的service定义,支持 start | stop | restart | status 四个参数。所以,你可以使用service cckiller stop来停止cckiller,也可以使用service cckiller status来查看状态。

④、集成命令

成功安装后,系统还会多出一个cckiller的命令,这个命令现有功能如下:cckiller -h可以调出帮助信息:

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

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

-s 是显示并发排名,也需要在后面带上数字,比如 cckiller -s 就能显示当前并发数排行前名的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就可以定义工具参数了:

如果不熟悉也没关系。你还可以执行 ./install.sh -c 进行工具初始化,重新设定所有参数,过程和首次安装时一致,这里就不赘述了。⑥、白名单工具安装时会默认将系统所有IP都加入白名单,避免自己把自己给拉黑的尴尬。如果你还有其他要加白的IP,可以将IP加入到cckiller安装目录下的ignore.ip.list文件中,每行一个。

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

Ps:目前白名单还不支持IP段,敬请期待后续更新。⑦、卸载工具有心的朋友可能注意到了install.sh是可以带参数的。我写代码的时候已经设计了几个常用的安装卸载功能,具体如下:

其中:

-u 参数用来升级工具,不过目前由于没时间还没写,所以不可用(Ver 1.0.2已支持在线更新)

-i 参数用来安装工具,如果已安装则会提示并终止

-c 参数用来配置工具,方便安装后随时修改工具配置

-U 参数用来卸载工具,注意是大写哦!

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

四、攻防测试

成功安装并启用CCKiller之后,我们可以使用压力测试工具来测试拉黑和释放效果,比如webbench 或 ab等。假如CCKiller设定的并发限制为,检查间隔为s,使用webbench如下测试:webbench -c -t -nvL多刷几下,就可以看到webbench所在服务器IP已经在DROP规则中了。确定已被拉黑之后,你等个分钟再来看防火墙,可以发现webbench所在服务器IP已经消失了,成功释放!

Ps:如果邮件发送功能无误,那么应该也收到了工具发来的告警邮件,比如有一个饱受CC攻击煎熬的站长给我发来的反馈:

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

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

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

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

当然,不管哪种情况,并发限制都可以比预估设置高那么一些,这个自行斟酌吧!②、不足与完善CCKiller是我最近利用闲暇时间,匆忙之作,难免会有各种问题。也没时间进行测试和完善。不过目前还是有数位站长在使用,暂未反馈异常。当然, 我分享的是在线安装方式,也是为后续的更新提供方便。不过对比我以前写的防御脚本,CCKiller算是有了长足的进步了,很简单的安装,更强大的功能!

功能计划:

A. 在线升级功能

这个不用多说,现有的工具已经预留了,后面可能会加入版本判断和更新的功能。

B. 加入其他安全防护设置

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

C. 集成傻瓜式的防火墙控制功能

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

另外,值得说明是,CCKiller只适合裸奔的网站,而不适合使用CDN的网站,因为使用CDN之后,请求过来的IP都是CDN节点,你总不能把CDN节点也拉黑了吧?(Ps:其实也可以用,你把并发限制稍微设置高一些就好了,就算拉黑CDN节点也就拉黑分钟而已,不至于影响过大)

针对这个问题,后续我会找时间研究下直接从Nginx日志里面取得真实来源IP来拒绝访问。目前已经有了阶段性的进展了,敬请期待!附录:更新记录

-- Ver 1.0.1:

支持白名单为IP段新增拉黑改为判断 iptables 是否已存在操作IP的判断方式;增加日志记录功能,每天一个日志文件,位于安装目录下的log文件内;集成手动拉黑IP和解封IP功能,使用cckiller -b $IP拉黑,使用 cckiller -u $IP 解封。

-- Ver 1.0.2:

新增在线更新功能,执行 ./install.sh -u 即可检测是否有新版本:

如果发现有新版本则显示更新内容,并提示是否执行更新。选择之后将会更新到新版本,需要重新配置,但是IP或端口白名单会保持不变。

新增端口白名单功能

应网友需求,新增了这个端口白名单功能。在配置CCKiller的最后一项会提示输入端口白名单:

如果需要排除某些端口,请如图最后一行所示,输入端口并已逗号分隔,比如 ,,

本次更新为非必须功能,在用的朋友可以按需更新,当然新增了在线更新这个功能,也强力推荐更新一下,方便后续检测CCKiller是否是最新版本。

更新难免存在不可意料的纰漏,使用中存在任何问题请留言告知,谢谢!

SED单行脚本快速参考中文版(Unix 流编辑器) 英文标题:USEFULONE-LINESCRIPTSFORSED(Unixstreameditor)原标题:HANDYONE-LINERSFORSED(Unixstreameditor)整理:EricPement-电邮:pemente[at]northpark[dot]edu版本5.5译者:JoeHong-电邮

Shell if中的正则表达式使用详解 由于工作需要对用户提交的数据进行验证,这是一个简单的日期正则验证实例,有需要了解的同学可参考。shell中的if语句需要做一个正则判断,查了一下

Linux下Shell编程快捷键大全(日常整理) 有时候,我们需要在Bash中重复执行先前的命令。你当然可以使用上方向键来查看之前曾经运行过的命令。但这里有一些更好的方式,例如,数量掌握以

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

本文链接地址:https://www.jiuchutong.com/biancheng/371426.html 转载请保留说明!

上一篇:Linux Shell+Curl网站健康状态检查脚本,抓出中国博客联盟失联站点

下一篇:SED单行脚本快速参考中文版(Unix 流编辑器)(sed 处理多行)

  • 海南增值税发票图片
  • 小型微利企业所得税计算公式2023
  • 印花税购买使用要求及印花税会计分录?
  • 资本公积怎么核实
  • 代第三方收取的款项作为什么处理
  • 小规模能否开利息专用发票?
  • 年末为什么要结转应付现金股利
  • 个人所得税如果两份工作怎么扣
  • 退回以前年度教育附加费
  • 没有纸质机票电子行程单电子版可以报销吗
  • 进项税转出的发票怎么认证
  • 纳税人销售自产门窗并负责安装
  • 企业合并相关舞弊风险有哪些
  • 错账更正分录
  • 劳动合同解除和终止的经济补偿
  • 土地增值税清算规程实施细则
  • 印花税按什么税率
  • 增值税发票选择确认平台证书密码是多少
  • 工程管理咨询费计入什么科目
  • 外贸出口企业的租金能退税吗
  • 什么叫做区分
  • 如何测试电脑网速多少兆
  • tracert命令的用法
  • w10怎么找蓝牙
  • 银承到期后
  • 添加VPN时提示已存在
  • 新店开业费用预算表格
  • 赡养老人支出如果有四个子女都要填吗
  • islp2sta.exe - islp2sta是什么进程 有什么作用
  • 销售汇总表格模板
  • lnmgr.exe是什么
  • uniapp vuecli
  • 在windows中安装应用程序的途径
  • 布拉塞龙图片
  • 模型调参是调节什么
  • 记一次调试YOLOv5+DeepSort车辆跟踪项目的经过
  • 呕心沥血的历史人物
  • ps调整边缘在哪里快捷键
  • 新成立的公司的搭建费可以申请补助吗?
  • 修的公路是否上固定资产
  • 公司员工餐费会计分录
  • 管家婆软件出库入库如何用
  • 税控盘抵扣怎么做账
  • 微擎框架是开源的吗
  • 织梦内容页模板修改
  • 企业员工福利包括哪些内容
  • 实际发生坏账损失不影响应收账款
  • 商誉的会计核算怎么核算
  • 研发支出的账务怎么处理
  • 职工报销的医药费是什么
  • 饭店开业多久可以正常
  • 撤回或减少投资所得税处理
  • 总分类账与明细分类账平行登记的要点包括
  • 先征后退增值税是否征收企业所得税
  • 研发费用加计扣除的条件
  • 原材料暂估入库是什么意思
  • 增值税涉及的税目有哪些
  • 公司突然改变工资结构
  • 在建工程中发生的费用
  • 可转换债券是什么资本
  • 长期待摊费用怎么做账
  • 存货周转率 高
  • 开始建账需要哪些数据
  • 商业银行的固定资产
  • gho文件硬盘安装
  • 搜索不到WiFi信号是怎么回事
  • xp系统开机出现英文怎么办
  • linux生成文件
  • win7系统怎么更改默认浏览器
  • win7提示0x000000c1
  • Linux系统如何创建目录
  • Particle system study section 1
  • 简述android应用的常用开发模式及其优缺点
  • 安卓的引导式访问叫什么
  • javascript面向对象编程指南 pdf
  • 如何安装python环境安装包
  • 注册会计师和注册建造师哪个难考
  • 烟台市独生子女费 打什么电话咨询
  • 深圳国税系统
  • 税务征收社保费
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设