💬

はじめての Cloudflare One (1) Secure Web Gateway で Agentless DNS Filtering

2024/01/18に公開

この連載記事では Cloudflare が提供する Cloudflare One(Zero Trustを実現させる関連サービス群)を触っていきたいと思います。

Cloudflare が提供するゼロトラスト関連サービスはいくつかの機能に分かれていますが、大きく2つ Cloudflare Access と Cloudflare Gateway が中心のコンポーネントとなりその周辺に複数の機能が存在しています。

Access と Gateway + Secure Web Gateway


社内ネットワークやデータセンターのリソースへのアクセスのセキュリティをつかさどるのがAccessでZTNA(Zero Trust Network Access)を実現します。これについてはまた機会があれば別の記事で詳しく触れたいと思います。SaaSやクラウド等インターネットへのアクセスをつかさどるのがGatewayです。Gatewayはインターネットへのアクセスをセキュアにすることから「Secure Web Gateway」とも言われます

Gatewayはさらに、DLP(Data Loss Prevention) や RBI(Remote Browser Isolation) などと連携し包括的な機能を提供します。また Gateway は一般用語でいうと CASB (Cloud Access Security Broker) と呼称されます。

Cloud Access Security Broker と SASE (Secure Access Service Edge)

CASBと似たコンセプトにSASEというものがあります。この二つは非常に似たコンセプトです。
一般的には CASB は関連するセキュリティポリシーの管理に特化しているのに対して、SASE は、さらにネットワークを統合し、セキュリティを担保したうえでアクセスを実現するコンセプトを指します。Cloudflare はL7,L6,L5,L4,L3,L2レイヤのネットワーク機能を提供しているため、提供しているサービスは SASE であると言えます。そして SASE のサブセットが CASB という関係性です。
そして SWG はL7を中心としたインターネット経由のアクセスに特化した機能を提供するのに対してCSAB はさらに広範囲のクラウドサービスへのアクセスを管理するため、CASB のサブセットが SWG と言えます。

まとめるとSASE > CASB > SWG という関係性であり、Cloudflare Oneというサービスは SASE です。そしてそのサブセットである Gateway は CASB です。WARP というエージェントを入れるモードとエージェントレスモードが存在していますが、この記事ではまず第一回として エージェントレスモードで SWG を設定し特定ブラウザによる特定ドメインのアクセスを禁止してみます。

やってみる

Cloudflareのアカウントを開設済とします。開設時点ではクレジットカードは不要でメールアドレスだけでOKです。(あとでクレジットカード入力が求められますが課金はされません)
ログイン出来たら、左ペインのZero Trustをおします。

TeamというZTNA用ドメインをまずは入力します。この値はGlobalで一意なので例えば皆さんの名前+何かの数字など少し長めの値をセットしてみて下さい。
次にプランの設定画面が出てきますのでFreeを選びます。

クレジットカード番号の入力が求められます。今回の手順であれば無償ですので課金されることはありません。

DNS Filtering による Firewall Policies の設定

以上の手順で、アカウント初期セットアップが完了しました。
次にSWG機能を設定していきます。マネージメントコンソールGatewayFirewall Policiesをクリックします。

Add DNS policyを押します。

Policyの名前や説明を以下のように記載します。

TrafficAdd conditionを押します。

以下のように入力します。

Step3Select an actionBlockを選びます。

Display block pageのトグルをオンにします。

併せてこちらもトグルをオンします。上記の設定はブラウザからのアクセスに反映されますが、こちらはアプリからの設定に反映されます。

Create policyボタンを押します。
以下のように1個ポリシーができます。

この手順で作成したのはDNSポリシーです。ブラウザはまずgoogle.comへアクセスする際にDNSサーバにgoogle.comを解決するDNSクエリを投げます。その際にこのポリシーに照らし合わせアクセスがブロックされます。(つまり名前解決が失敗する)その際に上記で設定した通り独自のDisplay block pageが表示されます。これは勿論カスタマイズは可能ですがこの記事では本題ではないためデフォルトのまま作業を進めます。

DNSへの問い合わせを制御するわけですから、皆さんがテストに使うブラウザが用いるDNSサーバをCloudflareが指定する物に書き換える必要があります。この手順を行うと一時的にgoogle.comへアクセスできなくなるので気を付けてください。(すぐ戻すことはできます)テストで用いるブラウザは何でもOKですが、以下の手順では使い慣れたChromeを使います。

マネージメントコンソールでGatewayDNS Locationsをクリックします。

Add a locationを押します。

test Chromeと入力します。

Add IPを押すとクライアントIPアドレスをベースとして制御しますが、一旦そのままオフにしておき、あくまで任意で設定したブラウザのみ制御を掛けるようにします。
Set as Default DNS Locationにチェックを付けます。

Add locationをクリックします。
先ほどの設定トップに戻り、先ほど作成されたDNS Locationをクリックすると以下のような画面が出てきます。

DNS over HTTPSの値をcopyしておきます。このあたいをChromeにセットすることでChromeが独自のDNSサーバを使うようにします。
(WindowsやLinux、MacのOS全体をこのDNSサーバを用いるようにすることももちろん可能です。この場合OSが使うDNSサーバをCloudflareが指定する物に置き換えることになります。現在CloudflareではIPv6のDNSアドレスのみを提供しています。この手順ではOS全体への設置は飛ばします。

ブラウザ種別後の設定方法は以下にまとまっています。
https://developers.cloudflare.com/learning-paths/dns-filtering/connect-devices/change-dns-resolver/

Chromeの手順は以下です。
設定からプライバシーとセキュリティをクリックします。

セキュリティセキュアDNSを使用するのトグルをオンにします。

この例ではChromeの組織設定上設定変更不可能になっていますが皆さんの通常環境ではオンにできるはずです。カスタムプロバイダーの欄に先ほどcopyしたDNS over HTTPSの値を入力し保存しておきます。

google.comへのアクセスのみBlockされるはずです。

作業を完了させる前に必ずブラウザのDNS設定をもとに戻しておいてください。

この記事では最も簡単な手順を試してみました。
また次の記事では追加機能を試していきたいと思います。

Discussion