DHCPスヌーピングについて

DHCPスヌーピングとは

DHCP スヌーピングとは、信頼できない DHCP メッセージをフィルタリングし、DHCP スヌーピング バインディング データベース (DHCP スヌーピング バインディングとも呼ばれる) を構築および維持することにより、ネットワーク セキュリティを提供する DHCP セキュリティ機能です。
DHCPスヌーピングを実装したスイッチやルーターは、ネットワーク上のDHCPメッセージを監視し、信頼されたDHCPサーバーからのメッセージのみを許可し、不正なDHCPサーバーからのメッセージをブロックします。これにより、不正なIPアドレスの割り当てやネットワークの不正利用を防止することができます。

DHCPスヌーピングの役割

DHCPスヌーピングは、主に次の目的で使用されます。

  1. 不正なDHCPサーバー(DHCPスプーフィング)からの保護:
    • 攻撃者が不正なDHCPサーバーをネットワーク内に設置し、クライアントに誤ったIPアドレスやデフォルトゲートウェイを配布しようとするDHCPスプーフィング攻撃から守ります。
  2. IPアドレスの正当性を保証:
    • DHCPスヌーピングは、クライアントに割り当てられたIPアドレスが正当であることを確認し、信頼できるDHCPサーバーによって提供されたものであることを確認します。
  3. セキュリティ情報のトラッキング:
    • DHCPスヌーピングは、ネットワーク内の各DHCPクライアントに割り当てられたIPアドレス、MACアドレス、VLAN、ポート情報を追跡し、DHCPスヌーピングバインディングテーブルに保存します。この情報を使って、さらに高度なセキュリティ機能(例えば、Dynamic ARP InspectionIP Source Guard)が有効にできます。

DHCPスヌーピングの動作

DHCPスヌーピングを有効にすると、スイッチのポートが2つのカテゴリに分類されます。

  1. 信頼されたポート(trusted port):
    • 信頼できるDHCPサーバーに接続されているポートを指します。このポートでは、DHCPスヌーピングは行われません。通常、信頼されたポートは、DHCPサーバーが存在する上位スイッチやルーターに接続されているポートです。
  2. 信頼されていないポート(untrusted port):
    • クライアントが接続されているポートを指し、DHCPスヌーピングによって制御されます。このポートでは、DHCPオファーやACKなどのDHCPサーバーからのレスポンスがブロックされます。信頼されていないポートから不正なDHCPサーバーが応答しないように保護します。

信頼されていないポートでの動作

信頼されていないポートでは、スイッチは次のように動作します:

DHCPオファーやACKなど、サーバーからの応答は、信頼されたポートからのものだけが許可され、信頼されていないポートからの応答はブロックされます。

DHCPディスカバリとリクエストは通常通り転送されます。

オプション82

オプション82は、ネットワーク機器(通常はスイッチやルータ)がDHCPメッセージに追加情報を挿入するための標準化されたオプションです。このオプションは、DHCPリクエストとDHCP応答メッセージに特定の情報(サブネット、VLAN、ポート番号など)を含めることができます。

DHCPスヌーピングでは、DHCPスヌーピングバインディングデータベースの情報と照合をして、不正なアクセスが発生している場合は通信を破棄します。

DHCPスヌーピングの設定

基本構文

DHCP スヌーピングをグローバルで有効にします。
Switch(config)#ip dhcp snooping

VLAN または VLAN の範囲で DHCP スヌーピングを有効にします。範囲は 1 ~ 4094 です。
Switch(config)#ip dhcp snooping vlan vlan-range

スイッチが DHCP サーバーに転送される DHCP 要求メッセージ内の DHCP リレー情報 (オプション 82 フィールド) を挿入および削除できるようにします。
Switch(config)#ip dhcp snooping information option
インターフェイスを信頼できるものとして構成します。
Switch(config-if)#ip dhcp snooping trust

オプション設定

オプション82で挿入されるリモートIDを設定します。DHCPメッセージに対して追加情報を付加し、DHCPサーバーにクライアントがどのスイッチポートやスイッチを経由してリクエストを送信しているかを通知するために使用されます。
Switch(config)#ip dhcp snooping information option format remote-id [string ASCII-string | hostname]

スイッチがエッジスイッチからのoption-82情報を持つ受信DHCPスヌーピングパケットを受け入れることを有効にします。
Switch(config)#ip dhcp snooping information option allow-untrusted

インターフェイスが受信できる 1 秒あたりの DHCP パケット数を構成します。
Switch(config-if)#ip dhcp snooping limit rate rate

信頼できないポートで受信した DHCP パケット内の送信元 MAC アドレスがパケット内のクライアント ハードウェア アドレスと一致することを確認するようにスイッチを設定します。
Switch(config)#ip dhcp snooping verify mac-address

設定例

DHCPスヌーピングを100で有効化にしてGi0/1を信頼できるポート(DHCPサーバが接続されているポート)に設定する例

DHCP スヌーピング バインディング データベースとは

DHCPスヌーピング バインディング データベースは、ネットワークスイッチがDHCPスヌーピング機能を使用して管理する、各DHCPクライアントの情報を記録したテーブルです。このデータベースには、DHCPクライアントがネットワークからIPアドレスを取得する際に、スイッチがそのクライアントに割り当てられた情報を記録します。この情報は、セキュリティ機能として、IPアドレスの偽装や不正なDHCPサーバの攻撃からネットワークを保護するのに役立ちます。

DHCPスヌーピング バインディング データベースに記録される情報

データベースには、以下のような情報が含まれます:

  1. クライアントのIPアドレス: DHCPサーバからクライアントに割り当てられたIPアドレス。
  2. クライアントのMACアドレス: クライアントの物理アドレス。DHCPクライアントはこのMACアドレスを使って通信を行います。
  3. VLAN ID: クライアントが属するVLAN。スイッチがクライアントをどのVLANに所属させるかを記録します。
  4. スイッチポート: DHCPクライアントが接続されているスイッチのポート番号。
  5. リース時間: DHCPサーバがクライアントに対してIPアドレスを割り当てた期間。リース時間が切れると、クライアントは新しいIPアドレスをリクエストする必要があります。

DHCP スヌーピング バインディング データベースの保存

バインディングデータベースは、デフォルトではスイッチのメモリに保存され、スイッチが再起動するとクリアされます。ただし、永続的な保存を設定することが可能で、スイッチが再起動してもバインディングデータベースが維持されます

Switch(config)#ip dhcp snooping database URL

URL指定方法
flash [ number ] :/ filename
 ftp:// user : password@host / filename
http:// [[ username : password ]@]{ hostname | host-ip }[/ directory ]/ image-name .tar
rcp:// user@host / filename
 tftp:// host / filename

データベース転送プロセスが終了するまで、プロセスを停止するまでの待ち時間を秒単位で指定します。
Switch(config)#ip dhcp snooping database timeout seconds

バインディング データベースが変更された後に転送を遅らせる期間を指定します。
Switch(config)#ip dhcp snooping database write-delay seconds

参考文献

Chapter: Configuring DHCP Features and IP Source Guard