近期国内部分站点遭到了较大规模的拒绝服务(D.O.S)攻击(包括类似前期yahoo等大型国际网站所遭受的的DDoS攻击——分布式拒绝服务攻击)。波及的网站包括知名的新闻网站、商业网站、证券网站,甚至是部分网络安全站点等。造成的症状为:站点无法访问,响应速度极慢,影响到周围相关网段的其它主机等,至今还有很多站点未恢复正常,仍无法正常访问。
作为一个网络安全站点,我们的主站isbase.com也同样受到了极其猛烈的拒绝服务攻击。公司技术人员立即做出响应:针对攻击的方式及可能采用的攻击手段,提出了切实可行的完整解决方案,把攻击的危害降到了最低。现在网站一切正常,虽然攻击仍旧在继续,但对服务器的影响已经降到了最小,不会影响服务器的正常运作。同时,我们积极联系了其它受攻击的同行站点,表明攻击来自同一类手法,可能来自某人(团体)蓄意所为。另外,对我们近期为其它站点所做的紧急响应情况来看,此次攻击的规模之广、强度之大令人发指。在采取了我公司应的解决方案后,接受紧急响应的网站都已恢复正常。
我们根据自己站点所受的攻击对此次大规模拒绝服务攻击做出了初步分析报告:
从被攻击的症状来看,这次的攻击大致有以下几种:分布式拒绝服务攻击、Syn-Flood攻击,icmp炸弹(ping of death)等几种。这是通过审查我们站点被攻击后留下的纪录,分析这些记录后得出的初步结论。
要防范拒绝服务攻击,首先要从强化自身做起。
针对目前D.O.S攻击的实施手段,我们预先采取了以下的一些措施:
1.为防止Syn-Flood攻击(Syn-Flood攻击的具体原理参见本站的技术文章),我们对默认安装的系统进行了强化,主要是通过重新编译内核,设定相应的内核参数使得系统强制对超时的Syn请求连接数据包复位,同时通过缩短超时常数和加长等候队列使得系统能迅速处理无效的Syn请求数据包。如果不强制对这些无效的数据包进行清除复位,将大大加重系统的负载,最终将导致系统失去响应。
2.为防止icmp炸弹的攻击,在系统内核中对icmp数据包的流量进行限定允许。并在系统参数中对此限定值调整。以防止系统由此而造成的失去响应。
3.在系统中加装防火墙系统,利用防火墙系统对所有出入的数据包进行过滤。
4.仔细调整服务器的各项参数。根据我们站点访问量大的特点,对Web服务器和Mail服务器进行适度的预加重处理,即通过预先使服务器达到一定的负载,以使得整个系统的负载在访问量变化时不会出现很大的变化,如果出现了很大的变化,很有可能使得服务器崩溃。这和在建筑中广泛采用的预应力技术的原理是一致的。
在完成了对服务器的强化后,还必须使用一些有效的方法和规则来检测和发现拒绝服务攻击,并能在检测到拒绝服务攻击后采取相应的对策。
检测的手段很多,可以通过察看路由器纪录和系统纪录以及站点目前状态来实现。
通常,我们在设计防火墙的时候会预先对某些特殊类型的IP数据包进行过滤(不需要纪录)。这些特殊的IP是不能在Internet网上出现的(无法路由)。而要进行拒绝服务攻击往往最需要这类有来无回的数据包,来隐蔽攻击者的真实地址和身份。而一旦这类地址出现,往往就标志着某种拒绝服务攻击的开始。
这一大类的地址是127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16这四个网段的地址。就我们的防火墙的规则而言,对这三个地址段是完全拒绝任何数据包的: denyall。然后通过检测对这些规则的计数,来判决是否存在某些攻击行为。如当我们发现在我们的计数器中发现如下的情况:
0 0 deny ip from any to 127.0.0.0/8 4552 553302 deny ip from 10.0.0.0/8 to any 0 0 deny ip from any to 10.0.0.0/8 0 0 deny ip from 172.16.0.0/12 to any 0 0 deny ip from any to 172.16.0.0/12 97601 11024404 deny ip from 192.168.0.0/16 to any 0 0 deny ip from any to 192.168.0.0/16我们就可以推断是有人在拒绝服务攻击,当我们利用netstat–an来检测当时的网络连接数目时,我们会发现有大量SYN_RCVD类型的连接:
tcp4 0 0 202.109.114.50.80 203.93.217.52.2317 SYN_RCVD tcp4 0 0 202.109.114.50.80 61.136.54.73.1854 SYN_RCVD这就说明了此时服务器正在遭受Syn-Flood攻击。纪录这类攻击的IP地址是毫无意义的(因为这些IP地址都是在程序中通过改变数据包头而伪造的)。