第54章 SSL制御の設定
ファイアウォール設定 > SSL制御
この章では、SSL制御機能を計画、設計、実装、および管理する方法について説明します。この章は、次のセクションで構成されています。
SSL制御の概要
このセクションでは、SSL制御の概要を説明します。このセクションには、以下のサブセクションがあります。
SonicOSファームウェアのバージョン4.0以上には、SSL制御機能があります。SSL制御は、SSLセッションのハンドシェークを認識するシステムで、SSL接続の確立を制御するポリシーを構築できます。SSL (セキュア ソケット レイヤ) は、TCPベース ネットワーク通信において中心的な規格であり、最も一般的な、よく知られているアプリケーションにはHTTPS (HTTP over SSL) があります。SSLでは、デジタル証明書に基づいてエンドポイントが識別され、暗号化されたダイジェスト ベースの機密性を有するネットワーク通信が行われます。
![]()
SSLを使用すると、HTTPSセッションの確立時にクライアントから要求されたURL (Uniform Resource Locator、例えば 〈https://www.mysonicwall.com〉 など) を含むすべてのペイロードをはっきりわからないようにするという、セキュリティ上の効果が得られます。これは、HTTPSを使用すると、暗号化されたSSLトンネルを使用してHTTPが転送されるからです。SSLセッションが確立される (図1の手順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制御の主な機能
SSL制御の重要な概念
・ SSL - セキュア ソケット レイヤ (SSL) は、Netscapeが1995年に導入したネットワーク セキュリティ メカニズムです。SSLは、”2つの通信アプリケーション (クライアントおよびサーバ) 間でのプライバシーの確保と、サーバ (および必要に応じてクライアント) の認証”を目的としていました。SSLの最も有名なアプリケーションはHTTPSであり、http://の代わりにhttps://で指定されます。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セッションの確立は、以下のように行われます。![]()
・ SSLv2 - SSLの初期バージョンですが、現在も一般的に使用されています。SSLv2では、いくつかの脆弱性、制限、および理論上の欠陥 (SSLv3についての説明で比較します) が指摘されていて、セキュリティに厳格な人々の冷笑、軽蔑の対象であり、軽視されるのが当然とみなされています。
・ SSLv3 - SSLv3はSSLv2との下位互換性を保ちつつ、以下の点を改善する目的で作成されました。
・ Diffie-Helmanを含む、代替鍵交換方式。
・ 鍵交換および一括暗号化の両方でのハードウェア トークンのサポート。
・ SHA、DSS、およびFortezzaのサポート。
・ バンド外データ転送。
・ TLS - Transport Layer Security バージョン1.0 (SSLv3.1とも呼ばれます) はSSLv3に非常に似ていますが、以下のようにSSLv3が改善されたものです。
・ 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またはDN) によって証明書のサブジェクトが識別されます。
・ 通信相手との間のメッセージを暗号化および復号化するために使用する公開鍵が含まれます。
・ 証明書を発行した信頼できる組織 (認証局) のデジタル署名が含まれます。
・ 証明書が有効な日付の範囲が示されます。
・ サブジェクト - 共通名 (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のことです。
・ 自己署名証明書 - 発行者の共通名とサブジェクトの共通名が同一の証明書で、証明書に自己署名されていることを意味します。一般的に、ホスト ヘッダー仮想ホスティングはHTTPSでは使用されません。これは、SSL接続が確立されるまでホスト ヘッダーを読み取ることができない一方、サーバが証明書を送信するまでSSL接続が確立できないからです。クライアントが要求しているサイトをサーバが判断できないため (SSLハンドシェークではIPアドレスがわかるだけなので)、サーバは送信する適切な証明書を決定できません。いずれかの証明書を送信すればSSLハンドシェークを開始できますが、証明書の名前 (サブジェクト) が一致しなければブラウザに警告が表示されます。
・ 仮想ホスティング - 1つのサーバで複数のウェブ サイトをホスティングするために、ウェブ サーバで使用されている方式。一般的な仮想ホスティング実装は名前ベース (ホスト ヘッダー) の仮想ホスティングで、1つのIPアドレスで複数のウェブ サイトをホスティングできます。ホスト ヘッダー仮想ホスティングでは、サーバがクライアントから送信された”Host:”ヘッダーを評価して、要求されたサイトを判断します。例えば、www.website1.comとwww.website2.comが両方とも64.41.140.173に解決されるとします。この場合に、クライアントが”GET /”とともに”Host: www.website1.com”を送信すると、サーバからそのサイトに該当するコンテンツが返されます。![]()
注意事項と推奨事項
1. 自己署名および信頼できないCAの有効化 - これらの2つのオプションのいずれかを有効にする場合は、SSLでセキュリティ保護された組織内のネットワーク装置の共通名をホワイトリストに追加して、これらの機器への接続が遮断されないようにすることを強くお勧めします。例えば、SonicWALL UTM装置の既定のサブジェクト名は”192.168.168.168”、SonicWALL SSL-VPN装置の既定の共通名は”192.168.200.1”です。2. 組織独自のプライベート認証局 (CA) を導入している場合は、プライベートCAの証明書を「システム > 証明書」ストアにインポートすることを強くお勧めします (特に、信頼できないCAによって発行された証明書の遮断を有効にする場合)。この処理の詳細については、『SonicOS管理者ガイド』の「システム > 証明書」のセクションを参照してください。3. 現段階では、SSL制御機能による検査はTCPポート443のトラフィックに対してのみ実行されます。標準以外のポートで行われるSSLのネゴシエーションは、現段階では検査されません。4.Server Helloの断片化 - SSLサーバによってServer Helloが断片化されることがまれにあります。この場合、現在のSSL制御機能の実装では、Server Helloを復号化できません。SSL制御ポリシーがSSLセッションに適用されず、SSLセッションが許可されます。5.セッションの終了処理 - SSL制御機能では、ポリシー違反が検出されるとSSLセッションを終了させますが、これはTCP層でのセッションを終了させるに過ぎません。この時点ではSSLセッションが不完全な状態であるため、クライアントのリダイレクトや、終了に関する何らかの情報通知をクライアントに行うことはできません。6.ホワイトリストの優先順位 - ホワイトリストは、他のすべてのSSL制御要素より優先されます。SSLサーバ証明書がホワイトリストのエントリに一致すると、SSLセッションの他の要素が設定されたポリシーの違反に該当する場合であっても、SSLセッションの続行が必ず許可されます。これは、意図的に行われています。7. SonicOS5.0では、事前インストール済み (既知の) CA証明書の数が8から93に増加しました。これにより、リポジトリはほとんどのウェブ ブラウザで使用されているものに非常に近くなりました。証明書に関しては、これ以外に以下の点が変更されています。SSL制御の設定
SSL制御は「ファイアウォール」パネルの「SSL制御」フォルダで設定します。SSL制御には、グローバル設定とゾーン単位の設定があります。既定では、SSL制御はグローバル レベルでもゾーン レベルでも有効にされていません。ページに表示される各コントロールは、以下のとおりです (以下で使用する用語の詳細については、「SSL制御の重要な概念」セクションを参照してください)。
![]()
・ 「SSL制御を有効にする」 - SSL制御のグローバル設定。ゾーンに適用するSSL制御を有効にするには、この設定をオンにする必要があります。
・ 「イベントをログに記録する」 - 下部の「設定」セクションで定義されるSSLポリシーに対する違反が検出された場合、イベントをログに記録しますが、SSL接続の継続は許可されます。
・ 「接続をブロックしてイベントをログに記録する」 - ポリシー違反が検出された場合、接続を遮断して、イベントをログに記録します。
・ 「ブラックリストを有効にする」 - 下部の「リストの設定」セクションで設定されるブラックリスト内のエントリの検出を制御します。
・ 「ホワイトリストを有効にする」 - 下部の「リストの設定」セクションで設定されるホワイトリスト内のエントリの検出を制御します。ホワイトリストのエントリは、他のすべてのSSL制御設定より優先されます。
・ 「期限切れの証明書を検出する」 - 開始日がシステム時間より前、または終了日がシステム時間より後の証明書の検出を制御します。日付の検証は、SoniciWALLのシステム時間を使用して行われます。「システム > 時間」ページの「システム時間」を適切に設定してください。できれば、NTPと同期をとります。
・ 「SSLv2を検出する」 - SSLv2交換の検出を制御します。SSLv2は、ハンドシェークの整合性チェックを実行しないため、暗号低下攻撃を受ける可能性が高いとわかっています。SSLv2ではなく、SSLv3またはTLSを使用することを強くお勧めします。
・ 「自己署名証明書を検出する」 - 発行者とサブジェクトの共通名が同一の証明書の検出を制御します。
・ 「信頼されていないCAが署名した証明書を検出する」 - 発行者の証明書がSonicWALLの「システム > 証明書」の信頼できるストアにない証明書の検出を制御します。
・ 「弱い暗号 (64ビット未満) を検出する」 - 一般的にエクスポート暗号で使用される、64ビット未満の対称暗号でネゴシエートされたSSLセッションの検出を制御します。
・ 「MD5ダイジェストを検出する」 - MD5ハッシュを用いて作成された証明書の検出を制御します。
・ [ブラックリストとホワイトリストの設定」 - SSL証明書の共通名との比較に使用する文字列を定義できます。エントリでは大文字と小文字が区別され、パターン一致方式で使用されます。例を以下に示します。
エントリ 一致するURL 一致しないURLsonicwall.com
167.115.118.57はsslvpn.demo.sonicwall.comを解決すると得られるIPアドレスで、このサイトではsslvpn.demo.sonicwall.comに対して発行された証明書が使用されています。したがって、証明書の共通名の比較が行われるため、”sonicwall.com”と一致するURLとして検出されます。2これは、IPアドレス63.208.219.44の10進法表記です。この証明書はwww.megaproxy.comに対して発行されたものです。3www.freeproxy.ru サイトの証明書の共通名は ”-” に対して発行された自己署名証明書であるため、”prox”には一致しません。ただし、自己署名証明書または信頼できないCAの証明書の制御を有効にすることで、このURLを簡単に遮断できます。![]()
![]()
SSL制御設定を変更しても、その時点で確立している接続には反映されません。変更の確定後に行われる新しいSSL交換のみが検査され、影響を受けます。
ゾーンでのSSL制御の有効化
SSL制御をグローバルに有効にし、必要なオプションを設定した後で、1つまたは複数のゾーンでSSL制御を有効にする必要があります。SonicWALLは、SSL制御機能が有効にされているゾーンのクライアントからSonicWALLを介して送信されるClient Helloを検知すると、検査を開始します。続いて、Server Helloと、応答で送信される証明書が検知され、設定されたポリシーに従って評価されます。例えば、LANゾーンでSSL制御を有効にすると、LAN上のクライアントから開始され任意の送信先ゾーンに到達するすべてのSSLトラフィックが検査されます。
補足 あるゾーン (例えば、LANゾーン) のSSL制御を有効にして、そのゾーンのクライアントがSonicWALLに接続された別のゾーン (例えば、DMZゾーン) のSSLサーバにアクセスする場合、そのサーバの証明書のサブジェクト共通名をホワイトリストに追加して、信頼できるアクセスが継続するようにすることをお勧めします。
ゾーンでSSL制御を有効にするには、「ネットワーク > ゾーン」ページを表示して、必要なゾーンの設定アイコンを選択します。「ゾーンの編集」ウィンドウで、「SSL制御を有効にする」チェックボックスを選択して、「OK」を選択します。これで、このゾーンで開始されるすべての新しいSSL接続に対して検査が実行されるようになります。
SSL制御のイベント
ユーザが手動でログインした場合またはCIA/シングル サイン オンによって識別された場合、ログ イベントの備考セクション (非提示) にクライアントのユーザ名が保存されます。 ユーザが識別できなかった場合、備考セクションではユーザが識別不能 (Unidentified) であったことが示されます。