FortiGate SSL Deep Inspection

FortiGate

FortiGateでSSL通信のアンチウイルスを行なう場合の設定手順

概要

FortiGateで社内とインターネット間の通信をスキャンしてマルウェアを除去するのは良くある使い方だが、ポリシーの「アンチウイルス」を有効にしただけでは多くの通信はマルウェアを検出することはできない。

何故なら現在多くのWebサーバーがSSL化されHTTPSによる通信を行なっているからだ。

HTTPSではクライアント~Webサーバー間でSSL(正確にはTLS)による暗号化が行なわれる。経路の中間に位置するFortiGateで通過するパケットの中身を検査しようとも暗号化されているためパケットを解析することはできない。いくら「アンチウイルス」を有効にしても検査は素通りとなっているわけだ。

これに対応するためFortiGateには「Deep Inspection」という方法が用意されているのだが、デフォルトでは「Cerificate Inspection」が選択されるようになっている。「Cerificate Inspection」はWebフィルタリングでは有効に機能するが、それ以外のUTM機能では役に立たない。

では「Deep Inspection」はどのような動作をするのか。

クライアントがWebサーバーへHTTPS通信のリクエストを送信する、するとFortiGateはWebサーバーと自分との間で暗号化通信を行ない(つまり暗号を復号する)パケットの検査をする。そしてパケットを再度暗号化してクライアントへ返す。このとき暗号通信で使われるサーバー証明書は元々のWebサーバーのものではなくFortiGateの証明書が使われる。このためFortiGateの証明書をクライアントが信頼するように構成しないとWebブラウザーに「証明書警告」が表示されてしまうことになる。この点が「Deep Inspection」を使用する上で注意が必要なポイントだ。本記事ではこの点を中心に扱う。

必用なもの

FortiGateに必用なもの

  • 暗号化に使用するサーバー証明書
  • SSLインスペクションプロファイルの作成
  • ポリシーの変更

クライアントに必用なもの

  • FortiGateのサーバー証明書を発行したCAのCA証明書

FortiGateのサーバー証明書

3つの選択肢がある

  • 商用CAからサーバー証明書を購入
  • プライベートCAでサーバー証明書を発行
  • 自己署名証明書を使用する

商用CA

グローバルサインやデジサートなどへ申し込む方法だが、費用面で敷居が高いため、この用途で使用することは少ないが、クライアントOSには多くの商用CAのCA証明書が組み込まれているためクライアント側の作業が要らないのが大きなメリット。

プライベートCA

無線LANの802.1x認証用に社内でWindowsサーバーの証明機関やNetAttest等のCAを運用しているケースは多い。このCAのCA証明書はクライアントにインポート済みのはずなので、このCAでFortiGateのサーバー証明書を発行すればクライアント側の作業が要らない。

自己署名証明書

商用CAもプライベートCAも利用できない場合、FortiGateに組み込み済みの自己署名証明書を使用するしかない。この場合、この証明書をクライアントの「信頼するルート証明機関」へ配付しなければならない。AD環境ならばグループポリシーで配付できるが、そうでなければ手順書かスクリプトでも作成して利用者にインポート作業を依頼しなければならない。

証明書の発行依頼

商用CAでもプライベートCAでも、証明書を発行してもらうには「CSR」(証明書署名要求)を作成してCAへ送付する。

システム > 証明書 > 生成 >

必用な項目は下図サンプルを参照

すると「証明書」欄にCSRが登録されるので、これを選択して「ダウンロード」をクリックしファイルを保存する。

CAではこのCSRの中身(テキスト全文)を読み込んで証明書を発行(署名)する

-----BEGIN CERTIFICATE REQUEST-----
MIIC8DCCAdgCAQAwgYExCzAJBgNVBAYTAkpQMQ4wDAYDVQQIEwVUb2t5bzESMBAG
A1UEBxMJTWluYXRvLWt1MR0wGwYDVQQKExRFeHNhbXBsZSBDb3Jwb3JhdGlvbjEW
MBQGA1UECxMNSVQgTWFuYWdlbWVudDEXMBUGA1UEAxMOYWQuZXhzYW1wbGUuanAw
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDd03FeQnrCNmHtEN8B5RdC
uHdLT0KfrtOevtaedz2nOpu7uIZSE/pPMFWKSrurkkMN6vba0JT4/QOWDnp/1nj8
zppLqX3u5t87wr3ILYOHOoY8CdH+6SeyPHjzbEKY+yj/LasO/BZ98nReyodNfPt+
62F5aMzAawclkDCVFnB9KBNZ120z8liIldS5b1Y0eL6+2+7Dbs7iUHJJ38YjMaf3
sy6P0FU6LOZ/+XYbAlUdvQW2VvG9mTIXRANFBzA6eTgv5b94innlLGv/KSDb7x6f
/Y5a8ave+dLh7ZONessCLTlceQNx2RS4GSXScv+5SZIZ2vJwCskiH9OZxdcdcATB
AgMBAAGgKTAnBgkqhkiG9w0BCQ4xGjAYMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgWg
MA0GCSqGSIb3DQEBCwUAA4IBAQDEmHRxQl3KkKkQ9PL/8F/tS9inOUtp86wMW54V
P4k47lGfWa+vSNgfcpWhGHMG343jLZd68q9pLu1VxkFhOxnfdtZMoQ02cWLRPcW6
RoPkOEu/JAhjM/cJRQzEAEFFI7IpRD1RrQf7ZrTX3nRz67Ox1JGd1zk9NYI8KRH7
/ID3ZCa3+ICnEnn6IkeGzRW57VZzxqidcuhsQs5mrcElOiNkxYl1VvfItGz913/q
O0kfHf365u/VEPT1HAjqkCJHvHvRcysK05GCrmf7fwuH1g+/sfdUsgHWtVLjnkIS
UF2myFcr5xUa9a1rfpI6KtczVYSK3cDmF7sCQoZvegAY52Ua
-----END CERTIFICATE REQUEST-----

CAで証明書を発行したら、今度はそれをFortiGateへインポートする

システム > 証明書 > インポート > ローカル証明書 > アップロード

インポートが成功すると、「証明書」欄に表示されていたCSRが証明書に置き換わる(サブジェクトが表示される)

これで証明書の準備はオッケーだ。

SSLインスペクションプロファイルの作成

FortiGateにはデフォルトで「deep-inspection」プロファイルが組み込まれているが、このプロファイルは編集ができないためクローンを作成して使用する

セキュリティプロファイル > SSL/SSHインスペクション > 右上の▼で「deep-inspection」を選択 > その右のリストマークをクリック

次の画面に変るので 「deep-inspection」を選択して「クローン」

クローンの名前を入力

作成されたプロファイルを選択して「編集」 > 「CA証明書」を「Fortinet_CA_SSL」から先にインポートした証明書に変更する。その他の項目は必要に応じて変更する。
(Forigateの組み込み済み自己署名証明書を使用する場合は変更しないで、「証明書をダウンロード」をクリックして証明書を保存しておく)

ポリシーの作成(修正)

アンチウイルスを掛けるポリシーを作成する(または既存ポリシーを修正する)

SSLインスペクションを「certificate-inspection」から作成したプロファイルに変更する

自己署名証明書の配付

Forigateの組み込み済み自己署名証明書を使用する場合は、先に保存した証明書をクライアントへ配付しインポートする。

FortiGateDeep Inspection,SSL,証明書

Posted by senchan