我们经常听说“端口安全”功能是如何强大,应用如何灵活,但我们很少人系统地对“端口安全”功能有一个比较系统的了解。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捕获通知。