目錄

前言
啟動 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 <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 <MAC> 來手動加入 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 <type>switchport port-security aging time <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