540 likes | 673 Views
hbstudy #20. 明日から始める IPv6 ~やる気は枯渇していないか?大丈夫だ、問題ない~. Kunitaka Namba TwitterID: @ipv6labs. 自 己 紹 介. 氏名:難波 邦考( Kunitaka Namba ) よく“孝”とか、 Na”n”ba に間違えらて公的処理等が止まる・・・ 所属:いんたーのっと(個人参加) 役職無し、部下無し、資格無し・・・ IPv6 の仕事無し。 orz 主な分野: ・“ Sun” Solaris + OSS なインフラ構築~運用
E N D
hbstudy #20 明日から始めるIPv6~やる気は枯渇していないか?大丈夫だ、問題ない~ Kunitaka Namba TwitterID: @ipv6labs
自 己 紹 介 氏名:難波 邦考(Kunitaka Namba) よく“孝”とか、Na”n”baに間違えらて公的処理等が止まる・・・ 所属:いんたーのっと(個人参加) 役職無し、部下無し、資格無し・・・IPv6の仕事無し。orz 主な分野: ・“Sun” Solaris + OSSなインフラ構築~運用 BIND、Apache、Postfix、sendmail、ENMA、Nagios、etc… ・サーバ、ネットワークの監視設計 ・セキュリティ、イレギュラー対応
留 意 事 項 ※1. IPv6導入をしていたのは約3年~半年前です。 古い情報があるかもしれません ※2. 現在の業務とIPv6は全然関係ありません。 ExcelとPowerPointがお友達、Terminal開かない日も多い・・・ ※3. CCNAの賞味期限がとっくに切れています。 感性でネットワークを触るので、いい加減です。パケットを感じるんだ! ※4. 時々変な事を呟いていますが無視して下さい。 精神崩壊を防ぐためです。皆様にはご迷惑をおかけしております
主 旨・目 的 (1) IPv4枯渇とIPv6導入について考える。 もう(APNIC配下は)“来年になったら本気出す“だと間に合わない (2) IPv6対応について手法や失敗ネタを共有する。 IPv6はIPv4へ影響しないよね?は誤り、混ぜるな危険 (3) 参加者のIPv6対応のやる気を枯渇させない。 2000年頃IPv6を使っていた人はやる気が枯渇した人が多いという噂 (4) IPv6 Readyなエンジニアを増やす。 機材が対応していてもエンジニアが IPv6 not Ready とか格好悪い
IPv4枯渇の現状 IPv6「IPv4が枯渇したようだな」 ASN「ククク・・・奴は我ら四天王の中でも最小の空間」 MAC「枯渇に陥るとは、四天王の面汚しよ・・・」 2011/02/03 IANAのIPv4アドレスがついに枯渇 IPv4 Address Report http://www.potaroo.net/tools/ipv4/index.html
IPv4枯渇の現状 「来年から本気出す」 でも間に合うのでは!? 残り1年弱 IPv4 Address Report http://www.potaroo.net/tools/ipv4/index.html
IPv4枯渇の現状 APNICのIPv4アドレスの枯渇は 3~6ヵ月後(2011年05~11月) と予想されている。 「来年から本気出す」 では間に合わない!! IPv4 Address Report http://www.potaroo.net/tools/ipv4/index.html
IPv6の導入 ~設計編~ 設計編: IPv6なネットワークを設計する 際に発生した課題とその対処など についてのお話 もうExcelシート捨てたい・・・
IPv6の導入 ~設計編~ IPv6導入により複雑化するネットワーク 構成によっては、IPv4プライベートアドレスとIPv6グローバル アドレスが混在する混沌としたネットワークになる。 ⇒その時のアドレスの管理は!? DualStack環境となると1つのVLANに2つのIPversionが混在する ようになる。 しかしそのVLAN内の全てが、DualStackとも限らない。 ⇒その時のネットワーク構成図は!?
IPv6の導入 ~設計編~ Q. IPv6アドレス空間をそのままExcelシートで 管理できるのか? A. 無理、IPv4アドレス空間の管理手法では 収まらない。 IPv4アドレスの第3オクテットをワークシート名に~ というよく 見かける管理手法では、Excelシートには収まらない可能性が高い。 /56であれば256シートで済むが、/48になると65535シートが 必要になり、Excelが65531シート※までしか扱えない。 ※重すぎて使い物になりません。
IPv6の導入 ~設計編~ どうしてもExcelシートで管理してみたい方は、 以下に65531枚のシートを生成したExcelファイルを 置いています。ご自由にどうぞ。 http://negi.ipv6labs.jp/data/tmp/Sheet65531.xls マクロサンプル Sub Macro1() Do While (Sheets.Count < 65536) Sheets.Add Application.Wait [NOW()+"0:00:00.001"] Loop End Sub
IPv6の導入 ~設計編~ Q. IPv6アドレスを使用して意図的なアドレス生成 したい。例:2001:db8:dead::beef A. DualStack環境の場合は、意図的なアドレスを 生成して使用するべきではない。 IPv4側のアドレス体系との因果が無くなり、運用管理に大きな 負担が生じてしまう。 イベント用やテストベッド用ならともかく、実運用では堅実な アドレス体系=既にあるIPv4の体系に沿った形に近づける のが無難です。
IPv6の導入 ~設計編~ DualStackの設計においては、以下となる可能性が高い。 利用される IPv4アドレス> IPv6アドレス 利用される IPv4アドレス ≒ IPv6アドレス ※リンクローカルアドレスは除いたIPv4プライベート/グローバル アドレス:IPv6グローバルアドレスの場合
IPv6の導入 ~設計編~ IPアドレス設計 既設のIPv4設計 追加されるIPv6設計 DualStack化されてゆく部分 実験用程度 で十分な領域 IPv4のみ使用する部分 IPv6のみ使用する部分
IPv6の導入 ~設計編~ 設計の基点はIPv4アドレスで行ってみた。 ・IPv4の管理ポリシーを引き継ぐことができる。 ⇒Excelシート大好きNEは歓喜するに違いない。 ・IPv6のアドレス設計/割当に悩まなくていい。 ⇒更に ::dead:beef とか cafe とか ace とか fee1 とか 醜い命名規則と、命名権?の取り合いを防ぐことが可能。
IPv6の導入 ~設計編~ ObjectGroup: 10.22.33.0/24 Excelっぽく表現 IPv4 IPv6 = Object: 10.22.33.123 = = ObjectGroup: 10.22.33.123 = = = Object: 2001:db8:22:33::123 ここの変換規約を 定義すれば生成可能
IPv6の導入 ~設計編~ MyDualStack.xls Sheet11-3 Sheet11-1 Sheet11-2 IPv4 IPv6 IPv4 IPv6 IPv4 IPv6 10.11.1.0/24 2001:db8:11:1::/64 10.11.2.0/24 2001:db8:11:2::/64 10.11.3.0/24 2001:db8:11:3::/64
IPv6の導入 ~設計編~ IPv4アドレスからIPv6アドレスを生成する例 (現実的にはほぼ不可能、中小へは/48割当) Oct.1 Oct.2 Oct.3 Oct.4 /24 010 . 123 . 123 . 123 2001 0db8 : 0123 : 0123 : : : 0123 /64 1~32bit 33~48bit 49~64bit 65~128bit
IPv6の導入 ~設計編~ IPv6/48にIPv4/8をマッピングするには 10進数は諦め、16進数変換させるしか・・・ Oct.1 Oct.2 Oct.3 Oct.4 /24 /24 010 . 123 . 123 . 123 2001 0db8 : : 7b 7b : 0db8 : : 0123 /64 /64 /64 1~48bit 65~128bit 49~56bit 57~64bit
IPv6の導入 ~設計編~ 設計の基点はIPv4アドレスで行う場合の欠点 ・IPv4/8をIPv6/48に格納するには、/8内が全てが クラスCのクラスフル以上での割当を行って いないと、格納幅(16bit)が不足する。 ・IPv4/8をIPv6/48に格納しようとすると、 10進数から16進数に変換しないと収まらない。 オペレータの視認性は良くない。
IPv6の導入 ~設計編~ IPv4/16+CIDR構成からのIPv6アドレス 生成した例(IPv6/48を想定) Oct.1 Oct.2 Oct.3 Oct.4 /24 /24 192 . 168 . 0~255 . 123 2001 0db8 : : 0~ff : 0db8 0~ff : : 0123 /64 /64 /64 1~48bit 49~56bit クラスフル識別用 65~128bit 57~64bit クラスレス用
IPv6の導入 ~設計編~ IPv4/IPv6アドレス管理のまとめ ・IPv4を基点として管理すると楽そう ・IPv4を基点として管理出来ないものは どうしても存在する ・ IPv4を基点として管理する以上、 IPv4の設計(不良債権)に影響を受ける。
IPv6の導入 ~設計編~ DualStackのネットワーク図はどうするのか? 全てがDualStackであれば、下記の図は成立するが・・・ 10.55.60.0/24 2001:db8:55:60::/64 10.55.61.0/24 2001:db8:55:61::/64
IPv6の導入 ~設計編~ 既出のIPv4ネットワーク図にIPv6を加えると、 下記のように複雑なネットワーク図へと変化してしまう。 ::1 .1 2001:db8:55:60::/64 ::a1 10.55.60.0/24 ::ff .255 .10 ::9 .9 .255 ::ff 2001:db8:55:61::/64 混ぜるな危険!! しかしDualStackでは 避けては通れない。 10.55.61.0/24 .15 ::f
IPv6の導入 ~導入編~ 導入編: IPv6を導入する際に発生する 問題とその対処などについての話 被害経験ありです・・・
IPv6の導入 ~導入編~ Q. IPv6はMTUブラックホールが起こりやすい? A. IPv6の仕様や現在の構成上MTUブラックホールが 起こりやすい条件が整っている。 ・IPv6は中継機器でのパケット分割が許可されない。 ・IPIPトンネル(IPv6 over IPv4)接続している所は、 MTU=1280で繋がっているところが多い。 ・エンドツーエンドが使用できるパケットサイズはICMPv6 で(サイズ超過していないか)知ることができるが、 ICMPv6がフィルタリングされていることが多い。 ICMPv6 Type2(Packet too Big)/ RFC 1981
IPv6の導入 ~導入編~ 各NIC(B点)でMTUを設定すると面倒なので、ゲートウェイとなる ルータのインタフェイス(A点)でMTU=1280などに固定すると楽である。 ※MTU=1500が使える内向きルーティング(があった場合)も1280になる点は注意する。 MTU Black Hole A ex)MTU=1280 B B Target host MTU=1500
IPv6の導入 ~導入編~ これだけは覚えて帰ろう 其の壱 困ったらMTU=1280、 MTU=1280はIPv6のおまじない。
IPv6の導入 ~導入編~ Q. IPv6のRA(Router Advertisement)は 積極的に活用すべき?(RAを信頼すべき?) A. 基本的に使わない方が良い。 ・適切でないRAが流れてくることが多く、経路ハイジャック される可能性が高い。 IPv6関係の設定を入れると勝手にRAを送出してしまうような ネットワーク機器もある・・・ ・デフォルトゲートウェイは通知できるが、IPv6 DNSリカーシブ サーバは通知出来ない。(DHCPv6が必要) ※RAでDNSリカーシブサーバの通知をさせてしまおう という話もある “DNSサーバ“と言うと某S先生に怒られそうです。(’A`;)
IPv6の導入 ~導入編~ C社製内部ルータにIPv6設定追加というシチュエーションである。 “ipv6 nd ra suppress”を設定していない状態でIPv6をスタック させると、RAを送出してしまう。(※IPv4の野良DHCPに似た問題) 悪意無きルータとは限らない これがBSDやLinuxの悪意ある ルータならば・・・ ↓ Core Router 2001:db8:2::1 2001:db8:2::f RA Default Gateway Internal Router Node デフォルトゲートウェイは 2001:db8:2::fに変更される IPv6設定追加
IPv6の導入 ~導入編~ 内部ネットワークにIPv6ルータを適当に置くと、RAで“不達となるIP経路を優先する問題(IPv6 brokennessというらしい)”を誘発してしまう。 特にクライアントはIPv6が自動構成になっていることが多いので注意する。 上流への経路が無い IPv6 Router IPv4 Router RA IPv4 Default Gateway IPv6 Default Gateway(※RAにより自動構成) DualStack Node RAに誘発されて IPv6 brokenness が 発生、IPv4 fallback によるサービス 遅延が・・・
IPv6の導入 ~導入編~ 各レイヤの担当はIPv6導入の際には十分な体制で。 ■サーバ担当者: 各サーバのIPv6構成は無効になっているか、または手動設定 になっているか(RA/DHCPv6を無視するか)確認しておく。 ■ネットワーク担当者: 各NW機器のIPv6スタック時の挙動(デフォルトでのRA送出 など)を把握しておく。 IPv6をスタックできる機器の全てはIPv4のみで運用している 時点からRAを送受信しない設定を行っておくこと。
IPv6の導入 ~導入編~ でもグループポリシーが見当たらない・・・ 対エンドユーザとなるとRA無視となる グループポリシー@ActiveDirectoryが欲しい所ではあるが、 過去に探してみたところ、見つからない・・・ PowerShellでRA無効化のバッチを作ってみたので、 これをログインスクリプトに登録すれば大丈夫? http://negi.ipv6labs.jp/data/tmp/winnt6_ra-disable.ps1.txt 作成協力:Twitterのフォロワーな皆さん MSさん作ってくれないかなぁ・・・ポリシー
IPv6の導入 ~導入編~ これだけは覚えて帰ろう 其の弐 (特にサーバセグメントでは)RAは 信じない、出さない、受け取らない。 RAを信じる者は救われない と思ってる。
IPv6の導入 ~導入編~ Q. そのAnyにIPv6は含まれますか? A. 機器やソフトの実装によって異なります。 IPv6導入時に必ずポリシーの挙動はIPv6側も 見ましょう。 TCP_Wrapper :AnyはIPv6/IPv4を包括しています。 C社のACL :IPv4、IPv6それぞれにACLがあります。 未定義のIPversion側のACLはAnyの許可になります。
IPv6の導入 ~導入編~ IPv6のACLを未定義なままIPv6導入を進めると、下記のようなケース が発生してしまう。 LAN側で発生する分についてはまだマシではあるが、FW手前の WANルータで発生すると非常に危険である。 〇 IPv4 telnet/ssh ACL:Permit Administrative VLAN Router: 管理VLANのIPv4のみ ACLでtelnet/sshを 許可している ACL:Deny × Network Administrator ACL:Permit (※ACL未設定状態) 〇 IPv4 telnet/ssh IPv6 telnet/ssh DualStack Node ex)fe80::● ● ● ●
IPv6の導入 ~導入編~ IPv4での検証時にIPv6側も試す位の実行力が、 これからは必要と思ふ。 当然、設定のベストプラクティスは変化する。 ⇒少なくとも推奨設定ではIPv6のACLはALL:Denyを 慣例化しないと危険そうである。 変化に強いのはスペシャリストよりも、 ジェネラリストなのは自然の常。 ⇒ペーパーNPを量産した組織は痛い目を見ると思う。 真のスペシャリストはジェネラリストなので問題ない筈。
IPv6の導入 ~導入編~ これだけは覚えて帰ろう 其の参 IPv4側で行ったことは、 IPv6側でも行ってみる。 IPv4隠してIPv6隠さず にならないよう・・・ (ピンチはチャンスだ!)
IPv6の導入 ~導入編~ Q. IPv6のFWやIPフィルタは本当に必要なの? (攻撃をするような輩はまだいないよね?) A. IPv6のFWやIPフィルタは必須です。 ・IPv4はNAPT配下となる(ある程度安全な)ネットワークでも IPv6の場合は、エンドツーエンドの直接通信となってしまう。 (対インターネットからの)逆止弁はIPv6は期待できない。 ・DMZなどに導入するFWはIPv4同等以上のポリシーを定義する 必要性があります。(以上 となるのはIPv6の特性の差異) ・IPv4向きのExploit Codeも少し直すだけでIPv6対応になります。 ※IPv6になっても苦労は減らない。
IPv6の導入 ~導入編~ IPv4はNAPT配下から通信を開始しないと通信は成立しないが、 IPv6は双方向が直接通信するため、通信の開始の主導権が相手にもある。 NAPTの為、内向にポートマッピング されてないポートには通信できない DualStack Node(A) IPv4 Internet IPv6 Internet × IPv6は直接接続可能 IPv6 Router ex)IPIP Tunnel IPv4 Router NAPT(IPマスカレード) IPv4 Private Network IPv6 MyNetwork (※Global IPv6 Address) DualStack Node(B)
IPv6の導入 ~導入編~ FWの導入における対策ポイント(1) ICMPv6は必ず許可すべき。 ⇒透過させない場合は、手前でMTU=1280を返すような構成にすること。 ICMPv6はMTU-Path-Discovery機能があるため、 無応答にするとMTUブラックホールの要因となる。 (※同様のテクニック/バッドノウハウはロードバランサ等でも) × ICMPv6 IPv6 Network(A) IPv6 Network(B) MTU=1280 MTU=1280
IPv6の導入 ~導入編~ FWの導入における対策ポイント(2) DualStack環境のポリシーはIPv4ポリシーに 準拠させるべき。 ⇒導入・運用コストを少しでも抑える。(はずだが・・・ しかし私が知っているFW製品はIPv4かIPv6でObjectが 分離してしまう。 もちろん、IPv4とIPv6のポリシーテーブルも別である。
IPv6の導入 ~導入編~ 鏡写しで設定できるとしても、FW自体に自動生成機能があるわけでは 無いので、3倍以上の工数になってしまう。 (IPv4/IPv6設定と突き合わせ、さらにはイリーガルパターン) FW IPv4ポリシーテーブル IPv6ポリシーテーブル DNS_Server(Group) DNS_Server(Group) ns1(192.168.0.10) ns1(2001:bd8::10) ns2(192.168.0.11) ns2(2001:bd8::11)
IPv6の導入 ~導入編~ Object/Object Groupの管理領域が分離してない?ようなFWもあり、 Object/Object Groupの重複が認められないことも・・・ FW 重複の考慮 が必要 IPv4ポリシーテーブル IPv6ポリシーテーブル V4_DNS_Server(Group) v6_DNS_Server(Group) v4_ns1(192.168.0.10) v6_ns1(2001:bd8::10) v4_ns2(192.168.0.11) v6_ns2(2001:bd8::11)
IPv6の導入 ~導入編~ 下のようなObjectを作成出来る日までインフラエンジニアの苦悩は 続きそうである。(監視系でも同じ悩みがある・・・) DNS_Server(Group) WWW_Server(Group) ObjectName:ns1 IPv4 Addr(192.168.0.10) IPv6 Addr(2001:db8::10) ObjectName:www1 IPv4 Addr(192.168.0.80) IPv6 Addr(2001:db8::80) ObjectName:ns2 IPv4 Addr(192.168.0.11) IPv6 Addr(2001:db8::11) ObjectName:www2 IPv4 Addr(192.168.0.81) IPv6 Addr(2001:db8::81)
IPv6の導入 ~導入編~ (L2)FWの導入における対策ポイント(3) IPv6マルチキャストは透過させなければいけない。 (※EyherType:0x86ddの許可も忘れずに) ⇒隣接探索=ICMPv6 Type135 NS(Neighbor Solicitation) がIPv6マルチキャスト(ff00::/8)宛にパケットを送信します。 フィルタすると、Neighbor テーブルが作れない事態に。 L2FW Node(A) NS Router Node(B)
IPv6の導入 ~導入編~ とあるExploit Code(例:Perl)をIPv6 Readyに。 use IO::Socket::INET; ↓ use IO::Socket::INET6; qpstudy向き過ぎます・・・ 3分ってレベルじゃねーぞ! (入ってなければCPANへどうぞ)
IPv6の導入 ~導入編~ queryなどのIPレイヤ以上の脆弱性はIPv4もIPv6も変わらない。 以下のような構成だとIPv4なIDSは当然役に立たない・・・ DualStack Node(A) IPv4 Attack IPv6 Attack IPv4 Network(A) IPv6 Network(A) IPv4 Network(B) IPv6 Netwrork(B) IPv4 IDS DualStack Node(B)
IPv6の導入 ~導入編~ 実際に攻撃してみると・・・ 落ちた! DualStackのApacheが止まってしまった。 当然IPv4でもアクセス出来ない。 ※自己資産でないサーバを攻撃する行為は犯罪とみなされる ことがあります。 良い子のみんなは slowloris とか検索しないように。
IPv6の導入 ~導入編~ 最後にこれだけは覚えて帰ろう IPv6で失敗しても 怒られないのは今だけ。