神州数码网络公司
目 录
1. ARP欺骗 4
1.1. ARP协议工作原理 4
1.2. ARP协议的缺陷 4
1.3. ARP协议报文格式 5
1.4. ARP攻击的种类 6
1.4.1. ARP网关欺骗 6
1.4.2. ARP主机欺骗 7
1.4.3. 网段扫描 9
1.
ARP欺骗
在与用户的沟通过程中,感觉到用户的网络管理人员最头痛也是频繁出现的问题就是ARP的病毒攻击问题。在一个没有防御的网络当中暴发的ARP病毒带来的影响是非常严重的,会造成网络丢包、不能访问网关、IP地址冲突等等。多台设备短时间内发送大量ARP报文还会引起设备的CPU利用率上升,严重时可能会引起核心设备的宕机。
如何解决ARP攻击的问题呢?首先要从ARP攻击的原理开始分析。
1.1.ARP协议工作原理
在TCP/IP协议中,每一个网络结点是用IP地址标识的,IP地址是一个逻辑地址。而在以太网中数据包是靠48位MAC地址(物理地址)寻址的。因此,必须建立IP地址与MAC地址之间的对应(映射)关系,ARP协议就是为完成这个工作而设计的。
TCP/IP协议栈维护着一个ARP cache表,在构造网络数据包时,首先从ARP表中找目标IP对应的MAC地址,如果找不到,就发一个ARP request广播包,请求具有该IP地址的主机报告它的MAC地址,当收到目标IP所有者的ARP reply后,更新ARP cache。ARP cache有老化机制。
1.2.ARP协议的缺陷
ARP协议是建立在信任局域网内所有结点的基础上的,它很高效,但却不安全。它是无状态的协议,不会检查自己是否发过请求包,也不管(其实也不知道)是否是合法的应答,只要收到目标MAC是自己的ARP reply包或arp广播包(包括ARP request和ARP reply),都会接受并缓存。这就为ARP欺骗提供了可能,恶意节点可以发布虚假的ARP报文从而影响网内结点的通信,甚至可以做“中间人”。
1.3.ARP协议报文格式
6 | 6 | 2 | 2 | 2 |
目地MAC地址 | 源MAC地址 | 帧类型 | 硬件类型 | 协议类型 |
1 | 1 | 2 | 6 | 4 |
硬件地址长度 | 协议地址长度 | 类型 | 发送端MAC地址 | 发送端IP地址 |
6 | 4 | |||
接收端MAC地址 | 接收端IP地址 |
第三个字段是帧类型,长度2个字节。对于ARP报文,这个字段的值为“0806”。
接下来两个2字节的字段表示硬件地址类型和对应映射的协议类型。
硬件地址类型值为“0001”代表以太网地址。协议类型值为“0800”代表IP地址。
后跟两个1字节的字段表示硬件地址长度和协议地址长度。这两个字段具体数值分别为“6”和“4”代表硬件地址长度使用6字节表示和协议地址长度使用4字节表示。
类型字段,长度2个字节。这个字段的值表示出ARP报文属于那种操作。ARP请求(值为“01”,ARP应答(值为“02”),RARP请求(值为“03”)和RARP应答(值为“04”)。
最后四个字段为发送端MAC地址、发送端IP地址、接收端MAC地址、接收端IP地址。(其中,发送端MAC地址与字段2的源MAC地址重复。)
1.4.
ARP攻击的种类
针对ARP攻击的不同目地,可以把ARP攻击分为网关欺骗、主机欺骗、MAC地址扫描几类。下面分析一下每种ARP攻击使用的方法和报文格式。
1.4.1.ARP网关欺骗
在ARP的攻击中,网关欺骗是一种比较常见的攻击方法。通过伪装的ARP Request报文或Reply报文到修改PC机网关的MAC-IP对照表的目地。造成PC机不能访问网关,将本应发向网关的数据报文发往被修改的MAC地址。
网关欺骗的报文格式:
主要参数:
Destination Address :00:0B:CD:61:C1:26 (被欺骗主机的MAC地址)
Source Address :00:01:01:01:01:01 (网关更改的虚假MAC地址)
Type : 1 (ARP的请求报文)
Source Physics :00:01:01:01:01:01
Source IP :211.68.199.1
Destination Physics :00:0B:CD:61:C1:26
Destination IP :211.68.99.101
按上面的格式制作的数据包会对MAC地址为00:0B:CD:61:C1:26的主机发起网关欺骗,将这台PC机的网关211.68.199.1对应的MAC地址修改为00:01:01:01:01:01这个伪装的MAC地址。
可以看到,上面这个网关欺骗的报文为单播ARP请求报文(Reply类同,在此不做详细介绍)。直接针对目地主机。对于这样的报文,唯有将它在进入端口的时候丢弃,才能保证网络当中的PC机不会受到这样的攻击。
1.4.2.ARP主机欺骗
ARP主机欺骗的最终目地是修改PC机或交换机设备的MAC表项。将原本正确的表项修改为错误的MAC地址。最终导致PC机不能访问网络。
ARP主机欺骗可以使用单播报文实现也可以使用广播报文实现。
使用单播报文:
主要参数:
Destination Address :00:10:C6:DD:A6:28 (被欺骗主机的MAC地址)
Source Address :00:01:01:01:01:01 (101更改的虚假MAC地址)
Type : 2 (ARP的应答报文)
Source Physics :00:01:01:01:01:01
Source IP :211.68.199.101
Destination Physics :00:10:C6:DD:A6:28
Destination IP :211.68.99.103
这个单播报文会导致211.68.199.103这台PC机将本机MAC表中的211.68.199.101对应的MAC地址更改为00:01:01:01:01:01这个错误的IP地址。导致103发往101的数据包发到一个错误的地址。
广播报文:
主要参数:
Destination Address :FF:FF:FF:FF:FF:FF (全FF的广播地址)
Source Address :00:01:01:01:01:01 (广播的虚假MAC地址)
Type : 1 (ARP的请求报文)
Source Physics :00:01:01:01:01:01
Source IP :211.68.199.101
Destination Physics :00:00:00:00:00:00
Destination IP :211.68.99.103
这个数据包表面上类似于正常的ARP请求报文,目地地址为全F的广播,接收端的MAC地址为全0的未知地址。意义为IP为101的PC机寻找IP为103的PC机的MAC地址。但当把报文中的两个源MAC地址修改为一个错误的MAC地址之后。这种报文就会引起全网PC机及交换机将211.68.199.101这台PC机的MAC地址修改为00:01:01:01:01:01这个错误的IP地址。
针对主机欺骗的防护,一方面需要保护交换机的MAC表项。确保交换机拥有正确的MAC表。另一方面,针对PC机的MAC表的保护就只能使这种不合法的数据包不进入到交换机中才能完全防御ARP的主机欺骗。
1.4.3.网段扫描
有很多的工具可以实现MAC地址扫描的工作。MAC扫描的报文格式也非常简单,就是一个IP地址对多个或整个网段的ARP请求报文。
严格的来说,正确的网段扫描本身对网络不会产生不利的影响。但因为网段扫描时使用的是广播报文,多台PC同时进行大量的扫描的时候会在网络中产生拥塞。更重要的一点,很多的ARP攻击病毒在发起攻击之前都需要获取到网段内IP和MAC地址的对照关系。就会利用到网段扫描。
数据包的格式:
主要参数:
Destination Address :FF:FF:FF:FF:FF:FF (全F的目地址为二层的广播)
Source Address :00:10:C6:DD:A6:28 (发起ARP扫描PC的MAC地址)
Type : 1 (ARP的请求报文)
Source Physics :00:10:C6:DD:A6:28
Source IP :211.68.199.201 (发起ARP扫描PC的IP地址)
Destination Physics :00:00:00:00:00:00 (需寻找的IP对应的MAC地址未知)
Destination IP :211.68.99.2 (需寻找的IP地址)
将这个报文复制多份,并将Destination IP的地址改为多个不重复的IP地址即可对多个IP或网段进行扫描。
另外,在ARP请求报文中含有的两个源MAC地址修改为错误的MAC地址后,这个报文就变成了主机欺骗的报文。
针对网段扫描的防护首先着眼于单个端口单位时间内进入的ARP报文数量入手。PC机在正常的没有任何操作的时候是不会对网络当中发送大量的ARP请求的。当端口进入的ARP包超过一个限值时判断受到了网段扫描的攻击。就对端口进行关闭,防止大量数据包进入。
2.
DCN对ARP攻击防御的几种手段
ARP攻击的几种攻击方式在前面已经进行过分析。结合ARP攻击的不同形式,我们有多种方法来进行防御。
在下面的命令和配置取自3950-52CT和3950-26S,具体其他型号设备在配置命令或下面提到的几种技术支持能力的方面,请及时查看具体型号设备的用户手册和版本更新通知。
2.1.网关欺骗防御ARP-GUARD
针对网关欺骗采用的报文中必需要含有网关的IP条目,我们可以使用Arp-Guard来保护网关不会被修改。
应用的时候,在接口模式下“Arp-guard ip 网关IP地址”。接口上启用后,这个接口对于进入的数据包中携带有网关IP地址的ARP报文将会丢弃而不进行转发。
对于上行端口,绝不要设置Arp-Guard以免出现网络中断。
配置命令:
Switch>enable
Switch#config terminal
Switch(config)#interface Ethernet 0/0/1
Switch(Config-Ethernet0/0/1)#arp-guard ip 211.68.199.1
2.2.主机欺骗防御
主机欺骗的防御针对主机欺骗的两个方向来考虑。
一、欺骗交换机表项
1、采用静态MAC与IP绑定的作法,实现手工绑定。
2、结合DHCP做Dhcp Snooping 的Binding Arp方式,实现自动静态绑定。
二、欺骗主机及交换机表项
3、结合DHCP做Dhcp Snooping的端口user-control方式,控制端口进入的数据包的源IP和MAC地址与Dhcp Snooping下发表一致的报文通过。
4、MAC ACL,使端口接收数据包的时候检查数据包的源地址与设定的地址相同。
2.2.1.MAC-IP静态绑定
switch>enable
switch#config terminal
switch(Config)#interface vlan 1
switch(Config-If-Vlan1)#arp 211.68.199.101 00-0B-CD-61-C1-26
配置完成后,通过show arp来检查ARP表项是否已修改为静态表项。
2.2.2.DHCP Snooping
DHCP Snooping的Binding Arp功能和手工绑定有相似的地方。都是将动态的ARP表项转为静态的ARP表项。不同的是手工绑定需要手工去配置,工作量较大并且比较繁琐,DHCP Snooping在有DHCP的环境下,绑定是自动完成的。
另外,DHCP Snooping在端口下配置ip dhcp snooping binding user-control。配置之后非信任端口只转发源MAC和IP与下发表项条目相同的数据包。可以阻止网关及主机ARP欺骗。
在没有DHCP服务器的时候,可以用DHCP Snooping手工绑定方式实现。
I. Dhcp Snooping的Binding Arp方式
switch>enable
switch#config terminal
switch(Config)#ip dhcp snooping enable
switch(Config)#ip dhcp snooping binding enable
switch(Config)#ip dhcp snooping binding arp
switch(Config)#interface ethernet 0/0/1
switch(Config-Ethernet0/0/1)#ip dhcp snooping trust (DHCP服务器连接端口需设置Trust)
switch(Config-Ethernet0/0/2)#exit
II.Dhcp Snooping的端口User-control方式
switch>enable
switch#config terminal
switch(Config)#ip dhcp snooping enable
switch(Config)#ip dhcp snooping binding enable
switch(Config)#interface ethernet 0/0/1
switch(Config-Ethernet0/0/1)#ip dhcp snooping trust (DHCP服务器连接端口需设置Trust)
switch(Config-Ethernet0/0/1)#interface ethernet 0/0/2
switch(Config-Ethernet0/0/2)#ip dhcp snooping binding user-control
switch(Config-Ethernet0/0/2)#exit
III.Dhcp Snooping的手工绑定方式
switch>enable
switch#config terminal
switch(Config)#ip dhcp snooping enable
switch(Config)#ip dhcp snooping binding enable
switch(Config)#ip dhcp snooping binding user 00-0B-CD-61-C1-28 address 211.68.199.104 255.255.255.0 vlan 1 interface ethernet 0/0/15
显示示例:
switch#show ip dhcp snooping interface ethernet 0/0/15
interface Ethernet0/0/15 user config:
trust attribute: untrust
action: none
binding dot1x: disabled
binding user: disabled
recovery interval:0(s)
Alarm info: 0
Binding info: 1
--------------------------------------------------------
DHCP Snooping Binding built at MON JAN 01 01:37:01 2001
Time Stamp: 978313021
Ref Count: 1
Vlan: 1, Port: Ethernet0/0/15
Client MAC: 000B.CD61.C128
Client IP: 211.68.199.104 255.255.255.0
Gateway: 0.0.0.0
Lease: 4294967295(s)
Flag: 2
Expired Binding: 0
Request Binding: 0
2.2.3.MAC ACL(目前3950-X系列交换机不支持该方式)
配置MAC ACL
Switch(config)#access-list 1101 deny any any untagged-eth2 12 2 0806 20 2 0002 28 4 D344C765
命令解释
1101―― 编号为1100-1199的列表为MAC-IP ACL。也叫ACL-X
Untagged-eth2 ―― 未打标的以太网帧
12 2 ―― 数据包的第12个字节开始,向后偏移2个字节。(也就是帧类型字段)
0806 ―― 帧类型字段的值。代表ARP。
20 2 ―― ARP数据包中的“类型”字段。
0002 ―― 类型字段的值,代表ARP的应答报文。
28 4 ―― 发送端的IP地址字段。
D344C765 ―― 211.68.199.101的16进制地址表示。
应用ACL
Switch(config)#firewall enable
Switch(config)#interface e 0/0/15
Switch(config-ethernet0/0/15)#mac access-group 1101 in traffic-statistic
配置应用后,可以使ACL去匹配数据包中特定字段的数值。
在交换机支持DHCP Snooping的时候建议使用DHCP Snooping,MAC-ACL方式还需要计算IP地址的十六进制的表示方法。
2.3.
防网段扫描Anti-ArpScan
switch(Config)#anti-arpscan enable
//使能Anti-arpscan
switch(Config)#anti-arpscan port-based threshold 10
//设置每个端口每秒的ARP报文上限
switch(Config)#anti-arpscan ip-based threshold 10
//设置每个IP每秒的ARP报文上限
switch(Config)#anti-arpscan recovery enable
//开启防网段扫描自动恢复功能
switch(Config)#anti-arpscan recovery time 90
//设置自动恢复的时间
switch(Config)#interface ethernet 0/0/1
switch(Config-Ethernet0/0/1)#anti-arpscan trust port
//设置端口为信任端口,另有一个为Supertrust。区别是trust端口不受端口门限值的限定,而Supertrust则端口和IP均无效。
switch(Config-Ethernet0/0/1)#
switch#
switch#
switch#show anti-arpscan prohibited port
No prohibited port.
//按端口方式显示被Down掉的端口
switch#show anti-arpscan prohibited ip
No prohibited IP.
//按IP方式显示被Down掉的端口