Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

ネットワークフィルタリング

最終更新 Markdown で表示Agent セットアップ

Secure Web Gateway では、ネットワーク層のポリシーを適用し、ユーザーがアクセスできる Web サイトと非 HTTP アプリケーションを制御できます。Web 閲覧以外のトラフィックを制御したいときに便利です。たとえば、リモートデスクトップ接続のブロックや、組織全体でのファイル転送ツールの制限です。

ネットワークポリシーは、個々の TCP パケットと UDP パケット(インターネット上のすべてのトラフィックを運ぶ低レベルのデータ単位)を検査します。DNS ポリシーや HTTP ポリシーでは届かないトラフィックもフィルタリングできます。DNS ポリシーが見るのはドメイン照会だけ、HTTP ポリシーが見るのは Web リクエストだけです。ネットワークポリシーはさらに深く、SSH(リモートターミナル)、RDP(リモートデスクトップ)、標準外ポートで動くカスタムアプリケーションなどのプロトコルも捕捉できます。

1. Gateway に接続する

デバイスを接続する

ノート PC やスマートフォンなどのデバイスからネットワークトラフィックをフィルタリングするには、次の手順を実行します。

  1. デバイスに Cloudflare One Client をインストール します。
  2. Cloudflare One Client の Settings で、組織の Cloudflare One インスタンス にログインします。
  3. (任意)ブロック時に カスタムブロックページ を表示したい場合は、デバイスに Cloudflare ルート証明書をインストール します。証明書がないと、ブロックされたユーザーには案内ページではなく、一般的なブラウザーの接続エラーが表示されます。
  4. TCP 向けに Gateway プロキシを有効にします。Gateway プロキシは、デバイスのトラフィックを Cloudflare 経由にして、ネットワークポリシーが検査できるようにします。有効でないと、ポリシーは効きません。任意で UDP プロキシも有効にすると、ポート 443 の QUIC トラフィック(HTTP/3 接続で使われる新しいプロトコル)も検査できます。

プライベートネットワークを接続する

プライベートネットワーク(インターネットに公開していない社内ネットワーク)からのトラフィックをフィルタリングするには、Cloudflare Tunnel ガイド を参照してください。

2. デバイスの接続を確認する

接続を確認すると、ポリシーを作る前に、デバイスのトラフィックが実際に Cloudflare を経由していることを確かめられます。

デバイスが Cloudflare One に接続されていることを確認するには、次の手順を実行します。

  1. Cloudflare ダッシュボード で、Zero Trust > Traffic policies > Traffic settings を開きます。
  2. Log traffic activity で、すべての Network logs のアクティビティログを有効にします。ネットワーク層のトラフィックが記録され、デバイスがログに出ることを確認できます。
  3. Cloudflare One Client を入れたデバイスでブラウザーを開き、任意の Web サイトにアクセスします。ログに出るはずのトラフィックが生成されます。
  4. デバイスの Source IP(Cloudflare から見た接続の公開アドレス)を確認します。
  1. Cloudflare One Client を開きます。
  2. Profile を開きます。
  3. Client Interface IP を控えます。ネットワークログの Source IP と同じアドレスです。
  1. Cloudflare One Client を開きます。
  2. Settings(歯車アイコン)Preferences > General を開きます。
  3. Public IP を控えます。ネットワークログの Source IP と同じアドレスです。
  1. Cloudflare ダッシュボード で、Zero Trust > Insights > Logs > Network logs を開きます。ネットワークポリシーを作る前に、デバイスに割り当てられた Source IP からのネットワークログがあることを確認します。

数分待ってもログが出ない場合は、次の 2 点を確認します。まず Gateway プロキシがオン になっていること。次に、Cloudflare One Client の接続状態で、デバイスが Zero Trust 組織に登録されていること。

3. 最初のネットワークポリシーを作成する

ネットワークポリシーは 2 つの部分で構成されます。対象トラフィックを選ぶマッチャー(例: SSH のデフォルトポートであるポート 22 宛ての全パケット)と、そのトラフィックに対するアクション(例: 接続をブロック)です。

新しいネットワークポリシーを作成するには:

  1. Cloudflare ダッシュボードZero Trust > Traffic policies > Firewall policies を開きます。

  2. Network タブで Add a network policy を選びます。

  3. ポリシーに名前を付けます。

  4. Traffic で、許可またはブロックするトラフィックを定義する論理式を組み立てます。

  5. 論理式に一致したトラフィックに対する Action を選びます。たとえば、デバイスのシリアル番号 のリストを使い、会社のデバイスから Cloudflare One Client で接続している場合にだけアプリケーションへアクセスできるようにできます。

    セレクター 演算子 論理 アクション
    SNI Domain is internalapp.com And Block
    Passed Device Posture Checks not in Device serial numbers
  6. Create policy を選びます。

  1. 次の権限を持つ API トークンを作成 します。

    種類 項目 権限
    Account Zero Trust Edit
  2. (任意)API の環境変数に アカウント ID と API トークンを含めます。

  3. Create a Zero Trust Gateway rule エンドポイントへ POST リクエストを送ります。たとえば、デバイスのシリアル番号 のリストを使い、会社のデバイスから Cloudflare One Client で接続している場合にだけアプリケーションへアクセスできるようにできます。

    Create a Zero Trust Gateway rulebash
    curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
    	--request POST \
    	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    	--json '{
    		"name": "Enforce device posture",
    		"description": "Ensure only devices in Zero Trust organization can connect to application",
    		"precedence": 0,
    		"enabled": true,
    		"action": "block",
    		"filters": [
    				"l4"
    		],
    		"traffic": "any(net.sni.domains[*] == \"internalapp.com\")",
    		"identity": "",
    		"device_posture": "not(any(device_posture.checks.passed[*] in {\"LIST_UUID\"}))"
    	}'
{
	 "success": true,
	 "errors": [],
	 "messages": []
}

API は、ポリシーの概要とリクエストの結果を返します。

詳細は ネットワークポリシー を参照してください。

4. 任意のポリシーを追加する

作成を検討できるポリシーは、よく使うネットワークポリシー の一覧を参照してください。よくある追加例は、特定の IP 範囲へのトラフィックのブロック、標準外ポート(HTTP の 80 や HTTPS の 443 のようなよく知られたポート以外)へのアクセス制限、ポート番号だけでなくトラフィックパターンで BitTorrent などのアプリケーションを識別するプロトコル検出です。

役に立ちましたか?