IPv6セキュリティ:脅威、軽減策、ベストプラクティス
IPv6は本質的にIPv4よりも安全でも安全でもありません。実際のIPv6セキュリティ脅威、ファイアウォールを適切に設定する方法、ネットワークを保護する方法について学びます。
NATの神話#
組織がIPv6を検討するときに常に出てくる懸念の1つ:「NATがないと、露出していませんか?」
いいえ。NATはセキュリティ機能ではありませんでした。アドレス不足の回避策であり、たまたま内部アドレスを隠していました。ステートフルファイアウォールは、アドレス変換の欠点なしに、同じ保護(要請されていない着信接続のブロック)を提供します。
実際の問題は異なります。多くのネットワークでIPv6が有効になっていますが、IPv6ファイアウォールルールの設定を忘れていました。これは深刻な問題ですが、完全に防ぐことができます。
TL;DR - 要点まとめ
重要ポイント:
- NATはセキュリティではない:ステートフルファイアウォールがアドレス変換なしで同じ保護を提供
- IPv6には明示的なファイアウォールルールが必要:最大のリスクはセキュリティを設定せずにIPv6を有効化すること
- ICMPv6は必須:IPv4と異なり、ICMPv6をブロックすると基本的なネットワーク操作が壊れる
- NDP攻撃は現実的:スイッチにRAガードとファーストホップセキュリティを展開
- 同じセキュリティ基礎が適用:アクセス制御、監視、パッチ適用が引き続き重要
ジャンプ: ファイアウォール設定 | NDPセキュリティ | セキュリティチェックリスト
IPv6セキュリティで実際に異なること#
IPv6は特定の方法で脅威の状況を変えます:
より大きなアドレス空間は両刃の剣です。/64サブネットのスキャンはブルートフォースで何世紀もかかります。しかし、攻撃者はブルートフォースしません。DNSレコード、証明書透明性ログ、トラフィック分析を使用してターゲットを見つけます。アドレスの曖昧さに依存しないでください。
**すべてのデバイスが到達可能な可能性があります。**すべてのホストにグローバルアドレスがあると、ファイアウォールが唯一の障壁です。これにより、ファイアウォールの設定がより重要になり、オプションではなくなります。
**ICMPv6は必須であり、オプションではありません。**何も壊さずにすべてのICMPをブロックできるIPv4とは異なり、IPv6は基本的な操作にICMPv6を必要とします。間違ったメッセージをブロックすると、ネットワークが機能しなくなります。
**新しいプロトコル、新しい攻撃面。**近隣探索プロトコル(NDP)はARPを置き換え、新しいベクトルを導入します。拡張ヘッダーは、攻撃者が悪用できる複雑さを追加します。
IPv6固有の攻撃ベクトル#
NDPスプーフィング#
近隣探索プロトコルは、アドレス解決、ルーター検出、重複アドレス検出を処理します。IPv4のARPと同様に、デフォルトで信頼しています。
ローカルネットワーク上の攻撃者ができること:
- トラフィックをリダイレクトするために近隣アドバタイズメントをスプーフィング(中間者攻撃)
- デフォルトゲートウェイになるために偽のルーターアドバタイズメントを送信
- 正当なホストへのアドレスを拒否するために重複アドレス検出攻撃を実行
これらの攻撃にはローカルネットワークアクセスが必要です。インターネット規模の脅威ではありません。しかし、共有ネットワーク(オフィス、データセンター、WiFi)では、実際のリスクです。
**軽減策:**スイッチにRAガードとND検査を展開します。ホストでは、SEND(セキュア近隣探索)を検討してください。ただし、採用は限られています。
ルーターアドバタイズメント攻撃#
不正なRAは、ホストに次のことを納得させることができます:
- デフォルトゲートウェイとして攻撃者を使用
- 悪意のあるDNSサーバーを受け入れ
- 特定のプレフィックスを使用(トラフィック傍受の可能性)
ほとんどのホストがデフォルトでRAを受け入れるため、これは特に危険です。
軽減策:
- スイッチポートのRAガード(非ルーターポートからのRAをブロック)
- Linuxホスト上:静的設定のサーバーの場合は
net.ipv6.conf.all.accept_ra = 0 ramondやNDPMonなどのツールで予期しないRAを監視
拡張ヘッダーの悪用#
IPv6拡張ヘッダーは、メインヘッダーとペイロードの間にあります。正当な用途には、フラグメンテーション、ルーティングオプション、IPsecが含まれます。
攻撃者はそれらを使用して次のことができます:
- 完全なヘッダーチェーンを検査しないファイアウォールを回避
- 検査または再組み立ての脆弱性をバイパスするためのフラグメント攻撃
- 異なるデバイスが異なって解釈する曖昧なパケットを作成
**軽減策:**拡張ヘッダーチェーンを完全に解析するファイアウォールを使用します。異常または非推奨の拡張ヘッダー(RFC 5095によって廃止されたType 0ルーティングヘッダーなど)を持つパケットをドロップします。
偵察技術#
攻撃者は/64をランダムにスキャンしません。次の方法でIPv6ターゲットを見つけます:
- DNSゾーン転送または推測(www、mail、ns1など)
- 証明書透明性ログ(すべてのHTTPS証明書は公開)
- トラフィックからの収集(パッシブ監視)
- 予測可能なアドレッシング(::1、::100、MACに基づくEUI-64)
**軽減策:**クライアントアドレスにプライバシー拡張を使用します。予測可能なサーバーアドレスを避けます。必要でない場合は、パブリックDNSに内部インフラストラクチャを公開しないでください。
IPv6のファイアウォール設定#
許可する必須ICMPv6タイプ#
これらをブロックすると、ネットワークが壊れます:
| タイプ | 名前 | 必要な理由 |
|---|---|---|
| 1 | 宛先到達不能 | パスMTU検出、エラー処理 |
| 2 | パケットが大きすぎる | パスMTU検出(重要) |
| 3 | 時間超過 | traceroute、ループ検出 |
| 128/129 | エコー要求/応答 | ping(オプションですが有用) |
| 133 | ルーター要請 | ホストがルーターを見つける |
| 134 | ルーターアドバタイズメント | ルーターが自身をアナウンス |
| 135 | 近隣要請 | アドレス解決 |
| 136 | 近隣アドバタイズメント | アドレス解決応答 |
タイプ133-136はローカルリンクでのみ必要です。ルーター間で転送しないでください。
ステートフルファイアウォールルール#
ホストの最小ルールセット:
# 確立された接続を許可
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# ICMPv6を許可(本番ではより具体的に)
-A INPUT -p ipv6-icmp -j ACCEPT
# NDPのリンクローカルのみを許可(より安全)
-A INPUT -s fe80::/10 -p ipv6-icmp --icmpv6-type 133:136 -j ACCEPT
# 特定のサービスを許可
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
# 他のすべてをドロップ
-A INPUT -j DROPnftablesの場合、同等のもの:
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
ct state established,related accept
ip6 nexthdr icmpv6 accept
tcp dport { 22, 443 } accept
}
}エグレスフィルタリングを忘れない#
送信ルールも重要です。それらはできます:
- 予期しないプロトコルを介したデータ流出を防ぐ
- コマンドアンドコントロールトラフィックをブロック
- 侵害されたホストからの損害を制限
少なくとも、予期しない送信接続をログに記録します。
IPv6のIPsec#
IPsecは元々IPv6実装に必須でした(RFC 2460)。これは後にリラックスされました(RFC 6434)。普遍的な展開が決して起こらなかったためです。
それでも、IPv6はIPsecをよりクリーンにします:
- NATトラバーサルの複雑さなし
- IPsecを念頭に置いて設計された拡張ヘッダー
- ESPとAHは意図したとおりに動作
特定のホストまたはサイト間で暗号化が必要な場合、IPv6上のIPsecは簡単です。NATを使用したIPv4よりも簡単です。
ファーストホップセキュリティ機能#
最新のスイッチは、ローカル攻撃に対する保護を提供します:
**RAガード:**無許可のポートからのルーターアドバタイズメントをブロックします。すべてのアクセススイッチで不可欠です。
**DHCPv6ガード:**DHCPv6サーバーの応答を承認されたポートに制限します。
**ND検査:**MACからIPv6へのマッピングのバインディングテーブルを構築し、NDPトラフィックを検証します。
**ソースガード:**バインディングテーブルに基づいて、スプーフィングされた送信元アドレスを持つパケットをドロップします。
これらの機能は、Cisco、Juniper、Aristaなどのエンタープライズスイッチで利用できます。設定してください。デフォルトで無効になっています。
一般的な間違い#
**ファイアウォールを設定せずにIPv6を有効化。**ファイアウォールルールがIPv4のみをカバーしている場合、IPv6で完全に開いています。これが現実世界での第1位の脆弱性です。
**すべてのICMPv6をブロック。**これはパスMTU検出を壊し、特に大きなパケットやトンネルを介した神秘的な接続障害を引き起こします。
**「IPv4のみ」のネットワークでIPv6を無視。**ほとんどのオペレーティングシステムはデフォルトでIPv6を有効にします。適切なインフラストラクチャがないと、リンクローカルを使用したり、ランダムなエンドポイントへのトンネルを使用したりする可能性があります。
**NAT64がセキュリティを提供すると仮定。**変換技術はセキュリティを追加しません。変換するだけです。ファイアウォールルールが依然として必要です。
**IPv4とIPv6に同じファイアウォールルールを使用。**一部のルールは直接変換されます。その他(ICMP処理など)には特定の注意が必要です。
セキュリティチェックリスト#
IPv6を本番環境に移行する前に:
- ファイアウォールルールがIPv6トラフィックを明示的にカバー
- 必須ICMPv6タイプが許可されている
- アクセススイッチでRAガードが有効
- DHCPv6を使用している場合はDHCPv6ガードが設定されている
- IDS/IPSシグネチャがIPv6用に更新されている
- ロギングがIPv6送信元アドレスをキャプチャ
- DNSレコードが確認されている(不要なAAAAレコードを公開しない)
- クライアントでプライバシー拡張が有効
- 不正なRAの監視が実施されている
まとめ#
IPv6セキュリティはIPv4よりも難しくありません。異なるだけです。基本は同じままです:ステートフルファイアウォール、適切なアクセス制御、監視、システムを最新に保つこと。
最大のリスクは技術的な複雑さではありません。IPv6が存在するが適切に管理されていない移行期間です。IPv6をセキュリティアーキテクチャで第一級市民として扱い、後付けではありません。
関連記事#
- IPv6ファイアウォール設定:必須ルール - ネットワークを保護するためにIPv6ファイアウォールルールを正しく設定する方法を学びます。
- IPv6プライバシー拡張:アドレス追跡を停止 - プライバシーを保護し、アドレスベースの追跡を防ぐ方法を学びます。
実際に試してみましょう
IPv6バリデーターを使用して、アドレス設定が正しいことを確認します。