FortiGateの設計/設定ガイド

FortiGateの設計・設定方法を詳しく書いたサイトです。 FortiGateの基本機能であるFW(ファイアウォール)、IPsec、SSL‐VPN(リモートアクセス)だけでなく、次世代FWとしての機能、セキュリティ機能(アンチウイルス、Webフィルタリング、SPAM対策)、さらにはHA,可視化、レポート設定までも記載します。初期化方法やバージョンアップなどの管理面も書いています。標的型攻撃を守るためのゲートウェイとしても導入されることが多いので、セキュリティ機能に関しては充実した記載を心がけます。

Webフィルタ(WebFilter)

1.Webフィルタ(WebFilter)について

❶Webフィルタとは
許可するWebサイトをフィルター(選別)することです。

❷Webフィルタリングの目的
社員に対し、業務に関係が無いサイトへのアクセスを禁止することです。
たとえば、FortiGuardカテゴリにある「アダルト/成人コンテンツ」や「一般的な趣味・関心」にある「ゲーム」「スポーツ」「オークション」などを禁止します。

加えて、セキュリティを守るためにも大事な機能です。
たとえば、攻撃者は自らが用意した不審なサイトに巧みに誘導し、ウイルスを感染させたり、情報を抜き取ったりします。それらのサイト(C&Cサーバ)への通信をFortiGateが自動で防御するのです。
 
❸FortiGateのWebフィルタリングでできること
・FortiGuardカテゴリ単位で、Webをフィルタリングする。
・ブラックリストとして、個別のURLのフィルタリングの設定
・上記のWebフィルタリングをポリシーとして、セグメント単位などのグループ単位で設定を適用
・設定したWebフィルタリングに対して、許可、ブロック、モニタ、警告、認証の5つの設定ができます。
・3つの検知モード(Inspection Mode)が選べます。負荷と検査の精度のバランスに応じて設定できます。
・その他、詳細な設定ができますが、詳しくは設定の記事で記載します。

❹ライセンス
Webフィルタリングを利用するには、別途ライセンスが必要です。
Webフィルタリング用のライセンス(1年更新)を購入するか、AVやIPSなどの機能が含まれたバンドル版を購入します。
フィルタリングするURLを手動で設定(ブラックリスト)をする場合は、ライセンスは不要です。

❺その他(詳細情報)
・Webフィルタリングのエンジンは独自です。
・フィタリングの情報は、定期的に更新されます。更新周期は非公開です。

2.WebフィルタとURLフィルタは別物?

FortiGateを勉強する女性SE (21) 

WebフィルタとURLフィルタは別物って、どういう意味ですか?
FortiGateでは、WebフィルタとURLフィルタを分けています。
ライセンスを購入した場合はWebフィルタを利用します。基本はカテゴリベースです。
ライセンスを購入しなかった場合は、URLフィルタを利用します。ホワイトリストで書く必要があります。

▼WebフィルタとURLフィルタの切り替え
有償ライセンスを購入した場合、WebフィルタとURLフィルタの切り替えをProfile単位で設定することができます。
設定は、一番上の「FortiGuardカテゴリーによるフィルタ」を無効(灰色。ボタンをクリックで切り替え)します。加えて、下にある「URLフィルタ」を有効にします。

FortiGate-WebFilter4























3.IPアドレス単位やドメインでのURLフィルタは可能?

URLフィルタリングはURLのフィルタです。つまり、たとえば以下がURLです。
 

https://www.viva-fortigate.com/archives/70694045.html

では、以下のURLフィルタはできるのでしょうか。
FortiGateでは、Webフィルタ(ライセンス購入)とURLフィルタ(ライセンス未購入)を分けています。以下の内容は、Webフィルタならすべてできますが、URLフィルタの場合は、以下のように可否があります。

❶IPアドレス
(例)192.168.1.1

→ 可能

❷IPアドレスが含まれるURL
(例)http://192.168.1.1/archives/70705139.html

→ 可能

❸ドメインおよびサブドメイン
(例)viva-fortigate.com

→ワイルドカードを使えば可能

❹サブフォルダ
(例)http://www.viva-fortigate.com/archives/
 ※完全なURLではなく、途中まで。

→途中までは無理。サブフォルダまでの完全一致であれば可能。

❺URLの一部が一致
(例)URLの一部にfortigateが含まれている場合。

→前後にワイルドカードを入れて「*fortigate*」という設定で可能。

4.WebFileterの設定

設定は、AVの設定と同様に、ポリシーに対して、作成したプロファイルを割り当てます。
プロファイルの作成方法は以下です。

Security Profiles>Web Filetrを開きます。
fortigate_WebFilter
上部にあるInspection Modeは、プロキシ、フローベース、DNSの3つがあります。
※OSの5.4から、Inspection Modeは、GUIでは、プロファイル単位ではなく、システム全体で設定するように変わりました。

▼セーフサーチ
Safe1
この機能を有効にすると、Getメソッドに Safe=Active のフラグを有効にしたパケットを、検索エンジンへ送信します。
Fortigate_Safe2
セーフサーチに対応した検索サイトであれば、好ましくない検索結果を応答しないようにします。
※Goole、Yahooなどなど。

▼レーティング
rathing
何らかの理由で FortiGuardのカテゴリ判定が受けられない場合に、どう処理をさせるかを設定できます。
レーティングエラー時に一時的に Webサイトを許可することもできます。

またドメインと IPアドレスで URLをレーティングすることで悪意のあるサイトの IPアドレスの変化に対応できます。

▼プロキシオプション
Fortigate_ProxyOption
コンテンツ処理を行うことができます。
特定カテゴリに含まれるサイトのみ、Postアクションを制御し、例えばサイトを読むことは可能だが書込み(掲示板など)のみ禁止することができます。

5.個別のフィルタリング設定

FortiGateでは、Webフィルタリングの設定を、グループ単位やIP単位などで、個別に適用することができます。その方法を紹介します。
方法は、制御したいポリシーを作成し、そのポリシーに対して適用するWebフィルタリングのプロファイルを適用します。

6.Webフィルタのカテゴリ

FortiGateでは、「FortiGuard カテゴリーによるフィルタ」として、以下のカテゴリが用意されています。
FortiGateを勉強する女性SE (はてな) 

世の中には数えきれないくらいのURLがあると思います。
それらのURLがどこカテゴリになるのか、FortiGateは記憶しているのですか?
いいえ、FortiGateはどの URLがどのカテゴリに属するかを全て把握しているわけではありません。
仕組みは以下です。
① ある URLへの接続が発生
② FortiGateは Webフィルタで URL情報を検知
③ FortiGateは該当 URLの情報を FortiGuardセンター(Fortinetの有するセキュリティセンタ)に照会
④ FortiGuradセンターから該当 URLの照会結果(どのカテゴリの URLか)回答
⑤ FortiGateは回答結果から URLのカテゴリ情報を判断し、設定に基づいたアクションを実行

③の処理を行う事で、FortiGateは全ての URL情報を把握していないくても、カテゴリ制御をうまく制御できるようにしています。

また都度、③の FortiGuardセンターに照会していると通信遅延に陥る場合も考えられるため、④の照会結果を FortiGateではデフォルト 3600秒(1時間)学習し、同じ URLへの接続がある場会は、学習された結果を利用することで無駄な処理を低減しています。
※学習時間は任意に変更可能です。メモリを圧迫するような状況の場合は学習時間を短くすることをお勧めします。

❶大カテゴリ
■ローカルカテゴリ
■違法性・犯罪性の高いサイト
■成人/アダルトコンテンツ
■帯域を消費しやすいサイト
■セキュリティ上問題のあるサイト
■一般的な趣味・関心 - 個人
■一般的な趣味・関心 - ビジネス
■未分類

❷サブカテゴリ
■ローカルカテゴリ
 ※独自に作成したカテゴリのことです。

■違法性・犯罪性の高いサイト
・テロと過激論者(過激派グループ)
・ドラッグ (薬物乱用)
・ハッキング・不正アクセス
・プロキシサーバ回避
・児童虐待
・剽窃・盗作
・差別
・明示的な暴力
・違法・非倫理的

■成人/アダルトコンテンツ
・その他アダルトマテリアル
・アルコール
・ギャンブル
・タバコ
・ヌード(裸体)
・ポルノ
・下着・水泳着
・中絶
・兵器(販売)
・出会い
・唱道団体
・大麻(マリファナ)
・性教育
・民間信仰
・狩り・戦争ゲーム

■帯域を消費しやすいサイト
・ストリーミングメディア.ダウンロード
・インターネットラジオ/テレビ
・インターネット電話(IP電話)
・ファイル共有と保存
・フリーウェア・ソフトウェアダウンロード
・P2Pファイル共有

■セキュリティ上問題のあるサイト
・スパム URL
・ダイナミックDNS
・フィッシング(詐欺)
・悪意のあるサイト

■一般的な趣味・関心 - 個人
・インスタントメッセージング
・ウェブチャット
・ウェブベースメール
・エンタテインメント
・オンラインブローカー・取引(仲買業)
・オークション
・ゲーム
・コンテンツサーバ
・ショッピング
・スポーツ
・ソーシャル・ネットワーキング
・ドメイン.パーキング
・ニュースとメディア
・ニュースグループ・伝言板
・リファレンスサイト(辞書サービス等)
・レストラン・飲食
・不動産
・世界宗教
・個人サイト.ブログ
・個人個人プライバシー
・個人用の乗り物
・健康とウエルネス
・児童教育
・動的コンテンツ
・広告
・政治団体
・教育
・旅行
・民間伝承
・求人情報
・無意味なコンテンツ
・社会・ライフスタイル
・芸術と文化
・薬剤・サプリメント
・電子ポストカード

■一般的な趣味・関心 - ビジネス
・IT
・ウェブベースのアプリケーション
・ウェブホスティング
・サーチエンジン・ポータルサイト
・ビジネス
・一般的な組織
・安全サイト
・情報・コンピュータセキュリティ
・政府機関と法的組織
・軍事機関(軍隊)
・金融・バンキングサービス(財政と銀行業)

■未分類
 ※独自に分類できるカテゴリです。

7.個別のWebフィルタリスト(ブラックリストやホワイトリスト)

(1)既存のフィルタに追加(ライセンス必要)

個別のWebフィルタリスト(ブラックリストやホワイトリスト)の作成方法です。ライセンスを購入している場合を想定しています。

①セキュリティプロファイル > Webレーティングオーバーライド を開きます。
FortiGate-WebFilter1

②登録したいURLを入力し、任意のカテゴリに入れます。
たとえば、禁止するブラックリストを作りたい場合、未分類に入れて、次のアクションでブロックします。
FortiGate-WebFilter2

③該当カテゴリ(今回は「未分類」)のアクションをブロックにします。
FortiGate-WebFilter3
 
④有効にするには、ポリシーで適用します。(AVの設定と同様)

FortiGateを勉強する女性SE (はてな) 
質問です。
①レーティング検索はどういう意味ですか?
②カテゴリに入れずに、そのURLを直接禁止する設定はできませんか?


①に関して、現在はどのカテゴリに入っているかを確認します。4300万ものURLが登録されていますので、どこかのカテゴリが選ばれる可能性が高いと思われます。
②可能です。URLフィルタリングでは可能です。

(2)ホワイトリストのみ(ライセンス無しでも運用可能)

セキュリティを厳密に扱いたい環境においては、特定のURLだけを許可し、それ以外は拒否するというホワイトリスト運用をしたい場合がある。
その場合は、FortiGateのWebフィルタにおいて、「FortiGuardカテゴリベースのフィルタ」を外す。
代わりに、「スタティックURLフィルタ」の「URLフィルタ」をオン(緑色)にし、許可するURLをタイプ「シンプル」で指定し、それ以外をすべて拒否するので、*を「ワイルドカード」で指定して、アクションをブロックにする。以下は、www.yahoo.co.jpだけを許可する例

f:id:seeeko:20210830083206p:plain

また、ポリシーに作成したWebフィルタのプロファイルを適用することを忘れずに。


16
アクションですが、「除外」を選ぶと、カテゴリの検査をしない。
それ以外は、カテゴリの検査をしたあとにスタティックURLフィルタを実施しま。

今回は、名前を「不正サイト」とし、「適用」ボタンを押して登録した画面が以下です。

■URLフィルタを個別に流し込む
GUIだとWebフィルタからプロファイルを作成し、スタティックURLで追加する。
CLIの場合も該当のプロファイルからいくかと思ったが(以下)
FGT# config webfilter profile [該当プロファイル]
実は違った。
CLIは以下から実行する
FGT# config webfilter urlfilter
show で見ると、現在設定されている状態が見える。
編集したいプロファイルが何番かを確認し該当番号を指定してeditしていく。以下は3番にyahoo.co.jpを追加
FGT(urlfilter) # edit 1
FGT (1) # config entries
FGT(entries) # edit 3
new entry '3' added
FGT (3) # set url "yahoo.co.jp"
FGT (3) # set action monitor
FGT (3) # end

9.Webフィルタリングのアクション

設定したWebフィルタリングに対して、許可、ブロック、モニタ、警告、認証の5つの設定ができます。
①許可:通信を許可します。
②ブロック:通信を止めます。
③モニタ:通信を許可しますが、アクセスコンテンツ含め、ログに出力します。
④警告:利用者のWeb画面上に警告メッセージを出し、注意喚起を行います。
⑤認証:IDとパスワード認証します。認証に成功すると、Webサイトが表示されます。

以下に補足します。
・メッセージは、GUIのシステム内の差し替えメッセージで確認でき、直接編集も可能です。

wf_msg_edit

10.WebFilterの検知モード(Inspection Mode)

ForiGateのWebFilterでは、プロキシ、フローベース、DNSの3つの検知モード(Inspection Mode)があります。
前の方が検査の精度が高くなります。しかし、処理負荷も高くなります。
実際に動作をさせてみて、処理の負荷に応じてモードを切り替えるのも方法の一つです。
※ただ、セキュリティの観点から、推奨は検査精度がもっとも高いプロキシモードです。

❶プロキシモード
プロキシはもっとも多くの設定、検査が出来るモードですが、変わりに機器の負荷はもっとも高くなります。
※ユーザー認証機能を利用する場合はプロキシモード以外選択できません。

❷フローベースモード
カテゴリ処理、レーティング処理のみ利用するのであれば、本モードで十二分に効果があります。
また、機器の処理負荷もプロキシモードと比較して小さくなります。

❸DNSモード
機器への負荷がもっとも少ないモードです。このモードではセーフサーチ機能が利用できません。

11.コンテンツフィルタ

コンテンツフィルタとは、たとえば、「ギャンブル」「株」などの業務をするうえで、不適切なキーワードを含むサイトへのアクセスを禁止します。

【設定】
・コンテンツフィルタはForiGateではDLPの設定で実施をします。
・ただし、システムの設定で、プロキシモードとフローモードの2つがあって、コンテンツフィルタ(DLP)を有効にするには、プロキシモードである必要があります。
・デフォルトではDLPはメニューに表示されていないので、以下の画面からDLPをONにします。
29
※詳細は、余裕があれば記載します。

12.SSL通信をURLフィルタリングできる?

❶基本的にはできない
URL情報は、HTTPのデータ部分に入っています。なので、SSL通信では、IPアドレスなどのIPヘッダではフィルタができますが、URLでのフィルタができません。
そこで、SSLインスペクションです。

SSLインスペクションには2つあります。
DeepInscpectionとCertificateです。「SSL/SSH インスペクション」タブから。右上のプルダウンで選択します。
6




❷DeepInscpection
DeepInscpectionは、SSLのデコードをします。つまり、通信をいったん終端し、SSLを復号します。
7


❸Certificate
Certificateは証明書を確認する仕組みです。SSLは基本的にURLフィルタができません。それは、URLが含まれているHTTPのデータ部分は暗号化されているからです。でも、これを有効にすると、接続サーバの証明書を確認します。そこで、CNを見ることで、その証明書のFQDNを確認します。よって、ドメインまではチェックできます。
→けっこうちゃんと動きますよ。ログにも接続先のFQDNがきちんと出ます。
PC側に証明書やProxyの設定を入れなくてもできます。
8

Q.SSLのフルインスペクションをしようと思っています。
ですが、「custom-deep」「deep-inspection」が選べません。

A.システム>表示機能設定>複数セキュリティプロファイルをONにしましょう。
ローエンドの製品の場合は、デフォルトでオフになっています。

13.DNSフィルタ

(1)DNSフィルタの概要やメリット

❶概要
・Webサイトに接続する前には、DNSで名前解決をするので、そのドメインでフィルタリングを行う。
・サブドメインでもフィルタができる。
・古いFortiOSでは、Webフィルタの中のインスペクションモードでDNSというのが存在した。
・CiscoUmbrellaはDNSフィルタの仕組みで、カテゴリ単位のペアレンタルコントロールもできる。PaloAltoの場合は、脅威をフィルタするのみで、URLフィルタの機能を踏襲しているわけではない。

❷利点
Webフィルタとは違い、DNSなので、SSLインスペクションが不要。HTTP以外の通信でも活用できる。
→とはいえ、Certificate Inspectionであれば、SSL復号や証明書は不要でFQDNまでフィルタできる。そういう意味ではWebフィルタと同じ
TLS1.3からは、SNIが暗号化されるので、FQDNまでのフィルタができないかと思っていたが、実際にはDNS over HTTPSなどを使ってEncryptedSNIにする必要があり、そこまでやっているところは非常に少ない。→この場合、DNSフィルタもできない

❸デメリット
・DNSフィルタはドメインのみで、URL単位ではないので、細かい制御ができない。たとえば、yahoo配下の危険なURLだけを止めるなどができないので、
利便性として難しい可能性がある。
・実情として、こなれていないというのもあり、DNSフィルタではなくURLフィルタを使っているところがほとんど

❹DNSフィルタの流れ
FortiGateをDNSサーバに指定する。PC→(DNS問合せ)→FGTという流れで、FGTがDNS問い合わせをしてチェック

(2)設定

以下に説明あり
https://hirotanoblog.com/fortigate-dnsfilter/4322/

❶PCのDNSサーバをFortiGateにする
FortiGateのDHCP機能でIPアドレスを払い出していることが多いでしょう。
ネットワーク > インターフェース から LAN側のインターフェースに関して、DHCPサーバにおけるDNSサーバをインターフェースIPと同じ に設定する。

これで、PC側のDHCPでは、FortigateのLAN側のIPがDNSサーバとして割り振られます。

AWSで起動しているWindowsサーバ群などの場合、AWSのサーバ(末尾0.2など)がDNSサーバとして割り振られるので、固定で変更する必要がある。

❷表示機能設定
古いOSの場合、システム > 表示機能設定  で DNSデータベースを 有効にする。
ネットワーク> DNSサーバが表示されればOK

❸設定の有効化
ネットワーク> DNSサーバ で、新規作成 インターフェースをLAN側にし、モードをシステム設定DNSへ転送(フォワーダと思えばいいでしょう)
また、PCがこのDNSサーバ(Fortigate)にDNS問い合わせをすると、FortigateのDNSで設定されたDNSサーバにフォワーダで転送します。
このプロセスにより、DNSフィルタが行えます。

❹カテゴリの設定
セキュリティプロファイル>DNSフィルタ にて、フィルタするカテゴリを選択
たとえば、検索エンジンなどをブロックしてみましょう。

❺ポリシー設定
ポリシー&オブジェクト >  ファイアウォールポリシー にて、DNSフィルタを有効にします。

❻通信テスト
検索エンジンを見てみる。ブロックされることがわかります。
ログは、ログ&レポート、DNSクエリにて、列に「メッセージ」を追加する。
すると、以下のように、ブロックされたことがわかる
Domain belongs to a denied category in policy

14.ビデオフィルタ

Youtubeなどの動画において、カテゴリであったり、チャンネルなどの細かい単位でフィルタができる