Cloudflare ZerotrustでSecure Web GatewayとRemote Accessを実現する

# Cloudflare Zerotrustについて

:::note info
本人のナレッジメモも含まれます。
2023/4/15
Connectorのセットアップを作成済みです。
DNSでセキュリティーの部分も作成済み。
:::

## サービス概要
- サービス概要は以下の通りです。
Cloudflare Zerotrustは、Cloudflare社が提供するZerotrustサービスです。
Cloudflare AccessとCloudflare Gatewayという大きく二つのコンポーネントに分かれています。
Cloudflare Access ： 主にZTNA（Zerotrust Network Access）を実現するソリューション
Cloudflare Gateway ： 主にSWG（Secure Web Gateway)を実現するソリューション
今回は無償版のCloudflare Zerotrust（50名までは無償/サポートなし）を利用しています。

- 基本的な考え方のまとめ
Cloudflare Zerotrustは、アクセス先（オンプレ）にCloudflaredというアプリで実装します。
Cloudflaredは、Ubuntu、CentOS、Windowsなどで稼働可能です。
Cloudflaredは、ARM版でも稼働します。（AWSのGraviton（c6g.mediumでも問題なく稼働））
CloudflaredはConnectorとして動くので、内部アクセスはNAT（稼働するサーバのIP）になります。
CloudflaredのスケールアウトはConnectorを増やすことで対応可能です。
TCP/UDP/ICMPをカバーします。（ICMPは2023年3月に利用可能になりました）
ConnectorはDNS、HTTPS、QUICを利用します。（プロトコル関係は後述）
トンネル接続の場合はQUICが必須です。
他ソリューションだと、ZscalerのZPAに近いです。
端末側にはCloudflareのWarp Clientを利用します。（プロトコル関係は後述）


- プロトコル関係のまとめ
Cloudflaredのプロトコル関係はこちら
https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/do-more-with-tunnels/ports-and-ips/
Warp Clientのプロトコル関係はこちら
https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/deployment/firewall/

- 導入する前に考慮すること
既存のVPNとの置き換えの場合は、デバイス固有のIPという概念がなくなります（ConnectorでNATされます。）
WarpClientもモバイル側にPPPアダプタの様な動きをしますが、上記の通り接続先からは見えなくなりますのでご注意ください。
モバイル側のアドレスをオンプレミス環境で特定したい場合は、後述するMagic WANを利用すると実現可能となります。

- TIPS
Magic WANを入れるとISP Shared（100.96.0.0/16）のアドレスになるが固定が可能です。
Cloudflareのポータルで、端末単位でISP Sharedのアドレスが付与されます。
端末情報はCloudflareのポータルからこんな感じで見えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/415b0d6d-064c-0d35-d245-61589be1b2e6.png)

## 準備するもの
- 適当なドメイン（.comとか.netとか.infoとか何でもOKです。）
CloudflareはDNSサービス自体も無償で利用できるので、適当にドメインをとって権限DNSをCloudflareに設定します。
DNSレジストラとしての機能もありますので、Cloudflareでドメインを取るのも可能です。
私は、複数ドメイン持っているので、レジストラは既存を使って、権限DNSだけCloudflareに設定しました。

- クレジットカード
登録時にクレジットカードの入力を求められます。無償版の機能だけ使っておけば課金されません。

- Team名を決めておく
zerotrustを接続するときの名前を決めておきます。（ユニークである必要があります）
あとからでも変更が可能です。Zerotrustセットアップ時に必要。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/aead9f0a-f683-e96b-6b16-79c8c55b57e0.png)

### Cloudflareのサービス概要はこちらです。（Webページの抜粋）
2023/4/14 現在の情報です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/44b3b067-b214-98a0-ce9c-de5dcd53884c.png)

オリジナルのリンクはこちら
50ユーザまでは、コミュニティーサポートですが無償なのは素晴らしい。
https://www.cloudflare.com/ja-jp/plans/zero-trust-services/

ドキュメントが非常に充実してます。（英語です）
https://developers.cloudflare.com/cloudflare-one/

## 無償版でできること
CloudflareのZerotrustですが、無償版（Freeプラン）でほとんどの機能が利用可能です。
サポートが受けれない（コミュニティーサポート）ので、サポートが必要であれば有料プランをお勧めします。
契約プランはリセラー専用プランとなります。

## セットアップの流れ
セットアップの大きな流れは以下となります。
1. アカウント作成（クレジットカード要）
1. ドメイン登録（ドメイン要）
1. ゼロトラストセットアップ（エンロール設定、WARPポリシー、FWポリシー、SSL解読対象外設定、ID登録など）
設定するところは割とたくさんありますが、概念だけ分かれば対応可能です。
1. コネクタ（Cloudflared）の導入
WebのUIから設定を作って流し込む方法が一番簡単ですが、冗長構成やVRFを組む場合はCLIからのセットアップが必須です。
GUI+流し込みで対応もできます。簡単なガイドはこちらで。
①Tunnelsをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/746e87fd-f226-e30b-ce31-ffcbe0bec338.png)
②Create a tunnelをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/013571d0-30c1-d74c-2a7e-0a907b4cab75.png)
③トンネル名を入れる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/586db892-bb95-5fc3-6dba-92aee5bc1ddf.png)
④OSを選んで、画面の指示に従います。（黒い部分はセットアップキーです）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/7530cc75-2744-e991-70e9-bb77826db25b.png)
⑤Connectorがセットアップされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/5413cbe0-aa5b-a167-7247-a370b85d17b9.png)
⑥このコネクタ（Cloudflared）が処理するサブネットを入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/9c660e2d-949d-0fa8-e0a1-3a9f915a843c.png)
これで、セットアップは完了です。
Public Hostnameを設定すると、外部ホストを内部に公開できますが、本書では省略します。

1. WARP Client導入
ダウンロードしてモバイルで利用するPCに導入します。
何も設定しなければ、無償版のCloudflareとして利用可能（赤い画面）
![Image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/8aa725a5-7b37-a5d6-b9c0-7f8694b6f5ad.png)
ゼロトラストを設定すると青い画面に遷移します。（同じアプリが遷移します）
![Image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/56dc2cbb-06ac-29de-006a-54c2cdf4b451.png)
1. 利用開始

# DNSによるセキュリティー対策＆コンテンツフィルタ
少しだけゼロトラストからは外れますが・・・。
Cloudflare ZerotrustはDNSによるコンテンツフィルタも利用可能です。
IPの登録が必要ですが、たとえば自宅が固定IPの場合ですと固定IPを登録して、DHCPで配布するDNSの設定をCloudflareに向けることで、セキュリティー対策が可能となります。対象のサイトのQueryでCloudflareのCDNにRedirectしてブロック画面を表示しているようです。無償でここまでできるのは本当にありがたいです！。
- DNS Location設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/e034546d-9ad5-48a4-f955-815a38ff62a4.png)
- DNSは以下のように払い出されます。
マスクしていますが、こちらのDNSをDHCPで配布すればコンテンツフィルタが利用できます。（SSL解読はできない）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/6e317c4c-ebc9-c2c6-bf99-dc78f1c1bf80.png)
- DNSのセキュリティーポリシーはこんな感じで設定しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/8b3ac9ff-d5ad-e152-fe54-c6a9c1fdc905.png)
- アダルトサイトでブロックを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/59ead138-c2bc-ad2a-186e-26968ff9e241.png)
DNSのRedirectで実現していますが、たとえば自宅のテレビとかのブラウザでProxy設定したり、Warpを入れれないなどのシーンで効果を発揮します。（そもそも自宅にProxyは立てないって・・・）
- CloudflareのポータルでDNSのブロックログが残されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/775358/6572fa61-5376-ca5f-d79c-c111bacfc089.png)

# 今後の予定
今後の予定はこのあたりをまとめていきます。
- ドメイン登録まとめ
- ゼロトラストセットアップ
エンロールポリシー
デバイスポリシー
ネットワーク設定
プロファイル設定
ポリシー管理
- Cloudflared導入
- WARP Client導入（このあたりは他の方も書いてそう・・・）

少しづつまとめていきます。
最後までご覧頂きありがとうございます。

## お役立ちリンク集
ドキュメント（英語です）
https://developers.cloudflare.com/cloudflare-one/
リポジトリ（本番環境で動かすならバージョンアップを考慮する必要あり）
https://pkg.cloudflare.com/index.html