四. 攻击防范:1. 网络攻击的种类: 网络攻击一般分为拒绝服务型攻击、扫描窥探攻击和畸形报文攻击三大类: (1)拒绝服务型攻击:拒绝服务型DoS(Denial of Service)攻击是使用大量的数据包攻击系统,使系统无法接受正常用户的请求,或者主机挂起不能正常的工作。主要DoS攻击有SYN Flood、Fraggle等。 拒绝服务攻击和其他类型的攻击不同之处在于:攻击者并不是去寻找进入内部网络的入口,而是阻止合法用户访问资源或防火墙。 解决方案: 执行命令system-view,进入系统视图。 执行命令firewall defend icmp-flood { ip ip-address [ vpn-instance vpn-instance-name ] | zone zone-name } [ max-rate rate-value ] ,配置ICMP Flood攻击防范参数。 执行命令firewall defend syn-flood { ip ip-address [ vpn-instance vpn-instance-name ] | zone zone-name } [ max-rate rate-value ] [ tcp-proxy { auto | off | on } ],配置SYN Flood攻击防范参数。 执行命令firewall defend udp-flood { ip ip-address [ vpn-instance vpn-instance-name ] | zone zone-name } [ max-rate rate-value ],配置UDP Flood攻击防范参数。 缺省情况下,Flood类攻击防范的最大连接速率均为1000pps,SYN Flood攻击防范中的TCP代理功能自动启用。 ① SYN Flood攻击:SYN Flood攻击利用TCP三次握手的一个漏洞向目标计算机发动攻击。攻击者向目标计算机发送TCP连接请求(SYN报文),然后对于目标返回的SYN-ACK报文不作回应。目标计算机如果没有收到攻击者的ACK回应,就会一直等待,形成半连接,直到连接超时才释放。如图4所示。 攻击者利用这种方式发送大量TCP SYN报文,让目标计算机上生成大量的半连接,迫使其大量资源浪费在这些半连接上。目标计算机一旦资源耗尽,就会出现速度极慢、正常的用户不能接入等情况。 攻击者还可以伪造SYN报文,其源地址是伪造的或者不存在的地址,向目标计算机发起攻击。 ② Fraggle攻击:Fraggle攻击的原理与Smurf攻击的原理类似,不过,Fraggle攻击发送的是UDP报文而非ICMP报文。因为发送的是UDP报文,Fraggle攻击可以穿过一些阻止ICMP报文进入的防火墙。 Fraggle攻击利用的原理是:UDP端口7(ECHO)和端口19(Chargen)在收到UDP报文后,都会产生回应。如下: ① UDP的7号端口收到报文后,会象ICMP Echo Reply一样回应收到的内容。 ② UDP的19号端口在收到报文后,会产生一串字符流。 ③ 这两个UDP端口都会产生大量应答报文,挤占网络带宽。 攻击者可以向目标主机所在的网络发送源地址为被攻击主机、而目的地址为其所在子网的广播地址或子网网络地址的UDP报文,目的端口号为7(ECHO)或19(Chargen)。子网中启用了此功能的每个系统都会向受害主机发送回应报文,从而产生大量的流量,导致受害网络的阻塞或受害主机崩溃。 如果目标主机所在网络上的主机没有启动这些功能,这些主机将产生一个ICMP不可达消息,仍然消耗带宽。也可将源端口改为端口19(Chargen),目的端口为7(ECHO),这样会自动不停地产生回应报文,其危害性更大。 ③ ICMP Flood攻击:通常情况下,网络管理员会用PING程序对网络进行监控和故障排除,大概过程如下: ① 源计算机向接收计算机发出ICMP响应请求报文(ICMP ECHO)。 ② 接收计算机接收到ICMP响应请求报文后,会向源计算机回应一个ICMP 应答报文(ECHO Reply)。 这个过程是需要CPU处理的,在有些情况下还可能消耗掉大量的资源。如果攻击者向目标计算机发送大量的ICMP ECHO报文(产生ICMP洪水),则目标计算机会忙于处理这些ECHO报文,而无法继续处理其它的数据报文。 UDP Flood攻击 UDP Flood攻击的原理与ICMP Flood攻击类似,攻击者通过发送大量的UDP报文给目标计算机,导致目标计算机忙于处理这些UDP报文而无法继续处理正常的报文。 (2)扫描窥探攻击: 扫描窥探攻击是利用ping扫描(包括ICMP和TCP)来标识网络上存活着的系统,从而准确地指出潜在的目标。利用TCP和UDP等进行端口扫描,就能检测出操作系统的种类和潜在的服务种类。 攻击者通过扫描窥探就能大致了解目标系统提供的服务种类,为进一步侵入系统做好准备。 解决方案: 执行命令system-view,进入系统视图。 执行命令firewall defend ip-sweep { blacklist-expire-time interval | max-rate rate-value } ,配置地址扫描攻击防范参数。 执行命令firewall defend port-scan { blacklist-expire-time interval | max-rate rate-value },配置端口扫描攻击防范参数。 ① 地址扫描与端口扫描攻击:攻击者运用扫描工具探测目标地址和端口,目标地址会对这些探测作出响应,攻击者根据这些响应用来确定哪些目标系统是存活着并且连接在网络上、目标主机开放或者关闭了哪些端口。 ② Tracert攻击:Tracert是利用TTL(Time To Live)为0时返回的ICMP超时报文,和达到目的地时返回的ICMP端口不可达报文来发现报文到达目的地所经过的路径。 攻击者可以利用Tracert窥探网络的结构。对网络造成潜在的危险。 (3)畸形报文攻击:畸形报文攻击是通过向目标系统发送有缺陷的IP报文,使得目标系统在处理这样的IP包时会出现崩溃,给目标系统带来损失。主要的畸形报文攻击有Ping of Death、Teardrop等。 ① Teardrop攻击:在网络传输的过程中,如果IP报文的长度超过链路层的MTU(最大传输单元),就会进行分片。在IP报头中有一个偏移字段(OFFSET)和一个分片标志(MF),如果MF标志设置为1,则表明这个IP报文是一个大IP包的分片,其中偏移字段指出了这个片断在整个IP包中的位置。接收端可以根据报文头中的这些信息还原该IP包。: 比如,一个较大的报文在MTU较小的链路上传输的时候,被分成了两个IP报文,这两个IP报文将在目的端进行组装,还原为原始的IP报文。 如果一个攻击者打破这种正常情况,把偏移字段设置成不正确的值,即可能出现重合或断开的情况。某些TCP/IP协议栈在收到类似这种含有重叠偏移的伪造分段时会崩溃,这就是所谓的Teardrop攻击。 ② Ping of Death攻击:所谓Ping of Death,就是利用一些尺寸超大的ICMP报文对系统进行的一种攻击。 IP报文的长度字段为16位,这表明一个IP报文的最大长度为65535。对于ICMP回应请求报文,如果数据长度大于65507,就会使ICMP数据+IP头长度(20)+ICMP头长度(8)> 65535。对于有些防火墙或系统,在接收到一个这样的报文后,由于处理不当,会造成系统崩溃、死机或重启。 ③ ICMP-Unreachable攻击:某些系统在收到网络(报文类型字段为3,代码字段为0)或主机(报文类型字段为3,代码字段为1)不可达的ICMP报文后,对于后续发往此目的地的报文直接认为不可达。如图7所示。 攻击者利用这种机制,向目标主机发送虚假的ICMP-Unreachable报文,干扰了目标主机的路由信息,影响了报文发送。 ④ ICMP-Redirect攻击:ICMP-Redirect攻击和ICMP-Unreachable攻击类似。: 网络设备可以向同一个子网的主机发送ICMP重定向报文,请求主机修改路由。 攻击者利用这个原理,跨越网段向另外一个网络的目标主机发送虚假的重定向报文,以改变目标主机的路由表。这种攻击干扰了目标主机的路由信息,影响了报文发送。 ⑤ Large-ICMP攻击:同ping of death类似,Large-ICMP也是利用一些大尺寸的ICMP报文对系统进行的一种攻击,与ping of death不同的是,Large-ICMP报文的长度不会超过IP报文的最大长度65535,但是对一些操作系统也会造成破环。 需要在防火墙上配置允许通过的ICMP报文的最大长度。 解决方案: 执行命令system-view,进入系统视图。 执行命令firewall defend large-icmp max-length length,配置超大ICMP报文攻击防范参数。 注:缺省情况下,ICMP报文的最大长度为4000字节。 ⑥ Land攻击:Land攻击,就是把TCP的SYN包的源地址和目的地址都设置为目标计算机的IP地址。这将导致目标计算机向它自己发送SYN-ACK报文,目标计算机又向自己发回ACK报文并创建一个空连接,每一个这样的连接都将保留直到超时。如图1所示。 各种类型的主机对Land攻击反应不同,许多UNIX主机将崩溃,Windows NT主机会变得极其缓慢。 ⑦ Smurf攻击:a) 简单的Smurf攻击: 用来攻击一个网络。攻击者向目标网络发送ICMP应答请求报文,该报文的目标地址设置为目标网络的广播地址,这样,目标网络的所有主机都对此ICMP应答请求作出答复,导致网络阻塞。 b) 高级的Smurf攻击: 主要用来攻击目标主机。攻击者向目标主机所在的网络发送ICMP应答请求报文,该报文的源地址设置为目标主机的地址,这样,所有的应答报文都将发送给目标主机。最终导致目标主机处理速度缓慢,甚至崩溃 Smurf攻击报文的发送需要一定的流量和持续时间,才能真正构成攻击。理论上讲,目标网络的主机越多,攻击的效果越明显。 ⑧ 畸形TCP报文攻击:畸形TCP报文是通过故意错误设置TCP头中的6个标记位,造成接收方TCP协议栈的处理错误,达到攻击的目的。 ⑨ IP-fragment攻击:IP报文中有几个字段与分片有关:DF(Don’t Fragmentate)位、MF位、Fragment Offset、Length。 如果上述字段的值出现矛盾,而设备处理不当,会对设备造成一定的影响,甚至瘫痪。矛盾的情况有: DF位被置位,而MF位同时被置位或Fragment Offset不为0。 DF位为0,而Fragment Offset + Length > 65535。 另外,由于分片报文可以增加目的设备缓冲和重组的负担,应直接丢弃目的地址为设备本身的分片报文。 ⑩ WinNuke攻击:NetBIOS作为一种基本的网络资源访问接口,广泛的应用于文件共享,打印共享,进程间通信(IPC),以及不同操作系统之间的数据交换。一般情况下,NetBIOS是运行在LLC2链路协议之上的,是一种基于组播的网络访问接口。为了在TCP/IP协议栈上实现NetBIOS,RFC规定了一系列交互标准,以及几个常用的TCP/UDP端口,如下。 139:NetBIOS会话服务的TCP端口。 137:NetBIOS名字服务的UDP端口。 136:NetBIOS数据报服务的UDP端口。 Windows操作系统实现了NetBIOS over TCP/IP功能,并开放了139端口。 WinNuke攻击就是利用了Windows操作系统的一个漏洞,向这个139端口发送一些携带TCP带外(OOB)数据报文,但这些攻击报文与正常携带OOB数据报文不同的是,其指针字段与数据的实际位置不符,即存在重叠,Windows操作系统在处理这些数据的时候,就会崩溃。 |