Cloudflare Zero Trust の基本的なセットアップ手順
背景
この記事以外にもいくつかCloudflareのゼロトラストについての記事を書いています。今回はその第2弾として、Cloudflareのゼロトラストネットワークを構築する手順について書きます。
- 「Cloudflare Zero Trust」 で組織のゼロトラストネットワークを構成する
- Cloudflare Zero Trust の基本的なセットアップ手順
- Cloudflare Zero Trust クライアント側のセットアップ手順
- Cloudflare Zero Trust 経由でAWS上のEC2(グローバルIPアドレス無し)にSSHでログインする
- Cloudflare Tunnel 経由で自前のDNSリゾルバーを利用する
社内外を問わず、どこからインターネットにアクセスしてもトラフィックやDNSクエリに基づいて、ウイルススキャンやアクセスブロックをしてくれて、社内や自宅からクラウド上の自社サーバーに安全にアクセスできるサービスを50人まで無料で提供してくれるのは凄くありがたいです。
ただ、Cloudflare Zero Trust っていざ設定するとなるとどういう手順でやればいいか意外にわからないのと、主にTLSまわりでハマりどころもあるので、ここで一度まとめときます。いわゆる備忘録ってやつです。
ちなみに今回は内部ネットワークのサーバーへ繋ぐ Access は設定しません。Cloudflare Zero Trust ネットワークを構築、ウイルススキャンやアクセスブロックを設定してセキュアな通信経路を使えるようになるところまでです。
上の図の Access 以外の部分を構築していきます。
なお、本日(2022年6月21日)はCloudflareが障害を起こしてTwitterがワイワイしてた日です。
私もちょうどCloudflare Zero Trustを設定してて急に繋がらなくなったので、設定ミスったかと焦りました。このインシデントに関する報告は既にネットに上がっています。
また、サービス側をセットアップした後は個々のクライアントのセットアップが必要になります。以下に手順を書いてますので参照してください。
Cloudflare サービス側のセットアップ手順
サービス側のセットアップでの主な流れは以下のとおりです。
(クライアント側の設定は次回書きます)
他にもいろいろ細かく設定できますが、とりあえずデフォルトで良いんじゃないかってものは省略。
- Cloudflare にアカウントがない場合は新規にサインアップする。
- Zero Trust のチーム名を決めて登録する。
- 認証設定を行う。
- Google Workspace, AzureAD, Facebook, OpenID Connect, Github等と連携して認証できる。
- Firewallの設定をする。
- Gateway のポリシーを設定する。
- マウルエア、スパイウエア等をブロック。
- アダルトサイトのブロック。
- トラフィックをスキャンしないアプリの設定。
ちなみに Zero Trust の無料範囲内での使用においてクレジットカードの登録は必要ありません。
以下で上記の設定手順ひとつひとつについて記録します。
1. 新規にサインアップ
- すでにCloudflareのアカウントがある場合は、ここはスキップして2に進んでください。
- アカウントがない場合は、Cloudflareにアクセスして新規にサインアップしましょう。
2. Zero Trust のチーム名を決めて登録する。
- Zero Trustに参加するクライアントは、認証する時に自身の参加するチーム名を設定する必要があります。
- チーム名は全世界でユニークである必要があります。
- Cloudflare管理ページ → 左のメニューから
ZeroTrust
をクリックしてZeroTrust管理ページへ。 -
Settings
→General
へ。
- チーム名を入力して
save
をクリック。 - 例として
hogehoge
と入力した場合、hogehoge.cloudflareaccess.com
がチーム名となります(.cloudflareaccess.com
は固定 )。
- ユーザーがマルウエアサイトなどにアクセスした際のブロックページをカスタマイズしたければ、
Block Page
を Enabled にして設定してください。
3. 認証設定を行う
-
Settings
→Authentication
へ。
- LoginMethods で
Add new
ボタンをクリック(デフォルトでOne Time Pin
がありますが、私は消したので、ここはGoogle Workspace
のみです)。
- 使用したい認証方式を選択して、それぞれに応じた設定を行います。
-
なお、Googleには
Google Workspace
とGoogle
の2つがあります。Workspace を選択すると、Workspace の認証と連携するので人数が多い組織で管理する場合に便利です。Workspace を使っていない場合は Google を選択すれば、個別のアカウントで設定できます。 -
各認証メソッドの設定方法は、それぞれの設定ページの右側に丁寧に記されているので、その通りに実施すれば問題なく設定できるでしょう。
-
この時点ではまだ設定した認証方式が使えません。再び管理画面から、
Settings
→Devices
をクリックします。
- Adminメニューから、
Device enrollment permissions
のManage
ボタンをクリックします。
-
Rules
でAdd a Rule
をクリックします。
- 接続を許可するデバイスの登録ルールを設定します。(以下の例では、先程設定した Google Workspace で認証したユーザーの登録を許可しています)
4. Firewallの設定をする
- 再び管理画面に戻って、
Settings
→Network
を選択する。
-
Firewall
において、- TCPだけでなくUDPトラフィックもCloudflare Zero Trust Gateway に流す場合は、 Proxy が
Enabled
である事を確認の上UDP
にもチェックマークを入れる。 - トラフィックのウイルススキャンをする場合に、TLS(HTTPS)を復号してスキャンする場合は
TLS decryption
をEnabled
にする(最近はほとんどのサイトがTLS化されているので、ここを Enabled にしなかったらDNSレベルでのブロックは効きますが、HTTPトラフィックはほとんどスキャンされないと思います)。 -
AV inspection (アンチ・ウイルス検査)
においてEnabled
になっている事を確認の上、アップロード、ダウンロードのいずれにもチェックを入れます。どちらかだけウイルススキャンすればいい場合は片方だけチェックを入れます。
-
Split Tunnels
のExclude IPs and domains
を選択し、Manage
ボタンをクリック。Gateway を通さない通信先をドメイン名やIPアドレスで設定します。 - 設定するのはローカルIPアドレスだったり、迂回しないとアクセスできないWebサイトで安全だとわかっているサイトなどです。
- 設定が終わったら再び
Network
画面に戻ります。
- TCPだけでなくUDPトラフィックもCloudflare Zero Trust Gateway に流す場合は、 Proxy が
-
Office365を使っている場合、一番下までスクロールして、
Integrated experiences
において、 Office365はGatewayを通さずにダイレクトにインターネットに出てもらうか、TLS復号しないかを必要に応じて設定します。
5. Gateway のポリシーを設定する
ブロックする設定の追加
- 再び管理画面に戻り、
Gateway
→Policies
を選択し、サイトやサービスごとの許可/拒否/バイパス設定を行います。
- ポリシーは
DNS
ベース、Network
ベース、HTTP
トラフィックベースそれぞれで設定できます。 -
DNS
ポリシーには最初からBlock Malware
設定がありました。 - 初期状態では
Block Malware
設定はマルウェアのみブロックします。私は個々の設定を変更して全てのセキュリティリスクのあるアクセスを遮断するように設定変更しています。 -
Block Malware
設定のEdit
をクリックして開いた画面で、Build an expression
のValue
を Malware からAll Security Risks
に変更、保存しました。この変更により、マルウェアに加えてスパムやスパイウェアなどもブロックするようになります。
- 保存したら前の画面に戻って
Create Policy
から新しいルールを設定できます。試しにアダルトサイトへのアクセス拒否を設定します。Create Policy
をクリックして開いた画面で以下のように設定します。- Build an expression の selector で
Content category
を選択すると、コンテンツのカテゴリで指定できるようになります。ここでアダルト関係を選択しておくと、いちいちこちらでドメインを設定しなくてもCloudflare側の情報に基づいてアダルトサイトと判定されたサイトをブロックしてくれるので便利です。
- Build an expression の selector で
上記の設定はDNSポリシーでの設定ですが、同様の設定をHTTPポリシーでも設定しておくと、DNSクエリだけでなくHTTP(S)トラフィックもスキャンするようになります。
許可する設定の追加
上記で拒否設定を行いましたが、一部のスマートフォンアプリ等では許可設定をしないと通信できないものがありますので、許可設定を追加します。
- HTTPポリシーで新規ルールとして以下のように設定します。アクションは
Block
ではなくDo Not Inspect(検査しない)
です。
- Googleのサービス(Gmail, Drive等)はGoogle側でウイルススキャンしてくれるので、これも外しています。
- 追記: Zoomにも影響が出るので、Zoom、またはコミュニケーションサービス全体を
Do Not Inspect
にした方がいいです。
ちなみに私の観測範囲では、ブラウザでのサイトアクセスはこの設定をしなくても大丈夫でしたが、一部のスマートフォンアプリで通信ができず、本設定をしてからは通信できるようになりました。
- Apple App Store
- Google Analytics
ちなみに PayPay はこのリストに含まれておらず今だに通信できないため、PayPay を使うときだけ一時的に ZeroTrust を無効にしています。
サービス側の設定は以上です。お疲れ様でした。
Discussion