园区网安全-Port Security

一、Port-Security概述

大部分园区网或者办公网的场景下,客户对于员工的工位都有着明确分配。每个员工都有一个工位,工位下方的网口用于员工接入内部网络。对于安全性要求较高的客户,会为每个工位配备一台台式机,对于员工采用的非公司的移动笔记本接入内部网络执行限制。

客户通常通过对台式机及公司笔记本进行MAC登记,根据MAC的唯一性这个特点来执行设备识别。将交换机端口编号和员工设备的MAC一一绑定,当交换机从某个接口收到属于该员工的设备所发出的MAC后,放行这些数据包,反之拒绝,该技术叫Port-Security。配置了Port-Security的接口具备以下功能:

  • 限制接入的用户设备数量;

  • 限制接入的特定用户;

二、Port-Security机制

Port-Security技术通常配置在接入交换机的接入端口上,通过某种方式得知的Secure-Mac-Address为依据,对违规的终端执行惩罚措施,从而达到限制非法终端接入的效果。Secure-Mac-Address是指根据公司政策规定的具有合法的终端MAC地址。交换机允许通过三种方式(StaticDynamic或Sticky)得知这些Secure-Mac-Address。

Static是指端口下手动配置Secure-Mac-Address;Dynamic是指交换机自行从端口下学习Secure-Mac-Address;Sticky是指端口下设置某些手动指定的Secure-Mac-Address,剩下的可以通过Dynamic方式自动学习。三种方式可以设置最大的Secure-Mac-Address数量,如果设置为1,则表示该员工只能使用台式机,即使公司发给他的笔记本也不能用。

当端口出现违规操作时,就会触发惩罚措施。触发条件

  • MAC地址数量达到配置的MAX Secure-Mac-Address数量,收到一个新的但是不在安全地址表项中的MAC;

  • 某个端口记录了Secure-Mac-Address,但是该安全地址又准备接入同VLAN的另一个port-security时;

惩罚动作(violation action):

  • shutdown(默认):端口关闭,状态err-disables,产生syslog消息

  • restrict:丢弃非法数据帧(端口仍up),产生syslog消息;security violation count +1

  • protect:仅丢弃非法数据帧(端口仍up)

Port-security是需要消耗CPU资源的,如果发生违规事件比如大量的非法数据涌入也会消耗大量资源。使用以下命令来防止CPU过高:mls rate-limit layer2 port-security X

X∈[10,1000000],无默认值,值越低表示对CPU的保护程度越高,这个值在惩罚前后都生效,一般低于1000即可。

三、Port-Security配置

接口的port-security默认关闭,默认最大允许的安全MAC地址数量为1,惩罚模式为shutdown(进入err-disable状态,同时发送一个SNMP trap)。注意IOS 12.2(33)SXH及以后的版本支持port-security和802.1X部署在同一个接口上。

启用port-security:switchport port-security

通常在access接口启用Port-security,trunk接口不建议启用(如果启用必须为DTP非协商模式并调整max secure-mac-address数量)

配置接口的最大允许的安全地址数量:sw port-security maximum value

静态secure MAC address:switchport port-security mac-address xx:xx:xx:xx:xx:xx

端口up/down,静态表项不变

动态secure MAC address:switchport port-security mac-address dynamic

端口up/down,动态表项清空

sticky:switchport port-security mac-address sticky

端口up/down,表项不变

清空安全地址表项:clear port-security {dynamic | sticky | configured | all}

配置惩罚措施:sw port-security violation {restrict | shutdown| protect}

惩罚恢复:接口up/down

查看Port-security接口:show port-security interface g0/0

四、Port-Security实践

1、Enable Port-security&Violation

主机接入到G0/0,主机MAC为5254.0006.876f。

在G0/0接入接口下启用Port-security的配置。

interface GigabitEthernet0/0
  switchport access vlan 20
  switchport mode access
  switchport port-security

通过show port-security interface g0/0查看该安全接口的信息。

修改主机MAC为5254.0006.876e后交换机产生的日志。

*Dec 21 07:41:26.746: %PM-4-ERR_DISABLE: psecure-violation error detected on Gi0/0, putting Gi0/0 in err-disable state
*Dec 21 07:41:26.746: %PORT_SECURITY-2-PSECURE_VIOLATION: Security violation occurred, caused by MAC address 5254.0006.876e on port GigabitEthernet0/0.
*Dec 21 07:41:27.746: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0, changed state to down
*Dec 21 07:41:28.746: %LINK-3-UPDOWN: Interface GigabitEthernet0/0, changed state to down

查看g0/0安全接口的状态和违规次数。

查看接口的状态为err-disabled。

2、Static

主机接入到G0/0,主机MAC为5254.0006.876e。

G0/0接口中添加静态MAC 5254.0006.876f以及最大安全MAC数配置。

interface GigabitEthernet0/0
 switchport access vlan 20
 switchport mode access
 switchport port-security maximum 2
 switchport port-security mac-address 5254.0006.876f
 switchport port-security

查看安全MAC地址表项:5254.0006.876f为静态配置,5254.0006.876e为动态学习。

修改主机MAC为5254.0006.876f,因为G0/0静态配置了该MAC为安全MAC,因此理论可以ping通网关。

查看G0/0安全端口的最大安全MAC数应当为2以及最近一次的MAC源地址应当为5254.0006.876f。

3、Sticky

静态手动绑定的方式太过笨拙,而采用sticky方式使得交换机自动学习上来的MAC,并将其添加进Secure Mac Address Table,并自动生成静态捆绑配置到接口下,这样即使交换机接口滚动都不会丢失(但是交换机重启会导致丢失,因此配置完成后记得保存,这样写入到config.txt中就不会丢失了)。因此所谓的“Sticky”就是将自动学习到的Secure-Mac-Address自动的粘滞到接口配置下。

G0/0接口下的Sticky方式学习安全MAC地址配置。

interface GigabitEthernet0/0
 switchport access vlan 20
 switchport mode access
 switchport port-security maximum 2
 switchport port-security mac-address sticky
 switchport port-security mac-address sticky 5254.0006.876f #自动生成
 switchport port-security

查看安全MAC地址表项:5254.0006.876f的类型应该是SecureSticky。

修改主机MAC为5254.0006.876e,理论是可以ping通的,因为安全MAC地址表项未被填满。

查看安全MAC地址表项:新增了5254.0006.876e这一项。

查看G0/0接口配置:新增了5254.0006.876e这一项静态捆绑配置。

interface GigabitEthernet0/0
 switchport access vlan 20
 switchport mode access
 switchport port-security maximum 2
 switchport port-security mac-address sticky
 switchport port-security mac-address sticky 5254.0006.876e #自动生成
 switchport port-security mac-address sticky 5254.0006.876f
 switchport port-security

如果此时配置了no switchport port-security mac-address sticky,那么Secure Mac Address Table中原来的SecureSticky就变成了SecureDynamic。

4、aging-time

老化时间只对Dynamic学习到的Secure-Mac-Address有效。absolute表示所有动态学习的MAC都开始倒计时,而inactivity则表示某个动态学习的MAC表项不活跃时,才开始倒计时。

switchport port-security aging type { absolute | inactivity }

switchport port-security aging time <1-1440minutes>