测试平台:N系列交换机,firmware v6.1.2.4
一、DHCP Snooping
DHCP监听将交换机端口划分为两类:
信任端口(Trust):连接合法DHCP服务器的端口或者连接汇聚交换机的上行端口; 非信任端口(Untrusted):通常为连接终端设备的端口,如PC,服务器,网络打印机等
通过开启DHCP监听特性,交换机限制用户端口(非信任端口)只能够发送DHCP请求,丢弃来自用户端口的所有其它DHCP报文,例如DHCP Offer报文等。而且,并非所有来自用户端口的DHCP请求都被允许通过,交换机还会比较DHCP请求报文的(报文头里的)源MAC地址和(报文内容里的)DHCP客户机的硬件地址(即CHADDR字段),只有这两者相同的请求报文才会被转发,否则将被丢弃,这样就防止了DHCP耗竭攻击。信任端口可以接收并转发所有的DHCP报文。通过只将交换机连接到合法DHCP服务器的端口设置为信任端口,其他端口设置为非信任端口,就可以防止用户伪造DHCP服务器来攻击网络。DHCP监听特性还可以对端口的DHCP报文进行限速,超过速率的接口将被关闭。通过在每个非信任端口下进行限速,将可以阻止合法DHCP请求报文的广播攻击。DHCP监听还有一个非常重要的作用就是建立一张DHCP监听绑定表,这张表一是通过DHCP Request或Ack包中的IP和MAC地址生成的,二是可以手工指定。一旦一个连接在非信任端口的客户端获得一个合法的DHCP Offer,交换机就会自动在DHCP监听绑定表里添加一个绑定条目,内容包括了该非信任端口的客户端的MAC地址、IP地址、租用期、VlanID、接口等信息。 说明:
①非信任端口只允许客户端的DHCP请求报文通过,这里只是相对于DHCP报文来说的。其他非DHCP报文还是可以正
常转发的。这就表示客户端可以静态指定IP地址的方式通过非信任端口接入网络。由于静态客户端不会发送
DHCP报文,所以DHCP监听绑定表里也不会有该静态客户端的记录。信任端口的客户端信息不会被记录到DHCP监
听绑定表里。如果有一客户端连接到了一个信任端口,即使它是通过正常的DHCP方式获得IP地址,DHCP监听绑
定表里也不有该客户端的记录。如果要求客户端只能以动态获得IP的方式接入网络,则必须借助于IPSG和DAI 技术。
②交换机为了获得高速转发,通常只检查报文的二层帧头,获得目标MAC地址后直接转发,不会去检查报文的内
容。而DHCP监听本质上就是开启交换机对DHCP报文的内容部分的检查,DHCP报文不再只是被检查帧头了。
③DHCP监听绑定表不仅用于防御DHCP攻击,还为后续的DAI和IPSG技术提供动态数据库支持。 ④DHCP监听绑定表里的Lease列就是每个客户端对应的DHCP租约时间。当客户端离开网络后,该条目并不会立即
消失。当客户端再次接入网络,重新发起DHCP请求以后,相应的条目内容就会被更新。
DHCP server 配置: DHCPSERVER# configure
DHCPSERVER(config)# service dhcp
DHCPSERVER(config)# ip dhcp pool TEST
DHCPSERVER(config-dhcp-pool)# network 10.1.1.0 255.255.255.0 DHCPSERVER(config-dhcp-pool)# default-router 10.1.1.1 DHCPSERVER(config-dhcp-pool)# exit DHCPSERVER(config)#int gi1/0/1
DHCPSERVER(config-if)#switchport mode trunk
DHCP snooping 配置: console#configure
console(config)#vlan 100 console(config-vlan100)#exit
console(config)#ip dhcp snooping
console(config)#ip dhcp snooping vlan 100
console(config)#ip dhcp snooping verify mac-address
console(config)#ip dhcp snooping database tftp://10.1.1.7/database.txt console(config)#ip dhcp snooping database write-delay 15
console(config)#interface vlan 100
console(config-if-vlan100)#ip address 10.1.1.254 /24 console(config-if-vlan100)#exit
console(config)#interface gi1/0/1
console(config-if-Gi1/0/1)#switchport mode trunk console(config-if-Gi1/0/1)#ip dhcp snooping trust
console(config-if-Gi1/0/1)#ip dhcp snooping log-invalid console(config-if-Gi1/0/1)#exit
console(config)#interface range gi1/0/4,gi1/0/5 console(config-if)#switchport access vlan 100
console(config-if)#ip dhcp snooping limit rate 100 burst interval 1 console(config-if)#exit
console#show ip dhcp snooping DHCP snooping is Enabled
DHCP snooping source MAC verification is enabled DHCP snooping is enabled on the following VLANs: 100
Interface Trusted Log Invalid Pkts ----------- ---------- ---------------- Gi1/0/1 Yes Yes Gi1/0/4 No No Gi1/0/5 No No
二、IP Source Guard(IPSG)
目的是用 来防止用户端自己乱改 IP,由DHCP SERVER分配给PC机的地址才可正常访问网络,确保接入源的安全性。
启用IP源保护后,如果没有定义IP DHCP Snooping Binding 列表或 IP verify binding,客户端只能通过DHCP来获取IP才能使用; 如果 定义了静态 DHCP Snooping Binding 列表或 IP verify binding表,则需要客户端设定指定的绑定的IP地址,否则都不通。
console(config)#interface Gi1/0/5
console(config)#ip verify source port-security
PC端使用DHCP方式获得ip地址时,可以正常访问网络
在交换机上查看DHCP snooping binding表
如果在PC端手动指定IP地址后,PC端无法ping通网关,交换机上也无法ping通PC了。
交换机上DHCP snooping binding表中对应的条目也消失
使用IPSG静态绑定ip地址、mac地址、端口后,PC端静态指定ip地址也是可以正常访问网络的。
console(config)#ip verify binding F01F.AF37.963E vlan 100 10.1.1.7 interface gigabitethernet 1/0/5
查看DHCP snooping bindbing表没有该条目
在ip source binding中是静态绑定方式
PC端依然指定固定ip地址,不通过dhcp'方式获取,删除IPSG静态绑定,测试DHCP snooping 静态绑定,发现同样可以正常访问网络,但DHCP snooping binding表中存在相应条目。 console(config)#no ip verify binding F01F.AF37.963E vlan 100 10.1.1.7 interface Gi1/0/5 console(config)#end
console#ping 10.1.1.7 ------删除IPSG静态绑定后,互ping已不通 Pinging 10.1.1.7 with 0 bytes of data:
----10.1.1.7 PING statistics----
4 packets transmitted, 0 packets received, 100% packet loss round-trip (msec) min/avg/max = <10/<10/<10
console#
console(config)#ip dhcp snooping binding F01F.AF37.963E vlan 100 10.1.1.7 interface gi1/0/5 ----静态DHCP Snooping绑定 console(config)#end
console#show ip dhcp snooping binding Total number of bindings: 2
MAC Address IP Address VLAN Interface Type Lease (Secs) ----------------- --------------- ---- ----------- ------- ------------
D067.E582.656A 10.1.1.5 100 Gi1/0/4 DYNAMIC 83058 F01F.AF37.963E 10.1.1.7 100 Gi1/0/5 STATIC
console#show ip source binding
MAC Address IP Address Type VLAN Interface ----------------- --------------- ------------- ----- -------------
D067.E582.656A 10.1.1.5 dhcp-snooping 100 Gi1/0/4 F01F.AF37.963E 10.1.1.7 dhcp-snooping 100 Gi1/0/5
console#
console#ping 10.1.1.7
Pinging 10.1.1.7 with 0 bytes of data:
Reply From 10.1.1.7: icmp_seq = 0. time <10 msec. Reply From 10.1.1.7: icmp_seq = 1. time <10 msec. Reply From 10.1.1.7: icmp_seq = 2. time <10 msec. Reply From 10.1.1.7: icmp_seq = 3. time <10 msec.
----10.1.1.7 PING statistics----
4 packets transmitted, 4 packets received, 0% packet loss round-trip (msec) min/avg/max = <10/<10/<10
console(config)#no ip dhcp snooping binding F01F.AF37.963E console(config)#end console#ping 10.1.1.7
Pinging 10.1.1.7 with 0 bytes of data:
----10.1.1.7 PING statistics----
4 packets transmitted, 0 packets received, 100% packet loss round-trip (msec) min/avg/max = <10/<10/<10
console#
三、Dynamic ARP Inspection (DAI)
ARP探测就是对经过设备的所有ARP报文进行检查,DHCP Snooping需要提供数据库信息供ARP探测使用,在开启DAI功能的设备上,当收到ARP报文时,DAI模块就根据报文查询DHCP
snooping的绑定数据库,只有当收到的ARP报文数据字段的源MAC、源IP和端口信息都匹配时才认为收到的ARP报文是合法的,才进行相关的学习和转发操作,否则丢弃该报文。
console(config)#ip arp inspection vlan 100
console(config)#ip arp inspection vlan 100 logging
console(config)#ip arp inspection validate src-mac dst-mac ip
console#configure t
console(config)#interface gi1/0/1
console(config-if-Gi1/0/1)#ip arp inspection trust 上联口需要配置为DAI trust模式 console(config-if-Gi1/0/1)#exit
console(config)#interface gi1/0/5
console(config-if-Gi1/0/5)#ip arp inspection limit rate 2 burst interval 1
接PC端依然为默认的DAI untrust模式,并限制ARP请求的速率。如果此值配置的过小,很容易将端口置为D-Down状态,需要shutdown后no shutdown端口才可以恢复。 console(config-if-Gi1/0/5)#end
console#show interfaces status
Port Description Vlan Duplex Speed Neg Link Flow Ctrl State Status
--------- ------------------------- ----- ------ ------- ---- ------ --------- Gi1/0/1 trnk Full 1000 Auto Up Active
Gi1/0/2 100 N/A Unknown Auto Down Inactive Gi1/0/3 100 N/A Unknown Auto Down Inactive Gi1/0/4 100 Full 1000 Auto Up Active
Gi1/0/5 100 N/A Unknown Auto D-Down Inactive Gi1/0/6 100 N/A Unknown Auto Down Inactive Gi1/0/7 1 N/A Unknown Auto Down Inactive
console(config)#interface gi1/0/5
console(config-if-Gi1/0/5)#ip arp inspection limit rate 100 burst interval 1 console(config-if-Gi1/0/5)#shutdown console(config-if-Gi1/0/5)#no shutdown
console#show ip arp inspection statistics
VLAN Forwarded Dropped ---- ------------ --------- 100 55 283
如果此时在PC端手动指定IP地址,PC将无法正常访问网络,交换机上将出现以下提示。
<187> Mar 13 14:19:15 10.1.1.254-1 DAI[118585492]: dai_util.c(656) 1022 %% DAI dropped ARP frame rcvd on i/f Gi1/0/5 in vlan 100, due to - DHCP SNOOP DB MATCH FAILURE
<188> Mar 13 14:19:15 10.1.1.254-1 DAI[118585492]: dai_util.c(550) 1023 %% DAI: Ethernet header- dest FF:FF:FF:FF:FF:FF, src F0:1F:AF:37:96:3E, type/len 0x8100.
<188> Mar 13 14:19:15 10.1.1.254-1 DAI[118585492]: dai_util.c(600) 1024 %% DAI: ARP PKT- op Request, sender mac F0:1F:AF:37:96:3E, sender ip 10.1.1.7, target mac 00:00:00:00:00:00, target ip 10.1.1.1
交换机二层安全一般也需要配置端口安全,配置示例如下。 console(config)#interface gi1/0/5
console(config-if-Gi1/0/5)#port security max 1 console(config-if-Gi1/0/5)#port security discard console(config-if-Gi1/0/5)#port security console(config-if-Gi1/0/5)#
因篇幅问题不能全部显示,请点此查看更多更全内容