DHCPスヌーピングとは

DHCPスヌーピングは、レイヤ2スイッチでDHCPメッセージをチェックしてその整合性を確認するための機能です。DHCPスヌーピングによって、DHCPサーバを偽装するDHCPスプーフィングを防止できます。

スヌーピングは「覗き見る」という英単語「snooping」をカタカナ表記したものです。スプーフィングは「騙す」「なりすます」という英単語「spoofing」をカタカナ表記したものです。

DHCPスヌーピングの仕組み

DHCPスヌーピングを有効にして、スイッチのインタフェースを次の2つの種類に分けます。

  • Trustポート
  • Untrustポート

Trustポートは、正規のDHCPサーバが接続されている方向のインタフェースです。Trustポートを設定で明示的に指定します。Trustポート以外のポートはUntrustポートになります。Untrustポートの先にはDHCPサーバが接続されているはずがないということになります。

Trustポートでは、DHCPメッセージのチェックを行いません。Untrustポートで受信したDHCPメッセージをすべてチェックします。DHCPスヌーピングの動作は、以下のように行います。

  • Untrustポートで受信するすべてのDHCPメッセージをチェックする
  • サーバから送信されるはずのOFFERとACKを破棄する
  • クライアントから送信されるDISCOVERのMACアドレスの整合性をチェックする
  • DHCPでリースされたIPアドレスとMACアドレスの対応をDHCPスヌーピングバインディングテーブルに保持する
図 DHCPスヌーピングの動作
図 DHCPスヌーピングの動作の概要

DISCOVERのMACアドレスのチェック

DISCOVERメッセージのMACアドレスの整合性のチェックについてもう少し詳しく見ておきましょう。UntrustポートでDHCPクライアントから送信されるDISCOVERのMACアドレスの整合性をチェックします。イーサネットヘッダの送信元MACアドレスとDISCOVERメッセージのclient hardware address(CHADDR)が一致しているかどうかです。一致していないと攻撃者が不正に作り出したDISCOVERメッセージとみなして破棄します。

図 MACアドレスの整合性チェック
図 MACアドレスの整合性チェック

DHCPスヌーピングバインディングテーブル

正規のDHCPサーバと正常にDHCPでIPアドレスなどを割り当てられると、レイヤ2スイッチのDHCPスヌーピングバインディングテーブルに割り当てたIPアドレスとMACアドレスの対応を保持します。

図 DHCPスヌーピングバインディングテーブル
図 DHCPスヌーピングバインディングテーブル

DHCPメッセージの制限

通常のレイヤ2スイッチはイーサネットヘッダのみを参照して、イーサネットフレームを転送します。その処理はハードウェア処理です。ところが、DHCPスヌーピングを有効にすると、DHCPメッセージの内容をチェックしなければいけなくなり、スイッチのCPUに負荷をかけてしまいます。多くのDHCPメッセージを送りつけて、スイッチのCPUに過剰な負荷をかける一種のDoS攻撃もあります。こうした過剰なDHCPメッセージに対応するために、受信するDHCPメッセージを制限します。

インタフェースで受信するDHCPメッセージのしきい値を設定します。しきい値を超えるDHCPメッセージを受信するとそのインタフェースをerr-disable状態にして、過剰なDHCPメッセージを受信しないようにできます。

図 DHCPメッセージの制限
図 DHCPメッセージの制限

Option82の付加

Cisco Catalystスイッチでは、DHCPスヌーピングの際に、デフォルトでOption82として以下の情報を付加します。

  • リモートID
  • サーキットID

リモートIDは、スヌーピングしているスイッチのMACアドレスです。サーキットIDはDHCPクライアントが接続されているポート番号とVLAN情報です。リモートIDおよびサーキットIDで、DHCPクライアントがどのスイッチのどのポート(インタフェース)に接続されているかがわかります。つまり、DHCPクライアントを識別しやすくなります。

図 Option82の付加

以下の画像は、DHCPスヌーピングでOption82が付加されたDHCP DISCOVERをWiresharkでキャプチャしたものです。

図 DHCPスヌーピング Option82の付加
図 DHCPスヌーピング Option82の付加

リンク

Option82のリモートID/サーキットIDのフォーマットについて、以下のWebページが詳しいです。

DHCPサーバによって、DHCPスヌーピングによってOption82が挿入されたDHCPメッセージを破棄することがあります。Cisco IOSをDHCPサーバにしているときには、ip dhcp relay information trust-allコマンドが必要です。

まとめ

ポイント

  • DHCPスヌーピングは、レイヤ2スイッチでDHCPメッセージをチェックしてその整合性をチェックする機能です。
  • DHCPスヌーピングによって、DHCPサーバのなりすまし(スプーフィング)を防止します。
  • 正規のDHCPサーバが接続される方向のインタフェースをTrustとして設定します。
  • DHCPで割り当てられたIPアドレスとクライアントのMACアドレスの対応をDHCPスヌーピングバインディングテーブルに保持します。

セキュリティの基礎