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

いまの Web の通信は、大半が https:// で始まる URL で、SSL/TLS で暗号化されています。FortiGate で、暗号化された通信にアンチウイルスや侵入検知をかけるには、SSL インスペクションの deep-inspection を使い、いったん通信を復号して中身を検査する必要があります。

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

ただし、deep-inspection では、端末に FortiGate のルート証明書(CA 証明書)をインストールする必要があり、機器の処理負荷も高くなります。SSL インスペクションには、もう一つ、証明書インスペクション(certificate-inspection)があります。こちらは通信を復号せず、SSL/TLS のハンドシェイクから証明書の情報と SNI を見て、接続先のサーバ名を知る方法です。復号しないので、端末にルート証明書をインストールする必要がなく、機器の負荷も軽くなります。

この記事では、certificate-inspection を適用したときに、UTM の各機能(アンチウイルス、侵入検知、アプリケーションコントロール、Web フィルタ)がどう動くかを確認します。検証時の FortiOS は 6.2.4 です。

この記事でわかること
  1. certificate-inspection と deep-inspection の違い
  2. certificate-inspection では、アンチウイルスと侵入検知が HTTPS の中身を検査できないこと
  3. アプリケーションコントロールと Web フィルタは、certificate-inspection でもどこまで動くか

検証の構成

端末(10.0.1.10)からインターネットへの HTTPS の通信を、FortiGate のファイアウォールポリシーで中継します。certificate-inspection では、FortiGate は通信を復号せず、証明書の情報と SNI を観察します。

Internet端末10.0.1.10FortiGate(UTM)HTTPSHTTPS公開サーバの証明書で端末まで暗号化復号せず、証明書と SNI を観察certificate-inspection
図1 検証の構成

certificate-inspection と deep-inspection の違いを図にすると、次のようになります。

certificate-inspection復号しない:SNI・証明書だけを見る端末FortiGateサーバサーバの証明書で暗号化サーバの証明書で暗号化SNI・証明書deep-inspection復号する:中身まで検査できる端末FortiGateサーバFortiGate の証明書で暗号化サーバの証明書で暗号化復号して検査
図2 certificate-inspection と deep-inspection の違い

証明書インスペクション(certificate-inspection)の設定

ポリシーに certificate-inspection を設定する

端末からサーバ向きのファイアウォールポリシーで、SSLインスペクション を certificate-inspection にします。あわせて、アンチウイルス、Web フィルタ、アプリケーションコントロール、IPS を有効にし、プロファイルはどれも default にします。

画面イメージについて

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

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

この設定で、certificate-inspection のときに UTM の各機能がどう動くかを確認していきます。

アンチウイルス

eicar をダウンロードする

テスト用のウイルスファイル eicar を HTTPS のサイトからダウンロードして、アンチウイルスで検知されるかを確認します。

ダウンロードすると、ウイルスとして検知されることなく、ダウンロードが完了しました。

端末のブラウザ(Internet Explorer)画面イメージ
eicar のダウンロードページ(HTTPS)
eicar.com(68 Bytes)The eicar.com download has completed. Run / Open folder / View downloads
図4 eicar のダウンロードが完了した画面(実際の画面ではなく、表示のポイントを示したイメージです)

certificate-inspection では、ファイルの中身が暗号化されたまま FortiGate を通るため、アンチウイルスは HTTPS でダウンロードしたファイルを検査できません。

>> 参考記事:【Fortigate】UTM(アンチウイルス)の設定と動作確認 FortiOS6.2.4

侵入検知

/etc/passwd を検索する

Google で /etc/passwd を検索し、IPS のシグネチャ Web.Server.Password.Files.Access で検知されるかを確認します。

次のとおり、ブロックされることなく、検索結果が表示されました。検索の文字列も HTTPS で暗号化されたまま送られるため、復号しない certificate-inspection では検知できません。

端末のブラウザ(Internet Explorer)画面イメージ
https://www.google.com/search?…%2Fetc%2Fpasswd…
/etc/passwd – Google 検索約 12,600,000 件(0.35 秒)
(検索結果が表示される)
図5 /etc/passwd の検索結果(実際の画面ではなく、表示のポイントを示したイメージです)

>> 参考記事:【Fortigate】UTM(侵入防止)の設定と動作確認 FortiOS6.2.4

アプリケーションコントロール

YouTube の動画を見る

端末から Google や YouTube にアクセスし、YouTube の動画を視聴します。ログ&レポート ›› 転送トラフィック を見ると、certificate-inspection でもアプリケーション名が表示されます。

FortiGate 管理画面(certificate-inspection)画面イメージ
ログ&レポート ›› 転送トラフィック
送信元宛先サービスアプリケーション名結果
10.0.1.10nrt12s02-in-f164.1e100.netHTTPSGoogle.Services✓ 2.04 kB / 1.44 kB
10.0.1.10(伏せています)HTTPSGoogle.Accounts✓ 10.96 kB / 509.46 …
10.0.1.10nrt12s29-in-f3.1e100.netHTTPSGoogle.Services✓ 2.02 kB / 1.44 kB
10.0.1.10apis.google.comHTTPS1YouTube✓ 1.10 kB / 4.52 kB
10.0.1.10apis.google.comHTTPSYouTube✓ 1.10 kB / 4.52 kB
10.0.1.10www.google.co.jpHTTPSGoogle.Services✓ 7.38 kB / 292.11 …
10.0.1.10nrt12s13-in-f10.1e100.netHTTPSGoogle.Services✓ 2.38 kB / 4.68 kB
図6 certificate-inspection での転送トラフィック(実際の画面ではなく、表示のポイントを示したイメージです。宛先はホスト名だけを示しています)

次に、SSL インスペクションを deep-inspection に変えて、同じ操作をします。

FortiGate 管理画面(deep-inspection)画面イメージ
ログ&レポート ›› 転送トラフィック
送信元宛先サービスアプリケーション名結果
10.0.1.10www.gstatic.comHTTPSGoogle.Services✓ 1.75 kB / 4…
10.0.1.10(伏せています)HTTPS1YouTube_Video.Play鍵✓ 3.87 kB / …
10.0.1.10nrt12s28-in-f22.1e100.netHTTPSYouTube✓ 936 B / …
⋮(中略)
10.0.1.10(伏せています)HTTPSYouTube_Video.Play鍵✓ 34.91 kB / …
10.0.1.10nrt13s49-in-f14.1e100.netHTTPSYouTube_Video.Access鍵✓ 43.19 kB / …
10.0.1.10nrt13s49-in-f14.1e100.netHTTPSYouTube✓ 28.55 kB / …
10.0.1.10googleads.g.doubleclick.netHTTPSGoogle.Ads✓ 2.25 kB / …
図7 deep-inspection での転送トラフィック(実際の画面ではなく、表示のポイントを示したイメージです。宛先はホスト名だけを示しています)

鍵マーク(図では「鍵」)の付いたアプリケーション名が表示されています。certificate-inspection では動画の視聴も YouTube という分類でしたが、deep-inspection にすると、YouTube_Video.Play、YouTube_Video.Access のように、より細かくアプリケーションを識別しています。鍵マークにカーソルを合わせると、そのアプリケーションの識別には SSL のディープインスペクションが必要であることがわかります。

FortiGate 管理画面(アプリケーションの詳細)画面イメージ
YouTube_Video.Play
ID38569
カテゴリVideo/Audio
プロトコルTCP, HTTP
ポートTCP/443
テクノロジーBrowser-Based
ビヘイビアExcessive-Bandwidth, Cloud
ベンダーGoogle
1凡例雲クラウドアプリケーション
鍵SSLディープインスペクションが必要
図8 鍵マークの意味(実際の画面ではなく、表示のポイントを示したイメージです)

>> 参考記事:【Fortigate】アプリケーションコントロールの設定と動作確認 FortiOS6.2.4

Web フィルタ

カテゴリ「ストリーミングメディアとダウンロード」をブロックする

Web フィルタの default プロファイルで、FortiGuard カテゴリの ストリーミングメディアとダウンロード のアクションを ブロック にします。ポリシーの SSL インスペクションは certificate-inspection に戻しておきます。

FortiGate 管理画面画面イメージ
セキュリティプロファイル ›› Webフィルタ ›› default
FortiGuardカテゴリベースのフィルタ  ON
名前アクション
帯域を消費しやすいサイト
⋮
ファイル共有とストレージ✓ 許可
1ストリーミングメディアとダウンロード⊘ ブロック
⋮(以下略)
図9 Web フィルタのカテゴリの設定(実際の画面ではなく、設定する項目を示したイメージです)

YouTube にアクセスする

YouTube にアクセスすると、ブロックされて、ページは表示されません。ブラウザには、FortiGate のブロック画面ではなく、証明書のエラー画面が表示されました。

端末のブラウザ(Internet Explorer)画面イメージ
https://www.youtube.com/
このサイトは安全ではありませんお使いの PC はこの Web サイトのセキュリティ証明書を信頼しません。
エラー コード: DLG_FLAGS_INVALID_CA
このサイトは、HTTP Strict Transport Security を使用しているため、現時点でこのサイトに移動できません。
図10 YouTube にアクセスしたときの画面(実際の画面ではなく、表示のポイントを示したイメージです)
ブロック画面が表示されない理由

FortiGate がブロック画面(置き換えメッセージ)を返すには、HTTPS のセッションの中に自分のページを入れる必要があり、そのページには FortiGate の CA 証明書で署名した証明書が使われます。端末が FortiGate の CA 証明書を信頼していないと、このように証明書のエラーになります。さらに YouTube は HSTS(HTTP Strict Transport Security)を使っているので、ブラウザはエラーを無視して先に進むこともできません。

ログ&レポート ›› Webフィルタ を見ると、YouTube へのアクセスがカテゴリ ストリーミングメディア.ダウンロード でブロック(blocked)されていることを確認できます。

FortiGate 管理画面画面イメージ
ログ&レポート ›› Webフィルタ
送信元アクションURLカテゴリ説明
10.0.1.101blockedhttps://www.youtube.com/ストリーミングメディア.ダウンロード
10.0.1.10blockedhttps://r3—sn-oguelnsl.googlevideo.com/ストリーミングメディア.ダウンロード
10.0.1.10blockedhttps://r3—sn-oguelnsl.googlevideo.com/ストリーミングメディア.ダウンロード
10.0.1.10blockedhttps://www.youtube.com/ストリーミングメディア.ダウンロード
図11 Web フィルタのログ(実際の画面ではなく、表示のポイントを示したイメージです)

certificate-inspection でも、接続先サーバのサーバ名(SNI や証明書のコモンネーム)がわかるので、Web フィルタのカテゴリによるブロックは機能します。

>> 参考記事:【Fortigate】UTM(Webフィルタ、URLフィルタ)の設定と動作確認 FortiOS6.4.3

まとめ

SSL インスペクションの deep-inspection と certificate-inspection では、UTM の動作が違います。この特性を意識して、実際の環境に適用するかを検討してください。

UTM 機能certificate-inspection での結果(今回の検証)
アンチウイルスHTTPS でダウンロードした eicar を検知できない
侵入検知(IPS)HTTPS の中の /etc/passwd の検索を検知できない
アプリケーション
コントロール
YouTube のような大まかな識別はできる。YouTube_Video.Play のような細かい識別(鍵マーク付き)には deep-inspection が必要
Web フィルタカテゴリでブロックできる。ただし、ブロック画面は証明書のエラーになる
補足

TLS 1.3 では、サーバ証明書もハンドシェイクの中で暗号化されて送られます。そのため、TLS 1.3 の通信では、certificate-inspection で見える接続先の情報は、主に ClientHello の SNI になります。

コメント