Mr. Lei

CCKiller:Linux轻量级防CC脚本,自动拉黑和释放,邮件提示功能
前言 分享之前我必须先申明一下,众所周知,DDoS>分享之前我必须先申明一下,众所周知,DDoS 攻击指的是分...
扫描右侧二维码阅读全文
10
2019/04

CCKiller:Linux轻量级防CC脚本,自动拉黑和释放,邮件提示功能

前言

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

安装

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

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

github下载:https://github.com/jagerzhang/CCKiller

因为每个服务器的情况可能不一样,所以有一个自定义配置的过程。执行上述安装命令后,将会进入自选配置部分,如图:

CCkiller1.jpg

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

CCkiller2.jpg

默认配置如下:

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

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

CCkiller3.jpg

确定没错了再一次回车确认安装

如果邮件发送功能无误,受到cc攻击时就会正常的向邮箱发送警告,比如有一个饱受 CC 攻击煎熬的站长发来的反馈:
cckiller5.png

卸载

有心的朋友可能注意到了 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-c 参数用来配置工具,方便安装后随时修改工具配置

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


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

本文转载自:张戈的博客

Last modification:May 24th, 2019 at 12:23 pm

Leave a Comment