⛩️

Cloudflare Zero Trust の基本的なセットアップ手順

2022/06/22に公開

背景

この記事以外にもいくつかCloudflareのゼロトラストについての記事を書いています。今回はその第2弾として、Cloudflareのゼロトラストネットワークを構築する手順について書きます。

社内外を問わず、どこからインターネットにアクセスしてもトラフィックやDNSクエリに基づいて、ウイルススキャンやアクセスブロックをしてくれて、社内や自宅からクラウド上の自社サーバーに安全にアクセスできるサービスを50人まで無料で提供してくれるのは凄くありがたいです。

ただ、Cloudflare Zero Trust っていざ設定するとなるとどういう手順でやればいいか意外にわからないのと、主にTLSまわりでハマりどころもあるので、ここで一度まとめときます。いわゆる備忘録ってやつです。

ちなみに今回は内部ネットワークのサーバーへ繋ぐ Access は設定しません。Cloudflare Zero Trust ネットワークを構築、ウイルススキャンやアクセスブロックを設定してセキュアな通信経路を使えるようになるところまでです。

上の図の Access 以外の部分を構築していきます。

なお、本日(2022年6月21日)はCloudflareが障害を起こしてTwitterがワイワイしてた日です。
私もちょうどCloudflare Zero Trustを設定してて急に繋がらなくなったので、設定ミスったかと焦りました。このインシデントに関する報告は既にネットに上がっています。

また、サービス側をセットアップした後は個々のクライアントのセットアップが必要になります。以下に手順を書いてますので参照してください。

Cloudflare サービス側のセットアップ手順

サービス側のセットアップでの主な流れは以下のとおりです。
(クライアント側の設定は次回書きます)
他にもいろいろ細かく設定できますが、とりあえずデフォルトで良いんじゃないかってものは省略。

  1. Cloudflare にアカウントがない場合は新規にサインアップする。
  2. Zero Trust のチーム名を決めて登録する。
  3. 認証設定を行う。
    • Google Workspace, AzureAD, Facebook, OpenID Connect, Github等と連携して認証できる。
  4. Firewallの設定をする。
  5. Gateway のポリシーを設定する。
    • マウルエア、スパイウエア等をブロック。
    • アダルトサイトのブロック。
    • トラフィックをスキャンしないアプリの設定。

ちなみに Zero Trust の無料範囲内での使用においてクレジットカードの登録は必要ありません。
以下で上記の設定手順ひとつひとつについて記録します。

1. 新規にサインアップ

  1. すでにCloudflareのアカウントがある場合は、ここはスキップして2に進んでください。
  2. アカウントがない場合は、Cloudflareにアクセスして新規にサインアップしましょう。

2. Zero Trust のチーム名を決めて登録する。

  1. Zero Trustに参加するクライアントは、認証する時に自身の参加するチーム名を設定する必要があります。
  2. チーム名は全世界でユニークである必要があります。
  3. Cloudflare管理ページ → 左のメニューから ZeroTrust をクリックしてZeroTrust管理ページへ。
  4. SettingsGeneral へ。

  1. チーム名を入力して save をクリック。
  2. 例として hogehoge と入力した場合、 hogehoge.cloudflareaccess.com がチーム名となります( .cloudflareaccess.com は固定 )。

  1. ユーザーがマルウエアサイトなどにアクセスした際のブロックページをカスタマイズしたければ、 Block Page を Enabled にして設定してください。

3. 認証設定を行う

  1. SettingsAuthentication へ。

  1. LoginMethods で Add new ボタンをクリック(デフォルトで One Time Pin がありますが、私は消したので、ここは Google Workspace のみです)。

  1. 使用したい認証方式を選択して、それぞれに応じた設定を行います。

  1. なお、Googleには Google WorkspaceGoogle の2つがあります。Workspace を選択すると、Workspace の認証と連携するので人数が多い組織で管理する場合に便利です。Workspace を使っていない場合は Google を選択すれば、個別のアカウントで設定できます。

  2. 各認証メソッドの設定方法は、それぞれの設定ページの右側に丁寧に記されているので、その通りに実施すれば問題なく設定できるでしょう。

  3. この時点ではまだ設定した認証方式が使えません。再び管理画面から、SettingsDevices をクリックします。

  1. Adminメニューから、 Device enrollment permissionsManage ボタンをクリックします。

  1. RulesAdd a Rule をクリックします。

  1. 接続を許可するデバイスの登録ルールを設定します。(以下の例では、先程設定した Google Workspace で認証したユーザーの登録を許可しています)

4. Firewallの設定をする

  1. 再び管理画面に戻って、 SettingsNetwork を選択する。

  1. Firewall において、

    • TCPだけでなくUDPトラフィックもCloudflare Zero Trust Gateway に流す場合は、 Proxy が Enabled である事を確認の上 UDP にもチェックマークを入れる。
    • トラフィックのウイルススキャンをする場合に、TLS(HTTPS)を復号してスキャンする場合は TLS decryptionEnabled にする(最近はほとんどのサイトがTLS化されているので、ここを Enabled にしなかったらDNSレベルでのブロックは効きますが、HTTPトラフィックはほとんどスキャンされないと思います)。
    • AV inspection (アンチ・ウイルス検査) において Enabled になっている事を確認の上、アップロード、ダウンロードのいずれにもチェックを入れます。どちらかだけウイルススキャンすればいい場合は片方だけチェックを入れます。
    • Split TunnelsExclude IPs and domains を選択し、 Manage ボタンをクリック。Gateway を通さない通信先をドメイン名やIPアドレスで設定します。
    • 設定するのはローカルIPアドレスだったり、迂回しないとアクセスできないWebサイトで安全だとわかっているサイトなどです。
    • 設定が終わったら再び Network 画面に戻ります。
  2. Office365を使っている場合、一番下までスクロールして、 Integrated experiences において、 Office365はGatewayを通さずにダイレクトにインターネットに出てもらうか、TLS復号しないかを必要に応じて設定します。

5. Gateway のポリシーを設定する

ブロックする設定の追加

  1. 再び管理画面に戻り、 GatewayPolicies を選択し、サイトやサービスごとの許可/拒否/バイパス設定を行います。

  1. ポリシーは DNS ベース、 Network ベース、 HTTP トラフィックベースそれぞれで設定できます。
  2. DNS ポリシーには最初から Block Malware 設定がありました。
  3. 初期状態では Block Malware 設定はマルウェアのみブロックします。私は個々の設定を変更して全てのセキュリティリスクのあるアクセスを遮断するように設定変更しています。
  4. Block Malware 設定の Edit をクリックして開いた画面で、Build an expressionValue を Malware から All Security Risks に変更、保存しました。この変更により、マルウェアに加えてスパムやスパイウェアなどもブロックするようになります。

  1. 保存したら前の画面に戻って Create Policy から新しいルールを設定できます。試しにアダルトサイトへのアクセス拒否を設定します。Create Policy をクリックして開いた画面で以下のように設定します。
    • Build an expression の selector で Content category を選択すると、コンテンツのカテゴリで指定できるようになります。ここでアダルト関係を選択しておくと、いちいちこちらでドメインを設定しなくてもCloudflare側の情報に基づいてアダルトサイトと判定されたサイトをブロックしてくれるので便利です。

上記の設定はDNSポリシーでの設定ですが、同様の設定をHTTPポリシーでも設定しておくと、DNSクエリだけでなくHTTP(S)トラフィックもスキャンするようになります。

許可する設定の追加

上記で拒否設定を行いましたが、一部のスマートフォンアプリ等では許可設定をしないと通信できないものがありますので、許可設定を追加します。

  1. HTTPポリシーで新規ルールとして以下のように設定します。アクションは Block ではなく Do Not Inspect(検査しない) です。

  • Googleのサービス(Gmail, Drive等)はGoogle側でウイルススキャンしてくれるので、これも外しています。
  • 追記: Zoomにも影響が出るので、Zoom、またはコミュニケーションサービス全体を Do Not Inspect にした方がいいです。

ちなみに私の観測範囲では、ブラウザでのサイトアクセスはこの設定をしなくても大丈夫でしたが、一部のスマートフォンアプリで通信ができず、本設定をしてからは通信できるようになりました。

  • Twitter
  • Apple App Store
  • Google Analytics

ちなみに PayPay はこのリストに含まれておらず今だに通信できないため、PayPay を使うときだけ一時的に ZeroTrust を無効にしています。

サービス側の設定は以上です。お疲れ様でした。

Discussion