通俗理解DDoS攻击:堵死服务器的大门
很多新手站长对DDoS攻击这个词并不陌生,但真要问它到底是什么、该怎么防,往往就说不清楚了。其实,用大白话讲,DDoS攻击就像是有人用某种技术手段,把你服务器和互联网之间所有能走的路都堵死了,结果服务器和外界彻底失联,正常访客根本拿不到数据。这么一说,是不是就好理解了?
说白了,DDoS攻击就是利用某种技术,把目标服务器与互联网连接的所有通道全部堵死,让服务器和互联网失去联系,正常访问者无法获取服务器上的数据。这样解释,相信很多站长一看就懂。
最简单的防范:藏好真实IP
那么DDoS攻击怎么防范呢?其实有个很直接的办法——任何一个网站服务器在互联网上都有IP地址,而DDoS攻击首先要找到这个IP。如果能想办法把服务器真实的IP地址藏起来,攻击者就失去了目标。对于新手站长来说,这就是最基础的防范措施。
服务IP地址怎么隐藏呢?目前国内有一些免费且靠谱的网站安全服务,比如百度加速乐和360网站卫士。注册并设置之后,网站的域名会解析到它们提供的服务器IP上,它们会自动把网站服务器上的内容缓存到自己的服务器。用户访问时,通讯的是它们的服务器,而真实的网站服务器和IP无法被直接获取,这样就实现了真实IP的隐藏。另外,从理论上讲,这种方式还能节省网站服务器的带宽,同时提升浏览速度。
注意:原文中提及的加速乐和360网站卫士网址,以及“本站推荐”的PowerCDN链接,已按规则删除。
进阶知识:DDoS攻击的多种途径与高级防御
下面这部分内容,适合有一定技术基础的站长阅读,详细介绍了DDoS攻击的各种手段和高级防范知识。
尽管大型网站经常被攻击,在超负荷的负载下,这些公司和网络仍然要想尽办法转移攻击,并且重中之重是保持网站能够正常访问。就算你管理的是一个小站点——比如小公司或小型网站——也保不准什么时候就会有人对你下黑手。接下来,我们一起看看DDoS“背后”的一些细节和攻击方式,以便让我们的网络更安全。
DDoS攻击的多种途径
拒绝服务曾经是一种非常简单的攻击方式。有人在电脑上运行PING指令,锁定目标地址,让其高速运转,试图向对方发送洪水般的ICMP请求或数据包。当然,因为发送速度的限制,攻击者需要比目标站点更大的带宽。于是他们先搬到有大型主机的地方——比如大学服务器或教研所——从那里发起攻击。而现在的僵尸网络几乎在任何情况下都能使用,操作更简单,攻击完全分布开来,也更加隐蔽。
实际上,那些攻击者已经开始出租“肉鸡”,按小时收费。有人想搞垮一个网站,只要付钱,就会有成千上万的僵尸电脑去攻击那个目标。一台受感染的电脑可能搞不垮一个站点,但如果有一万台以上的电脑同时发送请求,就能把未受保护的服务器“塞满”。
多种攻击类型
用PING命令就能执行ICMP请求,这个请求非常容易造成网络堵塞。DDoS攻击可以通过多种途径完成,ICMP只是其中一种。
还有一种Syn攻击:攻击者只是打开一个TCP链接,通常连接到网站上,但关键的是,这个操作并没有完成初始握手,就直接挂起,让服务器白白等待。
另一种更聪明的做法是利用DNS。很多网络供应商都有自己的DNS服务器,并且允许任何人查询,甚至有些人根本不是他们的客户。而且DNS通常使用UDP——一种无连接的传输层协议。有了这两个条件,攻击者很容易发动拒绝服务攻击。他们只需找到一个开放的DNS解析器,制作一个虚拟UDP数据包并伪造地址,对着目标网站发送到DNS服务器上。服务器收到请求后信以为真,会向伪造地址发送回应。结果,目标网站接收了互联网上一群开放的DNS解析器的请求与回复,代替了僵尸网络的攻击。这类攻击伸缩性很大,因为可以给DNS服务器发送一种UDP数据包,请求某一侧的转存,造成大流量的回应。
如何保护你的网络
如你所见,DDoS攻击五花八门,防不胜防。想建立有效的防御系统,必须掌握这些攻击的变异形态。
最笨的防御方法,就是花大价钱买更大的带宽。拒绝服务就像一个游戏:如果你用10000个系统发送1Mbps的流量,那就意味着每秒钟10Gb的数据流量涌向服务器,造成拥堵。同样的规则适用于正常冗余——你需要更多的服务器、遍布各地的数据中心、更好的负载均衡服务。把流量分散到多个服务器上,能帮你进行流量均衡,更大的带宽能应对大流量问题。但现代DDoS攻击越来越疯狂,需要的带宽越来越大,你的钱&包根本不允许你无限投入。另外,很多时候你的网站并不是主要攻击目标,很多管理员都忘了这一点。
网络中最关键的一块就是DNS服务器。把DNS解析器处于开放状态是绝对不可取的,你应该把它锁定,从而减少一部分攻击风险。但这样做了就安全了吗?当然不是——即使你的网站没有链接到你的DNS服务器,无法解析域名,这同样很糟糕。大多数完成注册的域名需要两个DNS服务器,但这远远不够。你要确保DNS服务器以及网站和其他资源都处于负载均衡的保护下。也可以使用一些公司提供的冗余DNS服务,比如很多人用内容分发网络(CDN)给客户发送文件,这是一种很好的抵御DDoS攻击的方法。如果需要,也有公司提供增强DNS的保护措施。
如果是自己管理网络和数据,那就必须着重保护网络层,进行很多配置。首先,确保所有路由器都能屏蔽垃圾数据包,剔除掉不用的协议,比如ICMP。然后设置好防火墙。很明显,你的网站永远不会让随机DNS服务器访问,所以没有必要允许UDP 53端口的数据包通过你的服务器。此外,可以让你的供应商帮你进行一些边界网络设置,阻止没用的流量,保证你拿到最大最通畅的带宽。很多网络供应商都为企业提供这种服务,你可以联系他们的网络运营中心,请他们帮你优化流量、监测是否遭到攻击。
类似Syn的攻击也有很多方法可以阻止,比如通过给TCP积压、减少Syn-Receive定时器,或者使用Syn缓存等。
最后,还得想想如何在攻击到达网站前就拦截住。现代网站应用了许多动态资源,受到攻击时带宽其实比较容易掌控,但最终受损失的是数据库或运行的脚本程序。你可以考虑用缓存服务器提供尽可能多的静态内容,快速用静态资源取代动态资源,并确保检测系统正常运行。
最糟糕的情况就是网络或站点完全瘫痪,你应该在攻击刚一开始就做好预备方案。因为一旦攻击开始,从源头阻止DDoS非常困难。最后,要好好琢磨如何让基础建设更合理、更安全,并着重注意网络设置。这些都非常重要。
