Cloudflare GatewayでWebフィルタリングをやってみた

f:id:sbc_saito:20210322205236p:plain 皆様こんにちは! プロダクト技術課の斎藤です

SBクラウドはクラウドフレア・ジャパン株式会社と提携し、Cloudflareのソリューションを提供しております。
今回はCloudflare Gatewayを利用して、簡単にクライアントのWebフィルタリングを行ってみました。

www.sbcloud.co.jp

Webフィルタリングとは

Web(URL)フィルタリングとは、組織・個人によるインターネットの私的利用を制限し
情報漏えいなどの防止や業務効率向上を実現するサービスです。
主に職場や学校等で社員や生徒に閲覧に望ましくないWebサイトをブロックする用途で利用されます。

例:犯罪や麻薬に関わるサイト、アダルトサイト、オンラインゲームサイトをブロック


Cloudflare Gatewayとは

インターネット上のチームとデータを保護する、包括的なセキュリティを提供するソリューションです。
その中の「DNSフィルタリング機能」を使用して、Webフィルタリングを行うことが可能で
悪意のあるコンテンツをネットワークから遮断します。

従来型のシステムとCloudflareの比較 f:id:sbc_saito:20210319153337p:plain

従来型:社内端末のWebフィルタリングを実施するには、クライアントソフトウェアのインストールや制御するサーバインスタンスが必要なのが常識
Cloudflare:クラウド上のDNSで行う画期的なマネージドサービスのため、サーバインスタンスやソフトウェアインストールは不要


Cloudflare Gatewayだと専用サーバや追加ソフトウェアも要らないので
構成もシンプルですし、パフォーマンスに影響することなくWebフィルタリングが行えますね!


ポリシーの設定

まずはクライアントにどの様な制限や挙動を加えたいのかポリシーを設定します。

CloudflareにログインしてAccessタブからTeamsを起動します。 f:id:sbc_saito:20210322093407p:plain

左カラムから[Gateway]→[Policies]を選択→[Add a policy]をクリック。
f:id:sbc_saito:20210319162021p:plain

ポリシー名を決めましょう。
今回は「saito_policy」としました。 f:id:sbc_saito:20210319163047p:plain

続いて[Security risks]タブへ遷移し、「Block all」にチェックを入れて
Cloudflare Gatewayのデータベースに登録されている、全ての脅威に対しブロックを行います。
Malwareはもちろんとして、最近流行りのWebブラウザ上での暗号資産のマイニング行為(Cryptomining)も
ブロックできるなど、脅威トレンドに敏感で安心感がありますね。 f:id:sbc_saito:20210319163213p:plain

次に[Content categories]タブへ遷移し、ブロックするWebサイトをカテゴリ単位で決めます。 ブロックしたいカテゴリにチェックを入れるだけです。 f:id:sbc_saito:20210319163610p:plain

横に「▼」があるカテゴリ名は、さらにサブカテゴリまで指定が可能です。
例えば[Shopping & Auctions]はこんな感じ。
今回は、[Coupons]だけチェックを外して登録してみます。 f:id:sbc_saito:20210319163621p:plain

カテゴリの選択で対象となるドメインは
Cloudflareのデータベースに登録されているドメインとなります。
随時データベースは更新されておりますが、対象のドメインが制御できなかった場合は 以下の方法で対応可能です。

[Custom]タブでは、ドメイン単位で設定が可能なので
カテゴリではブロックできなかったWebサイトや、逆に例外的に許可したいWebサイトを指定できます。 [Add a destination]ボタンから設定できます。 f:id:sbc_saito:20210319163626p:plain

今回は[yahoo.co.jp]を明示的にブロックしてみます。 f:id:sbc_saito:20210319163635p:plain

追加されましたね! 右上の[Save]ボタンをクリックするのをお忘れずに f:id:sbc_saito:20210319163646p:plain




ロケーションの設定

先ほど設定したポリシーを、どの条件の通信において適用させるか決めるためロケーションを設定します。
左カラムより[Gateway]→[Locations]を選択して[Add a location]ボタンをクリック。 f:id:sbc_saito:20210319162039p:plain

ロケーション設定の名前を決めます。
今回は「saito_gw」としました。 さらに下には、今CloudflareへアクセスしているクライアントのグローバルIPv4アドレスが表示されていると思います。
このIPアドレスがロケーションとなります。
そしてAssign policiesは先程設定した「saito_policy」を選択します。 f:id:sbc_saito:20210319162031p:plain

画面を下にスクロールして、Default Locationは今回は特に設定しませんので
「Add location」ボタンをクリックしてロケーションを確定させます。
(Default Locationに関連するWARPはまた後日ご紹介しますね!) f:id:sbc_saito:20210322192459p:plain

すると、ロケーションに設定したIPアドレスと、Cloudflare DNSサーバへの接続方法が記載されたページが表示されます。
IPv6やDNS over TLS/HTTPSにも対応しているあたり流石Cloudflare f:id:sbc_saito:20210319163932p:plain

画面を下の方にスクロールして...
私の環境はmacOSなので、macOSのインストラクションを見てみましょう。
設定方法は簡単ですね。DNSサーバを設定するだけ。 f:id:sbc_saito:20210322193330p:plain

記載されている通りにmacのWiFiインタフェースにDNSサーバを設定してみました。 f:id:sbc_saito:20210322193710p:plain

インストラクションを読んで設定が終わったら、Cloudflareに戻って[Done]ボタンを押して設定を完了させましょう。

ここまでで設定は全て完了です。
Cloudflare Gatewayの仕組みは、ロケーションに設定したIPアドレスから、Cloudflareが提示したDNSサーバ(今回は172.64.36.x)へDNSクエリを送信すると、設定したPolicy内容のDNS応答をします。

これがCloudflare流のWebフィルタリング手法です!

動作テスト

いくつかのWebサイトへアクセスして、設定した内容で正しくブロックorアクセスされるかテストしてみました。

1.eBay(https://www.ebay.co.jp/)へアクセス
eBayはオークションサイトなので、ブロックできれば成功です。
→ブロック成功 f:id:sbc_saito:20210322194413p:plain

2.Amazon.co.jp(https://www.amazon.co.jp/) へアクセス
Amazonはショッピングサイトなので、ブロックできれば成功です。
→ブロック成功 f:id:sbc_saito:20210322194413p:plain

3.LUXA(https://luxa.jp/) へアクセス
LUXAはクーポンサイトなので、サブカテゴリで[Coupons]のチェックは外しているため アクセスできれば成功ですね!
→アクセス成功 f:id:sbc_saito:20210322195111p:plain

4.Yahoo!(https://www.yahoo.co.jp/) へアクセス
明示的にYahoo!へのアクセスをブロックする様に設定しましたね。
→ブロック成功 f:id:sbc_saito:20210322200115p:plain

まとめ

Cloudflare Gatewayを活用することで簡単にWebフィルタリングが実現できました!
カテゴリ別で楽に設定・運用できますし、細かく制御したければドメイン毎でも設定可能。
更にはマルウェア、フィッシング、ランサムウェアなどのセキュリティ脅威からも防ぐ優れものです!

専用サーバも不要ですし、クライアント端末へのソフトウェアインストールも不要です。
Webプロキシ形式ではないのでUDP通信も利用できてWeb会議のパフォーマンスにも影響しません。

現行のWebフィルタリングのパフォーマンスやセキュリティにお困りの方に、ピッタリのソリューションです!

Cloudflare関連記事

www.sbcloud.co.jp www.sbcloud.co.jp www.sbcloud.co.jp