ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
証明書を暗号化してOCI Network FirewallとOCI WAFリージョナルを使用してアプリケーションを保護
イントロダクション
広範なデジタル・トランスフォーメーションによって形作られた状況では、アプリケーションの保護はもはやオプションではなく、重要な優先事項です。組織がワークロードをOracle Cloud Infrastructure (OCI)に移行するためには、サイバー脅威に対する強力な防御を実装することが不可欠です。OCIは、アプリケーションを強化するための幅広いツールを提供しています。このチュートリアルでは、OCI Network FirewallとOCI Web Application Firewall (WAF)のリージョナル/ローカルを使用してデジタル資産を保護する方法を説明します。
なぜこのチュートリアルが不可欠ですか?
アプリケーションが外部と通信するとき、アプリケーションはサイバー・セキュリティの脅威の絶え間ない課題に直面します。このチュートリアルでは、OCI Network FirewallとOCI WAFリージョナルを活用することで、多層防御を構築し、既知の脅威と新たな脅威の両方からアプリケーションを保護します。マルチドメインのサポートや、標準ツールを使用してX.509証明書を生成または更新するなど、重要な概念を探ります。さらに、広く認識されている無料のサービスLet's Encryptの使用について詳しく説明します。これにより、アプリケーションを保護するための重要なプラクティスを包括的に理解できるようになります。
このチュートリアルの対象読者
このチュートリアルは、OCIセキュリティ機能の包括的な理解を求めるクラウド・アーキテクト、セキュリティ・プロフェッショナルおよび開発者向けに設計されています。経験豊富なクラウド・プラクティショナーであれ、クラウド・セキュリティへの道のりを開始する場合でも、このチュートリアルでは、アプリケーションの周りに堅牢な防御を構築するスキルを身につけます。
OCI Network Firewallとは
Oracle Cloud Infrastructure Network Firewallは、Palo Alto Networkを使用して構築された最先端の管理対象ファイアウォール・サービスを表します。次世代ファイアウォール技術(NGFW)です。OCIワークロードを保護するための機械学習を活用したファイアウォール機能を提供し、OCIで簡単に使用できます。OCI Network Firewallは、OCIネイティブのFirewall-as-a-Service製品として、追加のセキュリティ・インフラストラクチャを構成および管理することなく、ファイアウォール機能を利用できます。OCIネットワーク・ファイアウォール・インスタンスは、組込みの高可用性で高いスケーラビリティを発揮し、選択した仮想クラウド・ネットワーク(VCN)およびサブネットに作成できます。
OCIネットワーク・ファイアウォール・サービスは、受信およびサブネット間またはVCN間通信の両方に対処し、クラウド環境に入るデータのフローに関する深いインサイトを提供します。要するに、南北ネットワーク・トラフィックと東西ネットワーク・トラフィックを可視化します。詳細は、OCIネットワーク・ファイアウォールを参照してください。
OCI Web Application Firewallのリージョナル/ローカルとは
OCI Web Application Firewall (WAF)は、SQLインジェクション、クロスサイト・スクリプティング(XSS)、分散型サービス拒否(DDoS)などの一般的なセキュリティの脅威や攻撃からWebアプリケーションを保護するのに役立つクラウドベースのセキュリティ・サービスです。OCI WAFリージョナルは、通常、リージョン・レベルでデプロイされる最新バージョンのWAFで、柔軟でスケーラブルな防御メカニズムを提供するためにOCIロード・バランサと統合されています。詳細は、OCI Web Application Firewallを参照してください。
アーキテクチャ
この提案されたアーキテクチャには、次のコンポーネントを使用したテナンシ・ワークロードの完全な保護が含まれます。
-
OCI WAFリージョナル:このWAFは、ロード・バランサを通過するすべてのHTTP(S)トラフィックを保護するために、OCI Flexible Load Balancer (レイヤー7)と統合されています。
-
OCIロード・バランサ:このロード・バランサは、パブリック・インターネットからリクエストを受信します。
-
OCIネットワーク・ファイアウォール:次世代ファイアウォールとも呼ばれます。OCI Network FirewallとWAFが連携し、多層防御を実現します。一方のレイヤーが脅威を逃した場合、もう一方のレイヤーはそれを捕捉し、より堅牢なセキュリティ・ポスチャを提供します。
データ・フロー・ダイアグラム
ネットワーク・データ・フローは、次のネットワーク図、緑色のドット線の受信リクエスト、赤いドット線のレスポンスで簡単に確認できます。
この図は、OCI Network Firewall for North-Southトラフィックのデプロイのベスト・プラクティスに準拠しています。初期段階では、受信トラフィック(緑色で示され、レイヤー7で動作)はインターネット・ゲートウェイを介して転送されます。インターネット・ゲートウェイには、ロード・バランサ・サブネット(192.168.6.0/24
)をターゲットとするすべてのトラフィックをNGFWプライベートIPに誘導するためのルーティング表が関連付けられています。これにより、受信トラフィックが検査のためにNGFWを横断することが保証されます。
ネットワーク・フローの後、トラフィックはインターネット・ゲートウェイからOCIネットワーク・ファイアウォールまたは次世代ファイアウォール(NGFW)に進みます。OCI Network Firewallは、TLS/SSL接続を終了せずに、トラフィックをシームレスに受信することに注目してください。OCI Network Firewallは、復号化プロファイルを適用してTLSトラフィックを復号化し、深いパケット検査を可能にします。詳細は、SSL復号化のためのOCI Network Firewallの使用を参照してください。
OCI Network Firewallがトラフィックを完全に検査すると、OCIロード・バランサに進み、まずTLS/SSL接続を終了します。次に、アタッチされたWAFは、復号化されたトラフィックに対してディープ・パケット検査を実行して、バックエンド・サーバーに転送する前にクリーンであることを確認します。次に、ロード・バランサはロード・バランシング・ルーティングを実行し、選択したバックエンド・サーバーへのセカンダリ接続を開始します。
バックエンド・サーバーからのリターン・トラフィックの場合、バックエンド・サーバーは最初にOCIロード・バランサに応答します(赤で表示され、レイヤー7で動作します)。ロード・バランサに到達すると、アタッチされたWAFは、最初に返されたトラフィックを検査して、それがセキュリティ標準を満たしていることを確認します。WAFの検査後、ロード・バランサはトラフィックをプライベートIPに戻し、OCI Network Firewallはレスポンスに対して追加のセキュリティ・チェックを実行します。ファイアウォールによって検査されると、トラフィックはNGFWサブネットに関連付けられたルーティング表に基づいてインターネット・ゲートウェイにルーティングされます。IGWから返されるトラフィックは、インターネット経由で元のクライアントに流れます。
目的
このチュートリアルの主な目的は、OCI Network FirewallとともにOCI WAFリージョナルを効果的に設定することで、ユーザーがクラウド・ワークロードを強化できるようにすることです。OCIロード・バランサのフロント・エンド用にLet's Encryptの署名付きX.509証明書を組み込むことで、ユーザーは安全で検証された接続を確保できます。このチュートリアルでは、OCI Network Firewallのベスト・プラクティスを南北トラフィックに実装し、アプリケーションのOCIロード・バランサをデプロイする方法について説明します。特に、この構成では、非自己署名証明書を使用してOCIロード・バランサを唯一のコンポーネントとして戦略的に指定します。証明書を暗号化しよう。一方、Transport Layer Security (TLS)を使用する他の要素は、管理が容易な手間をかけずに自己署名証明書を利用します。
-
タスク1: OCI Web Application Firewall (WAF)ローカルをデプロイします。
-
タスク2: Let's Encryptによるサーバー証明書の署名
-
タスク3: OCIロード・バランサの構成
-
タスク4: OCIネットワーク・ファイアウォールの構成
-
タスク5: OCIルーティングの構成
前提条件
-
アクティブなOCIテナンシ。OCIでネットワーク・リソースを作成および管理するために必要な権限を持っている必要があります。
-
Linuxでのソフトウェアのインストールおよび構成方法など、Linux OS、OCI、Oracle Linuxの基本的な理解。
-
OCIコンソールまたはOracle Cloud Infrastructureコマンドライン・インタフェース(OCI CLI)を使用してネットワーク・リソースを作成および管理する方法についてよく理解しています。
-
OCI Network FirewallおよびOCI WAFローカルの使用方法および構成方法についてよく理解しています。
-
SSL/TLSテクノロジおよびX.509デジタル証明書についてよく理解しています。詳細は、X.509証明書の詳細(X509証明書およびSSL/TLS: TLS/SSL暗号化テクノロジの理解)については、この推奨ガイドを参照してください。
タスク1: OCI Web Application Firewallローカルのデプロイ
最初にデプロイするコンポーネントは、WAFローカルです。
-
OCIコンソールにログインし、「Web Application Firewall」をクリックします。
-
「ポリシー」で、「WAFポリシーの作成」をクリックし、次の情報を入力します。「次」をクリックします。
-
「アクセス制御ポリシー」で、アクセス制御が必要な場合は「アクセス制御の有効化」を選択します。詳細は、Web Application Firewallポリシーのアクセス制御を参照してください。
-
「レート制限ポリシー」で、レート制限が必要な場合は「レート制限ルールの構成の有効化」を選択します。詳細は、Web Application Firewallのレート制限を参照してください。
-
「保護」で、保護の構成が必要な場合は「保護ルールの構成の有効化」を選択します。詳細は、Web Application Firewallの保護を参照してください。
-
「強制ポイントの選択」では、このメニューの目的は、新しく作成したWAFポリシーを既存のロード・バランサにアタッチすることです。ロード・バランサが作成されていないか、現時点で使用可能な場合は、このステップをスキップして、ロード・バランサの作成時にポリシーをアタッチできます。
タスク2: Let's Encryptによるサーバー証明書の署名
このチュートリアルでは、Let's Encryptという無料の公開CAサービスを利用して、サーバー証明書に署名します。したがって、チェーン証明書は次のようになります。
1.-End-user Certificate - Issued to: *.example.com; Issued By: Let’s Encrypt R3
2.-Intermediate Certificate 1 - Issued to: Let’s Encrypt R3 (RSA 2048, O = Let's Encrypt, CN = R3); Issued By: Signed by ISRG Root X1:ISRG Root X1 (RSA 4096, O = Internet Security Research Group, CN = ISRG Root X1)
3.-Root certificate - Issued by and to: ISRG Root X1 (RSA 4096, O = Internet Security Research Group, CN = ISRG Root X1) , Selfsigned
In PEM format:
-----BEGIN CERTIFICATE-----
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
EwJSMzAeFw0yNDAxMTUxNjAyMTNaFw0yNDA0MTQxNjAyMTJaMBgxFjAUBgNVBAMM
DSouZnd0ZXN0LnNpdGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC1
3NkuEB3r0m/cIWjYBvXEg8QAcib3QjkGO2YwDRu9IwjyxTYTqiWp0F8ZYh2hM1zP
...xxxx
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
oIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw
WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg
RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP
R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx
sxPnHKzhm+/b5Dt....XXXX
-----BEGIN CERTIFICATE-----
oOFTJOwT2e4ZvxCzSow/iaNhUd6shweU9GNx7C7ib1uYgeGJXDR5
bHbvO5BieebbpJovJsXQEOEO3tkQjhb7t/eo98flAgeYjzYIlefiN5YNNnWe+w5y
sR2bvAP5SQXYgd0FtCrWQemsAXaVCg/Y39W9Eh81LygXbNKYwagJZHduRze6zqxZ
Xmidf3LWicUGQSk+WT7dJvUsWqNMQB9GoZm1pzpRboY7nn1ypxIFeFntPlF4
FQsDj43QLwWyPntKHEtzBRL8xurgUBN8Q5N0s8p0544fAQjQMNRbcTa0B7rBMDBc
SLeCO5imfWCKoqMpgsy6vYMEG6KDA0Gh1gXxG8K28Kh8hjtGqEgqiNx2mna/H2ql
PRmP6zjzZN7IKw0KKP/32+IVQtQi0Cdd4Xn+GOd....xxx
-----END CERTIFICATE-----
Let's Encryptを使用する前に、Let's Encrypt証明書を作成したり、署名するCSRに署名するために役立つ特定のソフトウェアをインストールする必要があります。詳細は、Let's Encryptを参照してください。
署名には、Let's Encryptのcertbotを使用します。設定手順の詳細は、「設定手順」を参照してください。Oracle Linuxにインストールするには、Oracle Linuxでの暗号化- 無料の証明書(CertBot)を参照してください。
certbotをインストールしたら、次のコマンドを実行して、署名付きx.509証明書を簡単に作成できます。
sudo certbot certonly --manual --preferred-challenges=dns --email YOUR EMAIL ADDRESS --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d *.example.com --key-type rsa
ワイルドカード・ドメイン(_.example.com
)を使用しているため、証明書ボットには_.example.com
の所有権を確認するための検証チャレンジが必要です。–preferred-challenges=dnsオプションを使用して、DNSチャレンジを選択します。certbotの実行中に、次の図に示すように、DNSチャレンジに関するメッセージが表示されます。
OCI DNSサービスを使用しているため、example.com
ゾーンにtxtレコードを作成します。
これで、certbotはプロセスを終了し、完全なCAチェーンとそれに対応する非公開鍵で、エンドユーザー証明書を取得できるようになります。このチュートリアルの後半で、ロード・バランサのhttpsリスナーに対してこのエンド・ユーザー証明書(完全なチェーンを使用)を使用します。
タスク3: OCIロード・バランサの構成
OCI WAFローカルでの設定を完了した後、次の目標は、OCI Flexible Load Balancerとも呼ばれるレイヤー4から7にOCIロード・バランサをデプロイし、WAFローカルがアタッチされたパブリック対応サービスとして機能することです。
-
OCIコンソールを開き、「ネットワーキング」および「ロード・バランサ」をクリックします。
-
「ロード・バランサの作成」をクリックし、次の情報を入力して「次へ」をクリックします。
-
ロード・バランサ名:ロード・バランサ名を入力します。
-
可視性タイプの選択: 「パブリック」ロード・バランサを選択します。
-
帯域幅:ロード・バランサのシェイプおよびその他の構成の詳細を選択します。
-
ネットワーキングの選択: 2つ以上のパブリック・サブネットを持つVCNを選択します。1つはOCIロード・バランサ用、もう1つはOCIネットワーク・ファイアウォール用です。
-
拡張オプションの表示: 「Webアプリケーション・ファイアウォール・ポリシーを使用したレイヤー7攻撃からの保護」を選択し、以前に作成したローカルWAFを選択します。
-
-
ロード・バランサの作成後にバックエンド・サーバーを追加して「次へ」をクリックするため、「バックエンドの選択」セクションをスキップします。
-
「リスナーの構成」で、次の情報を入力して「次」をクリックします。
受信リクエストのロード・バランサ・リスナー(基本的に、外部からすべての接続を受信するロード・バランサのメイン・エントリ・ポイント)を構成します。デフォルト・ポート
443
でセキュアなHTTPのHTTPSを設定する必要があります。このポートでは、必然的にX.509証明書(SSL証明書)の使用が必要になります。HTTPSを使用すると、すべての接続が安全に暗号化されます。パブリック・ロード・バランサがインターネット上のエンド・ユーザーのプライマリ・エントリ・ポイントとして機能する一般的なシナリオでは、Digicert、Global Sign、Let's Encryptなどの評判の良いパブリック認証局(CA)によって署名されたSSL証明書をアップロードすることが不可欠です。さらに、インターネットに公開されているこれらの証明書は、顧客がYour connection is not private!などの不要なメッセージに遭遇しないように、有効期限付近で更新する必要があります。ERR_CERT_DATE_INVALID.
つまり、作成したLet's Encrypt証明書の公開詳細と非公開詳細の両方をアップロードする必要があります。セキュアな接続を容易にするために、両方のコンポーネントが正しくアップロードされていることを確認します。フルチェーン証明書(中間CAまたはルートCAを含む)をパブリック・パートにアップロードしてください。
-
ロギングの管理はオプションの構成であり、このチュートリアルの範囲にはありません。「発行」をクリックします。
-
しばらくすると、ロード・バランサが作成されます。次に、バックエンド・サーバーを構成する必要があります。SSLはバックエンド・サーバーに使用されるため、まず、バックエンド・サーバーに対するSSL接続の設定に使用する証明書をロード・バランサの証明書セクションに少なくとも1つ作成する必要があります。前述のように、この証明書バンドルはサード・パーティ・ツールを使用して手動で作成することも、OCI証明書管理サービスを使用することもできます。このチュートリアルでは、XCAツールを使用します。
「ネットワーキング」、「ロード・バランサ」、「ロード・バランサ」、「ロード・バランサの詳細」および「証明書」に移動します。
-
「証明書」セクションで、「ロード・バランサ管理証明書」として「証明書リソース」を選択し、「証明書の追加」をクリックします。
バックエンド・サーバーのSSL証明書の署名に使用したパブリックCAルートまたは中間CA証明書を追加します。リマインダとして、すべての共通名およびSANで、失効日なしで自己署名証明書を使用しています。ロード・バランサはバックエンド・サーバー証明書の検証にのみルートCAを使用するため、ここではサーバー証明書をインストールする必要はありません。
-
バックエンド・サーバーを作成するには、「バックエンド・セット」を選択し、「バックエンド・セットの作成」をクリックします。
-
「バックエンド・セットの作成」に、次の情報を入力します。
- バックエンド・セット名:バックエンド・セット名を入力します。
- 「SSL」を選択します。
- 「ロード・バランサ証明書の管理」を選択します。
- ステップ7で作成した証明書を追加します。ロード・バランサが受信したSSL証明書署名をチェックするようにするには、「ピア証明書の検証」をクリックします。
- ヘルス・チェック:
- プロトコル:
HTTP
を選択します。 - ポート:
443
ポートを選択します。 - 間隔およびタイムアウト:デフォルトの間隔およびタイムアウト(10000および3000ミリ秒)を保持します。
- ヘルス・チェックからのヘルス・レスポンスには、200を選択します。
- URLパス(URI): Webサーバーに存在するURLからリソースを追加します。例:
index.html
、mainpage.html
など
- プロトコル:
タスク4: OCI Network Firewallの構成
OCIロード・バランサの設定後、オラクルの目標は、南北トラフィックを保護するためのOCIネットワーク・ファイアウォールを構成することです。ファイアウォールは、新しく構成されたロード・バランサとインターネット・ゲートウェイの間に配置されます。OCIネットワーク・ファイアウォールの設定を続行するには、「復号化ルールを使用したSSL転送プロキシおよびインバウンド検査のためのOCIネットワーク・ファイアウォールの使用」を参照し、次を完了します。
-
SSLインバウンド検査モードのOCIネットワーク・ファイアウォール・ポリシーをデプロイします。詳細は、SSL復号化のためのOCI Network Firewallの使用を参照してください。
-
復号化プロファイルのマップされたシークレットを作成する場合は、以前にOCIロード・バランサ・リスナーにアップロードされた同一の自己署名証明書(公開キーと秘密キーの両方を含む)を使用します。このチュートリアルに従ってJSONファイルを作成することをお薦めします。OCIネットワーク・ファイアウォールのカスタムPEM証明書からの完全互換JSONテンプレートの作成を参照してください。
-
以前に作成したOCIネットワーク・ファイアウォール・ポリシーをアタッチしながら、OCIネットワーク・ファイアウォールをNGFWパブリッシュ・サブネット(192.168.5.0/24)にデプロイします。このアクションは、前述のサブネットからOCIネットワーク・ファイアウォールにプライベートIPアドレスを割り当てます。これは、後で構成をルーティングするために必要になります。
タスク5: OCIルーティングの構成
OCI Network Firewallがデプロイされているので、南北トラフィックが両方向で通過していることを確認する必要があります。まず、OCIネットワーク・ファイアウォールが存在するVCNに関連付けられたインターネット・ゲートウェイの専用ルーティング表を作成します。
-
VCNにルーティング表を作成し、「ターゲット・タイプ」のエントリをCIDRブロックとして
private IP
、「宛先」として追加し、このチュートリアルでは、タスク6にデプロイされたOCIネットワーク・ファイアウォールに割り当てられたプライベートIPとして、ロード・バランサ・サブネットCIDRブロックを導入します。192.168.6.0/24
および「ターゲット」 -
ルーティング表をインターネット・ゲートウェイに関連付け、3つのドットと「ルート表の関連付け」をクリックし、ルーティング表を選択します。
-
このルーティング表がインターネット・ゲートウェイに関連付けられると、パブリック・ロード・バランサ
192.168.6.0/24
に向かうすべてのトラフィックは、最初に、OCIネットワーク・ファイアウォールが存在するプライベートIP192.168.5.78
にリダイレクトされます。OCIネットワーク・ファイアウォールのプライベートIP
192.168.5.78
から、OCIネットワーク・ファイアウォールからのパケット検査後、パケットはOCIロード・バランサへの移行を維持します。そこから、ロード・バランサのルーティング構成によって決定される、選択したバックエンド・サーバー間の最終宛先に転送されます。現在は、インターネット・ユーザーに戻るパケットが逆の順序で同じパスをたどり、OCI Network Firewallを横断してレスポンスの検査を行うことが不可欠です。次の図に示すように、バックエンド・サーバーからOCI Network FirewallプライベートIP
192.168.5.78
を介してレスポンスをルーティングするには、ロード・バランサのパブリック・サブネットのルーティング表を作成する必要があります。
OCIネットワーク・ファイアウォール・サブネットから、インターネット・ゲートウェイへの0.0.0.0/0
ルートを追加して、レスポンスがインターネット・ゲートウェイにルーティングされることを確認する必要があります。
インターネット・ゲートウェイに到達すると、パッケージはソースにルーティングされます。テストとして、https://www.test.com
にナビゲートします。
関連リンク
承認
- 著者 - LuisCatalán Hernández(OCI Cloud Networkスペシャリスト兼マルチ・クラウド)、Sachin Sharma(OCI Cloud Networkスペシャリスト)
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Secure Your Applications using OCI Network Firewall and OCI WAF Regional with Let's Encrypt Certificates
G17248-01
October 2024