SSL ルールのトラブルシューティング

接続イベントを使用して、さまざまなエラー状態を診断できます。たとえば、SSL トラフィックにより管理対象デバイスが過負荷状態になっていることや、アプリケーションが SSL ピニングまたは SSL ハートビートを使用していることがあります。このような場合は、SSL ルールの調整や、ネットワークの通常の動作を復元するためのその他のアクションが必要になることがあります。

SSL オーバーサブスクリプションについて

SSL オーバーサブスクリプションとは、管理対象デバイスが SSL トラフィックにより過負荷になっている状態です。すべての管理対象デバイスで SSL オーバーサブスクリプションが発生する可能性がありますが、SSL ハードウェア アクセラレーションをサポートする管理対象デバイスでのみ処理方法を設定できます。

SSL ハードウェア アクセラレーションが有効になっている管理対象デバイスがオーバーサブスクライブされた場合、管理対象デバイスによって受信されるパケットの扱いは、SSL ポリシーの [復号できないアクション(Undecryptable Actions)] の [ハンドシェイクエラー(Handshake Errors)] の設定に従います。

  • デフォルト アクションを継承する(Inherit default action)

  • 復号しない(Do not decrypt)

  • ブロック(Block)

  • リセットしてブロック(Block with reset)

SSL ポリシーの [復号できないアクション(Undecryptable Actions)] の [ハンドシェイクエラー(Handshake Errors)] の設定が [復号しない(Do not decrypt)] で、関連付けられたアクセス コントロール ポリシーがトラフィックを検査するように設定されている場合は、インスペクションが行われます。復号は行われません。

SSL オーバーサブスクリプションのトラブルシューティング

管理対象デバイスで SSL ハードウェア アクセラレーションを有効にした場合は、接続イベントを表示して、デバイスに SSL オーバーサブスクリプションが発生しているかどうかを確認できます。接続イベント テーブル ビューに、少なくとも [SSLフローフラグ(SSL Flow Flags)] イベントを追加する必要があります。

始める前に

手順


ステップ 1

まだ Firepower Management Center にログインしていない場合は、ログインします。

ステップ 2

[分析(Analysis)] > [接続(Connection)] > [イベント(Events)] をクリックします。

ステップ 3

[接続イベントのテーブルビュー(Table View of Connection Events)] をクリックします。

ステップ 4

接続イベントのテーブル ビューで、任意の列の [x] をクリックして、少なくとも [SSLフローフラグ(SSL Flow Flags)] 列をテーブルに追加します。

次の例では、接続イベントのテーブル ビューに、[SSLの実際の動作(SSL Actual Action)]、[SSLフローエラー(SSL Flow Error)]、[SSLフローフラグ(SSL Flow Flags)]、[SSLフローメッセージ(SSL Flow Messages)]、[SSLポリシー(SSL Policy)]、および [SSLルール(SSL Rule)] 列を追加します。

接続およびセキュリティ インテリジェンス イベント フィールドで説明した順序で列が追加されます。

ステップ 5

[適用(Apply)] をクリックします。

SSL オーバーサブスクライブは、[SSLフローフラグ(SSL Flow Flags)] 列の ERROR_EVENT_TRIGGERED および OVER_SUBSCRIBED の値で示されます。

次の図は例を示しています。

ステップ 6

SSL オーバーサブスクライブが発生している場合は、管理対象デバイスにログインして、次のコマンドのいずれかを入力します。

コマンド(Command)

結果

show counters

TCP_PRX BYPASS_NOT_ENOUGH_MEM の値が大きい場合、デバイスをアップグレードして SSL トラフィックの容量を増やすか、[復号しない(Do Not Decrypt)] ルールを使用して暗号化トラフィックの優先順位を下げます。

show snort tls-offload

BYPASS_NOT_ENOUGH_MEM の値が大きい場合、デバイスをアップグレードして SSL トラフィックの容量を増やすか、[復号しない(Do Not Decrypt)] ルールを使用して暗号化トラフィックの優先順位を下げます。


SSL ハートビートについて

一部のアプリケーションでは、RFC6520 で定義されている Transport Layer Security(TLS)および Datagram Transport Layer Security(DTLS)プロトコルに対して、SSL ハートビート エクステンションが使用されます。SSL ハートビートは、接続がまだ有効であることを確認する方法を提供します。クライアントまたはサーバが指定されたバイト数のデータを送信し、応答を返すように相手に要求します。これが成功した場合は、暗号化されたデータが送信されます。

SSL ハードウェア アクセラレーションが有効になっている管理対象デバイスが SSL ハートビート エクステンションを使用するパケットを扱うときは、管理対象デバイスは SSL ポリシーの [復号できないアクション(Undecryptable Actions)] の [復号化エラー(Decryption Errors)] の設定で指定されたアクションを行います。

  • ブロック(Block)

  • リセットしてブロック(Block with reset)

SSL ハートビートのトラブルシューティング

管理対象デバイスで SSL ハードウェア アクセラレーションを有効にした場合は、接続イベントを表示して、デバイスが SSL ハートビート エクステンションを使用してトラフィックを監視しているかどうかを確認できます。接続イベント テーブル ビューに、少なくとも [SSLフローメッセージ(SSL Flow Messages)] イベントを追加する必要があります。

始める前に

SSL ハートビートは、接続イベント テーブル ビューの [SSLフローメッセージ(SSL Flow Messages)] 列の HEARTBEAT の値で示されます。ネットワーク内のアプリケーションが SSL ハートビートを使用しているかどうかを確認するには、最初に次のタスクを実行します。

手順


ステップ 1

まだ Firepower Management Center にログインしていない場合は、ログインします。

ステップ 2

[分析(Analysis)] > [接続(Connection)] > [イベント(Events)] をクリックします。

ステップ 3

[接続イベントのテーブルビュー(Table View of Connection Events)] をクリックします。

ステップ 4

接続イベントのテーブル ビューで、任意の列の [x] をクリックして、少なくとも [SSLフローメッセージ(SSL Flow Messages)] 列をテーブルに追加します。

次の例では、接続イベントのテーブル ビューに、[SSLの実際の動作(SSL Actual Action)]、[SSLフローエラー(SSL Flow Error)]、[SSLフローフラグ(SSL Flow Flags)]、[SSLフローメッセージ(SSL Flow Messages)]、[SSLポリシー(SSL Policy)]、および [SSLルール(SSL Rule)] 列を追加します。

接続およびセキュリティ インテリジェンス イベント フィールドで説明した順序で列が追加されます。

ステップ 5

[適用(Apply)] をクリックします。

SSL ハートビートは、[SSLフローメッセージ(SSL Flow Messages)] 列の HEARTBEAT の値で示されます。
ステップ 6

ネットワーク上のアプリケーションで SSL ハートビートを使用する場合は、SSL ルールのガイドラインと制限事項を参照してください。


SSL ピニングについて

一部のアプリケーションでは、アプリケーション自体に元のサーバ証明書のフィンガープリントを埋め込む、SSL ピニングまたは証明書ピニングと呼ばれる技術が使用されます。そのため、[復号 - 再署名(Decrypt - Resign)] アクションで SSL ルールを設定した場合は、アプリケーションが管理対象デバイスから再署名された証明書を受信すると、検証が失敗し、接続が中断されます。

SSL ピニングが行われていることを確認するには、Facebook などのモバイル アプリケーションへのログインを試みます。ネットワーク接続エラーが表示された場合は、Web ブラウザを使用してログインします。(たとえば、Facebook のモバイル アプリケーションにログインすることはできませんが、Safari または Chrome を使用して Facebook にログインすることはできます)。Firepower Management Center の接続イベントは、SSL ピニングのさらなる証明として使用できます


(注)  

SSL ピニングはモバイル アプリケーションに限定されません。


ネットワーク上のアプリケーションで SSL ピニングを使用する場合は、次を参照してください。 SSL ルールのガイドラインと制限事項

SSL ピニングのトラブルシューティング

デバイスで SSL ピニングが発生しているかどうかを確認するには、接続イベントを表示します。接続イベント テーブル ビューに、少なくとも [SSLフローフラグ(SSL Flow Flags)] と [SSLフローメッセージ(SSL Flow Messages)] 列を追加する必要があります。

始める前に

  • 管理対象デバイスで SSL ハードウェア アクセラレーションを有効にします。

  • SSL ルールによる復号可能接続のロギングの説明に従って、SSL ルールのログを有効にします。

  • Facebook のようなモバイル アプリケーションにログインします。ネットワーク接続エラーが表示されたら、Chrome または Safari を使用して Facebook にログインします。Web ブラウザを使用してログインできても、ネイティブ アプリケーションではできない場合は、SSL ピニングが発生している可能性があります。

手順


ステップ 1

まだ Firepower Management Center にログインしていない場合は、ログインします。

ステップ 2

[分析(Analysis)] > [接続(Connection)] > [イベント(Events)] をクリックします。

ステップ 3

[接続イベントのテーブルビュー(Table View of Connection Events)] をクリックします。

ステップ 4

任意の列の [x] をクリックして、少なくとも [SSLフローフラグ(SSL Flow Flags)] と [SSLフローメッセージ(SSL Flow Messages)] 列を接続イベント テーブルに追加します。

次の例では、接続イベントのテーブル ビューに、[SSLの実際の動作(SSL Actual Action)]、[SSLフローエラー(SSL Flow Error)]、[SSLフローフラグ(SSL Flow Flags)]、[SSLフローメッセージ(SSL Flow Messages)]、[SSLポリシー(SSL Policy)]、および [SSLルール(SSL Rule)] 列を追加します。

接続およびセキュリティ インテリジェンス イベント フィールドで説明した順序で列が追加されます。

ステップ 5

[適用(Apply)] をクリックします。

ステップ 6

次に SSL ピニングの動作を特定する方法について説明します。

ステップ 7

ネットワーク内のアプリケーションで SSL ピニングが使用されていることを確認する場合は、SSL ルールのガイドラインと制限事項を参照してください。


次のタスク

SSL 接続イベントを使用して、次のいずれかが表示されれば、SSL ピニングの発生を確認できます。

  • クライアントがサーバから SERVER_HELLO、SERVER_CERTIFICATE、SERVER_HELLO_DONE メッセージを受信した後に TCP Reset を受信すると、SSL ALERT メッセージを送信するアプリケーションの場合、次のように表示されます。(パケット キャプチャを使用すると、アラート Unknown CA (48) が表示される場合があります)。

    • [SSLフローフラグ(SSL Flow Flags)] 列に ALERT_SEEN は表示されますが、APP_DATA_C2SAPP_DATA_S2C は表示されません。

    • 管理対象デバイスで SSL ハードウェア アクセラレーションが有効になっている場合、[SSLフローメッセージ(SSL Flow Messages)] 列には通常、CLIENT_ALERTCLIENT_HELLOSERVER_HELLOSERVER_CERTIFICATESERVER_KEY_EXCHANGESERVER_HELLO_DONE が表示されます。

    • 管理対象デバイスが SSL ハードウェア アクセラレーションをサポートしていないか、機能が無効になっている場合は、[SSLフローメッセージ(SSL Flow Messages)] 列には通常、CLIENT_HELLOSERVER_HELLOSERVER_CERTIFICATESERVER_KEY_EXCHANGESERVER_HELLO_DONE が表示されます。

    • [SSLフローエラー(SSL Flow Error)] 列には、Success が表示されます。

  • SSL ハンドシェイク終了後にアラートではなく TCP Reset を送信するアプリケーションの場合は、次のように表示されます。

    • [SSLフローフラグ(SSL Flow Flags)] 列に ALERT_SEENAPP_DATA_C2SAPP_DATA_S2C は表示されません。

    • 管理対象デバイスで SSL ハードウェア アクセラレーションが有効になっている場合、[SSLフローメッセージ(SSL Flow Messages)] 列には通常、CLIENT_HELLOSERVER_HELLOSERVER_CERTIFICATESERVER_KEY_EXCHANGESERVER_HELLO_DONECLIENT_KEY_EXCHANGECLIENT_CHANGE_CIPHER_SPECCLIENT_FINISHEDSERVER_CHANGE_CIPHER_SPECSERVER_FINISHED が表示されます。

    • 管理対象デバイスが SSL ハードウェア アクセラレーションをサポートしていないか、機能が無効になっている場合は、[SSLフローメッセージ(SSL Flow Messages)] 列には通常、CLIENT_HELLOSERVER_HELLOSERVER_CERTIFICATESERVER_KEY_EXCHANGESERVER_HELLO_DONECLIENT_KEY_EXCHANGECLIENT_CHANGE_CIPHER_SPECCLIENT_FINISHEDSERVER_CHANGE_CIPHER_SPECSERVER_FINISHED が表示されます。

    • [SSLフローエラー(SSL Flow Error)] 列には、Success が表示されます。