狠狠撸

狠狠撸Share a Scribd company logo
IPv6セキュリティ
はじめの一歩
徳島大学 大平健司
https://en.wikipedia.org/wiki/File:Aldrin_Apollo_11.jpg
身も蓋もない結論
? 心構え
–ほとんどの対策はIPv4と変わらない
?L2以下とL4以上は(本来)変わらない
?L3がIPv4であることを前提にした各種作り込みに
なっていなければ
?そう、IPv4同様の対策ができる実装なら...
–IPv6なんて使ってないはずという油断は敵
?穴はいくらでも開けられる
March 19, 2017 第12回名古屋情報セキュリティ勉強会 2
本日の内容
? イントロダクション
? IPv6アドレス体系
? IPv6アドレスと経路の設定
? IPv6とフィルタリング
? 複数のIPv6アドレス
? IPv6とIPv4の混在
? 落穂ひろい
March 19, 2017 第12回名古屋情報セキュリティ勉強会 3
避けたい状況
March 19, 2017 第12回名古屋情報セキュリティ勉強会 4
http://www.itu.int/en/ITU-D/Regional-Presence/AsiaPacific
/Documents/s11-ipv6-securingtransitionmechanisms.pdf
IPv6とIPv4で違うところ
? IPアドレス(32ビット→128ビット)
–広大なアドレス空間を利用した使い捨て
–自動設定方法
–スコープ(リンクローカルアドレス等)
? マルチキャストへの依存度
–ブロードキャストは廃止
March 19, 2017 第12回名古屋情報セキュリティ勉強会 5
IPv6未導入のはずのリンクにて
March 19, 2017 第12回名古屋情報セキュリティ勉強会 6
見えていたもの
? IPv6パケット
–リンクローカルアドレス(fe80::...)
–マルチキャストアドレス(ff02::...)
? IPv6で話をしようとしている機器がいる
–今のところは特に悪いことはなさそう
–これらに偽設定情報を食わせると...
March 19, 2017 第12回名古屋情報セキュリティ勉強会 7
IPv6で考えるべき「複数の**」
? IPバージョン
? リンク
? スコープ
? アドレス
? プレフィクス
? ルータ(上流、ルータ広告(RA))
? DHCPv6サーバ/リレー
March 19, 2017 第12回名古屋情報セキュリティ勉強会 8
IPv6アドレス体系
March 19, 2017 第12回名古屋情報セキュリティ勉強会 9
IPv6アドレス (1/2)
March 19, 2017 第12回名古屋情報セキュリティ勉強会 10
アドレス範囲 用途
::/128 Unspecified Address
::1/128 Loopback Address
::ffff:0:0/96 IPv4-mapped Address
64:ff9b::/96 IPv4-IPv6 Translation
100::/64 Discard-Only Address Block
2000::/3 Global Unicast
2001::/23 IETF Protocol Assignments
2001::/32 TEREDO
2001:1::1/128 Port Control Protocol Anycast
2001:1::2/128 Traversal Using Relays around NAT Anycast
2001:2::/48 Benchmarking
[1] https://www.iana.org/assignments/ipv6-address-space/ipv6-address-space.xhtml
[2] https://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xhtml
IPv6アドレス (2/2)
March 19, 2017 第12回名古屋情報セキュリティ勉強会 11
アドレス範囲 用途
2001:3::/32 AMT
2001:4:112::/48 AS112-v6
2001:5::/32 EID Space for LISP (Managed by RIPE NCC)
2001:10::/28 Deprecated (previously ORCHID)
2001:20::/28 ORCHIDv2
2001:db8::/32 Documentation
2002::/16 6to4
2620:4f:8000::/48 Direct Delegation AS112 Service
fc00::/7 Unique Local Unicast
fe80::/10 Linked-Scoped Unicast
ff00::/8 Multicast
[1] https://www.iana.org/assignments/ipv6-address-space/ipv6-address-space.xhtml
[2] https://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xhtml
IPv6アドレスとスコープ
? スコープ一覧 (RFC 4291, 7346)
? リンクローカルアドレスが多用される
– <address>%<zone_id> の形で表現
– 「サイト出口」での追跡?制御は不可能
March 19, 2017 第12回名古屋情報セキュリティ勉強会 12
番号 名前
1 Interface-Local scope
2 Link-Local scope
3 Realm-Local scope
4 Admin-Local scope
5 Site-Local scope
8 Organization-Local scope
e Global scope
IPv6マルチキャスト
? IPv6アドレス
–ff0x::/8 (xはスコープ)
? MACアドレス
–33-33-xx-xx-xx-xx
(IPv6アドレスの下位32ビット)
? 送信者制御
–L2機器でのClient separation
? 受信者(Multicast Listener)制御
–L2機器でのMLD snooping
March 19, 2017 第12回名古屋情報セキュリティ勉強会 13
頻出マルチキャストアドレス
? ff02::1 (All Node)
? ff02::2 (All Router)
? ff02::16 (MLDv2)
? ff02::1:2 (All DHCPv6 server/relay)
? ff02::1:3 (Link-local Multicast Name
Resolution)
? ff02::1:ffxx:xxxx (Solicited Node)
? ff05::1:3 (All DHCPv6 server)
March 19, 2017 第12回名古屋情報セキュリティ勉強会 14
IPv6アドレス空間と攻撃耐性
? IPアドレスの全数探索(brute force)には
なかなかヒットしない
– ルータに近隣探索させることになり、
結局負荷は上がる(DoS意図は成就する)
– 標的と同一リンクに入ってしまえば
マルチキャストパケット一発で終わり
– RFC 7707にあるような手法で探索量を削減
? 攻撃者側もIPアドレスは多数ある
(嘘もつき放題)
– フィルタ粒度、エントリ数
?フィルタの自動生成も怖い
?rate-limitくらいしか手はなさそうだが対象範囲の
適切な設定は難しそう
March 19, 2017 第12回名古屋情報セキュリティ勉強会 15
IPv6アドレスと経路の設定
March 19, 2017 第12回名古屋情報セキュリティ勉強会 16
IPv6アドレス自動設定1
? ステートレス型
–ICMPv6 Router Advertisement (RFC 4862)
?プレフィクス64ビットとホスト自身が決めた
64ビットを結合
?Privacy Extension (RFC 4941)によりアドレス数
が膨れ上がる
?(Valid lifetime) / (Preferred lifetime)
?端末側からの新規コネクションには使わないが
待受アドレスとしては有効
?Neighbor cacheも消費
March 19, 2017 第12回名古屋情報セキュリティ勉強会 17
RAメッセージの例1 (1/2)
March 19, 2017 第12回名古屋情報セキュリティ勉強会 18
RAメッセージの例1 (2/2)
March 19, 2017 第12回名古屋情報セキュリティ勉強会 19
RAにより設定されたアドレス
March 19, 2017 第12回名古屋情報セキュリティ勉強会 20
RAへの攻撃
? 攻めどころ
–誰でも(諸々偽装して)送信できる
–高優先度での送信
–Lifetime=0を用いた正規RAの無効化
? 対策
–RA Guard (RFC 6105, 7113)
?L2機器での対策(物理ポートを限定)
–SEND (RFC 3971)
?暗号的生成アドレス、RSA署名
March 19, 2017 第12回名古屋情報セキュリティ勉強会 21
IPv6アドレス自動設定2
? ステートフル型
–DHCPv6 (RFC 3315)
? アドレス割当の管理をしっかり行いたい
ならDHCPv6で、と言いたいところだが…
March 19, 2017 第12回名古屋情報セキュリティ勉強会 22
DHCPv6も色々問題が
? プロトコル的な問題
–RAとの連携要(なくても動くかも※1だが)
?経路設定はDHCPv6ではされない※2
?RAベースのアドレス割当を避けるように設定要
–MACアドレスとの対応がわからない
?払い出しアドレスと対応付けられるのはDUID
? 実装上の問題
–AndroidとWindows
–詳細後述
March 19, 2017 第12回名古屋情報セキュリティ勉強会 23
※1: RFC 4862 §5.5.2
※2: draft-ietf-mif-dhcpv6-route-option-05 (expired)
DHCPv6を展開したネットワーク例
March 19, 2017 第12回名古屋情報セキュリティ勉強会 24
240b:251:c080:16::/64
240b:251:c080:14::/64
PC
Router & DHCPv6 Server
Catalyst 3560
Router & DHCPv6 Relay
Wireless AP
Client PC
(Windows 10)
RAベースのアドレス割当抑制 (1/2)
? radvd.conf (Linux PCルータ)
March 19, 2017 第12回名古屋情報セキュリティ勉強会 25
interface enp0s2
{
AdvSendAdvert on;
AdvManagedFlag on;
AdvOtherConfigFlag on;
prefix 240b:251:c080:14::/64
{
AdvOnLink on;
AdvAutonomous off;
AdvRouterAddr off;
AdvValidLifetime 3600;
AdvPreferredLifetime 1800;
};
};
RAベースのアドレス割当抑制 (2/2)
? Cisco IOS
March 19, 2017 第12回名古屋情報セキュリティ勉強会 26
interface GigabitEthernet0/10
no ip address
ipv6 enable
ipv6 nd ra suppress all
interface Vlan6
no ip address
ipv6 address 240B:251:C080:16::1/64
ipv6 enable
ipv6 nd prefix default 3600 1800 no-autoconfig no-rtr-address
ipv6 nd managed-config-flag
ipv6 nd other-config-flag
ipv6 nd ra lifetime 3600
ipv6 dhcp relay destination 240B:251:C080:14::1
RAメッセージの例2 (1/2)
March 19, 2017 第12回名古屋情報セキュリティ勉強会 27
RAメッセージの例2 (2/2)
March 19, 2017 第12回名古屋情報セキュリティ勉強会 28
DHCPv6によるアドレス割当
? dhcpd.conf (ISC DHCPd)
March 19, 2017 第12回名古屋情報セキュリティ勉強会 29
subnet6 240b:251:c080:14::/64 {
range6 240b:251:c080:14::1000:0 240b:251:c080:14::1000:20;
}
subnet6 240b:251:c080:16::/64 {
range6 240b:251:c080:16::1000:0 240b:251:c080:16::1000:1000;
option dhcp6.name-servers 2001:4860:4860::8888;
}
DHCPv6メッセージの例
March 19, 2017 第12回名古屋情報セキュリティ勉強会 30
DHCPv6により設定されたアドレス
March 19, 2017 第12回名古屋情報セキュリティ勉強会 31
IPv6アドレスとMACアドレスの紐付け
? Neighbor cache
–ip -6 neighbor
–netsh interface ipv6 show neighbors
–show ipv6 neighbors
? DHCPサーバでの記録
–DHCP(v4)ではMACアドレスとIPv4アドレス
–DHCPv6ではDUIDとIPv6アドレス
? DUIDとMACアドレスの紐づけ
–DHCP relay越しでは対応付けが難しい
March 19, 2017 第12回名古屋情報セキュリティ勉強会 32
DHCPv6実装の問題
? Android
–そもそもDHCPv6が実装されていない
–http://www.techrepublic.com/article/android
s-lack-of-dhcpv6-support-poses-security-
and-ipv6-deployment-issues/
? Windows 10
–Renewに失敗する
–手動 ipconfig /renew6 連打により暫定対処
–https://social.technet.microsoft.com/Forums
/windows/en-US/4d167816-bc56-4003-
bc97-232b9dbcc1ca/
March 19, 2017 第12回名古屋情報セキュリティ勉強会 33
DHCPv6への攻撃
? 攻めどころ
–マルチキャストグループに誰でもJOIN可能
? 対策
–L2機器での物理ポート限定
–DHCPv6 Shield (RFC 7610)によるヘッダ
チェック
–Delayed Authentication(遅延認証)の導入
?サーバとクライアントの間で秘密鍵を共有
?Dibbler DHCPv6では実装されている模様
March 19, 2017 第12回名古屋情報セキュリティ勉強会 34
プレフィクス割当 (1/2)
? エンドサイトがプロバイダから得る
標準的なアドレス空間は/56
–https://www.nic.ad.jp/doc/jpnic-01167.html
–大学とかの規模であれば/48の場合も
?http://w4a.sinet.ad.jp/service/network/l3/ipv6/as
signment/
? 1リンクは標準的に/64
? サイト内のアドレス(プレフィクス)割当
–集約しやすさを考慮に入れる必要有
March 19, 2017 第12回名古屋情報セキュリティ勉強会 35
プレフィクス割当 (2/2)
? 動的割当プロトコル
–DHCPv6-PD (RFC 3633)
? 経路制御
–RIPng (RFC 2080)
–OSPFv3 (RFC 5340)
March 19, 2017 第12回名古屋情報セキュリティ勉強会 36
トンネルあれこれ
? IP in IP、GRE
? 6to4、6rd
? Teredo
? ISATAP
? MPLS
? その他独自方式のトンネル
? 予期しない上流への抜け穴はいくらでも
作れる
March 19, 2017 第12回名古屋情報セキュリティ勉強会 37
IPv6とフィルタリング
March 19, 2017 第12回名古屋情報セキュリティ勉強会 38
流入フィルタ
? uRPF (unicast Reverse Path Forwarding)
–RFC 3704 (BCP 84)
March 19, 2017 第12回名古屋情報セキュリティ勉強会 39
240b:251:c080:16::/64
240b:251:c080:14::/64
Router
Router
Wireless AP
Client PC
×
Src=/240b:251:c080:16::xxxx
Strict uRPFの例
ICMPv6
? IPv4ではICMPを原則止めてしまう運用が
多くなされている
–IPv6でも同様の運用をしかねない
? ICMPへの依存度?メッセージの種類は
IPv4より増している
–アドレス割当
–アドレス解決(近隣探索、ARP相当)
–ルータ探索
–マルチキャストグループ管理(IGMP相当)
March 19, 2017 第12回名古屋情報セキュリティ勉強会 40
近隣探索 (RFC 4861)
? ICMPv6
–Neighbor Solicitation (Type 135)
?送信元:送信元IFに付されたアドレス 又は ::
?宛先:ターゲットのアドレス 又は 対応する
要請ノードマルチキャストアドレス
–Neighbor Advertisement (Type 136)
?送信元:送信元IFに付されたアドレス
?宛先:対応するNSの送信元アドレス
?NSの送信元が::の場合はff02::1へ
March 19, 2017 第12回名古屋情報セキュリティ勉強会 41
ICMPv6メッセージのフィルタリング
? オススメのやり方がRFC 4890に
–ブリッジ型とルータ型の各FW
–リンクローカルとグローバル
–ip6tablesでの具体的な設定方法の付録付き
March 19, 2017 第12回名古屋情報セキュリティ勉強会 42
複数のIPv6アドレス
March 19, 2017 第12回名古屋情報セキュリティ勉強会 43
複数のIPv6アドレス
? 個々の通信において送信元?宛先として
どれを使うか決めなければならない
? getaddrinfo()に介入
–送信元アドレス選択
–宛先アドレス選択
–標準的な選択基準:RFC 6724
March 19, 2017 第12回名古屋情報セキュリティ勉強会 44
送信元アドレス選択
? 所与の宛先(D)に対する送信元(S)を一つ算出
1. S=DであるSを優先
2. 適切なスコープであるSを優先
3. 廃止されたアドレスであるSを回避
4. ホームアドレスであるSを優先
5. 送出インタフェースに付されたSを優先
5. 次ホップから広告されたプレフィクスのSを優先
6. SとDのラベルが一致するSを優先
7. 一時アドレスであるSを優先
8. SとDのプレフィクス一致が最長のSを優先
March 19, 2017 第12回名古屋情報セキュリティ勉強会 45
宛先アドレス選択
? 宛先リストの並べ替え
1. 到達不能なDやDに対応するSが未定義なもの
を回避
2. SとDのスコープが一致するものを優先
3. Sが廃止されたアドレスとなるものを回避
4. Sがホームアドレスとなるものを優先
5. SとDのラベルが一致するものを優先
6. 優先度の高いDを優先
7. ネイティブトランスポートのものを優先
8. スコープの小さいDを優先
9. SとDのプレフィクス一致が最長のものを優先
10. 元の順番を変えない
March 19, 2017 第12回名古屋情報セキュリティ勉強会 46
ラベルと優先度
? 設定変更可能
–Linux: /etc/gai.conf
– Windows: netsh interface ipv6 show prefixpolicies
March 19, 2017 第12回名古屋情報セキュリティ勉強会 47
ループバック
その他
IPv4射影アドレス
6to4
TEREDO
ユニークローカル
サイトローカル(廃止)
6bone(廃止)
IPv4互換アドレス(廃止)
IPv6とIPv4の混在
March 19, 2017 第12回名古屋情報セキュリティ勉強会 48
Happy Eyeballs
? 目的:IPv4フォールバックの時間を短く
? 規約:RFC 6555
– IPv4のSYNとIPv6のSYNを両方投げる
?少しだけIPv6を優先する
? 各SYNは150-250ms間隔(推奨値)
?IPv6での接続成否を一定期間記憶
?A/AAAAが複数ある場合、下記優先順
1. 最優先のIPv6アドレス
2. IPv4アドレス
3. その他のIPアドレス
– 先にSYN+ACKが返ってきた方を使う
– アプリケーションでの実装がシンプル
?OSでの実装の場合、RFC6724と要調整
March 19, 2017 第12回名古屋情報セキュリティ勉強会 49
落穂ひろい
March 19, 2017 第12回名古屋情報セキュリティ勉強会 50
攻撃(にも使える)ツール
? THC-IPV6
–https://www.thc.org/thc-ipv6/
–http://tools.kali.org/information-
gathering/thc-ipv6
? SI6 Networks’ IPv6 Toolkit
–https://www.si6networks.com/tools/ipv6tool
kit/
? scapy
–http://www.idsv6.de/Downloads/IPv6Packet
CreationWithScapy.pdf
March 19, 2017 第12回名古屋情報セキュリティ勉強会 51
おわりに
? IPv6を気に掛けよう
–各ホストではIPv6対応したファイアウォー
ルソフトを入れる
?IPv6関連の設定を再度確認する
–デフォルトそのままの運用は大穴かも
?全通しや全落としになっている可能性
? さっさとnative IPv6を導入してしまうの
が実はセキュア化の早道かもしれない
–リンクを乗取られる前に先手を打って整備
March 19, 2017 第12回名古屋情報セキュリティ勉強会 52
参考文献
? Philip Smith, ``IPv6 Security,’’
ITU/APNIC/MICT IPv6 Security Workshop,
May 2016.
? 志田智ら, ``マスタリングTCP/IP IPv6編
第2版,’’ オーム社, 2013.
? Scott Hogg, et al., ``IPv6 Security,’’ Cisco
Press, 2009.
March 19, 2017 第12回名古屋情報セキュリティ勉強会 53

More Related Content

滨笔惫6セキュリティ はじめの一歩