【IT168 专稿】拒绝服务攻击即DoS是使对方服务器承受过多的信息请求而无法处理,产生阻塞导致正常用户的请求被拒绝。从程序员的视角出发,就目前我们所处的网络环境而言,要想用大量的报文使一个大网站因为I/O阻塞而停止服务是非常困难的,但是如果能找到对方服务器上一些可能会占用较多资源的程序并有远程调用权限,那么通过批量调用使对方响应阻塞就并不困难。这种程序,从程序员的视角出发,就是对方网站可能存在的不良CGI程式。
下面是我的服务器上存在的一个真实例子:
search.cgi就是一个不良cgi程序(全文本内文检索),是那台服务器上其他网站站长搞来的第三方程序。
可以看到,仅仅存在三个并行调用,系统CPU资源就被占满,正常的http请求产生阻塞!当然,正常情况下这个现象比较少见,但是如果对方有恶意,找到了这种cgi程序,然后在路由接近的网段上作一个socket连接的守护程序,多进程不间断地循环发送伪请求,请求主机响应该cgi程序,并携带一个范围很宽的检索边界条件(检索条件越宽,处理响应消耗负载越大),这样就会用很少的请求数使对方主机产生很大的负载,从而使对方拒绝正常请求。
此类攻击所需要的攻击源很少,很可能只要一个能够高速直连的主攻击源就能使对方服务器崩溃。对于用户可以自己建立cgi程式的虚拟主机服务商而言,这种隐患防不胜防,所以这也是网络安全中需要考虑的一个问题,如果宽带网顺利启动,那么这种攻击手段就可以大行其道,两三台家用电脑就可能把一个宽带环境内的主机搞瘫痪。
所以用程序员的视角,从cgi程序的合理程度来分析,核心思想其实就是很小的请求使对方主机消耗很大的资源来响应,那样带宽和I/O就不是重要的影响因素了。
最近导致美国知名网站故障的原因实际上来自于一种最简单的攻击手段,就是虚假报文的超量投递。关键程序非常简单,自己做也就是一个小时的工作量,无非是创建多个socket连接进程,然后循环地把一些恶意请求的报文利用socket连接,通过80端口塞到对方的主机上,利用无限循环手段,使对方主机超负载而拒绝正常访问,这也是拒绝服务攻击法的关键所在。