Configuring Dynamic ARP Inspection(1回目)

はじめに

今回からはCatalystスイッチのセキュリティ関連の機能であるDynamic ARP Inspection
についてお勉強していこうと思います。
Dynamic ARP Inspection featureは、同じVLAN内での不正なARP requestや
responseを使ったAttackをスイッチで防いでしまおうという機能です。

Understanding Dynamic ARP Inspection

ARPはあるIPアドレスをもつホストのMACアドレスを解決するためのプロトコル
です。例えば、ホストBがホストAに対して何らかの情報を送りたいとき、ホス
トBがホストAのMACアドレスを知らない(自分のARP cacheにないとき)ホストA
のIPアドレスに対応するMACアドレスを教えて、とブロードキャストします。
ホストAはそれに応答して自分のMACアドレスを教えてあげます。

しかし、ARPにはgratuitous ARPという、「ARP requestを受け取っていないの
にARP responseを出す」という動作が認められています。要求を受けてないの
に答えるというところがgratuitous(無駄な、無償の、あるいは好意のという
訳になるようです)ということなのでしょう。
このような動作ができる事によって、ARP Spoofing Attackというものが存在
し、ARP cachesをPoisoningすることができます。Poisoningするというのは、
不正なIPアドレスとMACアドレスのペアをARP cacheに覚えさせてしまう、とい
うことです。
このAttackを受けてしまうと、そのホストは少なくともARP cacheがageoutす
るまでの間、不正なMACアドレスあてにデータを送り続けます。そしてこのMAC
アドレスは大抵クラッカーのPCで送られてきたデータを全てキャプチャしつつ、
攻撃がバレないようにゲートウェイとなってるルータやあて先のホストに転送
します。
不正なユーザはLayer2で接続されているホスト、スイッチ、ルータのARP cache
をpoisoningしてトラフィックをインターセプトするAttackを行うことができ
ます。

ARP cache poisoningの例を示しますので、まずこのリンク先の図を参照して
ください。
http://www.cisco.com/univercd/cc/td/doc/product/lan/c3550/12225see/scg/swdynarp.htm#wp1038642

ホストA、B、CはスイッチのインタフェースA、B、Cにそれぞれ接続されていて、
それらは全て同じサブネットに属しています。それらのIPとMACアドレスは図
に示されています。例えば、ホストAのIPアドレスはIAで、MACアドレスはMAで
す。
ホストAとホストBが通信する場合、ホストAはBのMACを解決するためのARP request
をブロードキャストします。ホストBがARP responseを返すと、ホストAはホス
トBのIPとMACを自身のARP cacheに記憶します。
ホストCはホストAのARP cacheを偽造したARP response(例えばIBのアドレス
に対するMACはMCとする)をホストAに送信することでホストAのARP cacheを
poisoningできます。
ホストAはARP responseを受け取ると、自身のARP cacheをIBのMACはMCと記憶
しなおします。これ以降、ホストAはホストBにデータを送る際には結果的にホ
ストCに送ることになってしまいます。
ホストCはデータをインターセプトして、その後ホストBに転送します。ホスト
AとホストBの通信を完全に中継できるので、典型的なman-in-the middle attack
を行うことができます。

Dynamic ARP inspectionはARPパケットの内容をチェックして内容に問題がな
いかを精査する機能です。ARPを中継し、ログを取り、不正なIPとMACの組み合
わせを見つけたら、それを破棄します。この機能でman-in-the-middle attack
を防ぐことができます。
Dynamic ARP inspectionでは、有効な(偽造されていない)ARPrequestとresponse
だけを中継します。スイッチは以下の動作を行います。

  • untrusted portの全てのARP requestとresponseをインターセプトする
  • インターセプトしたパケットのIPとMACの組み合わせをチェックしてパケットを適切なあて先に転送し、自身のARP cacheをupdateする
  • 不正なARPパケットをDropする

Dynamic ARP inspectionでは、ARPパケットのIPとMACアドレスの組み合わせを、
DHCP snooping binding databaseなどの信頼できるdatabaseの情報を利用して
チェックします。DHCP Snooping機能ば有効になっていれば、このdatabaseは
DHCP Snoopingによって構築されます。
もしDHCPを利用しない環境の場合、userが設定したARP ACLを手動で設定して
ARPパケットの正当性をチェックします。ARP ACLはarp access-listグローバ
ルコンフィギュレーションコマンドで設定します。
また、EthernetのヘッダにあるアドレスとARPパケットの中のアドレスがマッ
チしない場合に、そのARPパケットをDropするようにすることもできます。

ARPパケットがtrustedインタフェースからやってくればチェックをせずに転送
し、untrustedインタフェースからの場合はパケットの内容をチェックし、有
効なものだけ転送します。Dropされたパケットはスイッチでロギングされます。
Dynamic ARP inspectionをVLANごとに有効にするにはip arp inspection vlan
グローバルコンフィギュレーションコマンドを使います。

次回はインタフェースのtrustやuntrustの話、それから設定をみていきます。

By 『Overseas and Beyond』 Koichi

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA