ITの教科書検索
入門・発展ページ読了 約8分

DHCPスヌーピングとは ― 不正DHCPサーバ対策

DHCPスヌーピングとは、スイッチのポートを信頼・非信頼に分け、不正なDHCPサーバの応答を捨てる機能です。集めた対応表は、DAIがARPスプーフィングを防ぐのにも使います。

目次
  1. DHCPスヌーピングとは
  2. 何を防ぐ機能か
  3. 信頼ポートと非信頼ポート
  4. バインディングテーブル
  5. DAI・IP Source Guardとの関係
  6. ポートセキュリティとの役割分担
  7. 練習問題

DHCPスヌーピングとは、不正なDHCPサーバの応答をポートの時点で破棄する機能

DHCPスヌーピングは、スイッチの各ポートを信頼ポートと非信頼ポートに分け、不正なDHCPサーバの応答を止める機能です。DHCPサーバからの応答は、信頼ポートからだけ通します。非信頼ポートから来た同じ応答は、ポートの時点で破棄します。

偽のDHCPサーバがLANにいると、端末は攻撃者の決めたゲートウェイへ通信を送ってしまいます。スヌーピングで集めた情報は、ARPスプーフィングを防ぐ機能にも使います。

DHCPスヌーピングは何を防ぐ機能か

DHCPの記事で説明したDORAのやり取りには、応答してきた相手が正規のDHCPサーバかどうかを確かめる仕組みがありません。端末は、届いたOFFERの送り主が正規のサーバかどうかを区別できません。

攻撃者が用意した不正なDHCPサーバを同じLANにつなぐと、端末がそちらのOFFERを選んでしまうことがあります。攻撃者は、デフォルトゲートウェイやDNSサーバのIPアドレスを、自分の用意した値に書き換えて配れます。端末の通信は、知らないうちに攻撃者を経由するようになります。

もう1つの攻撃がDHCP枯渇攻撃です。攻撃者は、偽のMACアドレスを次々に変えながら、大量のDISCOVERを送り続けます。正規のDHCPサーバは、それぞれに応じてIPアドレスを割り当てようとします。やがてアドレスプールを使い果たし、正規の端末に配るIPアドレスが無くなります。

DHCPスヌーピングは、この2つの攻撃をそれぞれ別の方法で防ぎます。不正なDHCPサーバの応答は、非信頼ポートで破棄するので届きません。DHCP枯渇攻撃は、非信頼ポートでDHCPパケットの速度を制限して抑えます。

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

DHCPスヌーピングを有効にすると、すべてのポートは既定で非信頼(untrusted)になります。管理者は、正規のDHCPサーバを接続したポートだけを、信頼ポート(trusted)に設定します。

非信頼ポートが転送できるのは、端末からサーバへ向かうDISCOVER・REQUESTなどの問い合わせだけです。サーバから端末へ向かうOFFER・ACK・NAKなどの応答が非信頼ポートに届くと、スイッチはその場で破棄します。

正規のDHCPサーバ192.168.10.1不正なDHCPサーバ(攻撃者)信頼ポート非信頼ポートDHCPACKDHCPOFFER/ACKポートで破棄SW1書き込むバインディングテーブルMAC・IP・リース時間・VLAN・ポートac:de:48:aa:bb:cc / 192.168.10.25 / VLAN10 / Gi0/1
信頼ポートに接続した正規のDHCPサーバからのDHCPACKは通過します。スイッチは、そのMAC・IP・VLAN・ポート番号をバインディングテーブルに書き込みます。非信頼ポートに接続した不正なDHCPサーバから届く同じ種類の応答は、ポートの時点で破棄されます。

結果として、応答を返せるのは信頼ポートの先にある正規のDHCPサーバだけになります。攻撃者が非信頼ポートに不正なDHCPサーバをつないでも、その応答は端末に届きません。

DHCP枯渇攻撃への対策では、非信頼ポートごとにDHCPパケットの速度を制限します。Cisco公式ドキュメントは、非信頼ポートの速度制限を100パケット/秒以下にすることを推奨しています。制限を超えたポートは、エラーによる無効化状態(err-disabled)になります。ただし、制限より遅い速さで送り続ける攻撃は、速度制限だけでは止まりません。

バインディングテーブルとは

スイッチは、信頼ポートの先にある正規のDHCPサーバからDHCPACKを受け取るたびに、1件の記録を作ります。この記録の集まりをバインディングテーブルと呼びます。DHCPスヌーピングのバインディングデータベースとも呼びます。

記録されるのは、非信頼ポート側にいる端末の情報だけです。信頼ポートの先にいる端末は、記録の対象になりません。

項目内容の例
MACアドレスac:de:48:aa:bb:cc
IPアドレス(リース済み)192.168.10.25
リース時間8時間
バインディングの種類DHCPのやり取りから学習したもの
VLAN番号・ポートVLAN10 / Gi0/1

このテーブルは、DHCPスヌーピングだけのために使われるわけではありません。次に見るDynamic ARP InspectionとIP Source Guardは、このテーブルを参照して、別の種類の偽装を見つけます。

Dynamic ARP Inspection・IP Source Guardとの関係

ARPの記事で説明したとおり、ARPには応答の送り主が本物かどうかを確認する仕組みがありません。これを悪用する攻撃がARPスプーフィングです。

Dynamic ARP Inspection(DAI)は、非信頼ポートで受け取ったARP要求・応答を、バインディングテーブルと照合します。テーブルに記録されたIPアドレスとMACアドレスの組み合わせと一致しなければ、そのARPパケットを破棄します。信頼ポートで受け取ったARPパケットは、検査せずそのまま転送します。

Dynamic ARP Inspectionは、ダイナミックARPインスペクションとも呼びます。

バインディングテーブル(DHCPスヌーピングが作成)192.168.10.25 ↔ ac:de:48:aa:bb:cc(VLAN10・Gi0/1)この対応だけが「正しい」とDAIが見なすSW1(DAI)非信頼ポートのARPを検査参照するPC(正規)192.168.10.25攻撃者192.168.10.50ARP応答:192.168.10.25はac:de:48:aa:bb:cc一致 → 転送ARP応答:192.168.10.25はaa:aa:aa:aa:aa:aa(偽装)不一致 → 破棄
Dynamic ARP Inspection(DAI)は、非信頼ポートで受け取ったARP応答をバインディングテーブルと照合します。IPアドレスとMACアドレスの組み合わせが一致すれば転送しますが、同じIPアドレスを名乗りながら違うMACアドレスを示す応答は、一致しないため破棄します。

バインディングテーブルを作るのはDHCPスヌーピングで、それを読み取って使うのがDAIです。DHCPスヌーピングが止めるのはDHCPの偽応答、DAIが止めるのはARPの偽応答という違いがあります。

IP Source Guardは、同じバインディングテーブルを別の目的で使います。ポートとVLANの組み合わせごとに、アクセス制御リストを作ります。このリストは、バインディングテーブルに記録されたIPアドレスだけを送信元として許可します。記録されていないIPアドレスを送信元にしたパケットは、フィルタで遮断されます。ARPではなく、IPパケットそのものの送信元を偽装する攻撃に効きます。

機能見ている対象止める攻撃
DHCPスヌーピングDHCPサーバの応答が来たポート不正なDHCPサーバによるなりすまし。速度制限でDHCP枯渇攻撃を抑える
Dynamic ARP InspectionARP要求・応答の送信元IP・MACARPスプーフィング(ARPポイズニング)
IP Source GuardIPパケットの送信元IPアドレス他人のIPアドレスを名乗るなりすまし

ポートセキュリティとの役割分担

スイッチには、ポートセキュリティという別の機能もあります。ポートセキュリティが制限するのは、そのポートに接続してよいMACアドレスです。

DHCPスヌーピングが見ているのは、DHCPサーバの応答がどのポートから来たかです。このように、2つの機能は見ている対象が違います。一方の機能だけを設定しても、もう一方が防ぐ攻撃は防げません。

練習問題(全5問)

Q1DHCPスヌーピングを有効にした直後、スイッチの各ポートの初期状態は?
Q2信頼できないポートで受け取ったとき、破棄されるDHCPのメッセージはどれか?
Q3DHCPスヌーピングのバインディングテーブルに記録される項目として正しいものは?
Q4Dynamic ARP Inspection(DAI)が、ARP応答の正しさを判断する基準は?
Q5攻撃者が偽のMACアドレスで大量のDHCPDISCOVERを送り、DHCPサーバのアドレスプールを使い果たす攻撃がある。これを抑える方法として正しいものは?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

おすすめの本 PR

ネットワークを初めて学ぶ人向けの入門書です。

目的別の本の選び方を見る

ネットワークの記事を探す