web-dev-qa-db-ja.com

IPv6では、NATこれ以上使用する必要がありますか?

NATをIPv6で使用する方法について疑問に思っています。もう必要ないようです。では、IPv6環境でのファイアウォール構成の背後にある概念は何ですか?

54
キツネ

[〜#〜] nat [〜#〜] については、いくつかの広範な混乱があります。

NATは、セキュリティ機能として使用されることを意図されていません。ただし、ほとんどの場合(すべてではない)に、マシンがNATのみを介してインターネットにアクセスできる場合、マシンはNATシステムも本質的にファイアウォールであるかのようです。

それがどのように機能するか見てみましょう:

  • IPパケットには、送信元アドレスと宛先アドレスがあります。各ルーターは、宛先アドレスを確認すると、パケットを送信する後続のルーターを決定します。
  • ルーターがNATを実装すると、発信パケットを偽装して転送します。つまり、パケットは実際のソースではなく、ルーターの外部IPをソースアドレスとして使用します。着信パケットの場合、ルーターは逆の操作を行います。 TCP/UDPポート番号は、パケットがどの内部ホストに関連しているかを知るために使用されます。
  • ただし、ルーターの観点からは、内部ホストは直接到達可能な(プライベート)IPアドレスを持っています。 NATは、内部ホストとルーターを超えたマシン間の通信用です。

例を見てみましょう:

Inner <---> HomeRouter <---> ISPRouter <---> The Internet

「インナー」はあなたのパソコンです。 「HomeRouter」はNATを行うルーターです。 「ISPRouter」は、ISPのルーターです。

「ファイアウォール効果」は次のとおりです:通常、「内部」に開いているポートがある場合でも(これはリモートで到達可能なサービス、たとえばポート80のローカルWebサーバーを実行します)、「インターネット」からの人々はそれに接続することができません。その理由は次のとおりです。IPパケットをHomeRouterからInnerに転送する方法は2つあります。

  • 着信パケットは、HomeRouterのアドレスを宛先として持ち、HomeRouterが内部からインターネット上のどこかにoutgoing接続に関連付けられていると認識しているポートをターゲットとする場合があります。これは、Innerによって開始された接続に対してのみ機能します。これは、ポートがInnerで実行されているサーバーのポートと一致しないことを意味します。

  • IPパケットには、宛先として内部のプライベートIPアドレスが含まれており、どういうわけかHomeRouterの注意を引き付けます。しかし、ISPRouterはInnerのプライベートIPを認識していないため、そのアドレス宛のIPパケットをHomeRouterに転送しません。 ソースルーティング を使用して、宛先として内部のプライベートIPアドレスおよび中間ホストとしてHomeRouterのパブリックIPアドレスを使用してパケットにタグを付けることができます。 ISPRouterがソースルーティングをサポートしている場合、そのようなパケットはNATに関係なく内部に到達します。実際にソースルーティングをサポートしているISPはほとんどありません。

したがって、NATの「ファイアウォール効果」は2つのプロパティに依存します。

  • 攻撃者は遠い:攻撃者は、ホームルーターとISPの間のリンクに直接パケットを注入しません。すべての試みはISPルーターを経由する必要があります。
  • ISPはソースルーティングを許可しません。これは(非常に)一般的なケースです。

したがって、実際には個人の家や中小企業には多くのマシンがあり、数秒でハッキングされる可能性がありますが、 NATの「ファイアウォール効果」。


では、IPv6はどうでしょうか。 NATは、無料のIPv4アドレスの不足に対処するために設計および導入されました(広く導入されました)。NATがなければ、IPcalypseはすでに破壊された文明(または多分トリガーされたIPv6実際の使用法)。IPv6は、わずかな32ビットIPv4アドレスの代わりに128ビットアドレスを使用するため、NATなどの大まかな回避策を使用する必要はありません。

NATをIPv6で使用できますが、ほとんど意味がありません。NATを使用できるのであれば、なぜIPv6に切り替えるのですか?

ただし、NATがないと、「ファイアウォール効果」はなく、薄っぺらな状態になります。ほとんどのオペレーティングシステムはIPv6に対応しており、可能であれば自動的に使用されます。したがって、ISPがIPv6をオンにすることを決定した場合、そのように、これまでNAT=の後ろに "隠されていた"マシンの多くは、外部から到達可能になります。これは、世界的なハッキング乱交ISPがいくぶん...消極的であることは不思議ではありません。

IPv6nicelyに切り替えるには、有効化をいくつかの堅固でよく考えられたファイアウォールルールと組み合わせる必要があります。これにより、NAT世界(上記で説明した注意事項があります)ですが、IPv6の魔法のおかげで実現可能になりました。ここでの運用上の言葉は「考える」ことです。これは一部の人から時間がかかるため、無料ではありません。

したがって、許容できる限りIPv4が使用および維持されることが予測でき、NATおよび透過プロキシのおかげで、これはになります) 時間(特に、100億未満の人間の人口を封じ込めることに成功した場合)。

69
Tom Leek

NATを削除する際の最大の問題はプライバシーの低下です。IPv6では、すべてのLANデバイスに一意のパブリックIPv6アドレスがあり、LAN上の各デバイスを一意に識別できるようになっています。これは次に、個々のデバイスとユーザーを簡単に識別できるようにします。

ドメイン間でのアクティビティを追跡する機能などのプライバシーへの影響。広告プロバイダーは明らかにこのタイプの追跡をすでにCookieで行っていますが、NATを削除すると、個々のデバイスを追跡しやすくなります。

9
Carl

注:この回答の詳細では、ファイアウォールとしてLinuxボックスを使用することを前提としています。別のプラットフォームを使用する場合、詳細は異なる場合がありますが、ほとんどの原則はそのまま維持されます。

IPv6でNATを使用する方法を考えています。

Nat for ipv6はIETFで強く推奨されていません。それでも、本当に必要な場合は実装があります。たとえば、Linuxはバージョン3.7でそれを追加しました。

Linuxの実装は、基本的にLinuxと同じように機能しますNAT IPv4の実装。他の実装については話せません。

あなたはそれをもう必要としないようです。

人々はさまざまな理由でNATを使用します。

  1. アドレスの可用性。パブリックアドレスよりも多くのアドレスを内部ホストに求めています。
  2. アドレスの独立性。接続の変更に関係なく、内部アドレスを維持したいと考えています。
  3. プライバシー、彼らは彼らの内部ネットワークの詳細と内部ホストが外部の世界から要求をしている詳細を隠したいです。
  4. セキュリティ、NATは、大まかなステートフルファイアウォールとして機能します(ただし、非常に優れたファイアウォールではない場合があります)。さらに、NATルールの読み込みに失敗すると、ワイドオープン接続ではなく、接続がない可能性が高くなります。

同様にNATにはいくつかの欠点があります(そして、少なくともいくつかの欠点にはセキュリティ上の影響があります)。

  1. 一部のプロトコルはNAT(これはステートフルファイアウォールにも当てはまる可能性があります)によって壊れる可能性があります)
  2. すべての接続を追跡する必要があり、ポートの供給が限られているため、サービス拒否の脆弱性につながる可能性があります。
  3. 虐待が検出された場合NAT=虐待の原因を隠すことができます。
  4. 着信サービスの処理は面倒な場合があります。ローカルクライアントから外部IPへのアクセスは、特定の複雑なポイントになる可能性があります。

Ipv6はアドレス不足を解決し、パブリックアドレスとプライベートアドレスを並行して実行できるようにすることで、ISPに依存しない問題を解決します(ただし、独自の問題が発生します)。プライバシー拡張は、サブネット上のどのコンピューターが要求を行っているかを隠しますが、それがどのサブネット上にあるかを隠しません。

では、IPv6環境でのファイアウォール構成の背後にある概念とは正確には何なのでしょうか。

NATを使用せずにステートフルパケットフィルタリングを実行できます。たとえば、着信接続を禁止しながらすべての発信接続を許可する基本構成は次のようになります。

ip6tables -P FORWARD DROP
ip6tables -A FORWARD -i ethinternal -j ACCEPT
ip6tables -A FORWARD -m conntrack –ctstate ESTABLISHED,RELATED -j ACCEPT

ファイアウォールはnatとほぼ同じ方法で接続を追跡しますが、その情報を使用してパケットをフィルタリングするだけで、変換は実行しません。

注意が必要なことの1つは、ファイアウォールが失敗したことを確認することです。 sysctl.confで転送を有効にせず、代わりにファイアウォールスクリプトの最後で転送を有効にし、ファイアウォールスクリプトで「set -e」を使用することをお勧めします。この方法では、ファイアウォールスクリプトが正常に実行された場合にのみ転送が有効になります。

ファイアウォール自体との間のトラフィックもフィルタリングする場合は、ICMPについて考える必要があります。一部の種類のICMPはリンクローカルから許可する必要があります。そうしないと、ネットワークが正常に機能しなくなります。

それ以外は、ipv4とそれほど大きな違いはありません。許可するものを決定し、許可します。

8
Peter Green

NATは実際にはパブリックアドレスよりも魔法のように安全ではありません(アドレス変換の性質上、独自のいぼがたくさんあります)。プライベートipv4アドレスにルーティングするには、攻撃者はルーターをポイントするだけで、ファイアウォールを完全に通過してそのトラフィックを除外します。

Ipv6への切り替えは、その点では何も変更しませんが、フィルターされたサブネットが攻撃者のみがルーティングできるのではなく、世界がルーティング可能になることを除きます。それ以外はすべて同じままです。ipv6サブネットを制限する必要がある場合は、/ 64をサブクラス化し、ファイアウォールルールを適用して、そこに到達できるトラフィックを除外します。

5
mricon

NATは、ルーターを介して接続されたホストが単一のIPアドレスを共有できるようにするためにルーターが使用できる手法です。

ルーターは、どのホストに接続があるかを追跡し、ホストは特定のデータをホストにルーティングするように要求できます。たとえば、ゲームは通常、特定のポートでUDPトラフィックのリダイレクトを要求します。

逆に、ルーターが知っているだれにも宛てていないように見えるパケット(読み取り可能なアドレスのない手紙のような)は破棄されます。これにより、ファイアウォールのように機能します。

IPv6には実質的に無制限のアドレスがあり、家庭/ルーターは配布するために十分な量を持っているでしょう。 NATは不要になりました。

これにより、ファイアウォールの効果がなくなります。愚かなエンドユーザーに同様のセキュリティを提供するために、同様に制限があり煩わしい適切なファイアウォールに置き換えられる可能性があります。適切なファイアウォールを用意することは大きな前進です。そして、それが後ではなく早く実現することを願っています。

2
Lodewijk

インターネットアーキテクトをNATで不快にさせる基本的な問題は、エンドツーエンドの原則と競合するように見えることです。これは基本的に、中間層3ルーターがレイヤー4接続状態を無視してパケットを代替ルートを効率的にルーティングできますが、NAT=はステートフルファイアウォールのコンテキストで実装するのが簡単なので、このように表示する必要があります。

80年代後半にインターネットが20歳の誕生日を迎えたとき、ファイアウォールの必要性が明らかになりました。現在、プライベートネットワークに出入りするすべてのデータは、ファイアウォールを通過するように制限されています。ファイアウォールは、パケットを効果的にフィルタリングできるように接続状態を追跡する必要があります。

1994年の時点ではまったく明確ではありませんでしたが、アドレスの再利用の要件を排除すると、NATは、プライベートデータがプライベートネットワークから流出するのを防ぐことを主な目的とするファイアウォール機能です。

具体的には、クライアントが外部サーバーへの接続を開始するとき、プライベートネットワーク内で使用されるソースアドレスのプライベート部分(ルーティングプレフィックス、ホスト識別子、およびポート)が外部ネットワークに漏出することは決して許されません。

Linux Ip6tables NATはカーネルバージョン3以降で利用可能であり、たとえば、単一のセッションでのみ有効な一意のランダムホストアドレスを生成するなど、完全に専門的な仕事をします。

残念ながら、この機能は、誰もユースケースを考え出していないという理由で完全に文書化されていません!さて、ここです。また、ポート番号が含まれていることも確認できます。

このように見ると、状態を保持する必要があるのはファイアウォールであり、NATはファイアウォールによって実行されるため、NATルーターエンドツーエンドの原則は適用されません。

教訓は、インターネットアーキテクトはインターネットプロトコルの設計に固執し、ファイアウォールの設計はセキュリティアーキテクトに任せるべきだということです。

0
Terry Horridge

IPv6は宛先NATの着信接続の必要性をなくし、代わりに(パブリック)宛先アドレスをそのままにしてローカルリンク上のホストに配信します。外向きルーターは、外部で利用可能なプレフィックスをすべての内部にアドバタイズします。ホストの場合、ホストはこれらのプレフィックスを持つアドレスをローカルリンクのインターフェースに自由に追加して、着信接続を受信できます。

発信パケットのソースNATの必要性がなくなったと確信していません。デフォルトでは、クライアントに同じ方法でパブリックアドレスを割り当て、それをリンクローカルアドレスと同じホスト識別子を使用して、外の世界。

申し訳ありませんが、これは個人情報が公衆(信頼されていない)インターネットに漏洩していることを意味します。これは私の本では機密性の侵害です。これは、今日理解されているセキュリティの3本の柱の1つです。

NATを使用して、送信元アドレス(ルーティングプレフィックス、ホスト識別子、ポート)のプライベート部分を、パブリックインターネットとプライベートの境界を保護するファイアウォールのランダムな値に変換する必要があります。通信網。

0
Terry Horridge