从去年七、八月开始,拒绝服务攻击在网上风行一时,一年后的现在又有抬头之势。那么我们除了用防堵软件外,是否还有其它办法呢?
服务过载
当大量服务请求发向同一台计算机的服务守护进程时,就会产生服务过载。这些请求通过各种方式发出,而且许多都是故意的。在分时机制中,计算机需要处理这些潮水般涌来的请求,十分忙碌,以至无法处理常规任务,就会丢弃许多新请求。如果攻击的对象是一个基于TCP协议的服务,这些请求还会被重发,进一步加重网络的负担。
通常,管理员可以使用网络监视工具来发现这种攻击,通过主机列表和网络地址列表来分析问题的所在,也可以登录防火墙或路由器来发现攻击究竟是来自于网络外部还是网络内部。
消息流
消息流经常发生在用户向网络中的目标主机大量发送数据包之时,消息流会造成目标主机的处理速度缓慢,难以正常处理任务。这些请求以请求文件服务、要求登录或者要求响应的形式,不断涌向目标主机,加重了目标主机的处理器负载,使目标主机消耗大量资源来响应这些请求。在极端的情况下,消息流可以使目标主机因没有内存空间做缓冲或发生其他错误而死机。
消息流主要针对网络服务器。一个被攻击的服务器可能在一段时间内无法响应网络请求。攻击者利用这个时机,编写程序来回答本来应该由服务器回答的请求。假设攻击者已经写了一个程序,每秒发送数千个echo请求到目标主机,借此来“轰炸”NIS服务器。同时,攻击者尝试登录到一台工作站的特权账户。这时,这台工作站将向真正的NIS服务器询问NIS口令。然而,真正的NIS服务器因正遭到攻击,不能迅速响应这个请求。这时,攻击者所在的主机便可以伪装成服务器,响应这个请求,并提供了一个错误的信息,例如,说没有口令。在正常情况下,真正的服务器会指出这个包是错误的,但是,由于服务器负载过重,以至于它没有收到这个请求或者没有及时收到,不能做出响应。于是,那个发出请求的客户机便根据这个错误的回答,处理攻击者的登录请求。
对付这种攻击有效的办法是配置一个监视器,将网络分隔成小的子网。监视器有助于发现和阻止这种攻击,但并不能完全消除这种攻击。
“粘住”攻击
许多Unix系统中的TCP/IP实现程序,存在被滥用的可能。TCP连接通过三次握手来建立一个连接。如果攻击者发出多个连接请求,初步建立了连接,但又没有完成其后的连接步骤,接收者便会保留许多这种半连接,占用很多资源。通常,这些连接请求使用伪造的源地址,系统就没有办法去跟踪这个连接,只有等待这个连接因为超时而释放。对付这种攻击,最好的办法是拒绝防火墙外面的未知主机或网络的连接请求,或者对使用的协议增加限制,但是任何固定的限制都是不适当的。用户可以修改操作系统的源码,使之有一个超时值,在拒绝新到来的连接之前,对同时存在的半连接数目有一个限制,但是修改操作系统的源码并不容易进行。
SYN-Flooding攻击
在SYN-Flooding攻击中,攻击者使用伪装地址向目标计算机尽可能多地发送请求,以达到多占用目标计算机资源的目的。当目标计算机收到这样的请求后,就会使用系统资源来为新的连接提供服务,接着回复一个肯定答复SYN-ACK。由于SYN-ACK被返回到一个伪装的地址,因此没有任何响应,于是目标计算机将继续设法发送SYN-ACK。一些系统都有缺省的回复次数和超时时间,只有回复一定的次数,或者超时时,占用的资源才会被释放。Windows NT 3.5x和4.0缺省设置可以重复发送SYN-ACK5次。每次重新发送后,等待时间翻番。用户可以使用Netstat命令来检查连接线路的目前状况,查看是否处于SYN-Flood攻击中。只要在命令行中,输入Netstat-n-ptop,就显示出机器的所有连接状况。如果有大量的连接线路处于SYN-RECEIVED状态下,系统可能正遭受此类攻击。实施这种攻击的黑客无法取得系统中的任何访问权。但是对于大多数的TCP/IP协议栈,处于SYN-RECEIVED状态的连接数量非常有限。当到达端口的极限时,目标计算机通常作出响应,重新设置所有的额外连接请求,直到分配的资源被释放出来。