いまの 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 です。
- certificate-inspection と deep-inspection の違い
- certificate-inspection では、アンチウイルスと侵入検知が HTTPS の中身を検査できないこと
- アプリケーションコントロールと Web フィルタは、certificate-inspection でもどこまで動くか
検証の構成
端末(10.0.1.10)からインターネットへの HTTPS の通信を、FortiGate のファイアウォールポリシーで中継します。certificate-inspection では、FortiGate は通信を復号せず、証明書の情報と SNI を観察します。
certificate-inspection と deep-inspection の違いを図にすると、次のようになります。
証明書インスペクション(certificate-inspection)の設定
ポリシーに certificate-inspection を設定する
端末からサーバ向きのファイアウォールポリシーで、SSLインスペクション を certificate-inspection にします。あわせて、アンチウイルス、Web フィルタ、アプリケーションコントロール、IPS を有効にし、プロファイルはどれも default にします。
この記事の画面は、実際の画面ではなく、検証時の画面から設定する項目(見るポイント)を抜き出して描いたイメージです。バージョンによって、項目の並びや表記は変わります。
| 1アンチウイルス | ON default |
| Webフィルタ | ON default |
| DNSフィルタ | OFF |
| アプリケーションコントロール | ON default |
| IPS | ON default |
| ファイルフィルタ | OFF |
| 2SSLインスペクション | certificate-inspection certificate-inspectioncustom-deep-inspection deep-inspection |
| ⋮(以下略) | |
この設定で、certificate-inspection のときに UTM の各機能がどう動くかを確認していきます。
アンチウイルス
eicar をダウンロードする
テスト用のウイルスファイル eicar を HTTPS のサイトからダウンロードして、アンチウイルスで検知されるかを確認します。
ダウンロードすると、ウイルスとして検知されることなく、ダウンロードが完了しました。
certificate-inspection では、ファイルの中身が暗号化されたまま FortiGate を通るため、アンチウイルスは HTTPS でダウンロードしたファイルを検査できません。
>> 参考記事:【Fortigate】UTM(アンチウイルス)の設定と動作確認 FortiOS6.2.4
侵入検知
/etc/passwd を検索する
Google で /etc/passwd を検索し、IPS のシグネチャ Web.Server.Password.Files.Access で検知されるかを確認します。
次のとおり、ブロックされることなく、検索結果が表示されました。検索の文字列も HTTPS で暗号化されたまま送られるため、復号しない certificate-inspection では検知できません。
(検索結果が表示される)
>> 参考記事:【Fortigate】UTM(侵入防止)の設定と動作確認 FortiOS6.2.4
アプリケーションコントロール
YouTube の動画を見る
端末から Google や YouTube にアクセスし、YouTube の動画を視聴します。ログ&レポート ›› 転送トラフィック を見ると、certificate-inspection でもアプリケーション名が表示されます。
| 送信元 | 宛先 | サービス | アプリケーション名 | 結果 |
|---|---|---|---|---|
| 10.0.1.10 | nrt12s02-in-f164.1e100.net | HTTPS | Google.Services | ✓ 2.04 kB / 1.44 kB |
| 10.0.1.10 | (伏せています) | HTTPS | Google.Accounts | ✓ 10.96 kB / 509.46 … |
| 10.0.1.10 | nrt12s29-in-f3.1e100.net | HTTPS | Google.Services | ✓ 2.02 kB / 1.44 kB |
| 10.0.1.10 | apis.google.com | HTTPS | 1YouTube | ✓ 1.10 kB / 4.52 kB |
| 10.0.1.10 | apis.google.com | HTTPS | YouTube | ✓ 1.10 kB / 4.52 kB |
| 10.0.1.10 | www.google.co.jp | HTTPS | Google.Services | ✓ 7.38 kB / 292.11 … |
| 10.0.1.10 | nrt12s13-in-f10.1e100.net | HTTPS | Google.Services | ✓ 2.38 kB / 4.68 kB |
次に、SSL インスペクションを deep-inspection に変えて、同じ操作をします。
| 送信元 | 宛先 | サービス | アプリケーション名 | 結果 |
|---|---|---|---|---|
| 10.0.1.10 | www.gstatic.com | HTTPS | Google.Services | ✓ 1.75 kB / 4… |
| 10.0.1.10 | (伏せています) | HTTPS | 1YouTube_Video.Play鍵 | ✓ 3.87 kB / … |
| 10.0.1.10 | nrt12s28-in-f22.1e100.net | HTTPS | YouTube | ✓ 936 B / … |
| ⋮(中略) | ||||
| 10.0.1.10 | (伏せています) | HTTPS | YouTube_Video.Play鍵 | ✓ 34.91 kB / … |
| 10.0.1.10 | nrt13s49-in-f14.1e100.net | HTTPS | YouTube_Video.Access鍵 | ✓ 43.19 kB / … |
| 10.0.1.10 | nrt13s49-in-f14.1e100.net | HTTPS | YouTube | ✓ 28.55 kB / … |
| 10.0.1.10 | googleads.g.doubleclick.net | HTTPS | Google.Ads | ✓ 2.25 kB / … |
鍵マーク(図では「鍵」)の付いたアプリケーション名が表示されています。certificate-inspection では動画の視聴も YouTube という分類でしたが、deep-inspection にすると、YouTube_Video.Play、YouTube_Video.Access のように、より細かくアプリケーションを識別しています。鍵マークにカーソルを合わせると、そのアプリケーションの識別には SSL のディープインスペクションが必要であることがわかります。
| ID | 38569 |
| カテゴリ | Video/Audio |
| プロトコル | TCP, HTTP |
| ポート | TCP/443 |
| テクノロジー | Browser-Based |
| ビヘイビア | Excessive-Bandwidth, Cloud |
| ベンダー | |
| 1凡例 | 雲クラウドアプリケーション 鍵SSLディープインスペクションが必要 |
>> 参考記事:【Fortigate】アプリケーションコントロールの設定と動作確認 FortiOS6.2.4
Web フィルタ
カテゴリ「ストリーミングメディアとダウンロード」をブロックする
Web フィルタの default プロファイルで、FortiGuard カテゴリの ストリーミングメディアとダウンロード のアクションを ブロック にします。ポリシーの SSL インスペクションは certificate-inspection に戻しておきます。
| 名前 | アクション |
|---|---|
| 帯域を消費しやすいサイト | |
| ⋮ | |
| ファイル共有とストレージ | ✓ 許可 |
| 1ストリーミングメディアとダウンロード | ⊘ ブロック |
| ⋮(以下略) | |
YouTube にアクセスする
YouTube にアクセスすると、ブロックされて、ページは表示されません。ブラウザには、FortiGate のブロック画面ではなく、証明書のエラー画面が表示されました。
エラー コード: DLG_FLAGS_INVALID_CA
このサイトは、HTTP Strict Transport Security を使用しているため、現時点でこのサイトに移動できません。
FortiGate がブロック画面(置き換えメッセージ)を返すには、HTTPS のセッションの中に自分のページを入れる必要があり、そのページには FortiGate の CA 証明書で署名した証明書が使われます。端末が FortiGate の CA 証明書を信頼していないと、このように証明書のエラーになります。さらに YouTube は HSTS(HTTP Strict Transport Security)を使っているので、ブラウザはエラーを無視して先に進むこともできません。
ログ&レポート ›› Webフィルタ を見ると、YouTube へのアクセスがカテゴリ ストリーミングメディア.ダウンロード でブロック(blocked)されていることを確認できます。
| 送信元 | アクション | URL | カテゴリ説明 |
|---|---|---|---|
| 10.0.1.10 | 1blocked | https://www.youtube.com/ | ストリーミングメディア.ダウンロード |
| 10.0.1.10 | blocked | https://r3—sn-oguelnsl. | ストリーミングメディア.ダウンロード |
| 10.0.1.10 | blocked | https://r3—sn-oguelnsl. | ストリーミングメディア.ダウンロード |
| 10.0.1.10 | blocked | https://www.youtube.com/ | ストリーミングメディア.ダウンロード |
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 になります。
コメント