【Fortigate】SSLインスペクション(deep-inspection)設定と動作確認 FortiOS6.2.4

音声で聞く

読む前にこの記事のポイントを音声で確認できます。この音声は本記事をもとにAIツール(NotebookLM)で自動生成したもので、発音や言い回しが不自然な箇所や、内容の誤りが含まれる可能性があります。理解の補助としてご利用ください。

いまの Web の通信は、大半が https:// で始まる URL で、SSL/TLS で暗号化されています。通信の安全を守るうえで欠かせない仕組みですが、ファイアウォールや UTM(統合脅威管理)の機器から見ると、アプリケーションコントロール、アンチウイルス、侵入防止(IPS)などのセキュリティ機能が、暗号化された通信の中身を検査できないという課題があります。

FortiGate では、この課題を解決するために、暗号化された通信を復号して検査する SSL インスペクション(deep-inspection)の機能があります。この記事では、SSL インスペクションの設定と動作を確認します。検証時の FortiOS は 6.2.4 です。

この記事でわかること
  1. SSL インスペクションを使わない場合に、転送トラフィックのログで見えること
  2. ポリシーで deep-inspection を有効にし、FortiGate の CA 証明書を端末に入れる手順
  3. 復号したことで、アプリケーション名がログに表示されること

検証の構成

端末(10.0.1.10/24)は FortiGate の port2 側にあり、port1 側のインターネットに HTTPS で接続します。SSL インスペクションを使わない場合、通信は暗号化されたまま FortiGate を通過するので、FortiGate は通信の中身を見られません。

Internet端末10.0.1.10/24FortiGateport2port1HTTPSHTTPS公開サーバの証明書で端末まで暗号化通信の中身は見えないそのまま通過させるだけ
図1 SSL インスペクションを使わない場合

deep-inspection を使うと、FortiGate は通信をいったん復号して中身を検査し、もう一度暗号化してから送ります。端末との間は FortiGate が作った証明書、インターネット側は公開サーバの証明書で暗号化されます。

Internet端末10.0.1.10/24FortiGateport2port1HTTPSHTTPSFortiGate の証明書で暗号化公開サーバの証明書で暗号化復号してデータをチェックアプリ識別・AV・IPS など
図2 SSL インスペクション(deep-inspection)を使う場合

SSL インスペクションを使わない場合の動作

内部から外部へのポリシーを作る

ポリシー&オブジェクト ›› ファイアウォールポリシー の 新規作成 で、次のように設定します。セキュリティプロファイルは使いません。

画面イメージについて

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

FortiGate 管理画面画面イメージ
ポリシー&オブジェクト ›› ファイアウォールポリシー ›› 新規ポリシー
1名前Internal->External
着信 / 発信インターフェースport2 / port1
送信元 / 宛先all / all
スケジュール / サービスalways / ALL
アクション◉ 許可○ 拒否
インスペクションモード◉ フローベース○ プロキシベース
2NAT ON ◉ 発信インターフェースのアドレスを使用
プロトコルオプションdefault
セキュリティプロファイル
アンチウイルス / Webフィルタ / DNSフィルタ / アプリケーションコントロール OFF
⋮(以下略)
図3 内部から外部へのポリシー(実際の画面ではなく、設定する項目を示したイメージです)

転送トラフィックのログを見る

端末から Google にアクセスし、ログ&レポート ›› 転送トラフィック でログを確認します。

FortiGate 管理画面画面イメージ
ログ&レポート ›› 転送トラフィック
送信元宛先サービスアプリケーション名結果ポリシーID
10.0.1.10(伏せています)HTTPS1(空欄)✓ 1.34 kB / 5.09 kBInternal->External (2)
⋮(以下略)
宛先の詳細(カーソルを合わせたとき)
Owner / ロケーションGoogle / Tokyo, Japan
解決済みドメインnrt12s15-in-f14.1e100.net
図4 SSL インスペクションを使わないときの転送トラフィック(実際の画面ではなく、表示のポイントを示したイメージです。宛先の IP アドレスは伏せています)

宛先の詳細から、Google のグローバルアドレスへの通信であることはわかります。しかし、ログには HTTPS の通信として記録されるだけで、アプリケーション名は空欄です。どのアプリケーションの通信なのか、中身が安全かどうかは判断できません。

SSL インスペクションを設定する

ポリシーで deep-inspection を有効にする

内部から外部へのポリシーで、SSLインスペクション を deep-inspection にして、アプリケーションコントロールを有効にします。

FortiGate 管理画面画面イメージ
ポリシー&オブジェクト ›› ファイアウォールポリシー ›› Internal->External
セキュリティプロファイル
アンチウイルス / Webフィルタ / DNSフィルタ OFF
1アプリケーションコントロール ON default
IPS / ファイルフィルタ OFF
2SSLインスペクション
deep-inspection
certificate-inspection
custom-deep-inspectiondeep-inspection
図5 ポリシーで deep-inspection を有効にする(実際の画面ではなく、設定する項目を示したイメージです)

証明書のエラーを確認する

この状態で端末から Google にアクセスすると、ブラウザに証明書のエラーが表示されます。

端末のブラウザ(Internet Explorer)画面イメージ
https://www.google.com/
このサイトは安全ではありませんお使いの PC はこの Web サイトのセキュリティ証明書を信頼しません。
エラー コード: DLG_FLAGS_INVALID_CA
証明書の情報
発行先:www.google.com発行者:FGT(伏せています)
信頼された証明機関がこの証明書を確認できません。
有効期間:2020/10/20 から 2021/01/12
図6 証明書のエラー(実際の画面ではなく、表示のポイントを示したイメージです)

このエラーは、FortiGate が復号のときに自動で作ったサーバ証明書を、ブラウザが信頼していないことが原因です。サーバ証明書を確認すると、発行者が FortiGate(既定のホスト名)で、その発行者のルート証明書が端末に入っていないことがわかります。

FortiGate の CA 証明書を端末にインポートする

このエラーは、端末に FortiGate のルート証明書(CA 証明書)をインポートすると解消します。FortiGate は、CA 証明書 Fortinet_CA_SSL で署名したサーバ証明書を、接続先ごとに作って端末に渡しています。

CA 証明書Fortinet_CA_SSLサーバ証明書www.google.com など署名して自動生成端末接続時に渡す信頼されたルート証明機関にインポートFortiGateCA 証明書はSSL/SSH インスペクションの画面からダウンロード
図7 FortiGate の CA 証明書とサーバ証明書の関係

セキュリティプロファイル ›› SSL/SSHインスペクション を開き、deep-inspection をダブルクリックします。CA証明書 の横の ダウンロード をクリックすると、ルート証明書をダウンロードできます。

FortiGate 管理画面画面イメージ
SSL/SSHインスペクション ›› deep-inspection
名前deep-inspection
コメントRead-only deep inspection profile.
SSLインスペクションオプション
いずれかのSSLインスペクションを有効化◉ 複数のサーバに接続する複数のクライアント○ SSLサーバ保護
インスペクション方式○ SSL証明書のインスペクション◉ フルSSLインスペクション
1CA証明書Fortinet_CA_SSL ダウンロード
Blocked certificates○ 許可◉ ブロック
信頼されないSSL証明書◉ 許可○ ブロック○ 無視する項目
Server certificate SNI check◉ 有効○ Strict○ 無効
⋮(以下略)
図8 CA 証明書のダウンロード(実際の画面ではなく、操作のポイントを示したイメージです)

ダウンロードした証明書を、端末の「信頼されたルート証明機関」にインポートします。そのあと Google にアクセスすると、証明書のエラーは表示されなくなります。

証明書のチェーンを確認する

ブラウザで証明書を確認すると、FortiGate が www.google.com のサーバ証明書を作っていることがわかります。また、そのサーバ証明書が、さきほどインポートしたルート証明書とチェーンでつながっていることも確認できます。

端末の証明書の表示画面イメージ
全般
発行先:www.google.com発行者:FGT(伏せています)
有効期間:2020/10/20 から 2021/01/12
証明のパス
FGT(伏せています)└ www.google.com
証明書の状態:この証明書は問題ありません。
図9 FortiGate が作ったサーバ証明書とチェーン(実際の画面ではなく、表示のポイントを示したイメージです)

SSL インスペクションの利点と注意点

アプリケーション名が表示されることを確認する

SSL インスペクションを有効にすると、FortiGate は暗号化された通信を復号し、アプリケーションの識別やセキュリティの検査をできるようになります。

転送トラフィックのログを確認すると、Google へのアクセスに、アプリケーション名 Google.Services が表示されています。SSL インスペクションで通信を復号したうえで、UTM の一つであるアプリケーションコントロールがアプリケーションを識別し、ログに表示しています。

FortiGate 管理画面画面イメージ
ログ&レポート ›› 転送トラフィック
送信元宛先サービスアプリケーション名結果
10.0.1.10nrt20s02-in-f4.1e100.netHTTPS1Google.Services✓ 1.95 kB / 1.73 kB
⋮(以下略)
図10 SSL インスペクションを使ったときの転送トラフィック(実際の画面ではなく、表示のポイントを示したイメージです。宛先はホスト名だけを示しています)

ログ&レポート ›› アプリケーションコントロール では、アプリケーションコントロールのログを確認できます。

FortiGate 管理画面画面イメージ
ログ&レポート ›› アプリケーションコントロール
送信元宛先アプリケーション名アクションアプリケーション詳細
10.0.1.10nrt12s14-in-f2.1e100.net1Google.Adspass
10.0.1.10nrt20s20-in-f3.1e100.netGoogle.Servicespass
10.0.1.10(伏せています)YouTube_Video.PlaypassVideo Play
10.0.1.10(伏せています)YouTubepass
10.0.1.10(伏せています)HTTPS.BROWSERpass
⋮(以下略)
図11 アプリケーションコントロールのログ(実際の画面ではなく、表示のポイントを示したイメージです。ホスト名のない宛先の IP アドレスは伏せています)

ルート証明書のイメージがつかみにくい場合は、次の記事を参照してください。

>> 参考記事:【初心者】公開鍵暗号、認証局、デジタル署名をイメージで解説

すべての通信を検査すると負荷が高くなる

注意点として、すべての通信に SSL インスペクションを実行すると、処理の負荷が増え、性能に影響することがあります。SSL インスペクションから除外する接続先を設定するには、次の記事を参照してください。

>> 参考記事:【Fortigate】SSLインスペクション除外の設定 FortiOS6.2.4

deep-inspection ではデータを復号しましたが、別の方式として、復号せずに証明書の情報を見る証明書インスペクション(certificate-inspection)もあります。

>> 参考記事:【Fortigate】SSLインスペクション(certificate-inspection)設定と動作確認 FortiOS6.2.4

Palo Alto Networks の機器で SSL を復号する場合は、次の記事を参照してください。

>> 参考記事:【Paloalto】SSL復号化(SSL Forward Proxy)の設定と動作確認

まとめ

項目SSL インスペクションなしdeep-inspection
端末に届く証明書公開サーバの証明書FortiGate が Fortinet_CA_SSL で署名して作った証明書
端末の準備不要FortiGate の CA 証明書を「信頼されたルート証明機関」にインポート
転送トラフィックのログHTTPS としてだけ記録(アプリケーション名は空欄)アプリケーション名(Google.Services など)が表示される
注意点中身を検査できない負荷が高い。必要に応じて除外を設定する

コメント

  1. anonymous より:

    ビルトイン証明書は機器交換時にコンフィグでレストアできないとこは注意必要ですね