ファイアウォール設定 > SSL 制御

このセクションでは、SSL 制御機能を計画、設計、実装、および管理する方法について説明します。

トピック:

SSL 制御の概要

SonicOS には、SSL 制御機能があります。SSL 制御は、SSL セッションのハンドシェークを認識するシステムで、SSL 接続の確立を制御するポリシーを構築できます。SSL (セキュア ソケット レイヤ) は、TCP ベース ネットワーク通信において中心的な規格であり、最も一般的な、よく知られているアプリケーションには HTTPS (HTTP over SSL) があります。SSL では、デジタル証明書に基づいてエンドポイントが識別され、暗号化されたダイジェスト ベースの機密性を有するネットワーク通信が行われます。

図 45. HTTP over SSL 通信

SSL を使用すると、HTTPS セッションの確立時にクライアントから要求された URL (Uniform Resource Locator、例えば https://www.mysonicwall.com など) を含むすべてのペイロードをはっきりわからないようにするという、セキュリティ上の効果が得られます。これは、HTTPS を使用すると、暗号化された SSL トンネルを使用して HTTP が転送されるからです。SSL セッションが確立される (Figure 45 の手順 14) まで実際の対象リソース (www.mysonicwall.com) がクライアントによって要求されることはありませんが、SSL セッションが確立した後に、ファイアウォールやその他の中間機器がセッション データを検査することはできません。このため、URL ベースのコンテンツ フィルタ システムでは、IP アドレス以外の方法で要求を検査して、許可するかどうかを決定することはできません。

ホスト ヘッダー ベースの仮想ホスティング (後で「重要な概念」において定義します) は効率的で人気があるため、IP アドレス ベースのフィルタは暗号化されていない HTTP に対して効果がありませんが、ホスト ヘッダー ベースの HTTPS サイトは滅多にないため、IP フィルタは効果的に機能します。しかし、この信頼は HTTPS サーバ オペレータが誠実であることに基づいたもので、SSL が人をだます目的では使用されないということを前提にしています。

ほとんどの場合、SSL は適切に使用されており、オンライン ショッピングまたはオンライン バンキングや、個人情報または貴重な情報のやり取りが行われるセッションなど、セキュリティが重視される通信で使用されています。しかし、SSL のコストが低下し続け、簡単に使用できるため、セキュリティ目的ではなく、あいまい化や隠蔽を目的とした信用性の乏しい SSL アプリケーションも増加しています。

よく使用されているカムフラージュの方法では、ブラウジングの詳細を隠したり、コンテンツ フィルタを回避する目的で、SSL で暗号化されたウェブ ベースのプロキシ サーバが使用されています。既知のこの種類の HTTPS プロキシ サービスを IP アドレスに基づいて遮断することは簡単ですが、単純なウェブ検索によって簡単に利用できる何千ものプライベートホスト プロキシ サーバを遮断することは実際のところ不可能です。問題は、このようなサービスの数が増え続けていることではなく、これらのサービスの本質が予測できない点です。これらのサービスは、動的にアドレス指定された DSL およびケーブル モデム接続を使用するホーム ネットワーク上でホスティングされていることが多く、該当する IP が常に変わります。未知のこのような SSL を遮断するには、すべての SSL トラフィックを遮断する必要があり、実際には不可能です。

確立された SSL セッションを管理者が細かく調べて、ポリシー ベースで制御できるようにすることにより、SSL 制御機能にはこの問題に対処する方法が多数用意されています。現在の実装では SSL アプリケーション データの復号化は行いませんが、疑わしい SSL トラフィックをゲートウェイに基づいて識別して、許可しないことは可能です。

トピック:

SSL 制御の主な機能

 

表 127. SSL 制御:機能と利点

機能

利点

共通名ベースのホワイトリストおよびブラックリスト

管理者は、明示的に許可または拒否する証明書サブジェクトの共通名 (「重要な概念」で説明します) のリストを定義できます。エントリの文字列が含まれるものは一致とみなされます。 例えば、ブラックリストのエントリが"prox"の場合、"www.megaproxy.com"、"www.proxify.com"および"proxify.net"は一致するものと判断されます。このため、管理者は、好ましくないと考えられるサブジェクトに対して発行された証明書を使用する SSL 交換のすべてを、簡単に遮断することができます。その一方で、組織に共通する文字列をホワイトリストで定義することにより、その組織内のすべての証明書を簡単に許可することができます。各リストには、最大 1,024 のエントリを定義できます。

クライアントがバックアップ ホスト名やバックアップIP アドレスを使用して、これらのサイトへのアクセスを隠そうとした場合であっても、証明書に含まれるサブジェクトの共通名が検査されるため、サブジェクトは証明書で必ず検出され、ポリシーが適用されます。

自己署名証明書の制御

SSL でセキュリティ保護された適切なサイトでは、既知の認証局によって発行された証明書を使用することが一般的であり、これは SSL における信頼の基盤です。また同様に、(Dell SonicWALL ネットワーク セキュリティ装置のように) SSL によってセキュリティ保護されたネットワーク装置では、セキュリティ保護のための既定の方法として自己署名証明書を使用することが一般的です。したがって、閉鎖的な環境の自己署名証明書は疑わしくありませんが、公開されているサイトや商業利用サイトで使用されている自己署名証明書は疑わしいものです。自己署名証明書を使用する公開サイトでは、信頼性と識別のためではなく、暗号化のためだけにSSL が使用されていることがよくあります。完全に不正なサイトとは言い切れませんが、SSL で暗号化されたプロキシ サイトで一般的なように、隠蔽が目的である可能性が高いと言えます。

自己署名証明書を遮断するポリシーを設定できるため、このようなサイトと通信する危険性からの防御が可能です。自己署名証明書を使用している既知の信頼できる SSL サイトとの通信が遮断されないようにするため、ホワイトリスト機能を使用して明示的に許可することができます。

信頼できない認証局の制御

自己署名証明書が使用されている場合と同様、信頼できない CA によって発行された証明書が使用されている場合も、あいまい化のための信頼できない行為とは断定できませんが、信頼できるかどうか疑わしいことは確かです。

SSL 制御機能では、SSL 交換で使用される証明書の発行者とファイアウォールの証明書ストアに保存されている証明書を比較することができます。証明書ストアには、現在のウェブ ブラウザと同じように、約100 個の既知の CA の証明書が保存されています。この証明書ストアに保存されていない CA によって発行された証明書が SSL 制御機能によって検出された場合、SSL 接続を禁止できます。

独自のプライベート認証局を組織で使用している場合は、このプライベート CA をファイアウォールの証明書ストアに簡単にインポートして、プライベート CA を信頼された CA として認識されるようにすることができます。証明書ストアには、最大 256 の証明書を保存できます。

SSL バージョン、暗号の強度、および証明書有効期間の制御

SSL 制御機能には、読み取られる可能性のある SSLv2 を禁止する機能、脆弱な暗号 (64 ビット未満の暗号) を禁止する機能、および証明書の日付の範囲が無効な SSL ネゴシエーションを禁止する機能など、ネゴシエーションの特性に基づいて SSL セッションを管理する追加機能あります。これにより、管理者は、暗号に関する未知の脆弱性やセキュリティ警告の無視または誤解によって生じる危険にさらされることのない、厳重にセキュリティ保護された環境を構築して、ネットワークのユーザに提供できます。

ゾーン ベースのアプリケーション

SSL 制御機能はゾーン レベルで適用されるため、管理者はネットワーク上で SSL ポリシーを執行できます。ファイアウォールは、SSL 制御機能が有効にされているゾーンのクライアントからファイアウォールを介して送信される Client Hello を検知すると、検査を開始します。続いて、Server Hello と、応答で送信される証明書が検知され、設定されたポリシーに従って評価されます。例えば、LAN ゾーンで SSL 制御を有効にすると、LAN 上のクライアントから開始され任意の送信先ゾーンに到達するすべての SSL トラフィックが検査されます。

設定可能なアクションおよびイベント通知

SSL 制御機能によってポリシー違反が検出された場合に、イベントをログに記録して接続を遮断することができます。 あるいは、イベントをログに記録するだけで接続を継続することもできます。

SSL 制御の重要な概念

SSL - セキュア ソケット レイヤ (SSL) は、Netscape が 1995 年に導入したネットワーク セキュリティ メカニズムです。SSL は、2 つの通信アプリケーション (クライアントおよびサーバ) 間でのプライバシーの確保と、サーバ (および必要に応じてクライアント) の認証を目的としていました。SSL の最も有名なアプリケーションは HTTPS です。http:// の代わりに https:// で始まる URL によって指定される HTTPS は、インターネット上のウェブ トラフィックを暗号化する標準的な方式として認知されています。SSL HTTP 転送では一般的に TCP ポート 443 が使用されますが、通常の HTTP 転送では TCP ポート 80 が使用されます。SSL は HTTPS で最もよく知られていますが、SSL の使用用途は HTTP のセキュリティ保護に限られたものではありません。SSL は、SMTP、POP3、IMAP、および LDAP などのその他の TCP プロトコルのセキュリティ保護にも使用することができます。詳細については、
http://wp.netscape.com/eng/security/SSL_2.html
を参照してください。SSL セッションの確立は、以下のように行われます。

図 46. SSL セッションの確立

SSLv2 - SSL の初期バージョンですが、現在も一般的に使用されています。SSLv2 では、いくつかの脆弱性、制限、および理論上の欠陥 (SSLv3 についての説明で比較します) が指摘されていて、セキュリティに厳格な人々の冷笑、軽蔑の対象であり、軽視されるのが当然とみなされています。
SSLv3 - SSLv3 は SSLv2 との下位互換性を保ちつつ、以下の点を改善する目的で作成されました。

表 128. SSL と TLS の相違点

SSL[ssl]

TLS

暫定的な HMAC アルゴリズムを使用する

RFC 2104 に既定された HMAC を使用する

MAC をバージョン情報に適用しない

MAC をバージョン情報に適用する

パディング値を指定しない

パディングを指定された値に初期化する

不十分な警告

詳細な警告メッセージ

MAC - MAC (メッセージ認証コード) は、(MD5 または SHA1 のような) アルゴリズムをデータに適用して算出されます。MAC はメッセージ ダイジェストつまり一方向性ハッシュ コードであり、算出は非常に簡単ですが、実際に不可逆的なコードです。言い換えると、MAC だけを使用して、ダイジェストの元になっているメッセージを割り出すことは理論上不可能です。同様に、同一のMAC が算出される 2 つの異なるメッセージを見つけることも困難です。ある所定のデータに関して、受信側で算出された MAC が送信側で算出された MAC と一致する場合、受信側では、転送中にデータが変更されなかったとみなすことができます。
Client Hello - TCP セッションの確立後、クライアントからサーバに送信される最初のメッセージ。このメッセージにより SSL セッションが開始されます。 メッセージは次の要素で構成されています。
バージョン - クライアントが通信での使用を希望する SSL のバージョン。通常は、クライアントでサポートされている SSL の最新バージョンです。
乱数 - 32 ビットのタイムスタンプに 28 バイトの乱数構造を組み合わせたもの。
セッションID - セッション ID データが存在しない場合は空 (基本的に新しいセッションの要求の場合) です。 あるいは、前に発行されたセッション ID を表します。
暗号スイート - クライアントでサポートされる暗号化アルゴリズムのリストで、優先する順番に並んでいます。
圧縮方式 - クライアントでサポートされる圧縮方式のリストです (通常はヌル)。
Server Hello - Client Hello に対する SSL サーバの応答。SSL 制御機能によって検査が行われるのは SSL 交換のこの部分です。Server Hello には、セッションでネゴシエートされた SSL のバージョン、暗号、セッション ID、および証明書の情報が含まれています。X.509 サーバの実際の証明書自体は、SSL 交換の別の手順で使用されますが、通常は Server Hello と同じパケットで開始されます (終了も同じ場合があります)。
証明書 - X.509 の証明書は、電子的なセキュリティを確保するための、不変のデジタル スタンプです。証明書には、主に 4 つの特性があります。
サブジェクト - 共通名 (CN) で識別される証明書の保証。クライアントが https://www.mysonicwall.com のような SSL サイトをブラウズした場合、サーバからサーバの証明書が送信され、クライアントで評価されます。クライアントでは、証明書の日付が有効であること、信頼できる CA によって発行された証明書であること、サブジェクトの CN が 要求したホスト名に一致すること (つまり両方とも"www.mysonicwall.com"であること) が確認されます。サブジェクトのCN が一致しないとブラウザの警告が表示されますが、これは偽装行為の確かな証拠とは限りません。例えば、クライアントが https://mysonicwall.com をブラウズし、www.mysonicwall.com と同じ IP アドレスに解決された場合、サブジェクトの CN がwww.mysonicwall.com と記載されている証明書がサーバから示される場合があります。この場合、接続が完全に適切であるにもかかわらず、クライアントに警告が表示されます。
認証局 (CA) - 認証局 (CA) は、証明書のサブジェクトの識別情報を確認することを主な目的として、証明書に署名することができる信頼できる団体です。よく知られている認証局には、VeriSign、Thawte、Equifax、Digital Signature Trust などがあります。一般的に、SSL フレームワークにおいて CA が信頼できると判断されるためには、ほとんどのウェブ ブラウザ、オペレーティング システムおよびランタイム環境で使用されているように、その証明書が信頼できるストアに格納されている必要があります。SonicOS の信頼できるストアには、「システム > 証明書」ページからアクセスできます。CA モデルは信頼の積み重ねに基づいています。 つまり、クライアントは (信頼できるストアに CA の証明書があることによって) CA を信頼し、CA は (証明書ごとにサブジェクトを発行することによって) サブジェクトを信頼するため、クライアントがサブジェクトを信頼する、ということになります。
信頼できない CA - 信頼できない CA とは、クライアントの信頼できるストアに含まれていない CA のことです。SSL 制御機能における信頼できない CA とは、証明書が「システム > 証明書」にない CA のことです。
自己署名証明書 - 発行者の共通名とサブジェクトの共通名が同一の証明書で、証明書に自己署名されていることを意味します。
仮想ホスティング - 1 つのサーバで複数のウェブ サイトをホスティングするために、ウェブ サーバで使用されている方式。一般的な仮想ホスティング実装は名前ベース (ホスト ヘッダー) の仮想ホスティングで、1 つの IP アドレスで複数のウェブ サイトをホスティングできます。ホスト ヘッダー仮想ホスティングでは、サーバがクライアントから送信された"Host:"ヘッダーを評価して、要求されたサイトを判断します。例えば、www.website1.com と www.website2.com が両方とも64.41.140.173 に解決されるとします。この場合に、クライアントが"GET /"とともに"Host: www.website1.com"を送信すると、サーバからそのサイトに該当するコンテンツが返されます。

一般的に、ホスト ヘッダー仮想ホスティングは HTTPS では使用されません。 これは、SSL 接続が確立されるまでホスト ヘッダーを読み取ることができない一方、サーバが証明書を送信するまでSSL 接続が確立できないからです。クライアントが要求しているサイトをサーバが判断できないため (SSL ハンドシェークでは IP アドレスがわかるだけなので)、サーバは送信する適切な証明書を決定できません。いずれかの証明書を送信すれば SSL ハンドシェークを開始できますが、証明書の名前 (サブジェクト) が一致しなければブラウザに警告が表示されます。

脆弱な暗号 - 相対的に脆弱な対称暗号。暗号が 64 ビット未満の場合、脆弱と分類されます。ほとんどの場合、エクスポート暗号は脆弱な暗号です。以下に、脆弱な暗号のリストを示します。

注意事項と推奨事項

1
2
組織独自のプライベート認証局 (CA) を導入している場合は、プライベート CA の証明書を「システム > 証明書」ストアにインポートすることを強くお勧めします (特に、信頼できない CA によって発行された証明書の遮断を有効にする場合)。この処理の詳細については、「システム > 証明書」のセクションを参照してください。
3
4
Server Hello の断片化 - SSL サーバによって Server Hello が断片化されることがまれにあります。この場合、現在の SSL 制御機能の実装では、Server Hello を復号化できません。SSL制御ポリシーが SSL セッションに適用されず、SSL セッションが許可されます。
5
セッションの終了処理 - SSL 制御機能では、ポリシー違反が検出されると SSL セッションを終了させますが、これは TCP 層でのセッションを終了させるに過ぎません。この時点では SSL セッションが不完全な状態であるため、クライアントのリダイレクトや、終了に関する何らかの情報通知をクライアントに行うことはできません。
6
ホワイトリストの優先順位 - ホワイトリストは、他のすべての SSL 制御要素より優先されます。SSL サーバ証明書がホワイトリストのエントリに一致すると、SSL セッションの他の要素が設定されたポリシーの違反に該当する場合であっても、SSL セッションの続行が必ず許可されます。これは、意図的に行われています。
7
a
b
c