21-ND攻击防御配置
本章节下载: 21-ND攻击防御配置 (232.59 KB)
IPv6 ND(Neighbor Discovery,邻居发现)协议使用五种类型的ICMPv6消息,实现下面五种功能:地址解析、验证邻居是否可达、重复地址检测、路由器发现/前缀发现及地址自动配置和重定向。
ND协议使用的五种ICMPv6消息如下:
· 邻居请求消息NS(Neighbor Solicitation)
· 邻居通告消息NA(Neighbor Advertisement)
· 路由器请求消息RS(Router Solicitation)
· 路由器通告消息RA(Router Advertisement)
· 重定向消息RR(Redirect)
关于ND协议五种功能的详细介绍,请参见“三层技术-IP业务配置指导”中的“IPv6基础”。
ND协议功能强大,但是却没有任何安全机制,容易被攻击发起者利用。
如图1-1所示,当设备Switch作为二层接入设备时,攻击者Host B可以仿冒其他用户、仿冒网关发送伪造的ND报文,对网络进行攻击:
· 如果攻击者仿冒其他用户的IP发送NS/NA/RS报文,将会改写网关或者其他用户的ND表项,导致被仿冒用户的报文错误的发送到攻击者的PC上。
· 如果攻击者仿冒网关发送RA报文,会导致其它用户的IPv6配置参数错误和ND表项被改写。
图1-1 ND攻击示意图
伪造的ND报文具有如下特点:
· 伪造的ND报文中源MAC地址和以太网数据帧首部中的源MAC地址不一致。
· 伪造的ND报文中源IPv6地址和源MAC地址的映射关系不是合法用户真实的映射关系。
根据上述攻击报文的特点,设备开发了多种功能对ND攻击进行检测,可以有效地防范ND攻击带来的危害。
ND协议报文源MAC地址一致性检查功能主要应用于网关设备上,防御ND报文中的源MAC地址和以太网数据帧首部中的源MAC地址不同的ND攻击。
配置本特性后,网关设备会对接收的ND协议报文进行检查。如果ND报文中的源MAC地址和以太网数据帧首部中的源MAC地址不同,则认为是攻击报文,将其丢弃;否则,继续解析报文。
若开启ND日志信息功能,当用户ND报文中的源MAC地址和以太网数据帧首部中的源MAC地址不同时,会有相关的日志信息输出。设备生成的ND日志信息会交给信息中心模块处理,信息中心模块的配置将决定日志信息的发送规则和发送方向。关于信息中心的详细描述请参见“网络管理和监控配置指导”中的“信息中心”。为了防止设备输出过多的ND日志信息,一般情况下建议不要打开此功能。
表1-1 配置ND协议报文源MAC地址一致性检查功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置ND协议报文源MAC地址一致性检查功能 |
ipv6 nd mac-check enable |
缺省情况下,ND协议报文源MAC地址一致性检查功能处于关闭状态 |
(可选)配置ND日志信息功能 |
缺省情况下,ND日志信息功能处于关闭状态 |
ND Detection功能主要应用于接入设备上,检查用户的合法性。对于不合法用户的ND报文直接丢弃,从而防止仿冒用户、仿冒网关的攻击。
ND Detection功能将接入设备上的端口分为两种:ND信任端口、ND非信任端口。
· 对于ND信任端口,不进行用户合法性检查;
· 对于ND非信任端口,如果收到RA和RR消息,则认为是非法报文直接丢弃,如果收到其它类型的ND报文,则需要进行用户合法性检查,以防止仿冒用户的攻击。
用户合法性检查是根据ND报文中源IPv6地址和源MAC地址,检查用户是否是报文收到端口所属VLAN上的合法用户,包括基于IP Source Guard的IPv6静态绑定表项的检查、基于ND Snooping表项的检查和基于DHCPv6 Snooping安全表项的检查。只要能从中查询到用户匹配的表项,就认为该ND报文合法,进行转发。如果没有匹配的表项,则认为是非法报文,直接丢弃。
· IP Source Guard的IPv6静态绑定表项通过ipv6 source binding命令生成,详细介绍请参见“安全配置指导”中的“IP Source Guard”。
· DHCPv6 Snooping安全表项通过DHCPv6 Snooping功能自动生成,详细介绍请参见“三层技术-IP业务配置指导”中的“DHCPv6 Snooping”。
· ND Snooping安全表项通过ND Snooping功能自动生成,详细介绍请参见“三层技术-IP业务配置指导”中的“IPv6基础”。
表1-2 配置ND Detection功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
使能ND Detection功能 |
ipv6 nd detection enable |
缺省情况下,ND Detection功能处于关闭状态。即不进行用户合法性检查 |
退回系统视图 |
quit |
- |
interface interface-type interface-number |
- |
|
(可选)将不需要进行用户合法性检查的端口配置为ND信任端口 |
ipv6 nd detection trust |
缺省情况下,端口为ND非信任端口 |
· 配置ND Detection功能时,必须至少配置IPv6 Source Guard静态绑定表项、DHCPv6 Snooping功能和ND Snooping功能三者之一,否则所有从ND非信任端口收到的ND报文都将被丢弃。
· 在配置IPv6 Source Guard静态绑定表项时,必须指定VLAN参数,否则ND报文将无法通过基于IPv6 Source Guard静态绑定表项的检查。
在完成上述配置后,在任意视图下执行display命令可以显示配置ND Detection后的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,用户可以执行reset命令清除ND Detection的统计信息。
表1-3 ND Detection显示和维护
命令 |
|
显示ND Detection进行用户合法性检查时丢弃报文的统计信息 |
display ipv6 nd detection statistics [ interface interface-type interface-number ] |
清除ND Detection的统计信息 |
reset ipv6 nd detection statistics [ interface interface-type interface-number ] |
用户Host A和Host B通过Switch B接入网关Switch A。在Switch B上启用ND Detection功能对用户的合法性进行检查,保证合法用户的ND报文可以被正常转发,非法用户的ND报文被丢弃。
图1-2 配置ND Detection组网图
# 创建VLAN 10。
<SwitchA> system-view
[SwitchA] vlan 10
[SwitchA-vlan10] quit
# 配置端口GigabitEthernet1/0/3允许VLAN 10的报文通过。
[SwitchA] interface gigabitethernet 1/0/3
[SwitchA-GigabitEthernet1/0/3] port link-type trunk
[SwitchA-GigabitEthernet1/0/3] port trunk permit vlan 10
[SwitchA-GigabitEthernet1/0/3] quit
# 配置VLAN接口10的IPv6地址。
[SwitchA] interface vlan-interface 10
[SwitchA-Vlan-interface10] ipv6 address 10::1/64
[SwitchA-Vlan-interface10] quit
(2) 配置Switch B
# 创建VLAN 10。
[SwitchB] vlan 10
[SwitchB-vlan10] quit
# 配置端口GigabitEthernet1/0/1~GigabitEthernet1/0/3允许VLAN 10的报文通过。
[SwitchB] interface gigabitethernet 1/0/1
[SwitchB-GigabitEthernet1/0/1] port link-type access
[SwitchB-GigabitEthernet1/0/1] port access vlan 10
[SwitchB-GigabitEthernet1/0/1] quit
[SwitchB] interface gigabitethernet 1/0/2
[SwitchB-GigabitEthernet1/0/2] port link-type access
[SwitchB-GigabitEthernet1/0/2] port access vlan 10
[SwitchB-GigabitEthernet1/0/2] quit
[SwitchB] interface gigabitethernet 1/0/3
[SwitchB-GigabitEthernet1/0/3] port link-type trunk
[SwitchB-GigabitEthernet1/0/3] port trunk permit vlan 10
[SwitchB-GigabitEthernet1/0/3] quit
# VLAN 10下使能ND Detection功能。
[SwitchB] vlan 10
[SwitchB-vlan10] ipv6 nd detection enable
# VLAN 10下使能ND Snooping功能。
[SwitchB-vlan10] ipv6 nd snooping enable global
[SwitchB-vlan10] ipv6 nd snooping enable link-local
[SwitchB-vlan10] quit
#将上行端口GigabitEthernet1/0/3配置为ND信任端口,下行端口GigabitEthernet1/0/1和GigabitEthernet1/0/2采用缺省配置,即为ND非信任端口。
[SwitchB] interface gigabitethernet 1/0/3
[SwitchB-GigabitEthernet1/0/3] ipv6 nd detection trust
[SwitchB-GigabitEthernet1/0/3] quit
# 查看接口下ND Detection丢包计数
<SwitchB> display ipv6 nd detection statistics
ND packets dropped by ND detection:
Interface Packets dropped
GE1/0/1 10
GE1/0/2 15
GE1/0/3 0
RA Guard功能用来在二层接入设备上防范路由通告报文(RA报文)欺骗攻击。
二层设备收到目的MAC地址为单播或组播地址的RA报文后, RA Guard功能处理RA报文的方式:
· 如果接收RA报文的端口配置了端口角色,则通过匹配端口角色来选择转发还是丢弃该报文:
¡ 若端口角色为路由器,则直接转发报文;
¡ 若端口角色为用户,则直接丢弃报文。
· 如果接收RA报文的端口没有配置端口角色,则该报文继续匹配该端口属VLAN内的RA Guard策略:
¡ 若RA Guard策略中未配置任何匹配规则,则应用该策略的端口直接转发所有RA报文;
¡ 若RA Guard策略中配置了匹配规则,则RA报文需匹配策略下所有规则成功才会被转发,否则,该报文即被丢弃。
用户可根据端口在组网中的位置来配置端口的角色。如果确认端口连的是用户主机,可以配置成用户角色(host),如果确定端口连的是路由器,可配置成路由器角色(router)。
表1-4 配置端口角色
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
进入二层以太网端口视图/二层聚合端口视图 |
interface interface-type interface-number |
- |
配置端口角色 |
ipv6 nd raguard role { host | router } |
缺省情况下,未配置端口角色 |
对于下面两种情况,可通过配置RA Guard策略对RA报文按规则匹配条件进行过滤:
· 不能判断端口连接的设备/终端类型,即不能通过配置端口角色来选择丢弃还是转发RA报文;
· 确认端口连接的是路由器,但用户不希望直接转发RA报文而是进行过滤。
表1-5 配置RA Guard策略
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
创建RA Guard策略,并进入RA Guard策略视图 |
ipv6 nd raguard policy policy-name |
缺省情况下,设备上不存在任何RA Guard策略 |
(可选)配置ACL匹配规则 |
if-match acl { acl6-number | name acl6-name } |
缺省情况下,未配置ACL匹配规则 |
(可选)配置前缀匹配规则 |
if-match prefix acl { acl6-number | name acl6-name } |
缺省情况下,未配置前缀匹配规则 |
(可选)配置路由最高优先级匹配规则 |
if-match router-preference maximum { high | low | medium } |
缺省情况下,未配置路由最高优先级匹配规则 |
(可选)配置被管理地址标志位匹配规则 |
if-match autoconfig managed-address-flag { off | on } |
缺省情况下,未配置被管理地址标志位匹配规则 |
(可选)配置其他信息配置标志位匹配规则 |
if-match autoconfig other-flag { off | on } |
缺省情况下,未配置其他信息配置标志位匹配规则 |
(可选)配置RA报文内跳数最大值或最小值匹配规则 |
if-match hop-limit { maximum | minimum } limit |
缺省情况下,未配置RA报文跳数最大值或最小值匹配规则 |
退回系统视图 |
quit |
- |
进入VLAN视图 |
vlan vlan-number |
- |
应用RA Guard策略 |
ipv6 nd raguard apply policy [ policy-name ] |
缺省情况下,未启用RA Guard策略 |
开启RA Guard日志功能后,设备在检测到非法RA报文时将生成检测日志,日志内容包括:
· 受到攻击的端口名;
· RA报文的源IP地址;
· 丢弃的RA报文总数。
该命令为避免日志输出过于频繁,间隔1s输出一次。
表1-6 配置RA Guard日志功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启RA Guard日志功能 |
ipv6 nd raguard log enable |
缺省情况下,RA Guard日志功能处于关闭状态 |
在完成上述配置后,在任意视图下执行display命令可以显示RA Guard策略的信息。
表1-7 RA Guard 功能显示和维护
命令 |
|
显示已创建的RA Guard策略信息 |
display ipv6 nd raguard policy [ policy-name ] |
显示RA Guard的报文统计信息 |
display ipv6 nd raguard statistics [ interface interface-type interface-number ] |
清除RA Guard的报文统计信息 |
reset ipv6 nd raguard statistics [ interface interface-type interface-number ] |
如图1-3所示在Switch上通过端口GigabitEthernet1/0/1和GigabitEthernet1/0/2分别连接主机Host A和Device,通过端口GigabitEthernet1/0/3连接Router。端口GigabitEthernet1/0/1、GigabitEthernet1/0/2和GigabitEthernet1/0/3都属于VLAN 10。
为防范路由通告报文(RA报文)欺骗攻击,可在设备上配置RA Guard策略规则,并在VLAN 10下应用该策略规则:
· 端口GigabitEthernet1/0/2连接的是未知设备,用户希望该端口对RA报文按RA Guard策略规则进行匹配过滤;
· 端口GigabitEthernet1/0/1连接的是用户,用户希望该端口完全过滤RA报文将其直接丢弃;
· 端口GigabitEthernet1/0/3连接的是路由器,用户希望该端口完全信任RA报文将其直接转发。
图1-3 RA Guard功能组网图
# 在Switch上创建RA Guard策略policy1,并配置匹配规则。匹配最高路由优先级为高,被管理地址标志位置为1、其他信息配置标志位置为1、跳数最小值为100且最大值为120的RA报文。
<Switch> system-view
[Switch] ipv6 nd raguard policy policy1
[Switch-raguard-policy-policy1] if-match router-preference maximum high
[Switch-raguard-policy-policy1] if-match autoconfig managed-address-flag on
[Switch-raguard-policy-policy1] if-match autoconfig other-flag on
[Switch-raguard-policy-policy1] if-match hop-limit maximum 120
[Switch-raguard-policy-policy1] if-match hop-limit minimum 100
[Switch-raguard-policy-policy1] quit
# 配置端口GigabitEthernet1/01~GigabitEthernet1/0/3允许VLAN 10的报文通过,并在VLAN 10下应用RA Guard策略。
[Switch] interface gigabitethernet 1/0/1
[Switch-GigabitEthernet1/0/1] port link-type access
[Switch-GigabitEthernet1/0/1] port access vlan 10
[Switch-GigabitEthernet1/0/1] quit
[Switch] interface gigabitethernet 1/0/2
[Switch-GigabitEthernet1/0/2] port link-type access
[Switch-GigabitEthernet1/0/2] port access vlan 10
[Switch-GigabitEthernet1/0/2] quit
[Switch] interface gigabitethernet 1/0/3
[Switch-GigabitEthernet1/0/3] port link-type trunk
[Switch-GigabitEthernet1/0/3] port trunk permit vlan 10
[Switch-GigabitEthernet1/0/3] quit
[Switch] vlan 10
[Switch-vlan10] ipv6 nd raguard apply policy policy1
[Switch-vlan10] quit
# 配置端口GigabitEthernet1/0/1为用户角色。
[Switch] interface gigabitethernet 1/0/1
[Switch-GigabitEthernet1/0/1] ipv6 nd raguard role host
[Switch-GigabitEthernet1/0/1] quit
# 配置端口GigabitEthernet1/0/3为路由器角色。
[Switch] interface gigabitethernet 1/0/3
[Switch-GigabitEthernet1/0/3] ipv6 nd raguard role router
[Switch-GigabitEthernet1/0/3] quit
完成上述配置后:
· 从端口GigabitEthernet1/0/2收到的RA报文,会匹配RA Guard策略policy1:
¡ 如果匹配失败则丢弃;
¡ 如果匹配成功,报文会被转发到VLAN 10下其他端口。
· 从端口GigabitEthernet1/0/1收到的RA报文,不会匹配RA Guard策略policy1,RA报文都被直接丢弃。
· 对于端口GigabitEthernet1/0/3收到的RA报文,不会和策略policy1下的规则进行匹配,RA报文都直接被转发,在同一VLAN的其他端口也会收到此RA报文。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!