浅谈Ddos攻击攻击与防御 EMail: jianxin# [ 目录 ] 一 背景 在前几天,我们运营的某网站遭受了一次ddos攻击,我们的网站是一个公益性质的网站,为各个厂商和白帽子之间搭建一个平台以传递安全问题等信息,我们并不清楚因为什么原因会遭遇这种无耻的攻击。因为我们本身并不从事这种类型的攻击,这种攻击技术一般也是比较粗糙的,所以讨论得比较少,但是既然发生了这样的攻击我们觉得分享攻击发生后我们在这个过程中学到得东西,以及针对这种攻击我们的想法才能让这次攻击产生真正的价值,而并不是这样的攻击仅仅浪费大家的时间而已。
在攻击发生后,第一个现象是我们的网站上不去了,但是依然可以访问到管理界面,我们登陆上去简单执行了命令: netstat -antp 我们看到有大量的链接存在着,并且都是ESTABLISHED状态,正常状态下我们的网站访问量没有这么高,如果有这么高我们相信中国的信息安全就有希望了,对于这样的情况其实处理就比较简单,这是一次四层的攻击,也就是所有ip都是真实的,由于目前为止只是消耗了webserver的网络连接资源,所以我们只需要简单的将这些ip在网络层封禁就可以,很简单,用下面的命令即可: for i in `netstat -an | grep -i ‘:80 ‘|grep ‘EST’ | awk ‘{print $5}’ | cut -d : -f 1 | sort | uniq -c | awk ‘{if($1 > 50) {print $2}}’` 然后作为计划任务一分钟执行一次即可,很快,iptables的封禁列表就充斥了大量的封禁ip,我们简单的统计了下连接数最大的一些ip发现都来自韩国。为了保证系统的性能,我们调大了系统的可接受的连接数以及对Nginx进行了每个连接能够进行的请求速率,系统于是恢复了正常的运行。 tcpdump -w tmp.pcap port not 22 我们发现攻击已经从应用层的攻击调整到了网络层的攻击,大量的目标端口是80的udp和icmp包以极快的速度充满了网络,一个包大小大概在1k左右,这次占据的资源纯粹是带宽资源了,即使在系统上做限制也解决不了这个问题,不过也没有关系,对于网络层的问题我们可以在网络层上做限制,我们只需要在网络上把到达我们ip的非TCP的所有包如UDP和ICMP等协议都禁止掉即可,但是我们没有自己的服务器也缺乏对网络设备的控制权,目前是由工信部CERT提供支持的,由于临时无法协调进行相应的操作,后果如大家看到,我们的服务很慢,基本上停止了服务,在一段时间之后攻击者停止了攻击,服务才进行了恢复,很憋屈是么?但是同时我们得到了很多热心朋友的帮助,得到了更好的网络和服务器资源,在网络资源方面的能力得到了很大的提升,缓解了这方面的问题,这里对他们表示感谢。 三 常见ddos攻击及防御 继续秉承80sec的”Know it then hack it”,这里简单谈一下ddos攻击和防御方面的问题。ddos的全称是分布式拒绝服务攻击,既然是拒绝服务一定是因为某些原因而停止服务的,其中最重要的也是最常用的原因就是利用服务端方面资源的有限性,这种服务端的资源范围很广,可以简单的梳理一个请求正常完成的过程: 1 用户在客户端浏览器输入请求的地址 上面各个点都可以被用来进行ddos攻击,包括: 1 某些著名的客户端劫持病毒,还记得访问百度跳搜狗的事情么?:) 这里涉及到攻防的概念,但是实际上如果了解对方的攻击点和攻击手法,防御会变成简单的一个拼资源的过程,不要用你最弱的地方去抗人家最强的地方,应该从最合适的地方入手把问题解决掉,譬如在路由器等设备上解决应用层攻击就不是一个好的办法,同理,在应用层尝试解决网络层的问题也是不可能的,简单来说,目标是只让正常的数据和请求进入到我们的服务,一个完善的防御体系应该考虑如下几个层面: 1 作为用户请求的入口,必须有良好的dns防御 每个公司都有自己对自己价值的评估从而决定安全投入上的大小,每一次攻击也会涉及到利益的存在,正如防御因为种种原因譬如投入上的不足和实施过程中的不完美,有着天生的弱点一样,攻击也是有着天生的弱点的,因为每一次攻击涉及到不同的环节,每个环节都可能由不同水平的人完成,他所拥有的资源,他使用的工具和技术都不会是完美的,所以才有可能进行防御,另外,我相信进行DDOS攻击的人是一个固定的行业,会有一些固定的人群,对于其中使用的技术,工具,资源和利益链都是比较固定的,与之相对的是各个企业却缺乏相应的沟通,以个人企业对抗一个产业自然是比较困难,而如果每一个企业都能将自己遭受攻击时的经验分享出来,包括僵尸网络的大小及IP分布,攻击工具的特征,甚至有能力的可以去分析背后的利益点及操作者,那么每一次攻击都能让大家的整体防御能力上升,让攻击者的攻击能力有损失,我们很愿意来做这个事情。 四 根源及反击 我困惑的是一点,攻击我们并不能得到实际的好处为什么还是有人来攻击,而且听说其他公司都有被攻击的情况,我觉得有一点原因就是攻击我们的确得不到什么好处,但是实际上攻击者也并不损失什么,无论是资源上还是法律风险上,他不会因为一次攻击而损失太多,而相比之下,服务提供者损失的东西却太多了,这从经济学角度来讲就是不平衡的,我们处于弱势。 1 这个dns应该为了灵活的控制域名的缓存时间TTL一般不会特别长 这些通过简单的统计就很容易得出答案,我们发现了一些3322的通用恶意软件域名但是发现它并不是我们需要的,因为只有少数机器去访问到,经过一些时间之后最后我们发现一个域名访问量与naver(韩国的一个门户)的访问量持平,workgroup001.snow****.net,看起来似乎对自己的僵尸网络管理很好嘛,大概有18台机器访问过这个域名,这个域名的主机托管在新加坡,生存时间TTL在1800也就是半小时,这个域名在所有的搜索引擎中都不存在记录,是一个韩国人在godady一年前才注册的,同时我们访问这个域名指向主机的3389,简单的通过5下shift就判断出它上面存在着一个典型的windows后门,似乎我们找到它了,不是么?经过后续的观察,一段时间后这个域名指向到了127.0.0.1,我们确信了我们的答案,workgroup001.snow****.net,看起来似乎对自己的僵尸网络管理很好嘛:) 五 总结 正如一个朋友所讲的,所有的防御是不完美的正如攻击是不完美的一样,好的防御者在提升自己的防御能力趋于完美的同时也要善于寻找攻击者的不完美,寻找一次攻击中的漏洞,不要对攻击心生恐惧,对于Ddos攻击而言,发起一次攻击一样是存在漏洞的,如果我们都能够擅长利用其中的漏洞并且抓住后面的攻击者那么相信以后的ddos攻击案例将会减少很多,在针对目标发起攻击之前攻击者也会做更多的权衡,损失,利益和法律。 |
|