ノート:

復号化ルールを使用したSSL転送プロキシおよびインバウンド検査にOCIネットワーク・ファイアウォールを使用

イントロダクション

Oracle Cloud Infrastructure (OCI) Network Firewallサービスは、クラウドベースのマネージド・ファイアウォール・ソリューションで、Palo Alto Networksの次世代ファイアウォール・テクノロジ(NGFW)を利用します。OCI Network Firewallサービスは、最先端の機械学習を活用したファイアウォール機能を備えており、OCIエコシステム内で簡単に使用しながら、OCIワークロードに対して最高レベルの保護を提供します。

OCI Network Firewallは、ファイアウォールを通過するトランスポート層セキュリティ(TLS)暗号化トラフィックを含むすべてのリクエストを検査します。ユーザー定義のファイアウォール・ポリシー・ルールに基づいて、サービスは、許可、拒否、ドロップ、侵入検出、予防などの様々なアクションを実行できます。これらの堅牢な機能により、OCI Network Firewallは、さまざまなセキュリティ上の脅威からOCIワークロードを保護するための強力なツールです。

目的

このチュートリアルの目的は、OCI Cloudの次世代ファイアウォールで復号化ルールを使用してSSL転送プロキシおよびインバウンド検査を実装するための包括的なガイドを提供することです。

このチュートリアルに従うことで、復号化ルールを使用したSSL転送プロキシおよびインバウンド検査を確実に理解し、この知識を適用してOCI Cloudでネットワーク・インフラストラクチャを保護できるようになります。

前提条件

ノート: 本番環境に実装する前に、ファイアウォール構成および復号化ルールを試すためのテスト環境をOCIに設定することをお薦めします。

アーキテクチャ

アーキテクチャ

OCIネットワーク・ファイアウォール・ポリシーは、次のリストで構成されています。

テスト・ケース

このチュートリアルでは、ファイアウォール・ポリシーにセキュリティ・ルールを設定することで、インターネットを介してLinuxマシン(パブリック・サブネット: 129.146.201.118内)へのSSH接続を作成しました。

これで、リストを使用してファイアウォールのセキュリティ・ルールを作成する方法について考えました。このルールを使用して、LinuxマシンにSSHを実行しました。

TLS/SSL暗号化テクノロジの理解

ノート:

TLSは、インターネット経由でアプリケーション間で送信されるデータに対してエンドツーエンドのセキュリティを提供する暗号化プロトコルです。ほとんどの一般的なシナリオは、セキュアなWebブラウジングにあります。ただし、電子メール、ファイル転送、ビデオ/オーディオ会議、インスタント メッセージング、音声オーバーIPなどのその他のアプリケーションにも使用できます。

TLSはエンド・システムのデータを保護しないことを理解することが重要です。これにより、インターネットを介した安全なデータ配信が保証され、送信されるコンテンツの盗聴や変更(移動中)が回避されます。TLSは通常、HTTP、FTP、SMTP、IMAPなどのアプリケーション層プロトコルを暗号化するためにTCP上に実装されますが、UDP、DCCP、SCTPにも実装できます。

データを保護するために、TLSは、インターネット経由で送信される転送中データを暗号化/復号化するために暗号化テクノロジに依存します。対称暗号化や非対称暗号化、公開鍵インフラストラクチャ(PKI)、X.509デジタル証明書などの用語と概念について説明します。

次世代ファイアウォールを設定、構成およびネットワークに適用するには、デジタルX.509証明書の構成およびデプロイメントを含むTLS接続(httpsなど)の動作を理解する必要があります。

暗号化とタイプ

暗号化の背後にあるアイデアは、「安全でないチャネル」でAからBに送信する情報を隠す(暗号化する)ことです。セキュアでないチャネルは、AからBに送信される情報の傍受、盗難、変更(盗難)をだれも保証できないチャネルまたはパスです。

暗号により、元のデータを宛先に暗号化(隠蔽)することで、安全でないチャネルを通過する情報を保護できます。受信者が受信すると、受信者は暗号化された受信データを元の値に復号化できるようになります。

暗号化には、対称と非対称の2つのタイプがあります。

対称型暗号化

データのチャンクを暗号化/復号化するために、対称暗号化エンジンでは、データの暗号化と復号化にまったく同じキーが使用されます。通常、これはマスター・キーまたは共有シークレットと呼ばれます。

マスター・キー暗号化

暗号化を実現する簡単な方法のように思えますが、ここでの主な問題は、セキュアでないチャネルを介して2つのパーティ間でマスター・キー分散することです。このマスター・キー交換プロセスは、このチュートリアルでは、次の項で説明する1つの手法(非対称暗号化)など、様々な手法を使用して対処します。

一般的な対称暗号化アルゴリズムには、AES128、AES256、Serpent、Cameliaなどがあります。

非対称暗号化

非対称暗号化/暗号化では、特殊な関係を持つ関連キーのペアが使用されます。ペア・キーのいずれかと暗号化したデータは、もう一方のペア・キーと暗号化のみでき、その逆もできます。

非対称暗号化

通常、このペア・キーは公開キーおよび秘密キーと呼ばれます。公開鍵はすべてのユーザーと共有できますが、秘密鍵は秘密にしてください

非対称暗号化では、暗号化に公開キー、復号化に秘密キー(または逆)を使用することで、キー配布の問題を解決します。ただし、非対称暗号化システムは対称システムと比較して非常に遅く、鍵の長さが非常に長いため、計算能力が大幅に向上します。

対称暗号化アルゴリズムは、非常に高速で計算処理能力が低くなりますが、情報の暗号化および復号化に同じキーが使用されるため、そのキーはデータにアクセスする必要があるすべてのユーザーに分散する必要があります。

TLSでは、データの暗号化だけでなく、接続に関係するパーティの認証にも、非対称および対称暗号化を使用します。ここでは、X.509証明書がアクションを実行します。

X.509証明書

X.509証明書は、広く受け入れられているInternational Telecommunications Union (ITU) X.509標準に基づくデジタル証明書で、公開キー・インフラストラクチャ(PKI)証明書の形式を定義します。X.509証明書は、関連する公開キーと秘密キーで構成されるキー・ペアを使用して設計されています。前述したように、このキー・ペアは、非対称暗号化で使用されるキーのペアです。ここでは、公開するキーと秘密キーを選択します。いずれかのキーで暗号化したものは、他のキーによってのみ復号化でき、その逆も同様です。

ご想像のとおり、キー・ペアの公開部分は、名前が示すように公開されており、適切に配布できます。非公開鍵安全に保持する必要があり、多くの場合、対称暗号化モードでマスター鍵を使用して暗号化されるため、盗まれても誰も使用できないようにします。

公開鍵に加えて、X.509証明書にはアイデンティティ (ホスト名、組織、または個人)を表すその他の情報が含まれているため、x.509証明書は、この識別情報を含まれている公開鍵にバインドします

X.509 v3デジタル証明書の構造は次のとおりです。

証明書

バージョン番号

シリアル番号

署名アルゴリズムID

発行者名

有効期間

次以降

有効終了日

サブジェクト名

サブジェクト公開キー情報

公開キー・アルゴリズム

サブジェクト公開キー これは公開KEYです

発行者一意識別子(オプション)

サブジェクト一意識別子(オプション)

拡張機能(オプション)

証明書署名アルゴリズム

証明書署名

公開キーは、次の形式の文字列であるサブジェクト名で表されるアイデンティティにバインドされます。

ここで、件名: C = US、ST = California、L = Mountain View、O = Google LLC、CN = *.google.com

したがって、このIDはGoogle、米国の国、州カリフォルニア州、共通名(*.google.com)に属しています。

この証明書は、公開鍵を配布し、自分の身元を他の人に認証という2つの目的に使用できます。これを念頭に置いて、すべてのコンピュータ/モバイル/デバイスは、証明書の受信時に公開鍵とIDを所有するため、公開鍵を使用して暗号化された情報を送信でき、秘密鍵で復号化できるだけです。さらに、証明書には内部にIDがあるため、証明書を受け取るデバイスはこのIDを信頼し、正しいIDと情報を交換していることを確認できます。

前述したように、公開キー/秘密キーを介した非対称暗号化は対称暗号化(x4以上)より大幅に低速であるため、実行できません。また、証明書を受信するデバイスが証明書内のIDを本当に信頼する方法については説明していません。最後に、X.509証明書は単なるテキストです安全でないチャネルを介して受信されます。受信した証明書を信頼/認証するには、デジタル証明書を署名するために信頼できる組織である認証局が必要です。認証局は、証明書を要求した会社または個人のアイデンティティと正当性を検証し、検証に成功すると、CAは署名証明書を発行します。CA組織の例として、Oracle、VeriSign、D-Trust、DigiCertなどがあります。

では、暗号化の観点からは、この署名プロセスがどのように機能するか。この場合も、次のように非対称暗号化のパワーを使用します。

これで、X.509証明書がアクションを実行する準備ができました。TLS接続時にこの証明書を受信するコンピュータ/モバイル/デバイスは、それが有効なX.509証明書であるかどうかを検証する方法。ここでも、次のように非対称暗号化のパワーを使用します。

www.mycompanycomain.com (証明書の共通名またはサブジェクト代替名フィールドに含まれる)など、接続しようとしているドメイン名を含む有効な証明書があることがわかりました。コンピュータ/モバイル/ブラウザは、実際にその DNSドメイン名(www.mycompanycomain.com)に接続し、ほかのものには接続していないことを確認します。これは必須の検証です。X.509証明書を盗み、別のDNSドメイン・サーバー(www.myfakecompany.comなど)から使用しようとすると、CA署名検証プロセスに合格するためです。

そのため、すべてのコンピュータ/モバイル/デバイスが、証明書の公開鍵をダウンロードし、暗号化されたデータを送信して、暗号化されたデータのみを復号化できるようになりました。非対称暗号化は対称暗号化(x4以上)よりはるかに遅いため、実行できません。解決策は両方を使用することであり、ここではSSL/TLSが必要です。

TLSの基本

TLSは、インターネット経由でアプリケーション間で送信されるデータのエンドツーエンドのセキュリティーを提供する暗号化プロトコルです。主に、セキュアなWebブラウジングでの使用、および特にセキュアなセッションが確立されたときにWebブラウザに表示される南京錠アイコンを使用して、ユーザーによく知られています。

TLSは、対称暗号化と非対称暗号化の組み合わせを使用します。これにより、データを安全に送信する際のパフォーマンスとセキュリティーが低下します。非対称暗号化には、対称暗号化よりも4倍以上の計算能力が必要です。ただし、対称暗号化では、メッセージの暗号化/復号化ができるように、通信の両側で同じマスター鍵が必要になるため、対称暗号化を使用する目的は、セキュアでないチャネルを介して2つのパーティ間でマスター・キー(または共有シークレット)を最初に使用してから、このマスター・キーを使用して通信を保護し、選択した対称エンジンを使用して送信/受信されるすべてのメッセージを暗号化/復号化します。

TLS、ハッカーイメージ

セキュアでないチャネルを介してマスター鍵を交換するために、TLSでは同じ目標に続く2つの異なる手法が使用されます。これはセキュアでないチャネルでマスター鍵/共有シークレットを安全に交換するためです。

RSAメソドロジーは、非対称暗号化の力(秘密鍵と公開鍵)を使用して、安全でないチャネルを介してマスター鍵を交換することに依存します。

DHE/ECDHEは、数学的な計算を使用して、セキュアでないチャネルを介して2つのパーティ間で同じマスター・キーを生成することに依存します。両当事者は、安全でないチャネルを通過し、リスクなしで取得できる特権情報と混在する特定の良識的な情報を交換します。ネゴシエーションの終了時に、2つのパーティの数学的計算は両方とも同じ共通秘密キーまたはマスター・キーで終了します。詳細情報 https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange

これらの2つの鍵交換方法は、TLSハンドシェイクと呼ばれるプロセス中に発生します。

マスクされていないTLSハンドシェイク

SSL/TLSハンドシェイクは、ブラウザやWebサーバーなどのネットワーク上の2つのパーティ間のネゴシエーションであり、接続の詳細を確立します。そのネゴシエーション中に、2つの当事者は(X509証明書を使用して) 認証し、暗号スイートに同意します(マスター鍵の交換方法と、AES256、128、ハッシュなどの暗号化エンジンが使用される内容)。SHA1、2など、最後に認証が発生したとき(有効な証明書が受信された場合)、およびセキュア・チャネルの確立方法に関する合意が行われた場合、両方の当事者からセキュアなチャネルが提供されます。実際のステップは次のとおりです。

TLSハンドシェイク

上のグラフでは、暗号スイートのネゴシエーション中に合意された対称暗号化エンジン(つまり、AES256)で使用されるマスター・キー(または共有シークレット)を交換するためにRSA (秘密/公開キー)を使用しています。DHE/ECDHEが使用された場合、公開キーと秘密キーを使用してマスター・キーを交換するのではなく、両当事者はDHE計算を使用して無害な材料を交換し、両側で同じ結果を計算します。これにより、対称暗号化に使用されるマスター・キー(共有シークレット)になります。

タスク1: 復号化ルールを使用したSSL転送プロキシおよびインバウンド検査にOCIネットワーク・ファイアウォールを使用

  1. LinuxマシンでオープンSSLを使用して、アウトバウンド・トラフィックとインバウンド検査の両方にopensslを使用して2つの自己署名証明書を作成します。証明書を信頼するように Linuxマシンを更新します。

    自己署名証明書の作成

  2. OCIにVaultを作成します。

    Vault

  3. Vaultの作成後、キーの作成を行います。シークレットの内容は次の形式である必要があります。

    {
    
    "caCertOrderedList":
    
    [
    
    "-----BEGIN CERTIFICATE
    
    -----END CERTIFICATE-----\n"
    
    ],
    
    "certKeyPair":
    
    {
    
    "cert" : "-----BEGIN CERTIFICATE
    
    -----END CERTIFICATE----\n",
    
    "key": "-----BEGIN RSA PRIVATE KEY
    
    -----END RSA PRIVATE KEY----\n"
    
    }
    
    }
    
  4. ネットワーク・ファイアウォール・ポリシーで、マップされたシークレットを追加します。

    1. SSL転送プロキシまたはSSLインバウンド検査として、マップされたシークレット・タイプを選択します。

    2. 作成されたVaultを選択します。

    3. 秘密鍵を選択してください。

    4. マップされたシークレットを追加します。

      マップされたシークレット

  5. 暗号化プロファイルを作成します。

    1. SSL転送プロキシを選択し、サーバー証明書検証オプションを確認するか、SSLインバウンド検査を選択して、トラフィックに必要なサポートされていないモード・チェックを確認します。

      暗号化プロファイルの転送

      暗号化プロファイル・インバウンド

    2. 暗号化プロファイルを追加します。

      暗号化プロファイルの追加

  6. 復号化ルールを作成します。

    1. ポリシーで作成したIPアドレス・リストからソースIPアドレスを選択するか、いずれかを選択します。

    2. ポリシーで作成したIPアドレス・リストから「宛先IPアドレス」を選択するか、いずれかを選択します。

      宛先IPアドレス

    3. SSL転送プロキシ、SSLインバウンドまたは復号化なしのトラフィックを復号化するための「アクション」を選択します。

    4. 復号化プロファイルおよびマップされたシークレットを選択します。

      暗号化プロファイルの選択

ポリシーを復号化ルールで更新すると、ファイアウォールにアタッチできます。

タスク2: ファイアウォールへのポリシーのアタッチ

ネットワーク・ファイアウォールの作成時に、ファイアウォールに接続するポリシーを選択するオプションが提供されます。

NetworkFirewallアタッチメント

SSL転送プロキシを介してトラフィックを復号化し、SSLインバウンド検査用に復号化ルールを作成しました。SSLアウトバウンド接続について言及されているように、パブリック・サブネットからのすべてのトラフィックがOCI Network Firewallに送信され、OCI Network Firewallを介してインターネット・ゲートウェイからインターネットへのパスが取得されます。

インバウンド検査の場合、次のHOPをファイアウォールとして使用し、パブリック・サブネットのLinuxマシンにアクセスします。

復号化ルールに従って、ソースIPアドレスの場合はHub-Linux-Machineを使用し、任意の宛先IPアドレスには、SSL転送プロキシによってトラフィックを復号化し、ハブLinux-Machineとしてソースのインバウンド接続の場合は、SSLインバウンド検査を使用してトラフィックを復号化する必要があります。

暗号化ルール

ノート:ファイアウォールにヒットするトラフィックについては、最初に復号化ルールをチェックしてから、セキュリティ・ルールをチェックします。

質問:ファイアウォールにぶつかるトラフィックに対して復号化ルールが適用されていることをどのように識別できますか。

解答:これは、ファイアウォールにアタッチされた復号化ルール・ヒット数という名前のメトリックで確認できます。

Linuxマシンがインターネット上のhttps Webサイトまたはhttps上のLinuxマシンへのインバウンド接続にアクセスしようとするたびに、復号化ルールのヒット数が増加します。

ネットワーク・ファイアウォール・メトリック

タスク3: 復号化ルールとセキュリティ・ルールを使用したトラフィックの許可または拒否

前述のユース・ケースに追加して、トラフィックを許可または拒否するセキュリティ・ルールで復号化ルールをどのように使用できるかを確認します。テスト・ケースの開始で説明したように、リストを使用してトラフィックを許可または拒否できます。

ここでは、SSL転送プロキシおよびインバウンドSSL検査の復号化ルールがすでに作成されています。テストのために、Hub Linuxマシンからインターネットへのアウトバウンド接続のセキュリティ・ルールを作成して、*.oracle.comへのアクセスを許可しました。

ノート:デフォルトでは、すべてのトラフィックはOCIネットワーク・ファイアウォールでのアクセスを拒否されます。許可するトラフィックに対してルールを作成する必要があります。

URLリスト:

URLリスト

セキュリティ・ルール:

セキュリティ・ルール

LinuxマシンがOCIネットワーク・ファイアウォールを介してインターネット上の*.oracle.comにアクセスしようとするとどうなりますか。

質問:トラフィックに対してどのルールが実行されているかを確認するにはどうすればよいですか。

解答: OCIネットワーク・ファイアウォール・ログで確認できます。

oracle.comの場合

ネットワーク・ファイアウォール・ログ1

その他のURLの場合:

ネットワーク・ファイアウォール・ログ2

承認

著者 - LuisCatalán Hernández(OCI Cloud Network Specialist and Multi Cloud)、Sachin Sharma(OCI Senior Cloud Specialist)

その他の学習リソース

docs.oracle.com/learnで他のラボをご覧いただくか、Oracle Learning YouTubeチャネルでより無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスして、Oracle Learning Explorerになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。