1 / 20
文档名称:

自建CDN防御DDoS..doc

格式:doc   页数:20页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

自建CDN防御DDoS..doc

上传人:2982835315 2015/12/2 文件大小:0 KB

下载得到文件列表

自建CDN防御DDoS..doc

文档介绍

文档介绍:自建CDN防御DDoS(1):知己知彼,建设持久防线
作者 张磊邵海杨 发布于 2013年2月18日
领域
 
运维& 基础架构
 
主题
 
运维 , 
安全 , 
CDN
新浪微博腾讯微博豆瓣网***Facebooklinkedin邮件分享更多0
前言
本议题是我们在OWASP杭州区2013年岁末年初安全沙龙中进行分享的内容,在此我们对这个议题的整体内容进行了重新归纳梳理,形成了文字版。
相关厂商内容
持续集成与持续交付专家乔梁:近十年实战项目案例之深度剖析
国内最大的Python应用——Sohu邮箱之经验分享,尽在QCon北京企业开发专题
QCon全球软件开发大会(成都站)2013启动,关注移动、大数据
通过赌钱以PageRank算法为例,讲解“并行计算+数据算法”经典搭配,3月刊《架构师》免费下载!
Kinect for Windows人机交互新体验,免费培训报名中,限额30人(成都:3月27日,深圳:3月29日)
在本文中,DDoS的案例与应对经验均来自于某市场占有率很高的客服系统所遇到的实际场景,分别从成本、效率和具体架构设计(选型、配置、优化等)角度来分析通过自建CDN来应对不同类型的DDoS攻击。
背景介绍
客服系统的主要业务是提供基于网页的实时动态的文字聊天,主要应用在各类网络商品销售、网站在线客服等领域,总用户数58万,同时在线活跃的用户约12万/天。
这些应用领域通常行业之间的竞争比较激烈,其中包括在线下无法名正言顺的灰色+暴利产业,导致竞争对手之间经常发动DDoS恶意攻击。但营销网站往往是单面加速,加上推广时效性很强,很难被彻底打击,于是一些自作聪明的黑客通过攻击网站的在线客服系统,导致网站无法跟访客沟通,不能交易,从而达到恶意攻击的目的。因此客服系统这个原本有助于网站营销的工具反而成了被攻击的主要对象,虽然伤得委屈,但也不得不面对挑战。
我们遭遇的DDoS攻击类型包括:攻击和致命的大流量攻击。下面将对两种攻击方式的攻击特点、防御思路和我们用过的一些防御方案进行简单的介绍。
攻击
攻击特点
攻击者借助网络上提供的大量***IP,利用攻击软件,生成指向受害主机的合法请求。
这类攻击对攻击者来说成本低,而且网上现成的软件多,攻击的风格相对比较”温柔谨慎”,其目的是通过逐渐增多的垃圾请求,消耗服务器的正常应用开销如CPU,内存,网卡压力,甚至是网络拥堵,然后请求无响应,无出口流量,导致网站变慢,达到网站无法访问的目的。
防御思路
对于这类攻击,有两个漏洞特点可以被我们利用,攻击,关键是响应一定要快。
第一个特征,由于是人为生成了大量的非法请求,ing流量会异常增大(正常情况下,ing流量小,outgoing流量大);第二个特征,攻击力度有一个渐增过程,我们要充分利用这个宝贵的时间,让机器第一时间智能的做出反应,调用日志分析脚本做决策,加以防御或者引流。
具体的方法有多种,这里只列举我们所使用的两种:
使用监控软件的流量监控图来触发日志分析脚本,如图所示(zabbix为例):
ing流量,发现异常时,调用相应日志分析脚本,实现阻击。
#!/bin/bash
DEV=$1 # 定义监听网卡
LIMIT=$2 # 定义触发阙值
WARN=$3 #定义报警阙值
TIME=$4 # 定义网卡数据采集频率
mobile_num="13xxxxxxxxxx" # 定义接收报警短信手机号码
LOCK="/tmp/."
[ -z $DEV ] && echo "$0 ethx limit_band(kbps) warn_limit(kbps) seconds" && exit 0
[ -z $LIMIT ] && LIMIT=800000 # 800 kbps
[ -z $WARN ] && WARN=900000 # 900 kbps
[ -z $TIME ] && TIME=10 # 10s
send_fetion() {
#定义飞信报警短信接口
}
while : ; do
net_flood=`ifconfig $DEV|sed -n "8"p`
rx_before=`echo $net_flood|awk '{print $2}'|cut -c7-`
sleep $TIME
net_flood=`ifconfig $DEV|sed -n "8"p`
rx_after=`echo $net_flood|awk '{print $2}'|cut -c7-`
rx_result=$[(rx_after-rx_before)