XG Firewall v18のSSL/TLSインスペクションの設定
この記事で実現すること
XG Firewall v18のSSL/TLSインスペクションを使い、暗号化されたSSL/TLS通信を解読します。これにより、ウィルスやマルウェアなどの脅威を通信中に検出し、PCやiPhone等(Windows、macOS、Linux、iOS)が攻撃を受ける前に防御できるようになります。XG Firewall v18のメリット
XGでは暗号化された通信を高速に解読し、ウィルスやマルウェアのダウンロードをPCやスマホが受信する前に防ぐ事が可能となります。また、利用を認めていないアプリケーションのデータのやりとりを未然に防ぐ事も可能です。v18では、全く新しいXStreamアーキテクチャによって、この解読(SSL/TLSインスペクション)の速度が大幅に向上しました。
SSL/TLSインスペクションの対象ホストを決める
「SSLインスペクションについて」に記載した通り、SSL/TLSインスペクションを行うためには、PC等のクライアントにXGのCA証明書をインストールする事が必須となります。従いSSL/TLSインスペクションの対象のグループ、家電やAndroidなどのSSL/TLSインスペクションを使えないグループとに分類します。この2つのグループはIPアドレスの範囲で分割するのが最も簡単な方法です。例えば、SSL/TLSインスペクショングループはスタティックでIPを割り当て、非SSL/TLSインスペクショングループはDHCPで動的なIPアドレスを配布する方法があります。XGのDHCPサーバーはMACアドレスを元に固定IPをスタティックに割り振る事が可能です。
SSL/TLSインスペクションの対象をDHCPに登録する
左ペインのネットワークからDHCPのタブをクリックし、Default DHCP Serverをクリックします。そこには、”スタティックIP_MACマッピング”があるので、DHCPで自動リースをしている以外のIPアドレスをスタティックに割り振って登録してください。管理の一例としては以下の通りです。
- 証明書を登録できないIoTなどをDHCPで
192.168.2.101
〜192.168.2.128
を動的割り当て - 証明書が登録可能なホストをスタティックIPマッピングで
192.168.2.129
〜192.168.2.192
を固定割り当て
ここはユーザーの「決め」ですが、上記で証明書がインストール出来るグループを”IPホスト”としてXGに登録しましょう。左ペインのホストとサービスから、IPホストのタブをクリックし追加ボタンをクリックします。以下の通り、ホストのIPの範囲を示す名前を入力し、IPの範囲を入力して保存ボタンをクリックします。ここでは、CA_Client_IPv4として登録する事にします。
ファイアウォールルールの設定
左ペインのルールとポリシーからルールとポリシーを選択します。「XG Firewall v18のルールを作成する」にて、デフォルトのルール”To_Internet”を作成しました。Traffic to WANのグループ配下に”To_Internet”ルールがある事を確認してください。このファイアウォールルールはLANおよびVPNからWANへの接続を許可するシンプルなものですが、今回これは修正しません。XG v18では、SSL/TLSインスペクションとファイアウォールルールは互いに独立していて、別メニューで設定する事になります。
SSL/TLSインスペクションルールの設定
ここで、SSL/TLSインスペクショングループと非SSL/TLSインスペクショングループとの明確化を行います。左ペインのルールとポリシーからSSL/TLSインスペクションルールをクリックします。
- 画面右側の追加ボタンをクリックします
- ルール名を入力します。ここでは”Catch_SSL”とします
- ルールの位置は”最下位”のままにします
- 処理は復号化を選択します
- 復号化のプロファイルはStrict Complianceを選択します
- 送信元の送信ゾーンは、”LAN”と”VPN”を選択します
- 送信元ネットワークとデバイスは、”任意”を外し、SSL/TLSインスペクショングループとして作成した”CA_Client_IPv4”を選択します
- 宛先とサービスの宛先ゾーンは、”WAN”を選択します
- 最後に保存ボタンをクリックします
暗号化のプロファイルのStrict Complianceは一番厳しいものです。左ペインのプロファイルの”復号化のプロファイル”を見てもらうと分かりますが、TLS1.0と1.1を認めないという事です。主要なブラウザは2020年上半期にTLS1.0と1.1を無効化するので、この設定が主流になると予想されます。
XGのCA証明書をクライアントにインストール
左ペインの一番下の証明書から、認証局(CA)をクリックします。この中にSecurity Appliance_SSL_CAという名前の証明書があります。今回これをクライアントに配布していく事になります。右の下向きの矢印があるダウンロードを選択してクライアントにルート証明書をダウンロードします。Security Appliance_SSL_CA.pemという名前になります。
ルート証明書をダウンロードした後、クライアントへのインストールについては、OS毎に手順をそれぞれ確認し設定します。
Windowsにルート証明書をインストール
- プログラムとファイル名の検索のボックスにMMCと入力してMicrosoft Management Consoleを開きます。
- ファイル-スナップインの追加と削除を選択して"スナップインの追加と削除"を開きます。
- 一覧から証明書 を選択して、追加をクリックすると”スナップインの追加と削除”のウィンドウが開かれます。
- コンピュータアカウントを選択して、次へをクリックします。
- ローカルコンピューターがラジオボタンで選択されている事を確認し完了をクリックします。
- “OK”をクリックして証明書をスナップインに追加すると”スナップインの追加と削除”のウィンドウに証明書(ローカルコンピューター)が表示されます。
- 証明書(ローカルコンピューター)のコンテナを展開して、信頼されたルート証明機関を右クリックして、”すべてのタスク > インポート”を選択して証明書インポートのウィザードを開始します。
- 証明書インポートのウィザードでは、参照ボタンをクリックして、拡張子pemを読み込むためすべてのファイル(*.*)を選び、XGからダウンロードした、Security Appliance_SSL_CA.pemを選択します。
9.信頼されたルート証明機関としてXGの証明書を登録し完了です。
macOSにルート証明書をインストール
- iCloud Driveに証明書を配置します
- ローカルドライブに証明書をコピーします
- 証明書を開きます。キーチェーンアクセスが起動するので、以下のようにキーチェーンアクセスから証明書を”常に信頼する”設定を加えます
Linuxにルート証明書をインストール
- Linux側にsshで接続できる事が前提です。PCなどからscpで証明書をLinuxにコピーします
1 | $ scp ./SecurityAppliance_SSL_CA.pem linux-host:/tmp/ca.crt |
- Linux上で証明書をインストールします。
ubuntu、Debianの場合
1 | $ sudo cp /tmp/ca.crt /usr/local/share/ca-certificates/ |
CentOS、Fedora、またはRedHatベースのシステムの場合
1
2$ sudo cp /tmp/ca.crt /etc/pki/ca-trust/source/anchors/
$ sudo update-ca-trust
※ubuntu20.04で動作確認をしています。
iOSにルート証明書をインストール
iOSで「ファイル」アプリを使います。
- iCloud Driveに証明書を配置します
- “ファイル”アプリを起動します。iCloud Driveから証明書ファイルをタップしダウンロードします
- “プロファイルがダウンロードされました”と表示されます
- 設定アプリを起動します
- “設定”→”一般”→”プロファイル”と進みます
- ダウンロード済プロファイルに、Sophos SSL CA_xxxxが表示されているので、タップします
- 画面右上の”インストール”をタップします
- iOSのパスコードを入力します
- 右上のインストールを再度タップし、インストールを完了します
- “設定”→”一般”→”情報”と進みます
- 画面の一番下の”証明書信頼設定”をタップします
- Sophos SSL CA_xxxxが表示されているので、スイッチを右側に移動させオン(緑色点灯)します
Firefoxへの証明書インストール
FirefoxはOSの証明書ストアを参照しないため、ブラウザ自身に証明書を取り込む必要があります。ブラウザの設定から以下の通り証明書を取り込みます(ubuntuの例)。
動作確認
ブラウザの鍵マークをクリックする事でXGの証明書によって再署名されている事が確認出来ます。XGのログイン後のコントロールセンターの左上にライセンスナンバーが記載されていますが、実際の証明書でもそのナンバーが確認出来ます。
これで証明書のインストールは完了です。この証明書のインストールがXG Firewallの設定で一番大切な部分です。
XGのCA証明書がインストールできないIoT機器をSSL/TLSインスペクションの対象とすると、証明書エラーとなり機器が正しく動作しなくなる可能性があります。
(2020-09-30追記)
iOS14より、Wi-Fiの設定にプライベートアドレスという項目が追加されています。これはWi-Fiネットワーク毎にMACアドレスを自動的に変更し、匿名性を保つ機能になります。このページでXGのSSL/TLSインスペクションを利用する際は、MACアドレスを元にDHCPでいつも同じIPアドレスが配布される仕組みを推奨しています。つまり、このMACアドレスが毎回変わるようだと固定IPを割り当て出来ません。対策としては、自宅のWi-Fiについてはプライベートアドレスをオフにする(推奨)、或いはiOSに最初からスタティックのIPアドレスを割り振る方法があります。Apple社からのプライベートアドレスに関する説明がされています。この機能の目的は以下のようです。
デバイスがすべてのネットワークで常に同じ Wi-Fi MAC アドレスを使っていると、時間の経過に伴い、ネットワークの事業者やその他のネットワーク観測者がそのアドレスをデバイスのネットワーク活動や位置情報に紐付けることがたやすくなります
詳細は以下の記事を参照してください。
Apple -iOS 14、iPadOS 14、watchOS 7 でプライベート Wi-Fi アドレスを使う-
https://support.apple.com/ja-jp/HT211227
自宅での利用の場合は見知らぬMACアドレスがあると、知らない端末からの接続があったのかとちょっとびっくりしますので、自宅では使用しない選択が良いでしょう。