我们经常听说“端口安全”功能是如何强大,应用如何灵活,但我们很少人系统地对“端口安全”功能有一个比较系统的了解。Cisco IOS交换机中的端口安全(Port security)功能可以使你限制在端口上使用的MAC地址(称之为“安全MAC地址”),或者MAC地址范围,或者最大安全地址数,以实现阻止未授权MAC地址的用户访问,当然它的应用方式很灵活。本篇仅介绍其基本简介,详细的介绍参见《Cisco/H3C交换机高级醘与管理技术手册》一书。
【说明】以下内容摘自笔者编著的,新市的《Cisco/H3C交换机高级配置与管理技术手册》一书。其姊妹篇《Cisco/H3C交换机配置与管理完全手册》(第二版)(目前当当网和卓越网上最低为震撼的63折)实际时间仅用了三个多月就已实现重印,感谢各位的大力支持!!
15.3.1 端口安全功能简介
Cisco IOS
交换机的端口安全功能允许你通过配置静态安全
MAC
地址实现仅允许固定设备连接,也允许你在一个端口上配置一个最大的安全
MAC
地址数,仅允许在此数之前识别到的设备连接在该端口上。当超过了所设置的最大安全端口数,将触发一个安全违例事件,在端口上配置的一个基于违例行为模式的违例行为将被执行。如果你在某个端口上配置的最大安全
MAC
地址数为
1
,则设备上的该安全端口仅允许与固定设备连接。如果一个安全
MAC
地址在一个端口上进行了安全绑定,则这个
MAC
地址不能进入该端口加入的
VLAN
以外的任何其他端口,否则包将在硬件层被悄悄地丢弃。
1. 端口安全功能支持的安全MAC地址类型
Cisco IOS
交换机端口安全功能支持以下几种安全
MAC
地址类型:
l
动态或者学习类型:动态安全
MAC
地址是在接收到连接在安全端口上主机发来的包时学习到的。在用户的
MAC
地址不固定时(如网络用户使用的经常移动的便携式电脑,如笔记本电脑),你可以使用此种类型。
l
静态或配置类型:静态安全
MAC
地址是用户通过
CLI
或者
SNMP
配置的
MAC
地址。在你的
MAC
地址保持固定时(如用户使用的是
PC
机),可以使用这种类型。
l
粘性(
Sticky
)类型:粘性安全
MAC
地址也是像动态安全
MAC
地址一样,是通过学习得到的,但是它是交换机重启后仍然有效,又有点像静态安全
MAC
地址那样。在存在大量固定
MAC
地址,而且你又不想手动配置这些安全
MAC
地址时,就可以使用这种类型。
如果一个端口已达到了它最大的安全
MAC
地址数,而你又想配置一个静态安全
MAC
地址,此时会被拒绝的,并显示一个错误提示。如果一个端口已达到了它最大的安全
MAC
地址数,而又添加了一个新的动态安全
MAC
地址,则会触发一个违例行为。
你可以使用
clear port-security
命令清除动态安全
MAC
地址,你可以使用
no
switchport port-security mac-address
命令一次性清除粘性和静态安全
MAC
地址。
2. 安全MAC地址的最大数
一个安全端口默认有一个安全
MAC
地址。你可以改变这个默认值在
1~3000
之间。当你在一个端口上设置最大安全
MAC
数后,你可以以下任一方式在地址表中包括这些安全
MAC
地址:
l
你可以使用
switchport port-security mac-address
mac_address
接口配置模式命令配置安全
MAC
地址。
l
你可以通过
port-security mac-address
VLAN
范围配置命令在中继端口上一个范围
VLAN
中配置所有安全
MAC
地址。
l
你可以允许端口用所连接设备的
MAC
地址动态配置安全
MAC
地址。
l
你可以静态配置一些安全
MAC
地址,而允许其余的安全
MAC
地址动态配置(如果端口链路关闭,则该端口上所有动态安全
MAC
地址将不再是安全的)。
l
你可以
MAC
地址为粘性的(
sticky
)。这些安全
MAC
地址可以动态学习,也可以手动配置,然后保存在
MAC
地址表中,并添加到运行配置文件中。然后这些地址会保存在交换机的启动配置文件中,在交换机重启后,接口不用再重新学习。虽然你可以手动配置粘性安全
MAC
地址,但这种做法是不建议的。
【经验之谈】在一个中继端口上,最大的安全
MAC
地址数可以基于端口和基于端口
VLAN
来配置。端口上配置的最大安全
MAC
地址数可以大于或等于(不能小于)端口
VLAN
上配置的最大安全
MAC
地址数。如果端口上配置的最大安全
MAC
地址数小于端口
VLAN
上配置的最大安全
MAC
地址数(例如
VLAN 10
上设置的最大安全
MAC
地址为
3
,而端口的最大安全
MAC
地址数采用默认的
1
),则在端口
VLAN
上的安全
MAC
地址数超过端口上设置的最大安全
MAC
地址数时,端口就将被关闭。
3.安全MAC地址老化
在接收超过
3000
个
MAC
地址时,你可能想要老化安全
MAC
地址,以便对一些长时间没有连接的安全
MAC
地址从
MAC
地址表中除去。但是粘性(
sticky
)安全
MAC
地址不支持老化过程。
默认情况下,端口安全不会对安全地址进行老化的,学习到后,这个
MAC
地址将一直在端口上保留,直到交换机重启或才链路断开(当然这是在没有启用粘性
MAC
地址功能时)。端口安全允许你基于绝对(
absolute
)或者静止(
inactivity
)模式配置
MAC
地址老化和老化时间。绝对模式的老化周期是
n~n+1
分钟之间;静止模式的老化周期是在
n+1~n+2
分钟之间(时间增量为
1
分钟)。
使用安全
MAC
地址老化功能可以还没达到端口上配置的最大安全
MAC
地址数之前,在安全端口上删除和添加
PC
,无需手动删除现有的安全
MAC
地址。
除非明确地使用
switchport port-security aging static
命令静态配置
MAC
地址老化时间,静态安全
MAC
地址是不会进行老化进程的,即使在在该端口上配置了老化进程。
4.端口上的粘性MAC地址
通过启用粘性端口安全功能,你可以配置一个接口去转换动态
MAC
地址为粘性安全
MAC
地址,并添加他们到交换机的运行配置文件中。在你不需要用户移动到其他端口时,你可以使用这种功能,这样你就无需要在每个端口上手动配置大量的安全
MAC
地址。
要启用粘性端口安全功能,可键入
switchport
port-security mac-address sticky
接口配置模式
命令。此时,接口将转换所有动态安全
MAC
地址为粘性安全
MAC
地址,包括在启用粘性安全
MAC
地址功能前动态学习到的所有
MAC
地址。
粘性安全
MAC
地址不会自动成为交换机启动配置文件的一部分,如果你保存了运行配置文件,则在交换机重启后,接口也不用再重新学习
MAC
地址了,但是如果你不保存运行配置文件,则以前自动转换的粘性安全
MAC
地址表将丢失。
如果禁止粘性端口安全功能,则粘性安全
MAC
地址将自动转换为动态安全
MAC
地址,并自动从交换机的运行配置文件中删除。在配置了最大安全
MAC
地址数后,这些粘性安全
MAC
地址将以表的形式存储。要使某设备成为某端口唯一的连接者,则可以在该端口上配置最大的安全
MAC
地址数为
1
。如果添加到某端口的安全
MAC
地址数超过配置的最大安全
MAC
地址数将发生违例事件。
5. 违例行为模式
你可以配置发生违例事件后所采取的行为模式:
l
保护(
protect
):当安全
MAC
地址数超过端口上配置的最大安全
MAC
地址数时,未知源
MAC
地址的包将被丢弃,直到
MAC
地址表中的安全
MAC
地址数降到所配置的最大安全
MAC
地址数以内,或者增加最大安全
MAC
地址数。而且这种行为没有安全违例行为发生通知。建议不要在中继端口上配置保护行为,因为在中继端口上某个
VLAN
达到该
VLAN
中所配置的最大安全
MAC
地址数时端口将被禁止,即使端口上的安全
MAC
地址数并未达到端口上配置的最大安全
MAC
地址数。
l
限制(
Restrict
):与前面的保护模式差不多,也是在安全
MAC
地址数达到端口上配置的最大安全
MAC
地址数时,未知源
MAC
地址的包将被丢弃,
直到
MAC
地址表中的安全
MAC
地址数降到所配置的最大安全
MAC
地址数以内,或者增加最大安全
MAC
地址数。但这种行为模式会有一个
SNMP
捕获消息发送,并记录系统日志,违例计数器增加
1
。
SNMP
捕获通知发送的频率可以通过
snmp-server enable traps port-security trap-rate
命令来控制,默认值为
0
,表示在发生任何安全违例事件时发送
SNMP
捕获通知。
l
关闭(
Shutdown
):发生安全违例事件时,端口立即呈现错误(
error-disabled
)状态,关闭端口(端口指示灯熄灭)。同时也会发送一个
SNMP
捕获消息
并记录系统日志,违例计数器增加
1
。
在想禁止非
MAC
地址,需要安全安全环境下,你可以使用这种模式。
l
关闭
VLAN
(
Shutdown VLAN
):适用于
VLAN
的安全违例模式。在这种模式下,在发生安全违者罚款例事件时,该端口对应的
VLAN
都将呈错误禁止状态,关闭对应
VLAN
,而不关闭对应的端口。
表
15-1
列出了各种违例模式和对应采取的行为。
表
15-1
端口安全下的各种违例模式和对应采取的行为
违例模式
|
违例通信转发
|
发送
SNMP trap
消息
|
发送系统日志消息
|
显示错误消息
|
违例计数器递增
|
关闭端口
|
保护(
protect
)
|
No
|
No
|
No
|
No
|
No
|
No
|
限制(
restrict
)
|
No
|
Yes
|
Yes
|
No
|
Yes
|
No
|
关闭(
shutdown
)
|
No
|
No
|
No
|
No
|
Yes
|
Yes
|
关闭
VLAN
(
shutdown vlan
)
|
No
|
No
|
Yes
|
No
|
Yes
|
No
|
当一个安全端口处于错误禁止(
error-disabled
)状态,你可以通过
errdisable recovery cause
psecure-violation
全局配置模式命令进行恢复,或者你可以通过
shutdown
和
no shut down
接口配置模式命令重启。如果端口是处于每
VLAN
错误禁止(
per-VLAN errdisable
)状态,则你可以使用
clear errdisable interface
name vlan range
命令在端口上重启这个
VLAN
。你也可以使用
errdisable recovery interval
interval
命令自定义从指定的错误禁止状态恢复的时间,默认为
300
秒。
【经验之谈】如果你可以预见有非法安全
MAC
地址包将在某端口上发送,你可能想要在安全端口上对非法安全
MAC
地址包进行传输速率限制。端口安全认为
MAC
地址为
0
的包为组播或广播源
MAC
地址,认为是非法包。你可以选择限制这些包的传输速率,在超过速率时将在端口上捕获一个违例事件。也就为像组播或广播包传输留有一定的空间。