目录

前言
启动 Port Security
  Protect
  Restrict
  Shutdown

前言

顾名思义,Port Security 可以为 Switch 的 Port 提高 Security,达到保护网络的目的。透过 Port Security 来记录 host 的 Mac Address,可以只批准某些已知的 host 连到网络,阻止未认可的 host 使用网络资源或进行不法行为。

启动 Port Security

使用指令 switchport port-security 便可启动 Port Security,不过要先为 Port 设定 mode,否则会出现错误讯息。因为 Port Security 是针对 host 的设定,通常在 host port 执行,一般我们都会使用 Access Mode。

Switch(config)#interface fastEthernet 0/1
Switch(config-if)#switchport port-security
Command rejected: FastEthernet0/1 is a dynamic port.
Switch(config-if)#
Switch(config-if)#switchport mode access
Switch(config-if)#switchport port-security

show port-security interface 看看现时的状态,因为还未有 host 连接,所以现时是 Secure-down,也没有 Mac Address 被记录。

Switch#show port-security interface fastEthernet 0/1
Port Security              : Enabled
Port Status                : Secure-down
Violation Mode             : Shutdown
Aging Time                 : 0 mins
Aging Type                 : Absolute
SecureStatic Address Aging : Disabled
Maximum MAC Addresses      : 1
Total MAC Addresses        : 0
Configured MAC Addresses   : 0
Sticky MAC Addresses       : 0
Last Source Address:Vlan   : 0000.0000.0000:0
Security Violation Count   : 0

现在连接一台 PC,Mac Address 立刻被记录下来了,状态变成 Secure-up。

Switch#show port-security interface fastEthernet 0/1
Port Security              : Enabled
Port Status                : Secure-up
Violation Mode             : Shutdown
Aging Time                 : 0 mins
Aging Type                 : Absolute
SecureStatic Address Aging : Disabled
Maximum MAC Addresses      : 1
Total MAC Addresses        : 1
Configured MAC Addresses   : 0
Sticky MAC Addresses       : 0
Last Source Address:Vlan   : 18a9.05e7.a35c:1
Security Violation Count   : 0

我们可以用 switchport port-security mac-address 来手动加入 record,以後就只有这个 MAC Address 的 PC 可以连接这个 port。留意要先 shutdown port 才做这个设定,否则会有错误讯息。

Switch(config-if)#switchport port-security mac-address 18a9.05e7.a35c
Found duplicate mac-address 18a9.05e7.a35c.
Switch(config-if)#shutdown
Switch(config-if)#
*Mar  1 00:18:00.989: %LINK-5-CHANGED: Interface FastEthernet0/1, changed state to administratively down
*Mar  1 00:18:01.996: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down
Switch(config-if)#switchport port-security mac-address 18a9.05e7.a35c
Switch(config-if)#no shutdown
Switch(config-if)#
*Mar  1 00:18:13.320: %LINK-3-UPDOWN: Interface FastEthernet0/1, changed state to up
*Mar  1 00:18:14.327: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to up

再看一下状态,确定没问题。

Switch#show port-security interface fastEthernet 0/1
Port Security              : Enabled
Port Status                : Secure-up
Violation Mode             : Shutdown
Aging Time                 : 0 mins
Aging Type                 : Absolute
SecureStatic Address Aging : Disabled
Maximum MAC Addresses      : 1
Total MAC Addresses        : 1
Configured MAC Addresses   : 1
Sticky MAC Addresses       : 0
Last Source Address:Vlan   : 18a9.05e7.a35c:1
Security Violation Count   : 0

如果换了另一台 PC 会怎样呢?因为 Mac Address 与纪录不同,这个 port 会变成 Error Disable (err-disable) 状态,不能使用。

Switch#
*Mar  1 00:19:23.013: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/1, changed state to down
*Mar  1 00:19:24.019: %LINK-3-UPDOWN: Interface FastEthernet0/1, changed state to down
*Mar  1 00:19:24.967: %PM-4-ERR_DISABLE: psecure-violation error detected on Fa0/1, putting Fa0/1 in err-disable state
*Mar  1 00:19:24.967: %PORT_SECURITY-2-PSECURE_VIOLATION: Security violation occurred, caused by MAC address 18a9.05e7.5d70 on port FastEthernet0/1.
Switch#
Switch#show port-security interface fastEthernet 0/1
Port Security              : Enabled
Port Status                : Secure-shutdown
Violation Mode             : Shutdown
Aging Time                 : 0 mins
Aging Type                 : Absolute
SecureStatic Address Aging : Disabled
Maximum MAC Addresses      : 1
Total MAC Addresses        : 1
Configured MAC Addresses   : 1
Sticky MAC Addresses       : 0
Last Source Address:Vlan   : 18a9.05e7.5d70:1
Security Violation Count   : 1

Switch#show interfaces fastEthernet 0/1 | include down
FastEthernet0/1 is down, line protocol is down (err-disabled)

如果你确认这台 PC 也是一台合法连接网络的 host,你可以把 Port Security 的 Maximum 改成 2,并加入这台 PC 的 MAC Address,这样就可以容许两台电脑同时使用这个 Port 了。

Switch(config-if)#switchport port-security maximum 2
Switch(config-if)#switchport port-security mac-address 18a9.05e7.5d70
Switch(config-if)#shutdown
Switch(config-if)#no shutdown
Switch(config-if)#end
Switch#show port-security interface fastEthernet 0/1
Port Security              : Enabled
Port Status                : Secure-up
Violation Mode             : Shutdown
Aging Time                 : 0 mins
Aging Type                 : Absolute
SecureStatic Address Aging : Disabled
Maximum MAC Addresses      : 2
Total MAC Addresses        : 2
Configured MAC Addresses   : 2
Sticky MAC Addresses       : 0
Last Source Address:Vlan   : 18a9.05e7.5d70:1
Security Violation Count   : 0

不过每次都用指令输入 host 的 MAC Address 似乎太麻烦了,我们可以使用 sticky 让 Switch 自动记录 host 的 MAC Address。

interface FastEthernet0/1
 switchport mode access
 switchport port-security maximum 2
 switchport port-security
 switchport port-security mac-address sticky

当有 host 连接时,Configuration File 的 Interface 里会自加入指令。

interface FastEthernet0/1
 switchport mode access
 switchport port-security maximum 2
 switchport port-security
 switchport port-security mac-address sticky
 switchport port-security mac-address sticky 18a9.05e7.5d70 vlan access
 switchport port-security mac-address sticky 18a9.05e7.a35c vlan access

这些纪录预设是会永久保存的,即是说就算 PC 关机了,Switch 仍然贮存这两台 PC 的 MAC Address,如果希望 Switch 自动清除纪录的话,可以使用 switchport port-security aging type switchport port-security aging time 来进行设定。

Switch(config-if)#switchport port-security aging type ?
  absolute    Absolute aging (default)
  inactivity  Aging based on inactivity time period

absolute

经过一段时间便清除纪录,预设会用 absolute。

inactivity

当 host 过了一段时间没有连接,便清除纪录。

最後输入时间便完成设定,时间单位是秒。

Switch(config-if)#switchport port-security aging type inactivity
Switch(config-if)#switchport port-security aging time 600

如果每次有违规连接就把 Port Err-disable 的话,网络管理人员会相常麻烦,因为 Err-disable 必需由管理人员手动重新打开 Port,其实除了 Err-disable 之外,还可以做其他动作。

Switch(config-if)#switchport port-security violation ?
  protect   Security violation protect mode
  restrict  Security violation restrict mode
  shutdown  Security violation shutdown mode

Protect

把不法 host 的 Frame Drop 掉不传送。

Restrict

把不法 host 的 Frame Drop 掉不传送,并且在 Log 记录。

Shutdown

就是把 Port Err-disable,这是预设的设定。

另一个方法是把因为 Port Security 问题而 Err-Disable 的 Port 自动复原,指令如下。

Switch(config)# errdisable recovery cause psecure-violation
Switch(config)# errdisable recovery interval 600