背景需求
- 如下图所示的网络拓扑中,展示的是一个对安全性要求较高的网络,
- 某企业搭建该网络需求如下:
(1)员工通过该企业分配的PC连接到接入层交换机(Access-Switch)上,以便获得与核心网络(Core Network)的IP连通。
(2)出于网络安全考虑,企业要求接入层交换机上每个连接终端设备的端口均只允许一台PC接入网络,也就是说,如果有用户试图在某个端口下级联一台小型交换机或者集线器从而扩展上网端口,那么这种行为应该被发现而且被禁止。
(3)并且要求,只有可信赖的终端发送的数据帧才允许被交换机转发到上层网络,员工不能私下更换位置(将PC从接入层交换机的某个端口变更至其他端口)。
解决方法
- 端口安全(Port Security)可用于实现上述需求。
- 通过在交换机的特定端口上部署端口安全功能,可以限制端口的MAC地址学习数量,并配置当出现违规行为时的惩罚机制。
- 并且,部署了Port Security的端口可以将其学习到的MAC地址变为安全MAC地址,从而阻止除了安全地址之外的其他MAC地址通过该端口接入网络。
端口安全(Port Security)
- 端口部署端口安全功能之后,会解析交换机在端口上收到的数据帧的源MAC地址,并进行MAC地址学习,学习到的MAC地址也会被交换机转换为动态安全MAC地址,后续该端口将只允许这些MAC地址接入网络。
- 当交换机端口学习到的MAC地址达到Port Security设置的上限后,交换机将不在该端口上继续学习MAC地址,因此其他非信任的终端将无法通过该端口进行通信。
- 动态安全MAC地址表项是不会被老化的,但是需要注意的是,当交换机重启后,这些MAC地址表项还是会被丢失,因此交换机不得不重新学习动态安全MAC地址。
- Sticky MAC表项是安全MAC地址表项的升级版本,这种表项是不会被老化的,而且若交换机保存配置后重启,表项也不会丢失(交换机重启之后,可以恢复运行数据安全MAC地址表项)。
示例
如下图所示的网络拓扑中,在交换机SW上部署Port Security,需求如下:
- 将GE0/0/1至GE0/0/3端口都激活Port Security。
- 其中GE0/0/1及GE0/0/2端口将学习MAC地址的数量限制为1,也就是这两个端口各自只允许连接一台PC。当该端口连接其他PC时,交换机需发出告警,且要求此时端口依然能够正常转发合法PC的数据帧(存在非法用户接入时,端口不会被关闭,但是只允许合法用户进行通信)。
- 另外,GE0/0/3端口将学习MAC地址的数量限制为2,并且当学习到的MAC地址数超出端口限制数时,交换机需发出告警并将该端口关闭。
为实现上述需求,涉及以下三条命令(HW):
- 在端口视图下配置的port-security enable命令(HW)用于将该端口设置为安全端口。
- 在端口视图下配置的port-security max-mac-num 1命令(HW)用于配置该端口的动态安全MAC地址学习限制数量,(此命令是可选的,若不配置该命令,端口缺省的动态安全MAC地址学习限制是1)。
- 在端口视图下配置的port-security protect-action {protect | restrict | shutdown}命令(HW)用于配置当端口学习到的MAC地址数达到限制后的保护动作,此命令后面有三个可选关键字如下:
(1)protect:当该安全端口学习到的MAC地址数量达到限制数量时,它将丢弃源MAC地址不与该端口的安全MAC地址匹配的数据帧。
(2)restrict:当该安全端口学习到的MAC地址数量达到限制数量时,它将丢弃源MAC地址不与该端口的安全MAC地址匹配的数据帧,同时发出告警,该行为为缺省动作。
(3)shutdown:当该安全端口学习到的MAC地址数量达到限制数量时,如果该端口学习到新的MAC地址,它将被立即关闭(置为Error-Down状态),同时设备将发出告警。
操作步骤
(1)当 PC1及PC2接入SW并且开始发送数据时,在SW上查看MAC地址表项:
(2)如果将PC1进行更换,将其他的终端接入SW的GEO/0/1端口并尝试进行通信:
- 当这台新的终端发送的数据帧到达SW时,SW解析数据帧的源MAC地址,并发现该MAC地址与GE0/0/1端口的安全MAC地址表项不符,
- 并且该端口已经达到了安全MAC地址学习数量的上限,
- 因此新加入的终端将触发违例惩罚,由于GE0/0/1端口上配置的protect-action是restrict,因此交换机会丢弃该终端发送的数据帧,并且弹出如下告警:
May 5 2020 17:45:56-08:00 SW L2IFPPI/4/PORTSEC_ACTION_ALARM:OID 1.3.6.1.4.1.2011.5.25.42.2.1.7.6 The number of MAC address on interface (6/6) GigabitEthernet0/0/1 reaches the limit, and the port status is1.(1:restrict;2:protect;3shutdown)
(3)交换机SW的GEO/0/3端口通过集线器下联两台PC:PC3、PC4。当PC3及PC4开始发送数据时,在SW上查看MAC地址表项:
(4)现在如果将PC5也连接到了该集线器,并且它也开始发送数据帧到SW:
- 当SW在GE0/0/3端口上收到PC5发送的数据帧时,它将解析这个数据帧的源MAC地址,并发现该MAC地址不在GE0/0/3端口的安全MAC地址中,
- 并且该端口已经达到了安全MAC地址学习数量的上限,
- 因此新加入的终端PC5将触发违例惩罚,该端口配置的保护动作是shutdown,因此SW会将GE0/0/3关闭,并输出如下告警:
May 5 2020 18:13:18-08:00 SW L2IFPP1/4/PORTSEC_ACTION_ALARM:OID 1.3.6.1.4.1.2020.5.25.422.1.7.6 The number of MAC address on interface (8/8) GigabitEthernet0/0/3 reaches the limit, and the port status is : 3.(1:restrict;2:protect;3:shutdown) Aug 5 2020 18:13:19-08:00 SW %%01PHY/1/PHY(1)[0]: GigabitEthemet0/0/3: change status to down.
(5)此时在SW上查看MAC地址表项:
(6)查看GE0/0/3的端口的状态信息:
通过查看GE0/0/3端口的当前配置信息,发现该端口被系统自动添加了一条shutdown配置。
(7)假设现在集线器所连接的用户知晓了自己的违例行为,并且进行了纠正:将新增的PC5移除。
- 缺省情况下,处于Error-Down状态的端口状态自动恢复为Up的功能并未被激活,因此即使SW的GE0/0/3下联的非法终端被移除,该端口也会一直处于Error-Down状态。
- 系统视图下配置error-down auto-recovery cause port-security interval命令(HW)可以激活端口自动恢复为Up的功能,该命令中的interval关键字后面需配置相应的时间参数作为端口自动恢复为Up的延迟时间。
- 对于还未处于Error-Down状态的端口而言,如果存在非法接入用户导致端口状态变成Error-Down,当违例行为消除,SW将在一段时间后自动将该端口复到Up状态。