应对CC攻击的自动防御系统——原理与实现
0x00 系统效果
此DDOS应用层防御系统已经部署在了http://www.yfdc.org网站上(如果访问失败,请直接访问位于国内的服务器http://121.42.45.55进行在线测试)。
此防御系统位于应用层,可以有效防止非法用户对服务器资源的滥用:
1 2 |
|
其实现的基本思想是:
1 2 |
|
在线效果测试:
进入http://www.yfdc.org -> 点击右上侧在线查询,此时将会进入/shell/yf
域内,/shell/yf
是一个用bash scripts
写的动态web-cgi
程序,用户每一次提交信息,此程序将会执行一些服务器端的查询操作,然后将数据处理后返回到客户端。
为了防止非法用户高频率地访问这个程序,而影响到其他正常用户的访问,故需要进行一些保护措施。
最终效果:
被封信息页面
1 2 3 |
|
0x01 系统原理
操作系统: CentOS 6.5 x86_64
开发语言: Bash Shell Scripts
Web服务器: Apache Httpd
(此图为系统结构的鸟瞰图 可存至本地后放大查看)
2.1 自定义日志:/etc/httpd/logs/yfddos_log
(自定义日志文件的格式)
在httpd.conf的日志参数中,加入如下两行:
1 2 3 |
|
我们接下来重点分析日志文件/etc/httpd/logs/yfddos_log.
LogFormat "%a \"%U\" %{local}p %D %{%s}t " yfddos
解释:
1 2 3 4 5 6 |
|
例子:
1 2 |
|
译为:IP为192.168.31.1的主机,在时间戳为1417164313的时候,访问了/shell/yf,并由服务器的80端口向其提供服务,共耗时118231微秒
或为:IP为192.168.31.1的主机,在2014-11-28 16:45:13的时候,访问了/shell/yf,并由服务器的80端口向其提供服务,共耗时0.118231秒
至于为什么不使用httpd.conf中官方定义的日志,原因如下:
1 2 3 4 |
|
2.2 yfddosd黑名单文件格式
黑名单文件格式
yfddosd黑名单文件/etc/yfddos/web-yf-search.b格式如下:
1 2 3 4 5 |
|
每一行为一个黑名单条目,上面第一个条目的意义为:
1 2 3 4 |
|
直观意义为:
IP地址:1.2.3.4,从2014-11-15 18:12:15开始,被封杀1分钟,在2014-11-15 18:13:15时自动解封。
这个文件将由驻留在系统中的daemon守护进程yfddosd进行维护更新。
2.3 守护进程yfddosd:防御系统的逻辑核心
守护进程的原理图
守护进程yfddosd是整个CC防御系统的核心,而function analyze_and_insert_black()
则是yfddosd的核心。
yfddosd的配置参数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
函数analyze_and_insert_black
有三个输入参数:
例子: analyze_and_insert_black "4" "10" "5"
1 2 3 |
|
例子: analyze_and_insert_black "150" "2700" "905"
1 2 3 |
|
简记为: analyze_and_insert_black "limit" "ttl" "time"
1 2 3 |
|
从上述中可看出,守护进程yfddosd至少需要完成如下三个任务:
- 分析日志文件/etc/httpd/logs/yfddos_log中指定时间内的用户访问记录
- 将资源滥用者的IP加入文件/etc/yfddos/web-yf-search.b,并设置封杀TTL参数值
- 将/etc/yfddos/web-yf-search.b中已经过期的条目全部及时删除
守护进程yfddosd
是如何实现上面三个逻辑的:
分析日志文件/etc/httpd/logs/yfddos_log中指定时间内的用户访问记录:
1
2
3
4
5
<code>(1) 取出
/etc/httpd/logs/yfddos_log
中过去
time
秒的访问日志数据,使用二分法将这一操作的时间复杂度压缩到K*log2(N)以内,
其中N为
/etc/httpd/logs/yfddos_log
中日志总行数,K为一次测试的耗时量,一般为1ms以内,即如有1048576条访问记录,这一操作将仅需要20*1ms
(2) 使用正则RE对这些数据进行二次处理,过滤出所有访问指定URL的用户IP(这个URL为想要防御的http服务url,例如在http:
//www
.yfdc.org系统中,
所防御的就是
/shell/yf
,这个服务向访问者提供信息的search与get服务),再次使用
sort
与
uniq
对这些IP进行处理,以统计出每个IP的访问次数并进行高低排序
<
/code
>
将资源滥用者的IP加入文件/etc/yfddos/web-yf-search.b,并设置封杀TTL参数值
1
2
<code>将所有访问次数超过阈值limit的IP更新到黑名单文件
/etc/yfddos/web-yf-search
.b中,每个黑名单条目的封杀时间为ttl秒
<
/code
>
将/etc/yfddos/web-yf-search.b中已经过期的条目全部及时删除
1
2
<code>遍历
/etc/yfddos/web-yf-search
.b中所有黑名单条目,结合当前时间戳,将所有已经过期的条目一一删去
<
/code
>
下面是守护进程yfddosd状态机的伪代码:(略去了一些处理细节)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
|
防御者应斟酌调整每个检测时间点的参数值(封杀时间ttl与判定阈值limit),以调节系统应对CC攻击到来时的反应时间。
0x02 源代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 |
|
本文章来源于乌云知识库,此镜像为了方便大家学习研究,文章版权归乌云知识库!
应对CC攻击的自动防御系统——原理与实现相关推荐
- 如何应对CC攻击以及检测CC攻击
转载来源: 什么是cc,网站如何应对cc攻击? http://www.safebase.cn/article-259414-1.html 一.Linux主机简单判断CC攻击的命令 第一条命令: tcp ...
- 什么是CC攻击?网站遭到CC攻击该如何防御?
CC攻击是从DDoS攻击中衍生出来的一种攻击方式,前身名为Fatboy攻击,一般主要是针对网页发起的攻击,攻击者通过代理服务器或者肉鸡向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一直到宕机崩 ...
- 五种有效应对cc攻击的防御方式
一.CC攻击简介: 随着网络技术的迅猛发展和普及,网络已改变每一个人的生活和工作方式,网络安全问题也越来越严重.近几年,网络入侵的频率不断增加,危害性日趋严重,其中分布式拒绝服务攻击(DDoS)的 ...
- 网站被CC攻击,如何防御网站被CC?
一.到底什么是cc攻击呢? CC攻击是DDoS攻击的一种类型,使用代理服务器向受害服务器发送大量貌似合法的请求 . CC根据其工具命名,攻击者使用代理机制,利用众多广泛可用的免费代理服务器发动 DDo ...
- 服务器被cc攻击的简单防御策略(附代码)
CC攻击(也称为网络层攻击或流量攻击)是指企图通过向网站或服务器发送大量伪造的请求,以干扰正常的用户访问的攻击.这些请求可能是来自单个设备的,也可能是来自一群被控制的设备的.为了防御CC攻击,你可以考 ...
- Linux拉黑攻击IP,linux服务器如果被cc攻击怎么自动拉黑肉鸡IP(教程篇)
一.Shell 代码 #!/bin/bash#Author:ZhangGe#Desc:Auto Deny Black_IP Script.#Date:2014-11-05#取得参数$1为并发阈值,若留 ...
- servu ip段访问_高防IP是如何防御DDOS/CC攻击的,防御原理是什么?
高防IP是网络安全公司针对解决互联网服务器在遭受大流量的DDoS攻击后导致服务不可用的情况,推出的付费增值服务.企业可以通过配置DDoS高防IP服务,把域名解析到高防IP(Web业务把域名解析指向高防 ...
- 什么是CC攻击?如何判断网站是否被CC攻击? CC攻击怎么防御?
什么是CC攻击?如何判断网站是否被CC攻击? 一.什么是CC攻击? 二.如何判断网站是否被CC攻击? 三.CC攻击怎么防御? 1.服务器垂直扩展和水平扩容 2.数据缓存(内存级别,不要用文件) 3.页 ...
- 如何有效防御网站被CC攻击
对于新站长来说,对CC攻击可能比较陌生,那么什么是CC攻击,如何有效防御网站被CC攻击?网络攻击中常见的是:DDoS攻击.CC攻击,其中危害大且难防范的是DDoS攻击,而CC攻击是DDOS的一种,也是 ...
最新文章
- python如何使用ppip安装xlwt_Python中xlrd和xlwt模块使用方法
- 工业物联网的应用领域与方向
- 多协议底层攻击工具Yesinia
- C语言 数据结构 二叉树实现、二叉树的三种递归遍历
- postgis数据库优化_国内首个 Serverless 数据库来了,技术架构全揭秘!
- P2839-[国家集训队]middle【主席树,二分】
- 高级软件工程2017第2次作业—— 个人项目:四则运算题目生成程序(基于控制台)...
- [复变函数]第17堂课 5 解析函数的 Laurent 展式与孤立奇点 5. 1 解析函数的 Laurent 展式...
- python自学视频教程 38-python编程开发入门中文视频培训教程38讲
- Python爬虫从入门到放弃(十五)之 Scrapy框架中Spiders用法
- javascript 忍者秘籍读书笔记(二)
- this.$router.push相关的vue-router的导航方法
- 均值滤波(matlab)
- 水利知识库AI助手+公务员资料【产品经理】
- BGP基本配置和路由聚合
- Halcon根据两条线拟合中线
- Moses的安装、训练和优化
- 机器学习流程(三)-特征工程
- XML 文件加密与解密
- ESP32学习:AD/DA数模转换