畸形报文攻击是通过向目标设备发送有缺陷的IP报文,使得目标设备在处理这样的IP报文时出错和崩溃,给目标设备带来损失。畸形报文攻击防范是指设备实时检测出畸形报文并予以丢弃,实现对本设备的保护。
畸形报文攻击主要分为以下几类:
如果IP报文只有20字节的IP报文头,没有数据部分,就认为是没有IP载荷的报文。攻击者经常构造只有IP头部,没有携带任何高层数据的IP报文,目标设备在处理这些没有IP载荷的报文时会出错和崩溃,给设备带来损失。
启用畸形报文攻击防范后,设备在接收到没有载荷的IP报文时,直接将其丢弃。
IGMP报文是20字节的IP头加上8字节的IGMP报文体,总长度小于28字节的IGMP报文称为IGMP空报文。设备在处理IGMP空报文时会出错和崩溃,给目标设备带来损失。
启用畸形报文攻击防范后,设备在接收到IGMP空报文时,直接将其丢弃。
LAND攻击是攻击者利用TCP连接三次握手机制中的缺陷,向目标主机发送一个源地址和目的地址均为目标主机、源端口和目的端口相同的SYN报文,目标主机接收到该报文后,将创建一个源地址和目的地址均为自己的TCP空连接,直至连接超时。在这种攻击方式下,目标主机将会创建大量无用的TCP空连接,耗费大量资源,直至设备瘫痪。
启用畸形报文攻击防范后,设备采用检测TCP SYN报文的源地址和目的地址的方法来避免LAND攻击。如果TCP SYN报文中的源地址和目的地址一致,则认为是畸形报文攻击,丢弃该报文。
Smurf攻击是指攻击者向目标网络发送源地址为目标主机地址、目的地址为目标网络广播地址的ICMP请求报文,目标网络中的所有主机接收到该报文后,都会向目标主机发送ICMP响应报文,导致目标主机收到过多报文而消耗大量资源,甚至导致设备瘫痪或网络阻塞。
启用畸形报文攻击防范后,设备通过检测ICMP请求报文的目标地址是否是广播地址或子网广播地址来避免Smurf攻击。如果检测到此类报文,直接将其丢弃。
TCP报文包含6个标志位:URG、ACK、PSH、RST、SYN、FIN,不同的系统对这些标志位组合的应答是不同的:
6个标志位全部为1,就是圣诞树攻击。设备在受到圣诞树攻击时,会造成系统崩溃。
SYN和FIN同时为1,如果端口是关闭的,会使接收方应答一个RST | ACK消息;如果端口是打开的,会使接收方应答一个SYN | ACK消息,这可用于主机探测(主机在线或者下线)和端口探测(端口打开或者关闭)。
6个标志位全部为0,如果端口是关闭的,会使接收方应答一个RST | ACK消息,这可以用于探测主机;如果端口是开放的,Linux和UNIX系统不会应答,而Windows系统将回答RST | ACK消息,这可以探测操作系统类型(Windows系统,Linux和UNIX系统等)。
启用畸形报文攻击防范后,设备采用检查TCP的各个标志位避免TCP标志位非法攻击,如果符合下面条件之一,则将该TCP报文丢弃:
6个标志位全部为1;
SYN和FIN位同时为1;
6个标志位全部为0。
分片报文攻击是通过向目标设备发送分片出错的报文,使得目标设备在处理分片错误的报文时崩溃、重启或消耗大量的CPU资源,给目标设备带来损失。分片报文攻击防范是指设备实时检测出分片报文并予以丢弃或者限速处理,实现对本设备的保护。
分片报文攻击主要分为以下几类:
IP报文中的偏移量是以8字节为单位的。正常情况下,IP报文的头部有20个字节,IP报文的最大载荷为65515。对这些数据进行分片,分片个数最大可以达到8189片,对于超过8189的分片报文,设备在重组这些分片报文时会消耗大量的CPU资源。
启用分片报文攻击防范后,针对分片数量巨大攻击,如果同一报文的分片数目超过8189个,则设备认为是恶意报文,丢弃该报文的所有分片。
攻击者向目标设备发送一个Offset值超大的分片报文,从而导致目标设备分配巨大的内存空间来存放所有分片报文,消耗大量资源。
Offset字段的最大取值为65528,但是在正常情况下,Offset值不会超过8190(如果offset=8189*8,IP头部长度为20,最后一片报文最多只有3个字节IP载荷,所以正常Offset的最大值是8189),所以如果Offset值超过8190,则这种报文即为恶意攻击报文,设备直接丢弃。
启用分片报文攻击防范后,设备在收到分片报文时判断Offset*8是否大于65528,如果大于就当作恶意分片报文直接丢弃。
重复分片攻击就是把同样的分片报文多次向目标主机发送,存在两种情况:
多次发送的分片完全相同,这样会造成目标主机的CPU和内存使用不正常;
多次发送的分片报文不相同,但Offset相同,目标主机就会处于无法处理的状态:哪一个分片应该保留,哪一个分片应该丢弃,还是都丢弃。这样就会造成目标主机的CPU和内存使用不正常。
启用分片报文攻击防范后,对于重复分片类报文的攻击,设备实现对分片报文进行CAR(Committed Access Rate)限速,保留首片,丢弃其余所有相同的重复分片,保证不对CPU造成攻击。
Tear Drop攻击是最著名的IP分片攻击,原理是IP分片错误,第二片包含在第一片之中。即数据包中第二片IP包的偏移量小于第一片结束的位移,而且算上第二片IP包的Data,也未超过第一片的尾部。
如图1所示:
第一个分片IP载荷为36字节,总长度为56字节,protocol为UDP,UDP检验和为0(没有检验);
第二片IP载荷为4字节,总长度为24字节,protocol为UDP,Offset=24(错误,正确应该为36)。
图1 Tear Drop攻击分片示意图
Syndrop攻击会导致系统崩溃或重启。启用分片报文攻击防范后,对于Syndrop攻击,设备会直接丢弃所有分片报文。
1、实验拓扑图如下
创建VLAN10、VLAN20,并将接口GE0/0/2加入VLAN10中,接口GE0/0/3加入VLAN20中。
interface GigabitEthernet0/0/2
port link-type access
port default vlan 10
#
return
#
interface GigabitEthernet0/0/3
port link-type access
port default vlan 20
2、 创建接口VLANIF10、VLANIF20、配置各VLANIF接口的IP地址
[S1]interface Vlanif 10
[S1-Vlanif10]ip address 192.168.10.254 24
[S1]interface Vlanif 20
[S1-Vlanif20]ip address 192.168.20.254 24
设置攻击防范
[S1]anti-attack abnormal enable
2、使能分片报文攻击防范,并限制分片报文接收的速率为15000bit/s
[S1]anti-attack fragment enable
[S1]anti-attack fragment car cir 15000
3、 使能泛洪攻击防范
使能TCP SYN攻击防范,并限制TCP SYN报文接收的速率为15000bit/s。
[S1]anti-attack tcp-syn enable
[S1]anti-attack tcp-syn car cir 15000
4、使能UDP泛洪攻击防范,对特定端口发送的UDP报文直接丢弃。
[S1]anti-attack udp-flood enable
5、使能ICMP泛洪攻击防范,并限制ICMP泛洪报文接收的速率为15000bit/s。
[S1]anti-attack icmp-flood enable
[S1]anti-attack icmp-flood car cir 15000
6、配置完成后,可以通过执行命令display anti-attack statistics查看报文攻击防范的统计数据。