FortiGate の DNS フィルタは、端末からの DNS の問い合わせを FortiGuard のドメインのレーティング(カテゴリ分け)と照らし合わせ、カテゴリごとに決めたアクションで DNS の応答を制御する機能です。名前解決の段階で止めるので、Web フィルタのように HTTP/HTTPS の通信そのものを検査しなくても、危険なサイトや業務に不要なサイトへのアクセスを抑えられます。
この記事では、FortiGate を端末の DNS サーバとして動かし、DNS フィルタのモニタ、ブロック(ブロックポータルへのリダイレクト)、セーフサーチの強制を順に確認します。検証時の FortiOS は 6.4.3 です。
- FortiGate を DNS サーバにして DNS フィルタを適用する設定
- 名前解決ができないとき(no available Fortiguard SDNS servers)の対処
- モニタ、ブロックポータルへのリダイレクト、セーフサーチの動作とログ
DNS フィルタのしくみ
端末(10.0.1.25)の DNS サーバを FortiGate の LAN 側のアドレス(10.0.1.128)にします。FortiGate は問い合わせをシステム設定の DNS サーバに転送して名前解決し、あわせて FortiGuard の SDNS サーバでドメインのカテゴリを調べます。カテゴリに設定したアクションに応じて、本来の IP アドレスを返すか、ブロックポータルのアドレスを返すかが決まります。
カテゴリごとに選べるアクションと、端末への応答の違いは次のとおりです。
| アクション | 動作 |
|---|---|
| 許可 | 本来の 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フィルタ を有効にします。
この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。
| 1DNSフィルタ | ON |
| Explicitプロキシ | OFF |
| Eメールフィルタ | OFF |
| ⋮(中略) | |
インターフェースで DNS サービスを有効にする
ネットワーク ›› DNSサーバ を開き、インターフェース上のDNSサービス の 新規作成 をクリックします。新規 DNS サービスの画面で、次のように設定します。
| 項目 | 設定 |
|---|---|
| インターフェース | LAN 側のポートを選びます。今回は port2 に LAN という別名(エイリアス)を付けているので、LAN (port2) を選びます。 |
| モード | システム設定DNSへ転送 を選びます。端末からの問い合わせを、FortiGate のシステム設定の DNS サーバに転送します。 |
| DNSフィルタ | 有効にし、default を選びます。 |
| 1インターフェース | LAN (port2) |
| 2モード | ○ 再帰的○ 非再帰的◉ システム設定DNSへ転送 |
| 3DNSフィルタ | ON default |
OK をクリックすると、一覧に DNS サービスが追加されます。
| インターフェース | モード | DNSフィルタ |
|---|---|---|
| 1LAN (port2) | システム設定DNSへ転送 | default |
DNS フィルタのプロファイル設定
default プロファイルを確認する
セキュリティプロファイル ›› DNSフィルタ を開くと、default というプロファイルが用意されています。default をクリックすると、プロファイルの編集画面が表示されます。
この画面で、ボットネット C&C のドメインへの問い合わせの扱いや、FortiGuard のカテゴリごとのアクションを設定できます。ここでは設定を変えずに OK をクリックします。
| 名前 | default |
| コメント | Default dns filtering. |
| 1ボットネットC&Cのリクエストをブロックポータルにリダイレクト | ON 69972 ドメイン ボットネットパッケージ |
| Google, Bing, YouTube で ‘セーフサーチ’ を強制 | OFF |
| 2FortiGuardカテゴリベースのフィルタ | ON |
| 名前 | アクション |
|---|---|
| ⊟ Unrated(1) | |
| Unrated | 許可 |
| ⊟ アダルト/成人コンテンツ(15) | |
| 民間信仰 | モニタ |
| 人工中絶 | モニタ |
| その他のアダルトマテリアル | モニタ |
| 政策支援団体 | モニタ |
| ギャンブル | モニタ |
| ヌードとワイセツ | モニタ |
| ⋮(以下略) | |
ファイアウォールポリシーへの適用
ポリシーで DNS フィルタを有効にする
ポリシー&オブジェクト ›› ファイアウォールポリシー で、LAN からインターネットへのポリシーを開きます。セキュリティプロファイル の DNSフィルタ を有効にし、プロファイルを default にします。DNS フィルタを有効にすると、SSL インスペクションは自動的に certificate-inspection になりました。
| アンチウイルス | OFF |
| Webフィルタ | OFF |
| 1DNSフィルタ | ON default |
| アプリケーションコントロール | OFF |
| IPS | OFF |
| ファイルフィルタ | OFF |
| 2SSLインスペクション | certificate-inspection |
名前解決ができない場合の対応
DNS クエリのログで原因を調べる
端末の DNS サーバを FortiGate の LAN 側のアドレス(10.0.1.128)に変更し、名前解決を試しました。ところが、名前解決の応答が返ってきません。
切り分けのため、セキュリティプロファイル ›› DNSフィルタ の default プロファイルで、オプション の すべてのDNSクエリとレスポンスを記録する を有効にします。
| ポータルIPへリダイレクト | ◉ FortiGuardのデフォルトを利用○ 指定 208.91.112.55 |
| レーティングエラー発生時にDNSリクエストを許可する | OFF |
| 1すべてのDNSクエリとレスポンスを記録する | ON |
ログ&レポート ›› DNSクエリ でログを確認すると、ログの詳細の エラー に、FortiGuard の SDNS サーバが使えないことを示す no available Fortiguard SDNS servers が出ていました。
| DNSタイプ | 送信元 | ドメイン名 |
|---|---|---|
| dns-response | 10.0.1.25 | www.youtube.com |
| dns-response | 10.0.1.25 | www.google.com |
| dns-response | 10.0.1.25 | www.google.com.ap-northeast-1.ec2-utili… |
| 1dns-response | 10.0.1.25 | www.google.com |
| ⋮(以下略) | ||
| 日付/時刻 | 2020/11/13 21:51:49 |
| セッションID | 2018 |
| 2エラー | no available Fortiguard SDNS servers |
| 送信元 IP/ポート | 10.0.1.25/56025 |
| 送信元インターフェース | LAN (port2) |
| 宛先 IP | 10.0.1.128 |
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 disable | FortiGuard への接続に Anycast を使わず、Unicast(指定したサーバ)を使います。 |
| set protocol udp set port 8888 | FortiGuard との通信のプロトコルとポートを UDP の 8888 にします。 |
| set sdns-server-ip 208.91.112.220 | DNS フィルタが問い合わせる SDNS サーバのアドレスを指定します。 |
FortiGuard への接続は、FortiOS 6.4.3 以降は Anycast が既定です。上の設定は、Anycast をやめて Unicast で SDNS サーバを指定する回避策です。
Fortinet のナレッジでは、Unicast を使う場合に SDNS サーバを複数指定して冗長にする方法や、diagnose test application dnsproxy 3 でライセンスと SDNS サーバの状態を確かめる方法が紹介されています。同じエラーが出たときは、まずライセンスの有効期限と FortiGuard への到達性を確認してください。
名前解決を確認したあとのログです。エラーは出ていません。
| DNSタイプ | 送信元 | ドメイン名 | クエリタイプ |
|---|---|---|---|
| dns-response | 10.0.1.25 | www.google.com | AAAA |
| dns-query | 10.0.1.25 | www.google.com | AAAA |
| 1dns-response | 10.0.1.25 | www.google.com | A |
| dns-query | 10.0.1.25 | www.google.com | A |
| ⋮(以下略) | |||
| 日付/時刻 | 2020/11/13 22:23:03 |
| セッションID | 3280 |
| 送信元 IP/ポート | 10.0.1.25/59171 |
| 送信元インターフェース | LAN (port2) |
名前解決ができるようになったので、すべてのDNSクエリとレスポンスを記録する は無効に戻します。
端末の動作確認(モニタ)
カテゴリのアクションをモニタにする
セキュリティプロファイル ›› DNSフィルタ の default プロファイルで、FortiGuardカテゴリベースのフィルタ の ストリーミングメディアとダウンロード を、テスト用に モニタ にします。これで、このカテゴリのドメインを名前解決したときにログが記録されます。
| 名前 | アクション |
|---|---|
| ⋮(中略) | |
| ⊟ 帯域を消費しやすいサイト(6) | |
| フリーウェアとソフトウェアのダ… | 許可 |
| ファイル共有とストレージ | 許可 |
| 1ストリーミングメディアとダウンロード | モニタ |
| ピアツーピアファイル共有 | 許可 |
| インターネットラジオとテレビ | 許可 |
| インターネット電話 | 許可 |
あわせて、ログ&レポート ›› DNSクエリ の一覧で、カラムの設定(一覧の左上の歯車)から カラムを選択 ›› メッセージ を追加しておきます。アクションの結果がメッセージに表示されます。
サイトにアクセスしてログを見る
端末から YouTube とニコニコ動画にアクセスします。どちらも ストリーミングメディアとダウンロード のカテゴリに属するサイトです。モニタなので、どちらも通常どおり表示されます。
ログ&レポート ›› DNSクエリ でログを確認すると、メッセージに Domain is monitored と表示され、ドメインがモニタされていることがわかります。
| DNSタイプ | 送信元 | ドメイン名 | クエリ | メッセージ |
|---|---|---|---|---|
| dns-response | 10.0.1.25 | www.youtube.com | AAAA | 1Domain is monitored |
| dns-response | 10.0.1.25 | www.youtube.com | A | Domain is monitored |
| dns-response | 10.0.1.25 | www.youtube.com | A | Domain is monitored |
| ⋮ | ||||
| dns-response | 10.0.1.25 | www.nicovideo.jp | A | Domain is monitored |
| dns-query | 10.0.1.25 | www.nicovideo.jp | A | |
| dns-response | 10.0.1.25 | www.nicovideo.jp | A | Domain is monitored |
| dns-query | 10.0.1.25 | www.nicovideo.jp | A | |
ログの詳細では、ドメインが属するカテゴリと、応答した IP アドレスを確認できます。
| クエリクラス | IN |
| 1IPアドレス | (伏せています) |
| 2カテゴリ | 25 |
| カテゴリ説明 | Streaming Media and Download |
端末の動作確認(ブロック)
アクションをブロックポータルにリダイレクトにする
今度は、default プロファイルの ストリーミングメディアとダウンロード を、テスト用に ブロックポータルにリダイレクト にします。この設定では、このカテゴリのドメインを名前解決すると、既定では FortiGuard のブロックポータル(208.91.112.55)のアドレスが応答されます。
| 名前 | アクション |
|---|---|
| ⋮(中略) | |
| ⊟ 帯域を消費しやすいサイト(6) | |
| フリーウェアとソフトウェアのダ… | 許可 |
| ファイル共有とストレージ | 許可 |
| 1ストリーミングメディアとダウンロード | ブロックポータルにリダイレクト |
| ピアツーピアファイル共有 | 許可 |
| インターネットラジオとテレビ | 許可 |
| インターネット電話 | 許可 |
サイトにアクセスしてログを見る
まず 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 が用意しているブロックポータルです。
HSTS を使用しているため、このサイトに移動できない
どちらのサイトも、ログのメッセージに Domain belongs to a denied category in policy と表示され、カテゴリによって拒否されたことがわかります。
| DNSタイプ | 送信元 | ドメイン名 | クエリ | メッセージ |
|---|---|---|---|---|
| dns-response | 10.0.1.25 | www.youtube.com | A | 1Domain belongs to a denied category in policy |
| dns-response | 10.0.1.25 | www.youtube.com | A | Domain belongs to a denied category in policy |
| dns-response | 10.0.1.25 | www.youtube.com | AAAA | Domain belongs to a denied category in policy |
| ⋮ | ||||
| dns-response | 10.0.1.25 | www.nicovideo.jp | A | Domain belongs to a denied category in policy |
| dns-response | 10.0.1.25 | www.nicovideo.jp | A | Domain belongs to a denied category in policy |
DNS セーフサーチの有効化
セーフサーチを強制する
DNS フィルタでは、Google、Bing、YouTube に対してセーフサーチを強制し、不適切な内容が検索結果に出にくくできます。FortiGate は、これらの検索サイトの名前解決に、子ども・学校向けの制限付きのアドレスを応答します。
セキュリティプロファイル ›› DNSフィルタ の default プロファイルで、Google, Bing, YouTube で 'セーフサーチ' を強制 を有効にします。YouTube については、YouTubeへのアクセスを制限する で Strict か Moderate を選べます。
| 名前 | default |
| ボットネットC&Cのリクエストをブロックポータルにリダイレクト | ON 69998 ドメイン ボットネットパッケージ |
| 1Google, Bing, YouTube で ‘セーフサーチ’ を強制 | ON |
| YouTubeへのアクセスを制限する | ○ Strict◉ Moderate |
| FortiGuardカテゴリベースのフィルタ | ON |
検索サイトとログを確認する
端末から Google や Bing にアクセスすると、検索画面は通常どおり表示されます。Google で検索すると、画面にセーフサーチがオンになっていることが表示され、不適切と思われる内容は検索結果から除外されます。
DNS フィルタのログのメッセージには DNS Safe Search enforced と表示され、セーフサーチが強制されていることを確認できます。
| DNSタイプ | 送信元 | ドメイン名 | クエリ | メッセージ |
|---|---|---|---|---|
| dns-response | 10.0.1.25 | www.google.co.jp | A | 1DNS Safe Search enforced |
| dns-response | 10.0.1.25 | www.google.com | A | DNS Safe Search enforced |
| dns-response | 10.0.1.25 | www.bing.com | A | DNS Safe Search enforced |
| dns-response | 10.0.1.25 | www.bing.com | A | DNS Safe Search enforced |
まとめ
| 設定・確認 | 内容 |
|---|---|
| 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 |
コメント