免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 46696 | 回复: 123
打印 上一主题 下一主题

生产环境中对于防范DDOS攻击的讨论(获奖名单已公布) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-25 11:22 |只看该作者 |倒序浏览
获奖名单已公布,详情请看:http://bbs.chinaunix.net/thread-3743496-1-1.html

随着互联网的普及,网民安全意识的薄弱,各种流氓软件,病毒,木马大量充斥着网络,使的许多电脑以及服务器中招,从而成了所谓的“肉鸡”,拥有大量“肉鸡”的人可以很容易的发动DDOS攻击,也有一些机房的管理人员利用机房现有的资源从事DDOS攻击活动,DDOS全名是Distributed Denial of service (分布式拒绝服务攻击),随着接入带宽的不断扩大,这种攻击方式的危害性也越来越大,也让很多被攻击的企业苦不堪言,我相信从事运维工作的朋友们也或多或少的遇到过类似的攻击,今天我们就来讨论下如何相对有效的来防范DDOS攻击

本期话题:

1、DDOS几种常见攻击方式的原理及解决办法
2、生产环境遇到过的DDOS攻击及应对措施
3、为应对DDOS攻击而做出的架构设计

活动时间:2012.4.25——2012.5.15

活动要求:1、针对以上三个话题,分享案例和探讨经验。
               2、网友可以提出问题,答疑解惑。

邀请嘉宾:
老男孩(老男孩linux培训) 老男孩Linux实战运维培训中心总裁
李晨光(cgweb)  中国中铁资深网络系统架构师,从事网络管理、信息安全工作9年,《linux企业应用案例精解》的作者。
余洪春(yuhongchun)  《构建高可用Linux服务器》一书作者,高级系统架构师、资深项目管理工程师,ChinaUnix集群和高可用版版主。
刘鑫  (Gray1982)        资深运维架构师,集群和高可用版主

活动有奖:我们为大家准备了玛克家纺磨毛双人夏凉被(共3件)奖励给积极参与活动的网友。



夏凉被 宅男必备,亲,你懂的。。。

论坛徽章:
0
2 [报告]
发表于 2012-04-25 11:26 |只看该作者
沙发支持~

论坛徽章:
0
3 [报告]
发表于 2012-04-25 11:37 |只看该作者
针对这种攻击,只要从事运维的兄弟们应该都有碰到,欢迎大家一起分享下在防范DDOS方面的经验

论坛徽章:
0
4 [报告]
发表于 2012-04-25 12:02 |只看该作者
1,选择知名大的idc,这些idc都会有自己的防ddos设备,及经验丰富的网络运维人员,可以在第一时间帮助公司处理ddos的事情
2,如果公司有足够自己,购买足够大的带宽,也可以有效减缓ddos攻击的危害。
3,如果有能力,可以构建分布式的系统,将自己的业务部署在多地机房,将各地区的访问分散到对应的机房,这样就算是有人ddos,影响可能也仅仅就是其中的一个机房,不会对整个业务造成影响。
4,如果规模也不大,机房条件也一般,那可以考虑在系统装使用一些防ddos的小工具,如DDoS-Deflate,当然此工具也仅仅是减轻,并不能全部防止。

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
5 [报告]
发表于 2012-04-25 12:23 |只看该作者
首先说明真正流量型的ddos无解,比如铁道部购票网站和ddos没啥不同,准确说的类似cc。拖垮数据库。
纯流量型的ddos攻击,没别的办法了,带宽足够大,有cdn就好了,比如目前的腾讯,要想打倒它估计不现实了,每天上亿人访问,都安然无恙。

一般的无非就是cookie+session,禁止某个Ip连续刷新页面,小儿科了,估计一般的开发都知道如何做了。

高端的做法无非是流量牵引和清洗,不过这个要有设备,而且你得分得清楚哪个是攻击的。只有IDC级别的估计才用得上了,所以服务器托管也要考虑到这个问题。

所以嘛,这个几乎是个伪命题,小型网站,第一搞不起那么贵的硬件设备,几十万/几百万一台,比如黑洞等。第二,假如真正的攻击,你能咋地?最好的办法,断网,这也因噎废食了。不要告诉我iptables封ip,此是很笨的做法,很可能误杀,还有真正大量的攻击,硬件防火墙都没办法。

所以,运维几乎做不了啥,只能要开发想到cc简单刷页面的攻击的程序代码。cookie+session。其他就靠IDC,网监了,一般攻击也不会持续很久。

参考这个,http://blog.chinaunix.net/uid-20778583-id-306544.html

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
6 [报告]
发表于 2012-04-25 12:25 |只看该作者
说白了,财大气粗,有米,能上的都上,不过看值得不值得,现在那种设备都不便宜。

论坛徽章:
16
IT运维版块每日发帖之星
日期:2015-08-24 06:20:00综合交流区版块每日发帖之星
日期:2015-10-14 06:20:00IT运维版块每日发帖之星
日期:2015-10-25 06:20:00IT运维版块每日发帖之星
日期:2015-11-06 06:20:00IT运维版块每日发帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT运维版块每日发帖之星
日期:2016-04-15 06:20:00IT运维版块每日发帖之星
日期:2016-05-21 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-14 06:20:00
7 [报告]
发表于 2012-04-25 12:33 |只看该作者
浅薄之见,不当处勿喷。。。

论坛徽章:
0
8 [报告]
发表于 2012-04-25 12:42 |只看该作者
DDOS   很是给力的

论坛徽章:
6
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-03 17:33:522015元宵节徽章
日期:2015-03-06 15:50:39IT运维版块每日发帖之星
日期:2016-01-11 06:20:00IT运维版块每日发帖之星
日期:2016-03-19 06:20:0019周年集字徽章-19
日期:2019-09-06 18:56:11
9 [报告]
发表于 2012-04-25 12:53 |只看该作者
下面我谈谈常见DDOS的检测和防止方法(上硬件设备就不谈了。)
一、DDoS的检测方法
下面介绍如何判断服务器是否受到DDoS攻击。使用如下几个简单的步骤可以进行判断。
◆ 最明显的感觉是服务器响应缓慢,一般直接可以从服务器提供的页面显示速度上察觉。
◆ 登录服务器,用“netstat”命令查看,发现服务器有大量等待的TCP连接。
◆ 利用Sniffer、Tcpdump等嗅探工具会发现网络中充斥着大量源地址为假的伪装数据包。
◆ 可以看出服务器的数据流量猛增,造成网络拥塞,服务器甚至不能正常地与外界通信。
◆ 严重时会造成系统死机。下面以一台RHEL AS 5的服务器为例,使用系统自带的netstat工具来检测DDoS攻击。
#netstat -n -p TCP
tcp 0 0 10.11.11.11:23 124.173.152.8:25882 SYN_RECV-
tcp 0 0 10.11.11.11:23 236.15.133.204:2577 SYN_RECV-
tcp 0 0 10.11.11.11:23 127.160.6.129:51748 SYN_RECV-
tcp 0 0 10.11.11.11:23 222.220.13.25:47393 SYN_RECV-
上面是在Linux系统中看到的输出结果,很多连接处于SYN-RECV状态(在Windows系统中是SYN-RECEIVED状态), 源IP地址都是随机的(也可能是同一个IP的很多SYN—RECV连接状态),表明这是一种带有IP欺骗的SYN攻击。通过下面的命令也可以直接查看Linux环境下某个端口的未连接队列条目数:
#netstat -atun |grep SYN_RECV |grep:80 |wc –l
结果显示了TCP 80端口的未连接数请求及个数, 虽然还远未达到系统极限, 但应该引起管理员的注意。
二、防范DDoS攻击
几乎所有的主机平台都有抵御DDoS的设置。以Linux操作系统为例,其防范技术主要分为三大类,第一类是通过合理配置系统,达到资源最优化和利用最大化,第二类是通过加固TCP/IP协议栈来防范DDoS;第三类是通过防火墙、路由器等过滤网关,有效地探测攻击类型并阻击攻击。
必须明确的是,DDoS攻击在TCP连接原理上是合法的,除非TCP协议重新设计, 明确定义DDoS和其他正常请求有何不同,否则不可能完全阻止DDOS攻击,我们所做的只是尽可能地减轻DDoS攻击的危害。
1.服务器设置
除了防范他人攻击外, 也要提防不要成为被人利用的对象。可以通过以下方法来实现:
◆ 安全配置系统,杜绝攻击漏洞,及时安装系统补丁程序;
◆ 关闭不必要的服务,并优化服务;
◆ 有规律地查看日志;
◆ 利用工具检查文件完整陛
2.加固TCP/IP协议栈
这里通过修改TCP/IP参数来控制连接资源的利用。
◆ SYN cookies技术
限制同时打开的SYN 半连接数。
以Red Hat Linux为例,通过在启动环境中设置以下命令来启用SYN cookies
#echo 1> /proc/sys/net/ipv4/tcp_syncookies
也可以通过修改其他参数,或者使用/proc/sys/net/ipv4/netfilter/ip_contrack_*来实现。
◆ 增加最大半连接数
加大未连接队列空间。
Linux 使用变量tcp-max-syn_backlog来定义backlog队列容纳的最大半连接数。在Red Hat Linux中,该变量的默认值为256,在RHEL AS Linux中则是1024。该数值是远远不够的,一次强度不大的SYN攻击就能使半连接队列占满。通过以下命令可以修改此变量值:
#sysctl -W net.ipv4.tcp_max_syn_backlog="2048"
◆ 缩短SYN半连接的Timeout时间
Red Hat Linux使用变量tcP_synack_retries定义重传次数,其默认值是5,总超时时间需要3分钟。
#sysctl -W net.ipv4.tcp_synack_retries="0"
◆ 及时更新系统补丁
可以添加如下脚本到Linux的/etc/sysctl.conf文件,重启后会自动启动,达到防御DDoS的效果。
## add by geminis for syn crack
net.ipv4.tcp_syncookied=1
net.ipv4.tcp_max_syn_backlog="2048"
net.ipv4.tcp_synack_retries="1"
三 防火墙防御
网关超时设置将防火墙SYN转发超时参数设置为小于服务器的Timeout。如果客户端在防火墙的Timeout时间内无响应,防火墙将发送终止RST消息给服务器,使服务器从队列中删除该半连接,节省开销。需要注意的是,网关超时参数设置不宜过小也不宜过大,超时参数设置过小会影响正常的通信,设置过大则会影响防范SYN drome攻击的效果,必须更具所处的网络环境来设置参数。
◆ SYN 网关:SYN网关的原理是代替客户端发送ACK消息,然后转发数据。SYN网关收到服务器的SYN/ACK包后,将该包转发给客户端,同时以客户端的名义给服务器发ACK确认包。此时,服务器由半连接状态进入连接状态。当客户端确认包到达时,如果有数据则转发,否则丢弃。一般服务器所能承受的连接数量比半连接数量要大得多,所以这种方法能有效地减轻对服务器的攻击。
◆ SYN 代理:当客户端SYN包到达过滤网关时,SYN代理并不转发SYN包,而是以服务器的名义主动回复SYN+ACK包给客户。收到客户的ACK 包表明是正常访问,此时防火墙向服务器发送ACK包,并完成三次握手, 。这里的防火墙作为独立的服务器,需要有较强的抵抗DDoS攻击的能力。使用专用NP (网络处理器)及专用操作系统的高档防火墙都会具备这种功能。
#!/bin/sh
#定义变量
MAX_TOTAL_SYN_RECV="1000"
MAX_PER_IP_SYN_RECV="20"
MARK="SYN_RECV"
#定义链接状态为"SYN_RECV"
PORT="80"
LOGFILE="/var/og/netstat_$MARK-$PORT"
LOGFILE_IP="/var/log/netstat_connect_ip.log"
DROP_IP_LOG="/var/log/netstat_syn_drop_ip.log"
#iptables初始化,拒绝非法包和不明状态包,允许请求包和已连接的包进入
iptable -F -t filter
iptable -A INPUT -p TCP --syn -m stat --state NEW -j DROP
iptables -A INPUT -p ALL - m state --state INVALID -j DROP
iptables -A INPUT -p ALL -m state -state ESTABLISHED,RELATED -j ACCEPT
#初始化变量
if [-z $MARK];then
MARK="LISTEN"
fi
if [-z $PORT];then
SPRT="tcp"
else
SPORT="PORT"
fi
#end
#保存netstat结果到指定记录文件中便于分析
netstat -atun|grep $MARK |grep $SPORT 2>/dev/null >$LOGFILE
if [-s $DROP_IP_LOG];then
for i in `less$DROP_IP_LOG|awk '{print $1}`;
do
/sbin/iptables -A INPUT -p ALL -s $i -j DROP
done
fi
for i in 'less $LOGFILE_IP';
#统计同一IP的SYN-RECV状态
REPEAT_CONNECT_NUM='grep $i $LOGFILE|wc -l'
#如果超过预设的统一IP连接数,则拒绝此IP连接包进入
if [$REPEAT_CONNECT_NUM -gt $MAX_PER_IP_SYN_RECV];then
echo "$I $REPEAT_CONNEC_NUM" >> $DROP_IP_LOG
iptables -A INPUT -p ALL -s $i -j DROP
fi
done
#统计所有状态为SN_RECV的数据包,如果数量超过预设则重置状态
ALL_CONNETC='uniq -u $LOGFILE|wc -l '
echo $ALL_CONNECT
if [$ALL_CONNECT -gt $MAX_TOTAL_SYN_REC];then
echo $ALL_CONNECT
exit
fi
简单说明一下上述脚本。该脚本一旦发现有恶意连接的IP地址后会马上生效,利用iptables命令阻止该IP地址的任何请求,直到管理员手动去除为止。但是这种做法在某些情况下显得过于严格,因为该IP也可能是一个公共出口。解决方法是再配合一个释放IP ,运行于任务管理中,设置成每隔一段时间自动从iptables规则中去掉该IP地址,时间可以根据具体网络连接情况设置。

论坛徽章:
6
丑牛
日期:2013-09-17 00:18:40未羊
日期:2013-10-31 12:10:47午马
日期:2013-12-07 01:58:50水瓶座
日期:2013-12-24 22:43:12水瓶座
日期:2014-03-15 21:12:13操作系统版块每日发帖之星
日期:2016-08-07 06:20:00
10 [报告]
发表于 2012-04-25 14:16 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP