TCP トラフィックの保護 (「範囲」)
「範囲」機能は、DDoS 対策、ロード・バランシング、およびコンテンツの加速を、任意の TCP ベースのプロトコルにもたらします。 「範囲」とは、IBM Cloud® Internet Services (Cloudflare) のエッジ・ノードで実行されるグローバルな TCP プロキシーのことです。
「範囲」は、以下の目的に使用できます。
- TCP ポートやプロトコルをレイヤー 3 およびレイヤー 4 の DDoS 攻撃から保護する。
- レイヤー 7 のファイアウォール・ルールを使用して HTTP(S) の「範囲」アプリを保護する。
- TLS 暗号化を有効にすることで、機密データのスヌープや窃盗を防ぐ。
- CIS IP ファイアウォールと統合することで、IP アドレスまたは IP 範囲全体を、TCP サービスに届かないようにブロックしたり、チャレンジしたりする。
- TCP ヘルス・チェック、フェイルオーバー、およびステアリング・ポリシーを搭載したロード・バランサーを構成して、トラフィックが流れる場所を指示する。
「範囲」は、エンタープライズ版でのみ、帯域幅使用量ごとの追加コストでご利用いただけます。
「範囲」の制限事項
固有の起点を持つ「範囲」アプリケーションを、最大 10 個作成できます。 固有の起点の「範囲」アプリケーションのそれぞれに固有の IP アドレスを割り当てる必要がありますが、IP アドレスは数に限りがあるリソースです。 10 個を超える範囲アプリケーションが必要な場合は、 IBM サポート Case をオープンしてください。 サポート Case で範囲アプリケーションを追加するには、ユース・ケースを確認する必要があります。このプロセスには数日かかる場合があります。
既存の起点を再使用しても、異なるポートを使用すれば、10 個を超えるアプリケーションを作成できます。
TCP の「範囲」アプリには、IP ルールしか適用されません。 これは、IP 規則が OSI レイヤー 3 およびレイヤー 4 に適用されるためです。 ただし、HTTP (S) 範囲アプリは、ファイアウォール・ルールと IP ルールの両方で機能します。 一般に、ファイアウォール・ルールは、要求ヘッダーや本体コンテンツの特性など、OSI レイヤー 7 (HTTP) で公開されるプロパティー用に設計されています。
コンソールを使用したアプリケーションの追加
UI を使用してアプリケーションを追加するには、以下の手順に従います。
- **「セキュリティー」>「範囲」**に移動します。
- 「作成」 をクリックします。
- リスト・メニューからアプリケーションのタイプを選択します。 TCP、UDP、HTTP、HTTPS、RDP、SSH、または Minversal を選択できます。
- アプリケーション名を入力します。 アプリケーションが、ご使用の CIS ドメインの DNS 名に関連付けられます。
- エッジ・ポートを入力します。CIS は、このポートでこれらのアドレスへの着信接続を listen します。 これらのアドレスへの接続はご使用の起点にプロキシー化されます。 ポート範囲を入力することはできますが (例:
8080-8090
)、起点には連続した範囲で指定された同じ数量のポートがなければなりません。 - エッジ IP 接続を選択します。
- 「起点」セクションで、TCP アプリケーションの起点 IP とポートを入力します。 既存のロード・バランサーとそのポートを選択することもできます。
- IPファイアウォールを有効にする(オプション)。 有効にすると、「block」または「allowlist」アクションを持つIPアクセスルールがアプリケーションに適用される。
- エッジ TLS 終端を有効にします (オプション)。 有効にする場合は、使用する TLS 終端のタイプをリスト・メニューから選択します。
- PROXYプロトコルをサポートするプロキシをインラインで使用している場合は、 PROXYプロトコルを 選択します(オプション)。 この機能は、真のクライアント IP の知識が必要なサービスを実行している場合に役立ちます。 ほとんどの場合、この設定は
off
のままです。 - 「作成」 をクリックします。
範囲アプリケーションをプロビジョニングすると、アプリケーションごとに使用される帯域幅の量に基づいて、追加コストが発生します。
これで、以下のプロパティーを持つタイル・ビューまたはテーブル・ビューにアプリケーションが表示されます。
- アプリケーション名
- アプリケーション・タイプ
- エッジ・ポート
- TLS エッジ終端
- Proxy Protocol
- 発信元
- 過去 1 時間の接続数 (毎分ポーリングを実施)
- 過去 1 時間のスループット (毎分ポーリングを実施)
- アクションメニュー
(右上隅)には以下のオプションがある:
- アプリケーションの編集
- 指定したアプリケーションのメトリックの表示
- アプリケーションの削除
「範囲」アプリケーションが作成されると、それに固有の IPv4 アドレスと IPv6 アドレスが割り当てられます。 これらの IP アドレスは静的ではなく、変更される可能性があります。 割り当てられた IP アドレスは、DNS を使用して判別できます。 DNS 名は常に、アプリケーションに割り当てられた IP アドレスを戻します。
メトリックの表示
アプリケーションの TCP トラフィックを CIS (Cloudflare) でプロキシーできるようになりました。
**「メトリック」>「範囲」**に移動して、アプリケーションへの接続の数とスループットのトラフィックを表示します。 グラフには、最大で 10 個のアプリケーションのメトリックが表示されます。
アプリケーションのメトリックを切り替えるには、チャート・キーを使用するか、**「アプリケーションの選択」**ボタンをクリックします。 メトリック・データの時間フレームを変更するには、リスト・メニューを使用します。
範囲表示アプリケーション
Rangeアプリケーションを作成した後、Security > Range ページには、以下の情報を含むタイル(またはテーブルビューに切り替えるオプション)が表示されます:
- アプリケーション名
- Proxy Protocol
- エッジ・ポート
- 起点とポート
- 過去 1 時間の接続数 (毎分ポーリングを実施)
- 過去 1 時間のスループット (毎分ポーリングを実施)
- TLSエッジ・ターミネーション(関連アプリケーション用)
アプリケーションリストには、アクションメニューもあります。 では、以下のタスクを実行できます:
- アプリケーションの編集
- 指定したアプリケーションのメトリックの表示
- このページでは、そのアプリケーションのメトリックスのみを表示します 。
- アプリケーションの削除
API の使用例
「範囲」を使用した、アプリケーションの作成とリストの例を示します。
「範囲」アプリの作成
Rangeアプリでオリジンを指定するには2つの方法があります。
- 起点 IP - パラメーター
origin_direct
を使用します - ロード・バランサー - パラメーター
origin_dns
およびorigin_port
を使用します
起点 IP 要求の場合:
curl -X POST \
https://api.cis.cloud.ibm.com/v1/<url-encoded-crn>/zones/<zone-d>/range/apps \
-H 'X-Auth-User-Token: <token>' \
-d '{"protocol":"tcp/22","dns":{"type":"CNAME","name":"ssh.example.com"},"origin_direct":["tcp://172.0.2.1:22"],"proxy_protocol":true,"ip_firewall":true}'
応答は以下のとおりです。
{
"result": {
"id": "4f70c3d4f20576b79135b898295e8093",
"protocol": "tcp/22",
"dns": {
"type": "CNAME",
"name": "ssh.example.com"
},
"origin_direct": [
"tcp://172.0.2.1:22"
],
"ip_firewall": true,
"proxy_protocol": true,
"created_on": "2019-01-09T17:33:09.190606Z",
"modified_on": "2019-01-09T17:33:09.190606Z"
},
"success": true,
"errors": [],
"messages": []
}
ロード・バランサー要求の場合:
curl -X POST \
https://api.cis.cloud.ibm.com/v1/<url-encoded-crn>/zones/<zone-d>/range/apps \
-H 'X-Auth-User-Token: <token>' \
-d '{"protocol":"tcp/22","dns":{"type":"CNAME","name":"ssh.example.com"},"origin_dns": {"name": "test"},"proxy_protocol":true,"ip_firewall":true, "origin_port": 43}'
応答は以下のとおりです。
{
"result": {
"id": "4f70c3d4f20576b79135b898295e8093",
"protocol": "tcp/22",
"dns": {
"type": "CNAME",
"name": "ssh.example.com"
},
"origin_dns": {
"name": "test"
},
"origin_port": 43,
"ip_firewall": true,
"proxy_protocol": true,
"created_on": "2019-01-09T17:39:09.190606Z",
"modified_on": "2019-01-09T17:39:09.190606Z"
},
"success": true,
"errors": [],
"messages": []
}
- DNS 名 - アプリケーションがドメインの DNS 名に関連付けられます。
- プロトコル/エッジ・ポート - アプリケーションを実行するポート。 これらのアドレスへの接続はご使用の起点にプロキシー化されます。
- 起点ダイレクト - アプリケーションを実行する場所の IP と、エッジから起点までトラフィックを通すポート。
- IP Firewall - 有効にすると、ブロック・アクションを含むファイアウォール・ルールがこの「範囲」アプリケーションに強制されます。
- PROXY Protocol - PROXY Protocol v1 をサポートするプロキシーをインラインで持っている場合に有効にします。 ほとんどの場合、この設定は無効のままにします。
- 起点 DNS - 起点として設定するロード・バランサーの名前。
- 起点ポート - サービスのポート。
すべての「範囲」アプリのリスト表示
すべての「範囲」アプリをリストするには、以下の要求を使用します。
curl -X GET \
https://api.cis.cloud.ibm.com/v1/<url-encoded-crn>/zones/<zone-d>/range/apps
応答は以下のとおりです。
{
"result": [
{
"id": "4f70c3d4f20546b79135b898295e8093",
"protocol": "tcp/22",
"dns": {
"type": "CNAME",
"name": "ssh.example.com"
},
"origin_direct": [
"tcp://172.0.2.1:22"
],
"ip_firewall": true,
"proxy_protocol": true,
"created_on": "2019-01-09T17:33:09.190606Z",
"modified_on": "2019-01-09T17:33:09.190606Z"
}
],
"success": true,
"errors": [],
"messages": []
}
特定の範囲アプリのリスト
特定の「範囲」アプリをリストするには、以下の要求を使用します。
curl -X GET \
https://api.cis.cloud.ibm.com/v1/<url-encoded-crn>/zones/<zone-d>/range/apps/4f70c3d4f20546b79135b898295e8093
応答は以下のとおりです。
-
起点 IP を使用するアプリ
{ "result": { "id": "4f70c3d4f20546b79135b898295e8093", "protocol": "tcp/22", "dns": { "type": "CNAME", "name": "ssh.example.com" }, "origin_direct": [ "tcp://172.0.2.1:22" ], "ip_firewall": true, "proxy_protocol": true, "created_on": "2019-01-09T17:33:09.190606Z", "modified_on": "2019-01-09T17:33:09.190606Z" }, "success": true, "errors": [], "messages": [] }
-
ロード・バランサーを使用するアプリ
{ "result": { "id": "555359036e7f4acc82d69b916f62caba", "protocol": "tcp/22", "dns": { "type": "CNAME", "name": "ssh.example.com" }, "origin_dns": { "name": "test_update" }, "origin_port": 76, "ip_firewall": true, "proxy_protocol": true, "created_on": "2019-01-10T22:26:47.167008Z", "modified_on": "2019-01-10T22:26:47.167008Z" }, "success": true, "errors": [], "messages": [] }