ポートセキュリティとは
ポートへのアクセスを許可するMACアドレスを制限または識別する機能のことです。ポートに接続をすることが出来るセキュアなMACアドレスをあらかじめ設定しておき、その制限に違反したり、最大数を超えた場合ポートをダウンさせたり通信をブロックさせることが出来ます。
トポロジ
![](https://itinfranote.com/wp-content/uploads/image-8.png)
ポートセキュリティの構成
SWの設定1
インターフェイスでポートセキュリティを有効にします。
SW1(config)#interface GigabitEthernet 0/0
SW1(config-if)#switchport port-security
セキュアMACアドレスの最大数を設定します。
SW1(config-if)#switchport port-security maximum 2
セキュリティ違反が検出されたときに実行されるアクションを設定します。
・protect
ポートで設定したMACアドレスの最大数に達するとセキュアMACアドレスを削除するか、最大値を増やすまで、不明な送信元アドレスを持つパケットはドロップされます。特に通知はされません。
・strict
ポートで設定したMACアドレスの最大数に達するとセキュアMACアドレスを削除するか、最大値を増やすまで、不明な送信元アドレスを持つパケットはドロップされます。syslogメッセージが記録され違反カウンタが増加します。
・shutdown
違反が発生するとインターフェイスはエラーディセーブルになりポートLEDがオフになります。SNMPトラップが送信されsyslogメッセージが記録され、違反カウンタが増加します。
今回はshutdownを設定します。
SW1(config-if)#switchport port-security violation shutdown
セキュアMACアドレスを設定します。stickyは動的にMACアドレスを学習してMACアドレステーブルとrunning-configに追加されます。
SW1(config-if)#switchport port-security mac-address sticky
動作確認
PC1とPC2を起動します。stickyを選択しているので動的にMACアドレスが学習され、PCのMACアドレスがrunning-configに追加されています。
SW1#show running-config interface GigabitEthernet 0/0
Building configuration…
Current configuration : 333 bytes
!
interface GigabitEthernet0/0
switchport access vlan 100
switchport mode access
switchport port-security maximum 2
switchport port-security mac-address sticky
switchport port-security mac-address sticky 5254.0012.1e2c
switchport port-security mac-address sticky 5254.0016.5f83
switchport port-security
negotiation auto
end
SW1#
PC3を起動します。制限の2を超えたのでインターフェイスがエラーディセーブル状態になりました。
SW1#
*Mar 19 13:35:58.525: %PM-4-ERR_DISABLE: psecure-violation error detected on Gi0/0, putting Gi0/0 in err-disable state
*Mar 19 13:35:58.525: %PORT_SECURITY-2-PSECURE_VIOLATION: Security violation occurred, caused by MAC address 5254.0008.c0fd on port GigabitEthernet0/0.
*Mar 19 13:35:59.525: %LINEPROTO-5-UPDOWN: Line protocol on Interface GigabitEthernet0/0, changed state to down
*Mar 19 13:36:00.525: %LINK-3-UPDOWN: Interface GigabitEthernet0/0, changed state to down
SW1#show interfaces status
Port Name Status Vlan Duplex Speed Type
Gi0/0 err-disabled 100 auto auto RJ45
Gi0/1 connected 1 a-full auto RJ45
Gi0/2 connected 1 a-full auto RJ45
Gi0/3 connected 1 a-full auto RJ45
SW1#
設定2
セキュアMACアドレスを手動で指定します。
SW1(config)#int g0/1
SW1(config-if)#switchport port-security
SW1(config-if)#switchport port-security violation restrict
SW1(config-if)#switchport port-security mac-address 1234.5678.90ab
動作確認
SW1で指定したセキュアなMACアドレス以外の端末からの接続なためセキュリティ違反が発生して、syslogメッセージが出力されました。
SW1#
*Mar 19 14:23:12.598: %PORT_SECURITY-2-PSECURE_VIOLATION: Security violation occurred, caused by MAC address 5254.0005.944a on port GigabitEthernet0/1.
*Mar 19 14:23:18.464: %PORT_SECURITY-2-PSECURE_VIOLATION: Security violation occurred, caused by MAC address 5254.0005.944a on port GigabitEthernet0/1.
*Mar 19 14:23:24.544: %PORT_SECURITY-2-PSECURE_VIOLATION: Security violation occurred, caused by MAC address 5254.0005.944a on port GigabitEthernet0/1.
設定3
違反モードをprotectで設定します。
SW1(config)#int g0/1
SW1(config-if)#switchport port-security
SW1(config-if)#switchport port-security violation protect
SW1(config-if)#switchport port-security maximum 1
動作確認
PC5を起動していた状態でPC6を起動します。最大数を超えたためPC6から通信はドロップされるのでping疎通が失敗します。
PC6:/home/cisco# ping 100.10.10.1
PING 100.10.10.1 (100.10.10.1): 56 data bytes
^C
— 100.10.10.1 ping statistics —
6 packets transmitted, 0 packets received, 100% packet loss
PC6:/home/cisco#
もちろんですがPC5からはping疎通が成功します。
PC5:/home/cisco# ping 100.10.10.1
PING 100.10.10.1 (100.10.10.1): 56 data bytes
64 bytes from 100.10.10.1: seq=0 ttl=255 time=2.895 ms
64 bytes from 100.10.10.1: seq=1 ttl=255 time=3.089 ms
64 bytes from 100.10.10.1: seq=2 ttl=255 time=2.631 ms
64 bytes from 100.10.10.1: seq=3 ttl=255 time=4.455 ms
設定4
こちらの設定はCMLの環境だと動作確認が難しいのですがCiscoConfigurationGuideに乗っていたので確認します。(ちなみにCMLだとmacアドレスの後にvlanコマンドを入れることが出来ませんでした)
下記の設定例では、スティッキーポートセキュリティを有効化して、データVLANと音声VLANのMACアドレスを手動で設定してセキュアMACアドレスの最大数をデータVLANで10、音声VLANで10の合計20に設定しています。
SW1(config)# interface tengigabitethernet0/3
SW1(config-if)# switchport access vlan 21
SW1(config-if)# switchport mode access
SW1(config-if)# switchport voice vlan 22
SW1(config-if)# switchport port-security
SW1(config-if)# switchport port-security maximum 20
SW1(config-if)# switchport port-security violation restrict
SW1(config-if)# switchport port-security mac-address sticky
SW1(config-if)# switchport port-security mac-address sticky 0000.0000.0002
SW1(config-if)# switchport port-security mac-address 0000.0000.0003
SW1(config-if)# switchport port-security mac-address sticky 0000.0000.0001 vlan voice
SW1(config-if)# switchport port-security mac-address 0000.0000.0004 vlan voice
SW1(config-if)# switchport port-security maximum 10 vlan access
SW1(config-if)# switchport port-security maximum 10 vlan voice
ポートセキュリティエージングの構成
ポートエージングを使用してセキュアMACアドレスのエージングタイムを設定できます。
switchport port-security aging timeコマンドを使用してエージングタイムを設定します。有効な範囲は0~1440(分)です。
switchport port-security aging staticコマンドを使用することでこのポートで静的に設定したセキュアMACアドレスのエージングを有効にします。
switchport port-security aging typeコマンドを使用してエージング方法を設定します。
・absolute
指定された時間が経過するとセキュアアドレスリストから削除されます。
・inactivity
指定された期間、セキュアな送信元アドレスからのデータトラフィックがない場合にのみ削除されます。
下記の設定例では10分経過するとセキュアマックアドレスがリストから削除されます。
SW1(config-if)#switchport port-security aging time 10
SW1(config-if)#switchport port-security aging type absolute
下記の設定例では20分間セキュアなマックアドレスからの通信がない場合削除されます。
SW1(config-if)#switchport port-security aging time 20
SW1(config-if)#switchport port-security aging type inactivity
SW1(config-if)#switchport port-security aging static