はじめての Cloudflare One (1) Secure Web Gateway で Agentless DNS Filtering
この連載記事では 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機能を設定していきます。マネージメントコンソールGateway
→Firewall Policies
をクリックします。
Add DNS policy
を押します。
Policyの名前や説明を以下のように記載します。
Traffic
のAdd condition
を押します。
以下のように入力します。
Step3
のSelect an action
でBlock
を選びます。
Display block page
のトグルをオンにします。
併せてこちらもトグルをオンします。上記の設定はブラウザからのアクセスに反映されますが、こちらはアプリからの設定に反映されます。
Create policy
ボタンを押します。
以下のように1個ポリシーができます。
この手順で作成したのはDNSポリシーです。ブラウザはまずgoogle.com
へアクセスする際にDNSサーバにgoogle.com
を解決するDNSクエリを投げます。その際にこのポリシーに照らし合わせアクセスがブロックされます。(つまり名前解決が失敗する)その際に上記で設定した通り独自のDisplay block page
が表示されます。これは勿論カスタマイズは可能ですがこの記事では本題ではないためデフォルトのまま作業を進めます。
DNSへの問い合わせを制御するわけですから、皆さんがテストに使うブラウザが用いるDNSサーバをCloudflareが指定する物に書き換える必要があります。この手順を行うと一時的にgoogle.com
へアクセスできなくなるので気を付けてください。(すぐ戻すことはできます)テストで用いるブラウザは何でもOKですが、以下の手順では使い慣れたChromeを使います。
マネージメントコンソールでGateway
→DNS 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全体への設置は飛ばします。
ブラウザ種別後の設定方法は以下にまとまっています。
Chromeの手順は以下です。
設定
からプライバシーとセキュリティ
をクリックします。
セキュリティ
→セキュアDNSを使用する
のトグルをオンにします。
この例ではChromeの組織設定上設定変更不可能になっていますが皆さんの通常環境ではオンにできるはずです。カスタムプロバイダーの欄に先ほどcopyしたDNS over HTTPSの値を入力し保存しておきます。
google.com
へのアクセスのみBlockされるはずです。
作業を完了させる前に必ずブラウザのDNS設定をもとに戻しておいてください。
この記事では最も簡単な手順を試してみました。
また次の記事では追加機能を試していきたいと思います。
Discussion