IPV6_PROTECTION_LEVEL
IPV6_PROTECTION_LEVEL ソケット オプションを使用すると、開発者は IPv6 ソケットにアクセス制限を適用できます。 このような制限により、プライベート LAN 上で実行されているアプリケーションは、外部攻撃に対して単純かつ堅牢にセキュリティを強化できます。 IPV6_PROTECTION_LEVEL ソケット オプションは、リッスン ソケットのスコープを拡大または縮小し、必要に応じてパブリック ユーザーとプライベート ユーザーからの無制限のアクセスを有効にするか、必要に応じて同じサイトにのみアクセスを制限します。
現在、IPV6_PROTECTION_LEVELには 3 つの保護レベルが定義されています。
保護レベル | 形容 |
---|---|
PROTECTION_LEVEL_UNRESTRICTED |
Windows (Teredo など) に組み込まれている IPv6 NAT トラバーサル機能を利用するアプリケーションなど、インターネット経由で動作するように設計されたアプリケーションで使用されます。 これらのアプリケーションは IPv4 ファイアウォールをバイパスする可能性があるため、開いているポートに向けられたインターネット攻撃に対してアプリケーションを強化する必要があります。 |
PROTECTION_LEVEL_EDGERESTRICTED |
インターネット経由で動作するように設計されたアプリケーションによって使用されます。 この設定では、Windows Teredo 実装を使用した NAT トラバーサルは許可されません。 これらのアプリケーションは IPv4 ファイアウォールをバイパスする可能性があるため、開いているポートに向けられたインターネット攻撃に対してアプリケーションを強化する必要があります。 |
PROTECTION_LEVEL_RESTRICTED |
インターネット シナリオを実装していないイントラネット アプリケーションで使用されます。 これらのアプリケーションは、通常、インターネットスタイルの攻撃に対してテストまたは強化されません。 この設定により、受信したトラフィックがリンクローカルのみに制限されます。 |
次のコード例では、それぞれの定義済みの値を示します。
#define PROTECTION_LEVEL_UNRESTRICTED 10 /* for peer-to-peer apps */
#define PROTECTION_LEVEL_EDGERESTRICTED 20 /* Same as unrestricted, except for Teredo */
#define PROTECTION_LEVEL_RESTRICTED 30 /* for Intranet apps */
これらの値は相互に排他的であり、1 つの setsockopt 関数呼び出しで結合することはできません。 このソケット オプションのその他の値は予約されています。 これらの保護レベルは、受信接続にのみ適用されます。 このソケット オプションを設定しても、送信パケットや接続には影響しません。
Windows 7 および Windows Server 2008 R2 では、IPV6_PROTECTION_LEVELの既定値は指定されておらず、PROTECTION_LEVEL_DEFAULT は -1 に定義されています。これは、IPV6_PROTECTION_LEVELの無効な値です。
Windows Vista および Windows Server 2008 では、IPV6_PROTECTION_LEVELの既定値は PROTECTION_LEVEL_UNRESTRICTED され、PROTECTION_LEVEL_DEFAULT は -1 に定義されています。これは、IPV6_PROTECTION_LEVELの無効な値です。
Windows Server 2003 および Windows XP では、IPV6_PROTECTION_LEVELの既定値が PROTECTION_LEVEL_EDGERESTRICTED され、PROTECTION_LEVEL_DEFAULT が PROTECTION_LEVEL_EDGERESTRICTEDに定義されています。
手記
ソケットがバインドされる前に、IPV6_PROTECTION_LEVEL ソケット オプションを設定する必要があります。 それ以外の場合、バインド と setsockopt 呼び出しの間で受信されたパケットは PROTECTION_LEVEL_EDGERESTRICTEDに準拠し、アプリケーションに配信される可能性があります。
次の表では、各保護レベルをリッスン ソケットに適用する効果について説明します。
保護レベル
受信トラフィックが許可される
同じサイト
外
NAT トラバーサル (Teredo)
PROTECTION_LEVEL_RESTRICTED
はい
いいえ
いいえ
PROTECTION_LEVEL_EDGERESTRICTED
はい
はい
いいえ
PROTECTION_LEVEL_UNRESTRICTED
はい
はい
はい
上の表では、同じサイト 列は次の組み合わせです。
- ローカル アドレスをリンクする
- サイトのローカル アドレス
- 同じサイトに属することが知られているグローバル アドレス (サイト プレフィックス テーブルと一致)
Windows 7 および Windows Server 2008 R2 では、IPV6_PROTECTION_LEVELの既定値は指定されていません。 ローカル コンピューターにエッジ トラバーサル対応ファイアウォール ソフトウェアがインストールされていない場合 (Windows ファイアウォールが無効になっているか、Teredo トラフィックを無視する他のファイアウォールがインストールされている場合)、IPV6_PROTECTION_LEVEL ソケット オプションを PROTECTION_LEVEL_UNRESTRICTEDに設定した場合にのみ Teredo トラフィックを受信します。 ただし、Windows ファイアウォールまたはエッジ トラバーサル対応のファイアウォール ポリシーでは、ファイアウォールのポリシー設定に基づいてこのオプションが無視される場合があります。 このソケット オプションを PROTECTION_LEVEL_UNRESTRICTEDに設定すると、アプリケーションは、ローカル コンピューターにインストールされているホスト ファイアウォールによってエッジ トラバージされたトラフィックを受信する明示的な意図を通信します。 そのため、エッジ トラバーサル対応のホスト ファイアウォールがインストールされている場合は、パケットの受け入れについて最終的な決定が行われます。 既定では、ソケット オプションは設定されていません。
- o ローカル コンピューターで Windows ファイアウォールが有効になっている (または別のエッジ トラバーサル対応のホスト ファイアウォールがインストールされている) 場合は、適用されるものは何でも観察されます。 一般的なエッジ トラバーサル対応のホスト ファイアウォールでは、既定で Teredo トラフィックがブロックされます。 したがって、アプリケーションは、それが PROTECTION_LEVEL_EDGERESTRICTEDされたかのようにデフォルトを観察します.
- o Windows ファイアウォールが有効でなく、他のエッジ トラバーサル対応ホスト ファイアウォールがローカル システムにインストールされていない場合、既定値は PROTECTION_LEVEL_EDGERESTRICTEDになります。
Windows Vista および Windows Server 2008 では、IPV6_PROTECTION_LEVELの既定値は PROTECTION_LEVEL_UNRESTRICTEDです。 ただし、有効な値は、Windows ファイアウォールが有効かどうかによって異なります。 Windows ファイアウォールは、IPV6_PROTECTION_LEVELに設定されている値に関係なく、エッジ トラバーサル対応 (Teredo 対応) であり、IPV6_PROTECTION_LEVELが PROTECTION_LEVEL_UNRESTRICTED場合は無視されます。 したがって、有効な値はファイアウォール ポリシーによって異なります。 Windows ファイアウォールが無効になっており、ローカル コンピューターに他のエッジ トラバーサル対応ファイアウォールがインストールされていない場合、IPV6_PROTECTION_LEVELの既定値は PROTECTION_LEVEL_UNRESTRICTED。
Windows Server 2003 および Windows XP では、IPV6_PROTECTION_LEVELの既定値は PROTECTION_LEVEL_EDGERESTRICTEDです。 IPV6_PROTECTION_LEVEL ソケット オプションを PROTECTION_LEVEL_UNRESTRICTEDに設定していない限り、Teredo トラフィックは受信されません。
IPV6_PROTECTION_LEVELによっては、インターネットからの要求されていないトラフィックを必要とするアプリケーションが、要求されていないトラフィックを受信できない場合があります。 ただし、これらの要件は、Windows Teredo インターフェイス経由で要請されたトラフィックを受信するために必要ではありません。 Teredo との対話の詳細については、「Teredo 経由で要請されたトラフィックを受信する」を参照してください。
設定された保護レベルのために受信パケットまたは接続が拒否されると、拒否は、アプリケーションがそのソケットでリッスンしていないかのように処理されます。
手記
IPV6_PROTECTION_LEVEL ソケット オプションは、必ずしも IPv6 ソケットにアクセス制限を設けたり、Windows Teredo 以外の方法を使用して NAT トラバーサルを制限したり、別のベンダーによる Teredo の別の実装を使用したりするとは限りません。
関連トピック