【Fortigate】DNSフィルタの設定と動作確認 FortiOS6.4.3

FortiGate の DNS フィルタは、端末からの DNS の問い合わせを FortiGuard のドメインのレーティング(カテゴリ分け)と照らし合わせ、カテゴリごとに決めたアクションで DNS の応答を制御する機能です。名前解決の段階で止めるので、Web フィルタのように HTTP/HTTPS の通信そのものを検査しなくても、危険なサイトや業務に不要なサイトへのアクセスを抑えられます。

この記事では、FortiGate を端末の DNS サーバとして動かし、DNS フィルタのモニタ、ブロック(ブロックポータルへのリダイレクト)、セーフサーチの強制を順に確認します。検証時の FortiOS は 6.4.3 です。

この記事でわかること
  1. FortiGate を DNS サーバにして DNS フィルタを適用する設定
  2. 名前解決ができないとき(no available Fortiguard SDNS servers)の対処
  3. モニタ、ブロックポータルへのリダイレクト、セーフサーチの動作とログ

DNS フィルタのしくみ

端末(10.0.1.25)の DNS サーバを FortiGate の LAN 側のアドレス(10.0.1.128)にします。FortiGate は問い合わせをシステム設定の DNS サーバに転送して名前解決し、あわせて FortiGuard の SDNS サーバでドメインのカテゴリを調べます。カテゴリに設定したアクションに応じて、本来の IP アドレスを返すか、ブロックポータルのアドレスを返すかが決まります。

Internet端末10.0.1.25FortiGateDNS サーバ(10.0.1.128)+ DNS フィルタシステム設定の DNSFortiGuardSDNS サーバ14231端末が FortiGate に問い合わせる2システム設定の DNS に転送して名前解決3FortiGuard にドメインのカテゴリを照会4カテゴリのアクションに応じて応答
図1 DNS フィルタの流れ(端末 → FortiGate → FortiGuard)

カテゴリごとに選べるアクションと、端末への応答の違いは次のとおりです。

許可DNS の応答本来の IP アドレスサイトにアクセスできるモニタDNS の応答本来の IP アドレスサイトにアクセスできるログにモニタのメッセージを記録ブロックポータルにリダイレクトDNS の応答208.91.112.55ブロックページに誘導ログに拒否のメッセージを記録
図2 アクションごとの DNS の応答
アクション動作
許可本来の IP アドレスをそのまま応答します。
モニタ本来の IP アドレスを応答し、ログを記録します。
ブロックポータルに
リダイレクト
応答の IP アドレスをブロックポータルのアドレスに置き換えます。既定は FortiGuard のブロックポータル(208.91.112.55)です。

FortiGuard のカテゴリでフィルタするには、FortiGuard Web フィルタのライセンスが必要です。

補足

DNS フィルタは、FortiGate の DNS サーバ(DNS サービス)に適用する方法と、ファイアウォールポリシーに適用してポリシーを通る DNS の通信を検査する方法があります。この記事では両方に default プロファイルを適用しています。端末が FortiGate を DNS サーバとして使う場合は、DNS サービス側のフィルタで問い合わせが検査されます。

FortiGate を DNS サーバとして設定

DNS フィルタを表示する

初期状態では、DNS フィルタの設定項目が GUI に表示されません。システム ›› 表示機能設定 の セキュリティ機能 で、DNSフィルタ を有効にします。

画面イメージについて

この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。

FortiGate 管理画面画面イメージ
システム ›› 表示機能設定
セキュリティ機能
1DNSフィルタ ON
Explicitプロキシ OFF
Eメールフィルタ OFF
⋮(中略)
図3 表示機能設定で DNS フィルタを有効にする(実際の画面ではなく、設定する項目を示したイメージです)

インターフェースで DNS サービスを有効にする

ネットワーク ›› DNSサーバ を開き、インターフェース上のDNSサービス の 新規作成 をクリックします。新規 DNS サービスの画面で、次のように設定します。

項目設定
インターフェースLAN 側のポートを選びます。今回は port2 に LAN という別名(エイリアス)を付けているので、LAN (port2) を選びます。
モードシステム設定DNSへ転送 を選びます。端末からの問い合わせを、FortiGate のシステム設定の DNS サーバに転送します。
DNSフィルタ有効にし、default を選びます。
FortiGate 管理画面画面イメージ
ネットワーク ›› DNSサーバ ›› 新規DNSサービス
1インターフェースLAN (port2)
2モード○ 再帰的○ 非再帰的◉ システム設定DNSへ転送
3DNSフィルタ ON default
OKキャンセル
図4 新規 DNS サービスの設定(実際の画面ではなく、設定する項目を示したイメージです)

OK をクリックすると、一覧に DNS サービスが追加されます。

FortiGate 管理画面画面イメージ
ネットワーク ›› DNSサーバ ›› インターフェース上のDNSサービス
インターフェースモードDNSフィルタ
1LAN (port2)システム設定DNSへ転送default
図5 追加された DNS サービス(実際の画面ではなく、表示のポイントを示したイメージです)

DNS フィルタのプロファイル設定

default プロファイルを確認する

セキュリティプロファイル ›› DNSフィルタ を開くと、default というプロファイルが用意されています。default をクリックすると、プロファイルの編集画面が表示されます。

この画面で、ボットネット C&C のドメインへの問い合わせの扱いや、FortiGuard のカテゴリごとのアクションを設定できます。ここでは設定を変えずに OK をクリックします。

FortiGate 管理画面画面イメージ
セキュリティプロファイル ›› DNSフィルタ ›› DNSフィルタプロファイルの編集
名前default
コメントDefault dns filtering.
1ボットネットC&Cのリクエストをブロックポータルにリダイレクト ON
69972 ドメイン ボットネットパッケージ
Google, Bing, YouTube で ‘セーフサーチ’ を強制 OFF
2FortiGuardカテゴリベースのフィルタ ON
名前アクション
⊟ Unrated(1) 
Unrated 許可
⊟ アダルト/成人コンテンツ(15) 
民間信仰 モニタ
人工中絶 モニタ
その他のアダルトマテリアル モニタ
政策支援団体 モニタ
ギャンブル モニタ
ヌードとワイセツ モニタ
⋮(以下略)
OKキャンセル
図6 default プロファイルの編集画面(実際の画面ではなく、表示のポイントを示したイメージです)

ファイアウォールポリシーへの適用

ポリシーで DNS フィルタを有効にする

ポリシー&オブジェクト ›› ファイアウォールポリシー で、LAN からインターネットへのポリシーを開きます。セキュリティプロファイル の DNSフィルタ を有効にし、プロファイルを default にします。DNS フィルタを有効にすると、SSL インスペクションは自動的に certificate-inspection になりました。

FortiGate 管理画面画面イメージ
ファイアウォールポリシー ›› ポリシーの編集
セキュリティプロファイル
アンチウイルス OFF
Webフィルタ OFF
1DNSフィルタ ON default
アプリケーションコントロール OFF
IPS OFF
ファイルフィルタ OFF
2SSLインスペクションcertificate-inspection
図7 ポリシーに DNS フィルタを適用する(実際の画面ではなく、設定する項目を示したイメージです)

名前解決ができない場合の対応

DNS クエリのログで原因を調べる

端末の DNS サーバを FortiGate の LAN 側のアドレス(10.0.1.128)に変更し、名前解決を試しました。ところが、名前解決の応答が返ってきません。

切り分けのため、セキュリティプロファイル ›› DNSフィルタ の default プロファイルで、オプション の すべてのDNSクエリとレスポンスを記録する を有効にします。

FortiGate 管理画面画面イメージ
DNSフィルタプロファイルの編集 ›› オプション
ポータルIPへリダイレクト◉ FortiGuardのデフォルトを利用○ 指定
208.91.112.55
レーティングエラー発生時にDNSリクエストを許可する OFF
1すべてのDNSクエリとレスポンスを記録する ON
OKキャンセル
図8 すべての DNS クエリとレスポンスを記録する(実際の画面ではなく、設定する項目を示したイメージです)

ログ&レポート ›› DNSクエリ でログを確認すると、ログの詳細の エラー に、FortiGuard の SDNS サーバが使えないことを示す no available Fortiguard SDNS servers が出ていました。

FortiGate 管理画面画面イメージ
ログ&レポート ›› DNSクエリ
DNSタイプ送信元ドメイン名
dns-response10.0.1.25www.youtube.com
dns-response10.0.1.25www.google.com
dns-response10.0.1.25www.google.com.ap-northeast-1.ec2-utili…
1dns-response10.0.1.25www.google.com
⋮(以下略)
ログ詳細
日付/時刻2020/11/13 21:51:49
セッションID2018
2エラーno available Fortiguard SDNS servers
送信元 IP/ポート10.0.1.25/56025
送信元インターフェースLAN (port2)
宛先 IP10.0.1.128
図9 SDNS サーバが使えないことを示すログ(実際の画面ではなく、表示のポイントを示したイメージです)

SDNS サーバの指定を変える

同じ事象が Fortinet のコミュニティフォーラムでも報告されていました(FortiGuard DNS problems: “no available Fortiguard SDNS servers” & “A rating error occurs”)。フォーラムで紹介されていた次の設定を CLI で入れると、名前解決ができるようになり、エラーも出なくなりました。

FortiGate

config system fortiguard
    set fortiguard-anycast disable
    set protocol udp
    set port 8888
    set sdns-server-ip 208.91.112.220
end
設定意味
set fortiguard-anycast disableFortiGuard への接続に Anycast を使わず、Unicast(指定したサーバ)を使います。
set protocol udp
set port 8888
FortiGuard との通信のプロトコルとポートを UDP の 8888 にします。
set sdns-server-ip 208.91.112.220DNS フィルタが問い合わせる SDNS サーバのアドレスを指定します。
現在の状況

FortiGuard への接続は、FortiOS 6.4.3 以降は Anycast が既定です。上の設定は、Anycast をやめて Unicast で SDNS サーバを指定する回避策です。

Fortinet のナレッジでは、Unicast を使う場合に SDNS サーバを複数指定して冗長にする方法や、diagnose test application dnsproxy 3 でライセンスと SDNS サーバの状態を確かめる方法が紹介されています。同じエラーが出たときは、まずライセンスの有効期限と FortiGuard への到達性を確認してください。

名前解決を確認したあとのログです。エラーは出ていません。

FortiGate 管理画面画面イメージ
ログ&レポート ›› DNSクエリ
DNSタイプ送信元ドメイン名クエリタイプ
dns-response10.0.1.25www.google.comAAAA
dns-query10.0.1.25www.google.comAAAA
1dns-response10.0.1.25www.google.comA
dns-query10.0.1.25www.google.comA
⋮(以下略)
ログ詳細
日付/時刻2020/11/13 22:23:03
セッションID3280
送信元 IP/ポート10.0.1.25/59171
送信元インターフェースLAN (port2)
図10 名前解決できるようになったあとのログ(実際の画面ではなく、表示のポイントを示したイメージです)

名前解決ができるようになったので、すべてのDNSクエリとレスポンスを記録する は無効に戻します。

端末の動作確認(モニタ)

カテゴリのアクションをモニタにする

セキュリティプロファイル ›› DNSフィルタ の default プロファイルで、FortiGuardカテゴリベースのフィルタ の ストリーミングメディアとダウンロード を、テスト用に モニタ にします。これで、このカテゴリのドメインを名前解決したときにログが記録されます。

FortiGate 管理画面画面イメージ
DNSフィルタプロファイルの編集 ›› FortiGuardカテゴリベースのフィルタ
許可 モニタ ブロックポータルにリダイレクト
名前アクション
⋮(中略)
⊟ 帯域を消費しやすいサイト(6) 
フリーウェアとソフトウェアのダ… 許可
ファイル共有とストレージ 許可
1ストリーミングメディアとダウンロード モニタ
ピアツーピアファイル共有 許可
インターネットラジオとテレビ 許可
インターネット電話 許可
OK
図11 ストリーミングメディアとダウンロードをモニタにする(実際の画面ではなく、設定する項目を示したイメージです)

あわせて、ログ&レポート ›› DNSクエリ の一覧で、カラムの設定(一覧の左上の歯車)から カラムを選択 ›› メッセージ を追加しておきます。アクションの結果がメッセージに表示されます。

サイトにアクセスしてログを見る

端末から YouTube とニコニコ動画にアクセスします。どちらも ストリーミングメディアとダウンロード のカテゴリに属するサイトです。モニタなので、どちらも通常どおり表示されます。

端末のブラウザ画面イメージ
https://www.youtube.com/
表示される通常どおりページが開く
https://www.nicovideo.jp/
表示される通常どおりページが開く
図12 モニタではサイトがそのまま表示される(実際の画面ではなく、結果を示したイメージです)

ログ&レポート ›› DNSクエリ でログを確認すると、メッセージに Domain is monitored と表示され、ドメインがモニタされていることがわかります。

FortiGate 管理画面画面イメージ
ログ&レポート ›› DNSクエリ
DNSタイプ送信元ドメイン名クエリメッセージ
dns-response10.0.1.25www.youtube.comAAAA1Domain is monitored
dns-response10.0.1.25www.youtube.comADomain is monitored
dns-response10.0.1.25www.youtube.comADomain is monitored
⋮
dns-response10.0.1.25www.nicovideo.jpADomain is monitored
dns-query10.0.1.25www.nicovideo.jpA 
dns-response10.0.1.25www.nicovideo.jpADomain is monitored
dns-query10.0.1.25www.nicovideo.jpA 
図13 モニタされたドメインのログ(実際の画面ではなく、表示のポイントを示したイメージです)

ログの詳細では、ドメインが属するカテゴリと、応答した IP アドレスを確認できます。

FortiGate 管理画面画面イメージ
ログ&レポート ›› DNSクエリ ›› ログ詳細(www.youtube.com、A)
クエリクラスIN
1IPアドレス(伏せています)
2カテゴリ25
カテゴリ説明Streaming Media and Download
図14 ログの詳細に表示されるカテゴリと応答(実際の画面ではなく、表示のポイントを示したイメージです)

端末の動作確認(ブロック)

アクションをブロックポータルにリダイレクトにする

今度は、default プロファイルの ストリーミングメディアとダウンロード を、テスト用に ブロックポータルにリダイレクト にします。この設定では、このカテゴリのドメインを名前解決すると、既定では FortiGuard のブロックポータル(208.91.112.55)のアドレスが応答されます。

FortiGate 管理画面画面イメージ
DNSフィルタプロファイルの編集 ›› FortiGuardカテゴリベースのフィルタ
名前アクション
⋮(中略)
⊟ 帯域を消費しやすいサイト(6) 
フリーウェアとソフトウェアのダ… 許可
ファイル共有とストレージ 許可
1ストリーミングメディアとダウンロード ブロックポータルにリダイレクト
ピアツーピアファイル共有 許可
インターネットラジオとテレビ 許可
インターネット電話 許可
OK
図15 ストリーミングメディアとダウンロードをブロックポータルにリダイレクトする(実際の画面ではなく、設定する項目を示したイメージです)

サイトにアクセスしてログを見る

まず YouTube にアクセスすると、サイトは表示されません。名前解決で 208.91.112.55 が返り、ブラウザは HTTPS でこのアドレスに接続しますが、証明書のホスト名が www.youtube.com と一致しないためエラーになります。YouTube は HTTP Strict Transport Security(HSTS)を使っているので、警告を無視して先に進むこともできません。

次にニコニコ動画に http://www.nicovideo.jp/ でアクセスすると、ブロック画面が表示されます。www.nicovideo.jp の名前解決で 208.91.112.55 が返り、このアドレスに HTTP でアクセスしたためです。208.91.112.55 は、FortiGuard が用意しているブロックポータルです。

端末のブラウザ画面イメージ
https://www.youtube.com/
このサイトは安全ではありませんエラー コード:DLG_FLAGS_SEC_CERT_CN_INVALID
HSTS を使用しているため、このサイトに移動できない
http://www.nicovideo.jp/
Web Page Blocked!カテゴリによりブロックされたことを示すページ
図16 ブロックポータルにリダイレクトされたときの表示(実際の画面ではなく、結果を示したイメージです)

どちらのサイトも、ログのメッセージに Domain belongs to a denied category in policy と表示され、カテゴリによって拒否されたことがわかります。

FortiGate 管理画面画面イメージ
ログ&レポート ›› DNSクエリ
DNSタイプ送信元ドメイン名クエリメッセージ
dns-response10.0.1.25www.youtube.comA1Domain belongs to a denied category in policy
dns-response10.0.1.25www.youtube.comADomain belongs to a denied category in policy
dns-response10.0.1.25www.youtube.comAAAADomain belongs to a denied category in policy
⋮
dns-response10.0.1.25www.nicovideo.jpADomain belongs to a denied category in policy
dns-response10.0.1.25www.nicovideo.jpADomain belongs to a denied category in policy
図17 カテゴリで拒否されたドメインのログ(実際の画面ではなく、表示のポイントを示したイメージです)

DNS セーフサーチの有効化

セーフサーチを強制する

DNS フィルタでは、Google、Bing、YouTube に対してセーフサーチを強制し、不適切な内容が検索結果に出にくくできます。FortiGate は、これらの検索サイトの名前解決に、子ども・学校向けの制限付きのアドレスを応答します。

セキュリティプロファイル ›› DNSフィルタ の default プロファイルで、Google, Bing, YouTube で 'セーフサーチ' を強制 を有効にします。YouTube については、YouTubeへのアクセスを制限する で Strict か Moderate を選べます。

FortiGate 管理画面画面イメージ
セキュリティプロファイル ›› DNSフィルタ ›› DNSフィルタプロファイルの編集
名前default
ボットネットC&Cのリクエストをブロックポータルにリダイレクト ON
69998 ドメイン ボットネットパッケージ
1Google, Bing, YouTube で ‘セーフサーチ’ を強制 ON
YouTubeへのアクセスを制限する○ Strict◉ Moderate
FortiGuardカテゴリベースのフィルタ ON
OKキャンセル
図18 セーフサーチを強制する(実際の画面ではなく、設定する項目を示したイメージです)

検索サイトとログを確認する

端末から Google や Bing にアクセスすると、検索画面は通常どおり表示されます。Google で検索すると、画面にセーフサーチがオンになっていることが表示され、不適切と思われる内容は検索結果から除外されます。

端末のブラウザ画面イメージ
www.google.co.jp/search?safe=strict&…
セーフサーチ: オン検索結果の画面の右上に表示される
図19 セーフサーチがオンになった Google の検索結果(実際の画面ではなく、表示のポイントを示したイメージです)

DNS フィルタのログのメッセージには DNS Safe Search enforced と表示され、セーフサーチが強制されていることを確認できます。

FortiGate 管理画面画面イメージ
ログ&レポート ›› DNSクエリ
DNSタイプ送信元ドメイン名クエリメッセージ
dns-response10.0.1.25www.google.co.jpA1DNS Safe Search enforced
dns-response10.0.1.25www.google.comADNS Safe Search enforced
dns-response10.0.1.25www.bing.comADNS Safe Search enforced
dns-response10.0.1.25www.bing.comADNS Safe Search enforced
図20 セーフサーチが強制されたログ(実際の画面ではなく、表示のポイントを示したイメージです)

まとめ

設定・確認内容
DNS サーバネットワーク ›› DNSサーバ で LAN 側のインターフェースに DNS サービスを作り、システム設定DNSへ転送 と DNS フィルタ default を設定
ポリシーLAN からインターネットへのポリシーで DNS フィルタ default を有効にする
名前解決できないDNS クエリのログで no available Fortiguard SDNS servers を確認し、FortiGuard(SDNS サーバ)の設定を見直す
モニタサイトは表示され、ログに Domain is monitored
ブロックポータルに
リダイレクト
208.91.112.55 が応答され、ログに Domain belongs to a denied category in policy
セーフサーチGoogle、Bing、YouTube で強制され、ログに DNS Safe Search enforced

コメント