DynagenでCCIEを目指す
anti spoofing
最終更新:
it_certification
-
view
1. 目的
- Cisco IOSを使用したspoofing対策について考察します。
2. 構成
2.1. 設定概要
- 初期設定はIPアドレスのみです。
- Guest OS側には、hpingがインストールされているものとします。hpingはyumで簡単にインストールする事ができます。
2.2. 構成図

2.3. netファイル
model = 3620 [localhost] [[3620]] image = C:\Program Files\Dynamips\images\c3620-j1s3-mz.123-18.bin ram = 128 [[ROUTER R1]] f0/0 = NIO_gen_eth:\Device\NPF_{8B89D910-5ED3-4A43-9DE9-6A272A3D7592} f1/0 = NIO_gen_eth:\Device\NPF_{5933302A-7AAA-475C-A8FE-A6B82B0C0F98}
2.4. 初期設定
- R1
! version 12.3 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname R1 ! boot-start-marker boot-end-marker ! ! no aaa new-model ip subnet-zero ! ! no ip domain lookup ! ip cef ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! interface FastEthernet0/0 ip address 192.168.200.1 255.255.255.0 duplex auto speed auto ! interface FastEthernet1/0 ip address 200.200.201.1 255.255.255.0 duplex auto speed auto ! ip http server ip classless ! ! no cdp run ! ! ! ! ! ! line con 0 line aux 0 line vty 0 4 ! ! end
2.5. サーバ側 ルーティング設定
- Host OS
route add 200.200.201.0 mask 255.255.255.0 192.168.200.1 route add 172.16.0.0 mask 255.255.255.0 192.168.200.1
- Guest OS
route add -net 192.168.200.0/24 gw 200.200.201.1
3. [検証] 設定確認
3.1. ping送信
Guest OS側で送信元IPアドレスを偽装したパケットが、デフォルトの設定ではHost OSまで届いてしまっている事を確認します。
hping3を使用して送信元IPアドレスを偽装したpingをHost OSへ送信します。
hping3を使用して送信元IPアドレスを偽装したpingをHost OSへ送信します。
[root@localhost ~]# hping3 192.168.200.100 --icmptype 8 --spoof 172.16.0.1 HPING 192.168.200.100 (eth1 192.168.200.100): icmp mode set, 28 headers + 0 data bytes ^C --- 192.168.200.100 hping statistic --- 5 packets tramitted, 0 packets received, 100% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms [root@localhost ~]#
3.2. キャプチャ結果の確認
ルータFa0/0で上記パケットをキャプチャし、送信元IPアドレスを偽装したpingがHost OSまで届いてしまっている事を確認します。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (100%)
;
4. [検証] ACLによるspoofing対策
4.1. ACLの設定
spoofing対策の最も単純な実装はACLの設定です。インターネット側のI/Fで送信元がプライベートアドレスであるパケットを全て遮断します。
Fa1/0 in方向で、送信元がプライベートアドレスであるものを拒否します。
Fa1/0 in方向で、送信元がプライベートアドレスであるものを拒否します。
R1(config)#ip access-list standard SPOOF_GUARD R1(config-std-nacl)#deny 10.0.0.0 0.255.255.255 log R1(config-std-nacl)#deny 172.16.0.0 0.15.255.255 log R1(config-std-nacl)#deny 192.168.0.0 0.0.255.255 log R1(config-std-nacl)#permit any log R1(config-std-nacl)#exit R1(config)# R1(config)# R1(config)#logging buffered 4096 R1(config)# R1(config)# R1(config)#interface FastEthernet 1/0 R1(config-if)#ip access-group SPOOF_GUARD in
4.2. ping送信
送信元を偽装したpingと正常なpingをguest OSからHost OSへ送信します。
[root@localhost ~]# hping3 192.168.200.100 --icmptype 8 --spoof 172.16.0.1 HPING 192.168.200.100 (eth1 192.168.200.100): icmp mode set, 28 headers + 0 data bytes ^C --- 192.168.200.100 hping statistic --- 5 packets tramitted, 0 packets received, 100% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms [root@localhost ~]# [root@localhost ~]# [root@localhost ~]# hping3 192.168.200.100 --icmptype 8 HPING 192.168.200.100 (eth1 192.168.200.100): icmp mode set, 28 headers + 0 data bytes len=28 ip=192.168.200.100 ttl=127 id=49051 icmp_seq=0 rtt=20.0 ms len=28 ip=192.168.200.100 ttl=127 id=49075 icmp_seq=1 rtt=0.0 ms len=28 ip=192.168.200.100 ttl=127 id=49100 icmp_seq=2 rtt=10.0 ms ^C --- 192.168.200.100 hping statistic --- 3 packets tramitted, 3 packets received, 0% packet loss round-trip min/avg/max = 10.0/10.0/20.0 ms [root@localhost ~]#
4.3. ログによる確認
送信元を偽装したpingは遮断されるものの正常なpingはHost OSまで届いている事を、ログから読み取ります。
R1# *Mar 1 01:05:48.579: %SEC-6-IPACCESSLOGS: list SPOOF_GUARD denied 172.16.0.1 1 packet *Mar 1 01:06:01.223: %SEC-6-IPACCESSLOGS: list SPOOF_GUARD permitted 200.200.201.101 1 packet R1#
4.4. キャプチャ結果の確認
ルータFa0/0で上記パケットをキャプチャし、送信元を偽装したpingは遮断されるものの正常なpingはHost OSまで届いている事を確認します。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (100%)
;
5. [検証] uRPFによるspoofing対策
5.1. 概要
uRPFチェックを行った結果、送信元IPアドレスが偽装されている可能性があると判断した場合、パケットを破棄する事ができます。設定は以下の通りです。
Router(config-if)#ip verify unicast source reachable-via <I/F> <許容範囲>
項目 | 設定 | 詳細 |
---|---|---|
I/F | any | Source is reachable via any interface. どのI/Fからのパケットも許可します。インターネット側の経路が冗長化されており、いつもuRPFチェックが成功するとは限らない場合は、こちらを指定します。 |
rx | Source is reachable via interface on which packet was received. uRPFチェックに成功するI/Fからのパケットのみ許可します。 | |
許可方法 | <1-199> | A standard IP access list number. ACLに合致したパケットはuRPFチェックを実施せずにパケットを転送します。uRPFチェックを実施しないパケットを増やす事によってCPU節約を図る事ができます。 |
<1300-2699> | A standard IP expanded access list number. ACLに合致したパケットはuRPFチェックを実施せずにパケットを転送します。uRPFチェックを実施しないパケットを増やす事によってCPU節約を図る事ができます。 | |
allow-default | Allow default route to match when checking source address. uRPFチェックに成功したパケットのみを転送します(デフォルト) | |
allow-self-ping | Allow router to ping itself (opens vulnerability in verification). ルータから送信元へのping成功するパケットのみを転送します。 |
5.2. uRPFの設定
uRPFチェックによってspoofing対策を行う設定を投入します。また、「4. [検証] ACLによるspoofing対策」の設定を削除します。
R1(config)#interface FastEthernet 1/0 R1(config-if)#no ip access-group SOURCE_GUARD in R1(config-if)#ip verify unicast source reachable-via rx
5.3. ping送信
送信元を偽装したpingと正常なpingをguest OSからHost OSへ送信します。
[root@localhost ~]# hping3 192.168.200.100 --icmptype 8 --spoof 172.16.0.1 HPING 192.168.200.100 (eth1 192.168.200.100): icmp mode set, 28 headers + 0 data bytes ^C --- 192.168.200.100 hping statistic --- 4 packets tramitted, 0 packets received, 100% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms [root@localhost ~]# [root@localhost ~]# [root@localhost ~]# hping3 192.168.200.100 --icmptype 8 HPING 192.168.200.100 (eth1 192.168.200.100): icmp mode set, 28 headers + 0 data bytes len=28 ip=192.168.200.100 ttl=127 id=54012 icmp_seq=0 rtt=20.0 ms len=28 ip=192.168.200.100 ttl=127 id=54037 icmp_seq=1 rtt=10.0 ms len=28 ip=192.168.200.100 ttl=127 id=54062 icmp_seq=2 rtt=10.0 ms ^C --- 192.168.200.100 hping statistic --- 3 packets tramitted, 3 packets received, 0% packet loss round-trip min/avg/max = 10.0/13.3/20.0 ms [root@localhost ~]#
5.4. キャプチャ結果の確認
ルータFa0/0で上記パケットをキャプチャし、送信元を偽装したpingは遮断されるものの正常なpingはHost OSまで届いている事を確認します。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (100%)
;
6. [検証] uRPFとACLの併用
6.1. uRPFとACLの設定
ACLに合致したものはuRPFチェックの対象外にする事ができます。ルータの場合はあまり効果がありませんが、スイッチならばACLはハードウェアベースで処理されるため、CPU負荷を削減する事ができます。
現実的な設定ではありませんが、172.16.0.1のみをuRPFチェックの対象外にする設定を投入し動作確認を行います。
現実的な設定ではありませんが、172.16.0.1のみをuRPFチェックの対象外にする設定を投入し動作確認を行います。
R1(config)#access-list 1 permit host 172.16.0.1 log R1(config)#access-list 1 deny any log R1(config)# R1(config)# R1(config)#interface FastEthernet 1/0 R1(config-if)#no ip verify unicast source reachable-via rx R1(config-if)#ip verify unicast source reachable-via rx 1
6.2. ping送信
送信元が172.16.0.1のpingと送信元が172.16.0.2のpingを送信します。
[root@localhost ~]# hping3 192.168.200.100 --icmptype 8 --spoof 172.16.0.1 HPING 192.168.200.100 (eth1 192.168.200.100): icmp mode set, 28 headers + 0 data bytes ^C --- 192.168.200.100 hping statistic --- 4 packets tramitted, 0 packets received, 100% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms [root@localhost ~]# [root@localhost ~]# [root@localhost ~]# hping3 192.168.200.100 --icmptype 8 --spoof 172.16.0.2 HPING 192.168.200.100 (eth1 192.168.200.100): icmp mode set, 28 headers + 0 data bytes ^C --- 192.168.200.100 hping statistic --- 4 packets tramitted, 0 packets received, 100% packet loss round-trip min/avg/max = 0.0/0.0/0.0 ms [root@localhost ~]#
6.3. ログによる確認
送信元を偽装したpingがルータまで届いている事を、ログから確認します。
R1# *Mar 1 01:15:12.707: %SEC-6-IPACCESSLOGS: list 1 permitted 172.16.0.1 1 packet *Mar 1 01:15:19.791: %SEC-6-IPACCESSLOGS: list 1 denied 172.16.0.2 1 packet R1#
6.4. キャプチャ結果の確認
ルータFa0/0で上記パケットをキャプチャし、送信元が172.16.0.1であるpingのみが転送されている事を確認します。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (100%)
;