レイヤ2セキュリティ機能の全体像

スイッチの各ポートには、末端の利用者や不正な機器が直接接続されるため、レイヤ2(データリンク層)を狙った攻撃に対する備えが重要です。本記事では、代表的な3つのレイヤ2セキュリティ機能、ポートセキュリティ・DHCPスヌーピング・ダイナミックARPインスペクション(DAI)を扱います。この3つは互いに関連しており、DAIはDHCPスヌーピングが作成する情報やARP ACLを検証情報として利用できます。

ポートセキュリティ(Port Security)

ポートセキュリティは、スイッチの特定のポートで学習を許可するMACアドレスの数や種類を制限する機能です。1つのポートに、想定外の台数の機器が接続されたり、許可されていないMACアドレスを使った通信が行われたりすることを防ぎます。ただし、許可済みのMACアドレス自体を偽装する通信は防げません。

設定

Switch(config)# interface FastEthernet0/1
Switch(config-if)# switchport mode access
Switch(config-if)# switchport port-security
Switch(config-if)# switchport port-security maximum 2
Switch(config-if)# switchport port-security mac-address sticky
Switch(config-if)# switchport port-security violation restrict
  • switchport port-security:ポートセキュリティ機能そのものを有効化します。一般的には静的アクセスポート(switchport mode access)で使用します。トランクポートで設定できるか、および制約は機種やIOSにより異なります。
  • maximum:そのポートで許可する最大MACアドレス数を指定します(既定値は1)。
  • mac-address sticky:動的に学習したMACアドレスを、実行コンフィグに自動的に固定(スティッキー)登録します。手動で1件ずつMACアドレスを入力する手間を省けます。
  • violation:許可数を超えるMACアドレスを検知した際の動作を指定します。

違反モード(Violation Mode)の種類

モードポートの状態フレームの扱いログ/カウンタ
protect稼働を継続超過分のフレームを破棄記録・通知は無し
restrict稼働を継続超過分のフレームを破棄違反カウンタが増加し、ログ・SNMPトラップが送信される
shutdown(既定値)err-disable状態でポートが停止破棄(ポート自体が停止)ログ・SNMPトラップが送信される

shutdownモードでポートが停止した場合、原因を取り除いたうえで、shutdown/no shutdownコマンドによる手動での復旧(またはerrdisable recoveryの自動復旧設定)が必要になります。

errdisableからの自動復旧

ポートセキュリティ違反によってerr-disable状態になったポートを、毎回手動でshutdown/no shutdownするのは運用上の負担になります。そこで、次のようにグローバルコンフィギュレーションモードで自動復旧を設定できます。

Switch(config)# errdisable recovery cause psecure-violation
Switch(config)# errdisable recovery interval 30
  • errdisable recovery cause psecure-violation:ポートセキュリティ違反(psecure-violation)が原因でerr-disable状態になったポートを、手動でのshutdown/no shutdownを行わなくても、スイッチが自動的に復旧させるようにします。
  • errdisable recovery interval 30:err-disable状態になってから自動復旧するまでの待機時間を秒単位で指定します(この例では30秒)。このコマンドを設定しない場合の既定値は300秒です。

設定の確認

Switch# show port-security interface FastEthernet0/1

Port Security              : Enabled
Port Status                : Secure-up
Violation Mode              : Restrict
Maximum MAC Addresses       : 2
Total MAC Addresses          : 1
Configured MAC Addresses    : 0
Sticky MAC Addresses        : 1
Last Source Address:Vlan   : 0011.2233.4455:1
Security Violation Count    : 0

DHCPスヌーピング(DHCP Snooping)

DHCPスヌーピングは、スイッチの各ポートを「信頼できる(trusted)」「信頼できない(untrusted)」に分類し、不正なDHCPサーバー(ローグDHCPサーバー)からのDHCP応答を遮断する機能です。

信頼ポートと非信頼ポート

  • 信頼ポート(trusted):正規のDHCPサーバーや、上流のスイッチ・ルータへ接続するポートです。すべてのDHCPメッセージの通過を許可します。
  • 非信頼ポート(untrusted、既定値):一般利用者の端末を接続するポートです。クライアントが送信するDHCPDISCOVER/DHCPREQUESTなどのクライアントからサーバーへのメッセージを許可し、本来サーバーが送信するはずのDHCPOFFER/DHCPACKなどを受信した場合は、そのメッセージを破棄します。これにより、末端のポートに接続された不正なDHCPサーバーが、他の利用者へ誤ったIP情報を配布することを防ぎます。

設定

Switch(config)# ip dhcp snooping
Switch(config)# ip dhcp snooping vlan 10,20
Switch(config)# interface GigabitEthernet0/1
Switch(config-if)# ip dhcp snooping trust

正規のDHCPサーバーへ向かう上流のポート(GigabitEthernet0/1)だけをtrustに設定し、その他の一般利用者向けポートは、既定の非信頼のままにしておきます。

設定の確認

Switch# show ip dhcp snooping

Switch DHCP snooping is enabled
DHCP snooping is configured on following VLANs:
10,20
Insertion of option 82 is enabled
Interface                   Trusted     Rate limit (pps)
------------------------    -------     ----------------
GigabitEthernet0/1          yes         unlimited
FastEthernet0/1              no          unlimited
Switch# show ip dhcp snooping binding

MacAddress          IpAddress        Lease(sec)  Type           VLAN  Interface
------------------  ---------------  ----------  -------------  ----  --------------------
00:11:22:33:44:55   192.168.10.20    86400       dhcp-snooping  10    FastEthernet0/1

show ip dhcp snooping bindingで表示されるバインディングテーブル(MACアドレスとIPアドレスの正規の対応関係)は、後述するDAIが正当性を判断するための情報源として使われます。

ダイナミックARPインスペクション(DAI:Dynamic ARP Inspection)

DAIは、ARPスプーフィング(ARPポイズニング)、すなわち偽のARP応答を送りつけて他の機器の通信を横取りする攻撃を防ぐための機能です。DAIは、受信したARPパケットの送信元IPアドレスとMACアドレスの対応関係を、DHCPスヌーピングのバインディングテーブルと照合し、一致しないARPパケットを破棄します。

DAIの前提条件

DAIは、DHCPスヌーピングのバインディングテーブル、またはARP ACLに定義したIPアドレスとMACアドレスの対応関係を用いて検証します。DHCPでアドレスを割り当てる端末では、DHCPスヌーピングを有効にしてバインディングテーブルを利用する構成が一般的です。DHCP以外の方法(静的IPアドレス)で運用している端末については、バインディングテーブルに情報が存在しないため、別途ARP ACLを作成して許可する必要があります。

設定

Switch(config)# ip arp inspection vlan 10,20
Switch(config)# interface GigabitEthernet0/1
Switch(config-if)# ip dhcp snooping trust
Switch(config-if)# ip arp inspection trust

DHCPスヌーピングと同様に、上流のポート(サーバーやルータへ向かうポート)は、ip arp inspection trustで信頼ポートに設定し、そのポートで受信するARPパケットを検査の対象から除外します。

Switch(config)# interface FastEthernet0/1
Switch(config-if)# ip arp inspection limit rate 8

limit rateは、1秒あたりに処理するARPパケット数の上限を設定し、大量のARPパケットを送りつけるDoS攻撃への耐性を高めます。非信頼ポートでこの上限を超えると、ポートはerr-disable状態になります。

設定の確認

Switch# show ip arp inspection vlan 10

Source Mac Validation      : Disabled
Destination Mac Validation : Disabled
IP Address Validation      : Disabled

Vlan     Configuration    Operation
----     -------------    ---------
10       Enabled          Active
Switch# show ip arp inspection interfaces

Interface        Trust State     Rate (pps)    Burst Interval
---------------  --------------  ------------  --------------
GigabitEthernet0/1  Trusted        None          N/A
FastEthernet0/1      Untrusted      8             1

3つの機能の関係

機能防御対象判断基準
ポートセキュリティ想定外の台数の接続、未許可のMACアドレスの使用ポートごとに許可するMACアドレス数・種類
DHCPスヌーピング不正なDHCPサーバーからの応答ポートの信頼状態(trusted/untrusted)
DAIARPスプーフィングDHCPスヌーピングのバインディングテーブルまたはARP ACLのIP-MAC対応

このように、DAIはDHCPスヌーピングの情報を利用して動作できるため、DHCPでアドレスを割り当てる端末を保護する際は、DHCPスヌーピングもあわせて有効化してバインディングテーブルを利用する構成が一般的です。静的IPアドレスの端末については、ARP ACLによる許可設定を使用します。