• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放

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

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了轻量级linux,轻量linux,轻量级linux发行版,linux 轻量级桌面,轻量级linux系统等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

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

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

一、功能申明

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

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

所以,如果你的网站正受到海量IP的低并发DDoS攻击,那么本文分享的CCKiller就无能为力了。赶紧去开启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 --no-check-certificate -O install.sh https://zhangge.net/wp-content/uploads/files/cckiller/install.sh?ver=1.0.1 && chmod +x install.sh && ./install.sh -i
</div>

②、工具配置

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

执行上述安装命令后,将会进入自选配置部分,如图:CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放

提示否使用脚本默认配置,如果选择是(y),那么显示默认配置,并询问是否继续:CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放

默认配置如下:
The Time interval : 20 s       #每20s检查一次系统请求情况
The Forbidden Time: 600 s  #拉黑时长设为10分钟
Adminstrator Email: root@localhost   #邮件对象设置为root@localhost(即关闭邮件发送)
Connections Allow: 100      #单个IP并发限制为100
</div>
如果不符合你的需求,你可以使用 ctrl + c 组合键终止脚本,或者先继续安装,因为工具设计了配置修改的功能,所以无需着急。

如果不使用默认配置(n),则会要你输入参数来自定义配置:CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放

如图,我将参数依次定义为每10秒进行检查,拉黑时长为300秒,发件人设置为博客邮箱,并发限制设置为60,回车后会弹出一个提示,让你检查,如果没问题你直接回车就会安装并启动:CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放

③、服务控制

安装后,会将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@zhangge.net>
Copyright ©2015 zhangge.net. 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
</div>

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

-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.1
##### SLEEP_TIME设定检查频率,单位为秒
SLEEP_TIME=10
##### NO_OF_CONNECTIONS设定并发限制
NO_OF_CONNECTIONS=60
##### EMAIL_TO设定邮件的发送对象
EMAIL_TO="ge@zhangge.net"
##### BAN_PERIOD设定拉黑时长,单位为秒
BAN_PERIOD=300
</div&

您可能想查找下面的文章:

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

相关文章

  • linux shell 中 2>&1的含义
  • 使用Linux shell脚本实现FTP定时执行批量下载指定文件
  • 1 秒内启动Linux的方法
  • Shell脚本配合iptables屏蔽来自某个国家的IP访问
  • Shell 命令执行顺序分析[图]
  • Shell实现的一些数学运算自定义函数分享
  • Shell脚本实现线上服务器之间对比文件是否一致
  • Linux Shell+Curl网站健康状态检查脚本,抓出中国博客联盟失联站点
  • Shell中比较大小简洁总结
  • Shell脚本查看网卡实时流量

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Shell根据日期、月份、星期判断年份的代码
    • 浅谈Linux 二进制包安装MySQL的一些问题
    • Shell中实现“多线程”执行脚本文件完美解决方案
    • shell数组常用实例分享
    • Shell创建用户并生成随机密码脚本分享
    • linux Shell脚本里面把一个数组传递到awk内部进行处理
    • ssh自动登录的4种实现方法
    • Shell脚本中获取进程ID的方法
    • linux awk高级应用实例
    • ssh expect自动登录的脚本代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有