Cloudflare WARP Client の設定について

Cloudflare WARP の設定についての説明と組織で使う場合に設定について記述します。

# Device enrollment
## Device enrollment permissions
Cloudflare の組織にログインできるデバイスをルールと認証方法で制御します。IPや国、ログイン方法などの条件が設定できます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/83b9d141-f98a-db61-9ee9-1d289248cf69.png)
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/90cc3819-dc4b-0918-beea-7317bf33b091.png)

ここでは SAML を強制しています。SSO でログインできるなら Cloudflare 側の条件はこれだけにして、Idp 側で制御した方が管理しやすいと思います。

# グローバルセッティングとデバイスセッティング
グローバルセッティングはログインした全てのユーザーが対象になり、デバイスセッティングはプロファイルという単位で作成できユーザーやアクセスグループ、OSなどを条件に対象を限定することができます。

https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/configure-warp/warp-settings/

プロファイルは画面のリストの見た目の上から順に条件にマッチングされ、マッチしたらそこでマッチングを停止します。
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/89bebbcd-aca6-adc9-38be-b8cc6c2a3518.png)

## グローバルセッティング
### Admin override
有効にするとWARPを無効にするときにワンタイムパスワードが必要になります。ワンタイムパスワードが発行できるのは管理者だけです。WARPのON/OFFの切り替えが行える時間も制限できます。

:::note info
これを有効にするにはデバイスセッティングにあるLock WARP switchも有効しなければ機能しません。
:::

![スクリーンショット 2023-02-23 164700.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/0ae897bd-0b60-f24e-9b93-8aa91d3927fe.png)

## デバイスセッティング
### Captive portal detection
WARPが有効になっているとDNSはCloudflareのDNSになります。その場合、空港やカフェのFree Wifiに接続するときにログイン画面に接続できなります。これを有効にすると、WARPクライアントがFree Wifiを検知すると自動でWARPをOFFにしてくれる機能になります。
これができるなら便利だと思いますが、まだ私の環境でこの機能が動いたことはありません。日本での対応は遅いのかもしれません。

### Mode switch
有効にすると、ユーザーが自分で Gateway with WARP mode と Gateway with DoH mode を切り替えることができるようになります。

### Lock WARP switch
有効にすると、ユーザーが自分でWARPをON/OFFできるようになります。

### Allow device to leave organization
有効にすると、ログイン中の組織からユーザー自身がログアウトできるようになります。

### Allow updates
有効にすると、ユーザー自身でWARPのアップデートができるようになります。

:::note warn
OFFにした場合、組織でアップデートを管理する必要があると思いますが、その方法はよくわかりませんでした。
:::

### Auto connect
有効にすると、ユーザーがWARPをOFFにすると指定の時間後に自動でONになります。

### Support URL
URLまたはメールアドレスを設定すると、WARP Clientにボタンが表示されます。メールアドレスの場合は、HTMLの方式で```mailto:メールアドレス```で入力します。
![サポートボタン](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/ca655ccf-9dc4-fb37-03e6-957e6f6ff0e8.png)

### Service mode
接続モードを指定します。Gateway with WARP、Gateway with DoH、Proxy modeから選択します。

### Local Domain Fallback
指定のドメインの名前解決のDNSサーバーを指定できます。省略した場合、端末のNICに設定されているDNSを使用します。

### Split Tunnels
指定のIP、ドメインにアクセスする時にWARPを通すようにする（include）か除外するようにする（exclude）か設定することができます。ワイルドカードが使えますが、モバイルの場合はワイルドカードが有効にならなくてちょっと不便です。
> Wildcard domain prefixes (for example, *.example.com) are supported only if they have valid wildcard DNS records. Other wildcard domains are not supported because the client is unable to match wildcard domains to hostnames when starting up the tunnel. Unsupported wildcard domain prefixes can still exist in your configuration, but they will be ignored on mobile platforms.

[Configure Split Tunnels - Configure Split Tunnels](https://developers.cloudflare.com/cloudflare-one/connections/connect-devices/warp/configure-warp/route-traffic/split-tunnels/#ios-android-and-chromeos-behavior)

### Directly route Office 365 traffic
有効にすると、Office 365へのアクセスが WARP、Gateway を通過せず、直接アクセスするようになります。また、有効にするには Split Tunnels で Exclude IPs and domains を選択しておく必要があります。直接アクセスすることでパフォーマンスが向上するようです。
:exclamation:効果は未検証です。

:::note info
Cloudflare は Microsoft 365 ネットワーク パートナー プログラム（NPP）しているようです。
[Microsoft 365 networking partners](https://cloudpartners.transform.microsoft.com/m365networkingpartners)
:::

# Device posture
接続できるデバイスの条件を設定します。例えば、ディスクが暗号化されていること、ADドメインに参加していることなどを条件にすることができます。設定画面で作成した条件は、アプリケーションのポリシーに設定して初めて有効になるので注意してください。
↓アプリケーションポリシー設定画面
![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29324/b93c187c-dcc5-9f67-f275-d7d3bd29ae1b.png)

:::note
個人の環境ですので実際に試したものは少ないです。特に Device posture providers と Service provider checks に関してはドキュメントを読んだだけです。
:::

## WARP client checks
OSのバージョン、ディスクの暗号化、WARPのサービス起動などの条件をチェックできます。

- Application check
- Carbon Black
- Device serial numbers
- Device UUID
- Disk encryption
- Domain joined
- File check
- Firewall
- OS version
- Require Gateway
- Require WARP
- SentinelOne

## Device posture providers
MDM や MRD や XDR など所謂エンドポイントセキュリティーサービスが有効になっているかというチェックになります。

- CrowdStrike
- Microsoft Endpoint Manager
- Uptycs
- Workspace ONE

## Service provider checks
他のサービスの機能を利用してチェックをします。

- Azure AD ～ AzureAD の条件付きアクセス機能を利用してチェックします。
- Mutual TLS ～ クライアント証明書の有無のチェックをします。
- Tanium ～ Tanium はエンドポイントセキュリティーサービスで、Tanium が持っているデータを条件に利用してチェックします。

# 組織の設定
組織で使用する場合の設定を考えてみました。

| 設定名 | ON? | 備考 |
|:-:|:-:|:-:|
|Device enrollment permissions| ○ | 必須だと思います。 |
| Admin override | ○ | どうしてもOFFにしたい時は必ず発生するので、それに備え有効にします。 |
| Captive portal detection | × | Lock WARP switchをONにするのでこの機能は使用しません。 |
| Mode switch | × | 組織によると思いますが、通常はOFFでよいかと思います。 |
| Lock WARP switch | ○ | 組織メンバーが自由にON/OFFできるのはセキュリティーリスクが高いため、ONに設定します。 |
| Allow device to leave organization | × | 業務で組織を離脱するケースは発生しないと思われるので無効にします。 |
| Allow updates | △ | 管理者でアップデートを管理できるなら無効でもいいと思います。 |
| Auto connect | ○ | OFFにした後にONにし忘れるのを防ぐため有効にします。 |
| Support URL | - | 組織の運用ルールに依ります。 |
| Service mode | - | 組織に適したモードを指定します。 |
| Local Domain Fallback | - | 組織の状況によって、必要なら設定します。  |
| Split Tunnels | - | 組織の状況によって、必要なら設定します。  |
| Directly route Office 365 traffic | - | 365を利用しているようなら設定します。 |
| WARP client checks | ○ | Require WARP は必要だと思います。その他は組織の状況によって、必要なら設定します。 |
| Device posture providers | - | 組織の状況によって、必要なら設定します。 |
| Service provider checks | - | 組織の状況によって、必要なら設定します。 |