uRPF (Unicast Reverse Path Forwarding)

初めに

サービスプロバイダーは多数のユーザと接続するため、クラッカーからの攻撃を受けやすい。例えば、クラッカーの機器が接続され、重要サーバに向けて大量のDDoS攻撃を受けてしまう。
DDoS攻撃によって、該当サーバがダウンしてしまうだけでなく、有限な回線帯域を消費してしまうことになる。
これを防ぐため、uRPF (Unicast Reverse Path Forwarding)というセキュリティ対策を行う。

uRPFとは

DoS/DDoS攻撃対策で使用されるセキュリティ対策の1つ。クラッカーが対象サーバに攻撃を仕掛けるとき、送信元アドレスを偽装することが多い。
そのため、受け取った攻撃被疑パケットの『送信元アドレス』とルータの保持する『ルーティングテーブル』を比較し、『正しい経路から来たパケットかどうか』を判断する。
正しい経路から来たパケットでない』場合はクラッカーの攻撃パケットとみなし、対象パケットを破棄する。

マルチキャストではRPF (Reverse Path Forwarding)を使用しているが、それをユニキャストに応用したものである。

uRPFには「looseモード」と「strictモード」の2種類のモードが存在する。

looseモード

送信元アドレス(を含むプレフィックス)がルーティングテーブルに経路が登録されていれば「正」とみなす。
strictモードとは異なり、受信IFは問わない。

strictモード

送信元アドレス(を含むプレフィックス)がルーティングテーブルに登録されている事に加え、『攻撃被疑パケットの受信IF』と『該当パケットのネクストホップとなるIF』の整合性確認も行う。両条件を満たした場合「正」とみなす。

設定コマンド

uRPFは専用のコンフィギュレーションモードが存在せず、IFコンフィギュレーションモードで設定を行うので注意。

interface <IF>
[ipv4|ipv6] verify unicast source reachable-via [any|rx] {allow-default}
!

IPv4アドレス, IPv6アドレスそれぞれで設定を行う必要がある。そして、”any”は”looseモード”、”rx”は”strictモード”になる。
“allow-default”はオプションコマンドであり、送信元アドレス(を含むプレフィックス)に対してルーティングテーブルを照合をする際、デフォルトルートも照合に用いる事ができるようになる。

検証

目的

uRPFの設定例を学習する。

物理構成図

ダウンロードはこちら

論理構成図

IGP

注意点

  • OSFPのプロセスIDは1とする
    また、エリア0のシングルエリアとする
  • OSPFのLoopback0はPassive IFとする
  • OSPFのネットワークタイプはP-to-Pとする

BGP

  • R1のAS番号は”1″, R3のAS番号は”3″とする
  • R1とR3は互いにLoopback0でeBGPネイバーを指定する
  • R1とR3に対し、ebgp multihopは255を設定せよ
  • R1及びR3のBGPネイバーに対し、in/out両方のルートポリシーを設定してはならない

アドレス設計

注意点

  • 全ルータはLoopback0を持っており、アドレスはX.X.X.X/32とする (Xはルータの添え字)
  • R1はLoopback10を持っており、アドレスは10.10.10.10/32とする
  • 物理IFのアドレスは192.168.YZ.X/24とする (Xはルータの添え字、Yはリンクを構成するルータの若番、Zはリンクを構成するルータの老番)

初期コンフィグ

R1
conf t
!
hostname R1
!
int lo 0
ipv4 add 1.1.1.1/32
!
int lo 10
ipv4 address 10.10.10.10/32
!
int gi0/0/0/0
ipv4 add 192.168.12.1/24
no sh
!
router ospf 1
area 0
int lo 0
passive
!
int gi0/0/0/0
net point-to-point
!
!
!
router bgp 1
bgp unsafe-ebgp-policy
!
neighbor 3.3.3.3
remote-as 3
update-source lo0
ebgp-multihop 255
add ipv4 uni
!
!
!
R2
conf t
!
hostname R2
!
int lo 0
ipv4 add 2.2.2.2/32
!
int gi0/0/0/0
ipv4 add 192.168.12.2/24
no sh
!
int gi0/0/0/1
ipv4 add 192.168.23.2/24
no sh
!
router ospf 1
area 0
int lo 0
passive
!
int gi0/0/0/0
net point-to-point
!
int gi0/0/0/1
net point-to-point
!
!
!
R3
conf t
!
hostname R3
!
int lo 0
ipv4 add 3.3.3.3/32
!
int gi0/0/0/1
ipv4 add 192.168.23.3/24
no sh
!
router ospf 1
area 0
int lo 0
passive
!
int gi0/0/0/1
net point-to-point
!
!
!
router bgp 3
bgp unsafe-ebgp-policy
!
neighbor 1.1.1.1
remote-as 1
update-source lo0
ebgp-multihop 255
add ipv4 uni
!
!
!
ダウンロードはこちら

初期状態

R1とR3のBGPネイバー状態を以下に示す。

問題

問1. R1がクラッカーにハッキングされたと仮定し、サーバであるR3にDoS攻撃を仕掛けるものとする。これを防ぐため、R2にlooseモードでuRPFを設定せよ。
問2. uRPFの設定後、R1のLoopback10(10.10.10.10/32)からR3のLoopback0(3.3.3.3/32)に対して、Pingを打て。その後、uRPFによってパケットがドロップしている事を確認せよ。

コメント

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