Cisco 1812JにuRPFを設定

ネットワーク

はじめに

CCNP ENARSIの範囲にuRPF(Unicast Reverse Path Forwarding)があります。

今回は、自宅で使用しているCisco 1812JにuRPFを設定し、送信元IPアドレスを偽装したパケットがuRPFによってフィルタリングされることを確認します。

uRPFとは?

uRPF(Unicast Reverse Path Forwarding)は、着信パケットの送信元IPアドレスについて、ルーティングテーブルを利用して正当な送信元かどうかを検証する機能です。

送信元IPアドレスを偽装したパケット(IPスプーフィング)の対策として利用できます。

やること

今回は、自宅のCisco 1812JのLAN側インターフェースにuRPFを設定します。

LAN側のクライアントはDHCPを利用しており、デフォルトゲートウェイにはCisco 1812JのLAN側インターフェースが設定されています。

クライアントには192.168.10.0/24のアドレスが割り当てられます。

Cisco 1812JにDHCPを設定した記事はこちら

Cisco 1812Jでクロスパス(DS-Lite)に接続する設定方法【実測58Mbps】 | Yuu Log

設定後、クライアントPCから送信元IPアドレスを偽装したパケットを送信し、uRPFによってフィルタリングされることを確認します。

設定

LAN側のインターフェースにuRPFを設定します。

interface FastEthernet1
 ip verify unicast source reachable-via rx

今回はStrictモードを使用します。

Strictモードでは、着信パケットの送信元IPアドレスについてルーティングテーブルを検索し、その送信元IPアドレスへの最適な経路が、パケットを受信したインターフェースと一致するかを確認します。

今回の構成では、192.168.10.0/24への経路がFastEthernet1に存在します。

そのため、FastEthernet1から192.168.10.0/24以外の送信元IPアドレスを持つパケットが入ってきた場合、uRPFの検証に失敗してパケットが破棄されます。

設定確認

以下のコマンドで設定を確認します。

show ip interface FastEthernet1

設定した直後なので、uRPFによるverification dropsは0です。

IP verify source reachable-via RX
  0 verification drops

送信元IPアドレスを偽装したパケットを送信

クライアントPCにScapyをインストールします。※事前にPythonをインストールしてください。

powershellを管理者権限で開き以下を実行します。

python -m pip install scapy

Scapyとは?

Scapyは、Pythonからネットワークパケットを生成・解析・操作できるライブラリです。

今回は送信元IPアドレスを192.168.20.100に偽装し、Google Public DNS(8.8.8.8)宛てにICMP Echo Requestを送信します。

pythonから以下を実行します。

from scapy.all import IP, ICMP, send

pkt = IP(
    src="192.168.20.100",
    dst="8.8.8.8"
) / ICMP()

send(pkt)

192.168.20.100は、今回のLANで使用している192.168.10.0/24とは異なるネットワークのIPアドレスです。

そのため、このパケットがFastEthernet1から入ってきた場合、Strict uRPFの検証に失敗して破棄されることが期待できます。

uRPFによる破棄を確認

再度、以下のコマンドを実行します。

show ip interface FastEthernet1

すると、verification dropsが1増加していました。

IP verify source reachable-via RX
  1 verification drops

送信元IPアドレスを偽装したパケットを送信した直後にuRPFのverification dropsが1増加したため、今回送信したパケットがuRPFによって破棄されたことを確認できました。

Wiresharkで確認

さらにWiresharkでパケットを確認します。

Scapyから送信したICMP Echo Requestを確認できました。

一方で、クライアントPCでは8.8.8.8からのICMP Echo Replyは確認できませんでした。

ただし、今回は送信元IPアドレスを192.168.20.100に偽装しているため、仮にパケットが8.8.8.8まで到達していた場合でも、Echo Replyは192.168.20.100宛てに返されます。

そのため、Echo Replyが確認できないことだけでは、uRPFによってパケットが破棄されたとは断定できません。

今回はルータ側でuRPFのverification dropsが増加していることから、送信したEcho RequestはルータのuRPFによって破棄されたと判断できます。

まとめ

今回は、自宅のCisco 1812JにuRPFを設定し、送信元IPアドレスを偽装したパケットがuRPFによって破棄されることを確認しました。

uRPFを利用することで、受信インターフェースと送信元IPアドレスの経路関係を検証し、送信元IPアドレスの偽装(IPスプーフィング)対策として利用できます。

実際にScapyで送信元IPアドレスを偽装したパケットを生成し、Cisco 1812Jのverification dropsが増加することまで確認できました。

タイトルとURLをコピーしました