基于ISC DHCP的简单准入开源方案
实现所需要的组件:
- LINUX操作系统;ISC-DHCP-SERVER软件
- 支持DHCP Snooping、防ARP中间人攻击的接入交换机
实现简单准入的原理:
ISC-DHCP-Server的配置文件dhcpd.conf里面,如果把range语句去掉,就可以不随机分配IP地址,而ISC-DHCP-Server支持IP-MAC绑定功能。所以可以实现对登记过的MAC地址分配IP地址。对于没有登记过的MAC地址不能分配不到IP地址。同时,交换机开启DHCP snooping和ARP防攻击的功能后,终端设置静态IP后也不能入网。因为终端设置了静态IP后,交换机的dhcp snooping绑定表没有该记录。
实现流程:
在公司的OA等系统上增加MAC地址登记的功能。然后流程自动转到进行IP-MAC绑定的管理员。
该准入的破解方法:抓包,找到经过登记的MAC地址,然后把自己网卡的MAC设置成该地址。
ISC-DHCP-Server配置举例:
subnet 192.168.0.0 netmask 255.255.255.0 {
#range 192.168.0.100 192.168.0.200; #自动分配的地址池范围
option domain-name-servers 192.168.0.1,192.168.20.2; #dns服务器
#option domain-name "example.com";
option subnet-mask 255.255.255.0; #子网掩码
option routers 192.168.0.1; #网关
option broadcast-address 192.168.0.255; #该子网的广播地址
default-lease-time 5760; #客户端默认的租约时间
max-lease-time 8640; #客户端租约的最大时间
}
host zhangsan {
hardware ethernet 00:01:11:eb:d5:66;
fixed-address 192.168.0.192;
}
华为交换机配置
背景信息
DHCP Snooping设备在收到DHCP用户发出的DHCP Release报文时将会删除该用户对应的绑定表项,但若用户发生了异常下线而无法发出DHCP Release报文时,DHCP Snooping设备将不能够及时的删除该DHCP用户对应的绑定表。
使能ARP与DHCP Snooping的联动功能,如果DHCP Snooping表项中的IP地址对应的ARP表项达到老化时间,则DHCP Snooping设备会对该IP地址进行ARP探测,如果在规定的探测次数内探测不到用户,设备将删除用户对应的ARP表项。之后,设备将会再次按规定的探测次数对该IP地址进行ARP探测,如果最后仍不能够探测到用户,则设备将会删除该用户对应的绑定表项。
只有设备作为DHCP Relay时,才支持ARP与DHCP Snooping的联动功能。
操作步骤
-
执行命令system-view,进入系统视图。
-
在接口视图或者vlan视图下,执行命令dhcp snooping user-bind arp-detect enable,使能ARP与DHCP Snooping的联动功能。缺省情况下,未使能ARP与DHCP Snooping的联动功能。
-
arp安全检测与dhcp-snooping联动配置举例:
dhcp enable dhcp snooping enable interface GigabitEthernet0/0/1 arp anti-attack check user-bind enable dhcp snooping enable
H3C交换机配置
H3C S3110的IP Source Grande与DHCP Snooping配合绑定
一、概述
通过在设备接入用户侧的端口上启用IP Source Guard功能,可以对端口收到的报文进行过滤控制,防止非法报文通过端口,从而限制了对网络资源的非法使用(比如非法主机仿冒合法用户IP接入网络),提高了端口的安全性。
IP Source Guard在端口上用于过滤报文的特征项包括:源IP地址、源MAC地址。这些特征项可单独或组合起来与端口进行绑定,形成绑定表项,具体包括:IP、MAC、IP+MAC、IP+VLAN、MAC+VLAN和IP+MAC+VLAN。
二、组网具体应用需求如下:
Host通过DHCP server获取IP地址。
Device上使能DHCP snooping功能,记录Host的DHCP snooping表项。
在端口Ethernet1/0/1上启用IPv4端口绑定功能,利用记录的DHCP snooping表项过滤端口转发的报文,仅允许通过DHCP server动态获取IP地址的客户端可以接入网络。
三、配置步骤
(1)配置DHCP snooping
# 开启DHCP snooping功能。
<Device> system-view
[Device] dhcp-snooping
# 设置与DHCP server相连的端口Ethernet1/0/2为信任端口。其他端口默认为不信任端口
[Device] interface ethernet 1/0/2
[Device-Ethernet1/0/2] dhcp-snooping trust
[Device-Ethernet1/0/2] quit
(2)配置IPv4端口绑定功能
# 配置端口Ethernet1/0/1的IPv4端口绑定功能,绑定源IP地址和MAC地址。
[Device] interface ethernet 1/0/1
[Device-Ethernet1/0/1] ip verify source ip-address mac-address
[Device-Ethernet1/0/1] quit
四、验证配置结果(如果Ethernet1/0/1端口Host主机自己手动设置IP地址,是无法正常上网)
显示端口Ethernet1/0/1上的绑定表项信息。
[Device]display ip source binding
Total entries found: 1
MAC Address IP Address VLAN Interface Type
9829-a60a-7760 192.168.3.55 3 Eth1/0/1 DHCP-SNP
显示DHCP snooping已有的动态表项,查看其是否和端口Ethernet1/0/1获取的动态表项一致。
[Device]display dhcp-snooping
DHCP Snooping is enabled.
The client binding table for all untrusted ports.
Type : D--Dynamic , S--Static , R--Recovering
Type IP Address MAC Address Lease VLAN SVLAN Interface
==== =============== ============== ============ ==== ===== =================
D 192.168.3.55 9829-a60a-7760 172075 3 N/A Eth1/0/1
--- 1 dhcp-snooping item(s) found ---
从以上显示信息可以看出,端口Ethernet1/0/1在配置IPv4端口绑定功能之后根据获取的DHCP snooping表项产生了端口绑定表项。
上面实现了交换机端口必须是通过DHCP服务器获取到的IP地址的主机才能上网,防止客户端自己手动输入静态IP,导致DHCP服务器异常,也防止非法接入类似傻瓜路由器设备,因为傻瓜路由器一般都会带有HDCP服务,避免客户端获取到傻瓜路由器的IP有无法上网。
五、更进一步实现接入用户的控制,可以在此基础上加入动态MAC地址学习数量并绑定端口
- 操作步骤
[Device]port-security enable #使能端口安全 [Device]interface Ethernet 1/0/1 [Device-Ethernet1/0/1]port-security max-mac-count 1 #最多允许1个MAC地址 [Device-Ethernet1/0/1]port-security port-mode autolearn #端口安全模式 [Device-Ethernet1/0/1]port-security intrusion-mode disableport #入侵检测,并执行对应操作
- 验证配置结果
[Device]display port-security Equipment port-security is enabled Intrusion trap is enabled AutoLearn aging time is 0 minutes Disableport Timeout: 20s OUI value: Ethernet1/0/1 is link-up Port mode is secure NeedToKnow mode is disabled Intrusion Protection mode is DisablePort Max MAC address number is 1 Stored MAC address number is 1 Authorization is permitted Security MAC address learning mode is sticky Security MAC address aging type is absolute [Device]display current-configuration interface Ethernet 1/0/1 # interface Ethernet1/0/1 port access vlan 3 port-security max-mac-count 1 port-security port-mode autolearn port-security intrusion-mode disableport port-security mac-address security sticky 9829-a60a-7760 vlan 3 ip verify source ip-address mac-address
当前Ethernet 1/0/1只允许一个MAC地址,如果检测到第二个MAC接入,就会触发入侵检测,端口自动down,
告警如下:
#Feb 15 14:59:04:121 2019 SW36 PORTSEC/4/VIOLATION: Trap1.3.6.1.4.1.25506.2.26.1.3.2<hh3cSecureViolation>
An intrusion occurs!
IfIndex: 18743296
Port: 18743296
MAC Addr: 98:29:A6:0A:77:06
VLAN ID: 3
IfAdminStatus: 2
%Feb 15 14:59:04:415 2019 SW36 PORTSEC/5/PORTSEC_VIOLATION: -IfName=Ethernet1/0/1-MACAddr=98:29:A6:0A:77:06-VlanId=-3-IfStatus=Down; Intrusion detected.
查看Eth1/0/1端口down原因,可以看到是触发了端口安全的入侵检测。Eth1/0/2是正常down状态
[SW36]display interface brief down
The brief information of interface(s) under bridge mode:
Link: ADM - administratively down; Stby - standby
Interface Link Cause
Eth1/0/1 DOWN Port Security Disabled
Eth1/0/2 DOWN Not connected
h3c交换机ARP相关
H3C设备上的ARP安全特性确实可以与DHCP Snooping绑定表结合使用,以增强网络安全。在H3C设备上,您可以使用以下命令来配置与DHCP Snooping绑定表相关的ARP检查功能:
-
接入交换机全局开启DHCP Snooping功能:
dhcp snooping enable
-
配置接口信任状态,通常指向DHCP服务器的端口会被设置为信任端口:
interface [interface-type interface-number] dhcp snooping trust
-
开启ARP检查功能,这可以确保ARP报文的合法性,并且与DHCP Snooping绑定表进行校验:
在vlan视图下 vlan 75 description 3F_1-1-1_512028sc arp detection enable arp check enable #命令用来使能动态ARP表项的检查功能,缺省情况下,使能动态ARP表项的检查功能。 arp detection validate src-mac ip
dst-mac:检查ARP应答报文中的目的MAC地址,是否为全0或者全1,是否和以太网报文头中的目的MAC地址一致。全0、全1、不一致的报文都是无效的,无效的报文需要被丢弃。
ip:检查ARP报文源IP和目的IP地址,全1或者组播IP地址都是不合法的,需要丢弃。对于ARP应答报文,源IP和目的IP地址都进行检查;对于ARP请求报文,只检查源IP地址。
src-mac:检查ARP报文中的源MAC地址和以太网报文头中的源MAC地址是否一致,一致认为有效,否则丢弃。
在H3C设备上,arp detection validate src-mac ip
命令将启用对ARP报文的源MAC地址和IP地址的检查,类似于华为设备上的arp anti-attack check user-bind enable
命令。尽管H3C的命令没有直接提到“用户绑定”或“DHCP Snooping绑定表”,但当DHCP Snooping功能开启并且接口上的DHCP Snooping记录功能被激活后,ARP检查功能就会利用这些绑定表项来验证ARP报文。
此外,H3C设备还提供了其他与DHCP Snooping相关的命令,例如设置DHCP Snooping表项的固化功能,这允许设备在重启后恢复DHCP Snooping表项,确保安全策略的持续性。相关的命令如下:
-
指定存储DHCP Snooping表项的文件名称:
dhcp snooping binding database filename [filename | url [username [password {cipher | simple} string]]]
-
立即更新DHCP Snooping表项到指定文件:
dhcp snooping binding database update now
-
设置刷新DHCP Snooping表项存储文件的延迟时间:
dhcp snooping binding database update interval [interval]
这些配置确保了即使在设备重启后,DHCP Snooping的绑定关系也能被保留和恢复,从而维持ARP安全检查的可靠性。
转载自:https://www.h3c.com/cn/d_201812/1136453_30005_0.htm#_Toc532465068
1.7 配置ARP Detection功能
1.7.1 ARP Detection功能简介
ARP Detection功能主要应用于接入设备上,对于合法用户的ARP报文进行正常转发,否则直接丢弃,从而防止仿冒用户、仿冒网关的攻击。
ARP Detection包含三个功能:用户合法性检查、ARP报文有效性检查、ARP报文强制转发。
1. 用户合法性检查
对于ARP信任端口,不进行用户合法性检查;对于ARP非信任端口,需要进行用户合法性检查,以防止仿冒用户的攻击。
用户合法性检查是根据ARP报文中源IP地址和源MAC地址检查用户是否是所属VLAN所在端口上的合法用户,包括基于配置规则的检查、基于IP Source Guard静态绑定表项的检查、基于DHCP Snooping安全表项的检查、基于802.1X安全表项的检查和OUI MAC地址的检查。
(1) 首先进行基于配置规则的检查。如果在配置的规则中找到与报文匹配的规则,则按照规则对ARP报文进行处理。如果在配置的规则中没有找到与报文匹配的规则,继续进行基于IP Source Guard静态绑定表项的检查、基于DHCP Snooping安全表项的检查、基于802.1X安全表项的检查和OUI MAC地址的检查。
(2) 在基于配置规则的检查之后,如果未匹配,则进行基于IP Source Guard静态绑定表项检查。如果找到了对应源IP地址和源MAC地址的静态绑定表项,认为该ARP报文合法,进行转发。如果找到了对应源IP地址的静态绑定表项但源MAC地址不符,认为该ARP报文非法,进行丢弃。如果没有找到对应源IP地址的静态绑定表项,继续进行DHCP Snooping安全表项的检查、802.1X安全表项的检查和OUI MAC地址的检查。
(3) 在基于IP Source Guard静态绑定表项检查之后,如果未匹配,则进行基于DHCP Snooping安全表项的检查、802.1X安全表项的检查和OUI MAC地址的检查,只要符合三者中任何一个,就认为该ARP报文合法,进行转发。其中,OUI MAC地址检查指的是,只要ARP报文的源MAC地址为OUI MAC地址,并且使能了Voice VLAN功能,就认为是合法报文,检查通过。
(4) 如果所有检查都没有找到匹配项,则认为是非法报文,直接丢弃。
· IP Source Guard静态绑定表项通过ip source binding命令生成,详细介绍请参见“安全配置指导”中的“IP Source Guard”。
· DHCP Snooping安全表项通过DHCP Snooping功能自动生成,详细介绍请参见“三层技术-IP业务配置指导”中的“DHCP”。
· 802.1X安全表项通过802.1X功能产生,802.1X用户需要使用可以将IP地址上传的客户端,用户通过了802.1X认证并且将IP地址上传至使能ARP Detection的设备后,设备自动生成可用于ARP Detection的用户合法性检查的802.1X安全表项。802.1X的详细介绍请参见“安全配置指导”中的“802.1X”。
2. ARP报文有效性检查
对于ARP信任端口,不进行报文有效性检查;对于ARP非信任端口,需要根据配置对MAC地址和IP地址不合法的报文进行过滤。可以选择配置源MAC地址、目的MAC地址或IP地址检查模式。
· 对于源MAC地址的检查模式,会检查ARP报文中的源MAC地址和以太网报文头中的源MAC地址是否一致,一致则认为有效,否则丢弃报文;
· 对于目的MAC地址的检查模式(只针对ARP应答报文),会检查ARP应答报文中的目的MAC地址是否为全0或者全1,是否和以太网报文头中的目的MAC地址一致。全0、全1、不一致的报文都是无效的,无效的报文需要被丢弃;
· 对于IP地址检查模式,会检查ARP报文中的源IP和目的IP地址,全0、全1、或者组播IP地址都是不合法的,需要丢弃。对于ARP应答报文,源IP和目的IP地址都进行检查;对于ARP请求报文,只检查源IP地址。
3. ARP报文强制转发
对于从ARP信任端口接收到的ARP报文不受此功能影响,按照正常流程进行转发;对于从ARP非信任端口接收到的、已经通过用户合法性检查的ARP报文的处理过程如下:
· 对于ARP请求报文,通过信任端口进行转发;
· 对于ARP应答报文,首先按照报文中的以太网目的MAC地址进行转发,若在MAC地址表中没有查到目的MAC地址对应的表项,则将此ARP应答报文通过信任端口进行转发。
1.7.2 配置ARP Detection功能
如果既配置了报文有效性检查功能,又配置了用户合法性检查功能,那么先进行报文有效性检查,然后进行用户合法性检查。
1. 配置用户合法性检查功能
表1-7 配置用户合法性检查功能
操作 | 命令 | 说明 |
---|---|---|
进入系统视图 | system-view | - |
配置用户合法性检查的规则 | arp detection **id-number { permit | deny } ip { any | ip-address [ ip-address-mask ] } mac { any | mac-address [ mac-address-mask ] } [ vlan **vlan-id ] | 可选缺省情况下,没有配置用户合法性检查的规则 |
进入VLAN视图 | **vlan **vlan-id | - |
使能ARP Detection功能 | arp detection enable | 必选缺省情况下,ARP Detection功能处于关闭状态。即不进行用户合法性检查 |
退回系统视图 | quit | - |
进入二层以太网端口或者二层聚合接口视图 | **interface **interface-type interface-number | - |
将不需要进行用户合法性检查的端口配置为ARP信任端口 | arp detection trust | 可选缺省情况下,端口为ARP非信任端口 |
· 配置用户合法性检查功能时,必须至少配置用户合法性检查的规则、IP Source Guard静态绑定表项、DHCP Snooping功能、802.1X功能四者之一,否则所有从ARP非信任端口收到的ARP报文都将被丢弃(使能了Voice VLAN功能的情况下,源MAC地址为OUI MAC地址的ARP报文不会被丢弃)。
· 在配置IP Source Guard静态绑定表项时,必须指定VLAN参数,否则ARP报文将无法通过基于IP Source Guard静态绑定表项的检查。
2. 配置ARP报文有效性检查功能
表1-8 配置ARP报文有效性检查功能
操作 | 命令 | 说明 |
---|---|---|
进入系统视图 | system-view | - |
进入VLAN视图 | **vlan **vlan-id | - |
使能ARP Detection功能 | arp detection enable | 必选缺省情况下,ARP Detection功能处于关闭状态 |
退回系统视图 | quit | - |
使能ARP报文有效性检查功能 | arp detection validate { dst-mac | ip | src-mac } * | 必选缺省情况下, ARP报文有效性检查功能处于关闭状态 |
进入二层以太网端口或者二层聚合接口视图 | **interface **interface-type interface-number | - |
将不需要进行ARP报文有效性检查的端口配置为ARP信任端口 | arp detection trust | 可选缺省情况下,端口为ARP非信任端口 |
3. 配置ARP报文强制转发功能
进行下面的配置之前,需要保证已经配置了用户合法性检查功能。
表1-9 配置ARP报文强制转发功能
操作 | 命令 | 说明 |
---|---|---|
进入系统视图 | system-view | - |
进入VLAN视图 | **vlan **vlan-id | - |
使能ARP报文强制转发功能 | arp restricted-forwarding enable | 必选缺省情况下,ARP报文强制转发功能处于关闭状态 |
1.7.3 ARP Detection显示和维护
在完成上述配置后,在任意视图下执行display命令可以显示配置后ARP Detection的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,用户可以执行reset命令清除ARP Detection的统计信息。
表1-10 ARP Detection显示和维护
操作 | 命令 |
---|---|
显示使能了ARP Detection功能的VLAN | display arp detection [ | { begin | exclude | include } regular-expression ] |
显示ARP Detection功能报文检查的丢弃计数的统计信息 | display arp detection statistics [ interface interface-type interface-number ] [ | { begin | exclude | include } regular-expression ] |
清除ARP Detection的统计信息 | reset arp detection statistics [ **interface **interface-type interface-number ] |
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。