2005/05/18
■[セキュリティ][NAT]WindowsのIPsec NAT Traversalに関する文書
WindowsのIPsec NAT Traversalに関する2つの文書が新たに公開されました(と言っても2ヶ月前の話みたいですけど)。そういえば、はてなから新しいサイト(ここ)に移ってからはあまりIPsecネタを扱ってなかったので、せっかくだからと読んでみました。
(自動翻訳された日本語文がワケ分かんない代物だったので、英語の方にリンクしてあります)
■ IPSec NAT-T is not recommended for Windows Server 2003 computers that are behind network address translators
http://support.microsoft.com/kb/885348/en-us
これは「NAT内部で運用しているサーバ(Windows Server 2003)へのアクセスにIPsec NAT Traversalを利用するのは非推奨とする」という内容の文書です。その理由を理解するには、一番下のセクション「Windows XP SP2 does not support establishing IPSec NAT-T security associations to servers」に書かれている事例を見るのが分かりやすいです。以下はその部分の要約。
- NATの内部にサーバ(以下、サーバ1)が設置され、そのNATは「ポート500(IKE)と4500(IPsec NAT-T)へ向かうトラフィックをサーバ1に転送する」と設定されている環境を考える。
- まず、NATの外部にあるクライアント(以下、クライアント1)が、IPsec NAT-Tを使ってサーバ1との双方向接続を確立する。
- 次に、NATの内部にあるクライアント(以下、クライアント2)が、IPsec NAT-Tを使ってクライアント1との双方向接続を確立する。
- このとき、クライアント1がクライアント2とのを再確立しようとすると、そのためのIKEとIPsec NAT-Tのトラフィックは、NATの設定に従ってサーバ1へ転送されてしまう。つまり、本来クライアント2へ向かうべきトラフィックが誤送されてしまう。
結局、簡単に言うと
client(private IP address) → NAT → Internet → server(global IP address)
って状況以外ではIPsec NAT Traversalなんて絶対使うなよ! 話がややこしくなるから!
というのがこの文書の主張です。
■ The default behavior of IPsec NAT traversal (NAT-T) is changed in Windows XP Service Pack 2
http://support.microsoft.com/kb/885407/en-us
一方、こちらは「デフォルト設定のWindows XP SP2では、NATの外部から内部へ向かう通信ではIPsec NAT Traversalを使えないようにした(レジストラで変更可)」という内容の文書です。上記の文章の意図した内容を実装面でも強制するようにした、という話ですね。
ただし、ここで誤解してほしくないのは、Windows XP SP2でデフォルト無効にされたのはNATの背後に配置されたレスポンダへのIPsec NAT-Tだけで、IPsec NAT-TのイニシエータとしてはNAT内でも従来通り使えるということです。
セキュリティホール memoで紹介された際には「SP2 ではデフォルト無効に変更されたそうです。」というコメントが添えられていたため、正直「マイクロソフトはとうとうIPsecを見捨てたのか?!」とビックリしてしまったのですが、そういうわけではなかったみたいです。早とちりには気を付けましょう。
----
(2005/05/20追記)
デフォルト設定に関する記述が分かりにくかったので、表現を修正しました。
また、この日記に無関係と判断したコメント及びトラックバックは削除する可能性があります。ご了承ください。