交换机端口安全PortSecurity超级详解
交换安全】交换机端口安全 Port-Security 超级详解、Port-Security 概述在部署园区网的时候,对于交换机,我们往往有如下几种特殊的需求:限制交换机每个端口下接入主机的数量( MAC地址数量)限定交换机端口下所连接的主机(根据 IP或MAC地址进行过滤)当出现违例时间的时候能够检测到,并可采取惩罚措施上述需求,可通过交换机的 Port-Security 功能来实现:二、理解 Port-Security安全地址:secure MAC address在接口上激活Port-Security 后,该接口就具有了一定的安全功能, 例如能够限制接口(所连接的)的最大 MAC数量,从而限制接入的主机用户; 或者限定接口所连接的特定MAC从而实现接入用户的限制那么要执行过滤或者限制动作,就需要有依据,这个依据 就是安全地址 -secure MAC address 安全地址表项可以通过让使用端口动态学习到的 MAC( SecureDynamic ),或者是手工在接口下进行配置( SecureConfigured ),以及 sticy MAC address (SecureSticky ) 三种方式进行配置。
当我们将接口允许的 MAC地址数量设置为1并且为接口设置一个安全地址, 那么这个接口将只为该 MAC所属的PC服务,也就是源为该 MAC的数据帧能够进入该接口2•当以下情况发生时,激活惩罚( violati on ):当一个激活了 Port-Security 的接口上,MAC地址数量已经达到了配置的最大安全 地址数量,并且又收到了一个新的数据帧,而这个数据帧的源 MAC并不在这些安全地址中,那么启动惩罚措施当在一个Port-Security 接口上配置了某个安全地址,而这个安全地址的 MAC又企图在同VLAN的另一个Port-Security 接口上接入时,启动惩罚措施当设置了 Port-Security 接口的最大允许 MAC的数量后,接口关联的安全地址表项可以通过如下方式获取:在接口下使用 switchport port-security mac-address 来配置静态安全地址表项使用接口动态学习到的 MAC来构成安全地址表项一部分静态配置,一部分动态学习当接口出现up/down,则所有动态学习的 MAC安全地址表项将清空而静态配置的安全地址表项依然保留与Sticky MAC 地址上面我们说了,通过接口动态学习的 MAC地址构成的安全地址表项,在接口出现up/down后,将会丢失这些通过动态学习到的 MAC构成的安全地址表项,但是所有的接口都用switchport port-security mac-address 手工来配置,工作量又太大。
因此这个 stickymac地址,可以让我们将这些动态学习到的 MAC变成“粘滞状态”,可以简单的理解为,我先动态的学,学到之后我再将你粘起来,形成一条”静态" (实际上是 SecureSticky )的 表项在up/down现象出现后仍能保存 而在使用wr后,这些sticky 安全地址将被写入start-up config ,即使设备重启也不会被丢失三、默认的Port-Security 配置Port-Security默认关闭默认最大允许的安全 MAC地址数量1惩罚模式shutdow n(进入err-disable 状态),同时发送一个 SNMP trap四、Port-Security 的部署注意事项配置步骤a) 在接口上激活 Port-SecurityPort-Security 开启后,相关参数都有默认配置,需关注b) 配置每个接口的安全地址(Secure MAC Address)可通过交换机动态学习、手工配置、以及 stciky等方式创建安全地址c) 配置Port-Security 惩罚机制默认为 shutdown,可选的还有 protect、restrictd) (可选)配置安全地址老化时间 2.关于被惩罚后进入 err-disable 的恢复:如果一个psec端口由于被惩罚进入了 err-disable ,可以使用如下方法来恢复接口的状态:使用全局配置命令:err-disable recovery psecure-violati on手工将特定的端口shutdown 再 noshutdown3. 清除接口上动态学习到的安全地址表项使用 clear port-security dynamic 命令,将清除所有 port-security 接口上通过动态学习到的安全地址表项使用clear port-security sticky 命令,将清除所有 sticky 安全地址表项使用clear port-security con figured 命令,将清除所有手工配置的安全地址表项 使用clear port-security all 命令,将清除所有安全地址表项使用show port-security address来查看每个 port-security 接口下的安全地址表项4. 关于sticky 安全地址Sticky安全地址,是允许我们将 Port-Security 接口通过动态学习到的 MAC地址变成“粘滞”的安全地址,从而不会由于接口的 up/down丢失。
然而如果我们希望在设备重启之后,这个sticky 的安全地址表项仍然存在,那么就需要wr 一下将配置写入start-up config文件Sticky安全地址也是一个简化我们管理员操作的一个很好的工具,毕竟现在 不用再一条条的手工去绑了支持 private vlan支持tunnel 接口不支持SPAN的目的接口不支持 etherchannel 的 port-channel 接口9.在CISCO IOS (33)SXH以及后续的版本,我们可以将 port-security 及部署在同一个接口上而在此之前的软件版本:如果你试图在一个 port-security 接口上激活则会报错,并且功能无法开启如果你试图在一个接口上激活 port-security 则也会报错,并且 port-security 特性无法开启switchport trunk en capsulati on ?switchport mode truk nswitchport non egotiateIf you recon figure a secure access port as a trunk, port security con vertsall the sticky and static secure addresses on that port that were dyn amicallylear ned in the access VLAN to sticky or static secure addresses on the n ativeVLANof the trunk. Port security removes all secure addresses on the voice VLAN of the access port.If you recon figure a secure trunk as an access port, port security con vertsall sticky and static addresses learned on the native VLANto addresses learned on the access VLAN of the access port. Port security removes all addresses learned on VLANs other tha n the native VLAN.links 和 Port-Security 互不兼容五、Port-security 的配置1.激活 Port-Security (在 access 接口上)Switch(co nfig)# in terface fastO/1Switch(c on fig-if)# switchportSwitch(c on fig-if)# switchport mode accessSwitch(c on fig-if)# switchport access vla n 10Switch(c on fig-if)# switchport port-security接口的Port-Security 特性一旦激活后,默认的最大安全地址个数为 1,也就是说, 在不进行手工配置安全地址的情况下,这个接口将使用其动态学习到的 MAC乍为安全地址,并且,这个接口相当于被该 MAC(所属的设备)独占。
而且默认的 violation 是shutdownSW1#show port-security in terface fO/1Port Security : En abledPort Status:Secure-up!!接口目前的状态是 up的Violatio n Mode:Shutdown!!违例后的惩罚措施,默认为 shutdow nAgi ng Time:0 mi nsAgi ng Type:AbsoluteSecureStatic Address Agi ng : DisabledMaximum MAC Addresses : 1!!最大安全地址个数,默认为 1Total MAC Addresses:0Con figured MAC Addresses : 0!!手工静态配置的安全MAC地址,这里没配Sticky MAC Addresses:0!!sticky的安全地址,这里没有Last Source Address:Vla n!!最近的一个安全地址+vlanSecurity Violati on Count : 0!!该接口历史上出现过的违例次数这个时候,如果另一台 PC接入到这个端口上,那么该 port-security 接口将会收到一个新的、非安全地址表项中的 MAC地址的数据帧,于是触发的违例动作,给接口将被err-disable 掉。
同时产生一个 snmp trap 消息,另外,接口下, Security Violation Count将会加12.激活 Port-Security (在 trunk 接口上)3. Port-Security violati on惩罚措施默认的violation是shutdown如果是protect ,那么惩罚就会温柔些, 对于非法的数据帧(例如数据帧的源MAC不在安全地址表项中的、 且安全地址已经达到最大数) ,这些非法数据将仅仅被丢弃,合法数据照常转发,同时不会触发一个 syslog消息,另外接口下的"Security ViolationCount也不会加1而如果是restrict ,那么非法数据被丢弃,同时触发一个syslog消息,再者,Security Violation Count加1,合法的数据照常转发4.配置 Port Security Rate Limiter(注意,在6509交换机,truncated switching 模式下不支持该功能)在交换机接口上开启 Port-Security 是会耗费资源的,Port-Security 会检测每一个进入接口的数据帧,以判断流量是否合法,或者是否存在违例行为。
当一个安全接口设置的violation 为shutdown的时候,该接口在违例后触发惩罚机制,进入 err-diasble 状态,这样可以有效的方式有效的防止交换机由于处理违例事件导致交换机的 CPU利用率过高然而protect和restict 的惩罚措施,则不会将端口关闭, 端口依然可用,那么这就可能导致在违例事件发生的情况下交换机的 CPU利用率飙高(例如大量的非法数据涌入) 因此当使用protect和restrict 这两种违例惩罚措施事,可以通过 Port-Secuirty rate limiter来防止CPU飙高Switch(c on fig)# mls rate-limite Iayer2 port-security rate_ in _pps [burst_size]关于rate in pps 参数:范围是 10- 1000000没有默认值值设置的越低,对 CPU的保护程度就越高,这个值对惩罚措施发生前、后都生效,当然这个值也不能设置的过低,至少要保障合法流量被处理吧一般低于 1000就差不多关于burst-size 参数:范围是1-255默认是10,这个默认值一般就够用了。
5. 配置Port-Security 最大允许的安全地址数量最大安全地址数量,不同的软件平台允许的上限值有所不同,但是默认都是 1在trunk 口上,前面说了,也是可以激活port-security 的,而在trunk 口上配置最大安全 地址数量,可以基于接口配置(对所有 VLAN生效),也可以基于 VLAN进行配置如下:switchport port-security maximum 1switchport port-security maximum 1 vlan 10,20,30 !!可以关联多个VLAN6. 在port-security 接口上手工配置安全地址安全地址,没有关联 vlan关键字,那么该安全地址将被关联到 trunk的native vlan 上7. 在 port-security 接口上使用 sticky MAC 地址port-security mac本比较高而另一地址在接口一旦switchportPC上抄MAC工作成MAC然而这些安全sticky mac 的方我们知道,构成安全地址表项的方式有好几种,其中一种是使用 来手工配置,但是这种方式耗时耗力,更需要去种构成安全地址的方式是让交换机使用动态学习到的 up/down后,将丢失,更别说重启设备了。
因此可以使用MAC “粘起来”,具体的动作很简单,就是在sticiky MAC address ,则在接口下自动产!!自动产生式,这种方式激活后,交换机将动态学习到的 动态学习到MAC(例如一个)后,如果我激活了 生一条命令:in terface FastEthernetO/1switchport access vlan 10switchport mode accessswitchport port-securityswitchport port-security mac-address sticky switchport port-security mac-address sticky这样形成的安全地址表项(是 SecureSticky的),即使在接口翻动,也不会丢失在者如 果wr保存配置,命令写入,那么设备即使重启,安全地址也不会丢失当在接口上激活了 port-security mac-address sticky ,那么:该接口上所有通过动态学习到的 MAC将被转成sticky mac address 从而形成安全地址接口上的静态手工配置的安全地址不会被转成 sticky mac address通过voice vlan 动态学习到的安全地址不会被转成 sticky mac address命令配置后,新学习到的 MAC地址,也是sticky 的当此时又敲入 no port-secuirty mac-address sticiky ,则所有的 sticky 安全地址条目都变成动态的安全地址条目(SecureDynamic )8. 配置安全地址老化时间配置的命令比较简单:Switch(con fig-if)# switchport port-security agi ng type {absolute | in activity}配置老化时间的类型,如果选择 absolute,也就是绝对时间,需要搭配 aging time命令设定老化时间的具体值, 命令一旦敲下去后,所有的通过动态学习的 MAC构建的安全地址表项将开始以agi ng time倒计时。
如果是in activity 关键字,则只在该动态安全地址表项不活跃的时候(譬如主机离线了或者挂掉了)才开始倒计时Switch(c on fig-if)# switchport port-security agi ng time ?设定老化时间Switch(config-if)# switchport port-security aging static使用前面两条命令,老化时间是不会影响那些使用静态手工配置的安全地址表项的,当然sticky 表项也不会受影响,这些表项都是永不老化的,但是如果搭配上上面这条命令,则 手工配置的安全地址表项也受限于老化时间了不过对于sticky 表项,则始终不会激活 aging time ,它是不会老化的示例1:将安全地址老化时间设置为 50min针对动态学习到的 MAC勾成的安全地址有效50min是一个绝对时间,配置完成后开始倒计时,无论该 MAC是否依然活跃,都始终进行倒计时示例2:针对动态学习到的 MAC勾成的安全地址有效,如果该MAC在50min内一直处于失效状态(例 如主机离线了),那么该安全地址在 agi ng time超时后被清除示例3:注意,上述两种配置方式,对手工配置 switchport port-security mac-address 的安全地址无效。
也就是采用上述方法配置的静态安全地址表项永不超时如果增加switchport port-security aging static 命令,则手工静态配置的安全地址也的 aging time 也开始计时注意,对于sticky mac address ,安全地址的老化时间无效。




