XG Firewall VPNについて

この記事で実現すること

外出先から、PC(Windows、macOS)を使い、宅内にあるXG FirewallのIPSecを使ったVPNへ接続できます。ウィルス・マルウェア対策、Webフィルタなど安全なネット閲覧や、宅内のLANリソースへリモートアクセスができます。

XG FirewallのVPN

XGのVPNはプロトコルが何種類かあります。一般的なSSL-VPN,L2TP,PPTP、そしてSophosConnectというIPSecベースのものがあります。IPSecは一般的に安全性が高く、安定しているため、ここではIPSecのVPN導入について説明します。なお、この記事ではXG(VPNサーバ)側の設定およびPC(クライアント)に関する設定について記載しますが、最終的にはスマホ対応、2要素認証まで設定する事を目標にします。

XGにおけるIPSec-VPNはIPv4のみ対応しています。
プロバイダとの接続形態がDS-Liteおよびv6プラスの場合、NATまたは利用ポート制限のため、IPSecによるVPNは利用できません。
v6プラスの場合、SSL-VPNを利用する事で利用できる見込みがあります。XGにおけるSSL-VPNについては、「XG Firewall SSL-VPN」を参照してください。

IPSec VPNについて

IPSec VPNの設定にあたり、インターネットに接続されているホームゲートウェイから、VPNのパケットについては内部のXGのWANインターフェースに転送しなくてはなりません。一般的に市販されているルーターにも装備されていますが、この方法には2通りあります。

  1. 全ての宅内へのトラフィックは全てXGに転送する
    ルーターやホームゲートウェイの製品によって呼び方は異なりますが、DMZホスト機能などと呼ばれます。この場合はインターネットから入ってくるデータは全てXGに送られますので、宅内にサーバーを立てる場合、ホームゲートウェイからはXG以外の端末は接続出来なくなります。ただし、設定は単純というメリットがあります。

  2. IPSecに必要なプロトコルおよび通信PortのみXGに転送する
    こちらは一般的にポートマッピングと呼ばれます。内→外、外→内の方向について細かく設定します。IPSecに必要なプロトコルとPortは外→内で以下の通信になります。

  • ESPプロトコル(プロトコル番号:50)
  • UDP 500,UDP 4500

プロバイダが上記ポートを通せること、また、上記の2つのいずれか対応できれば、XGに対するIPSec-VPN接続が行えます。この画面はホームゲートウェイの画面であり、契約しているインターネット回線業者により、提供される機器は異なりますのであくまで設定例は参考となります。

XG側のVPNユーザー作成

最初にユーザーの作成が必要です。VPNの最終接続形態としては、2要素認証対応のセキュアなものを目指します。ただし、いきなり全ての事を実施すると切り分けが難しいのでまずは2要素認証無しでの接続をし、次に2要素認証有りの接続に取り組みます。XGの左ペインメニューから認証を選択、ユーザーのタブから、追加ボタンをクリックします。そして以下のようにユーザー名、パスワードとメールアドレスを入力します。

他はグループのところで、OPEN Groupを選択するくらいで設定するところはありません。このまま保存をクリックします。VPNは、このユーザー名/パスワードで接続する事になります。

XG側のIPSec-VPNの設定

XGの左ペインメニューからVPNを選択、Sophos Connectのタブを選択します。特に拘りがなければ、デジタル証明書ではなく、事前共有鍵を選択する事にしましょう。それなりの鍵の長さを設定しておけば安全です。また最終的にはワンタイムパスワードを設定する事でかなりの安心感が得られます。鍵はパスワードと異なり、一度クライアントに設定すれば接続の都度入力する必要もないため、複雑で長い鍵長の事前共有鍵の設定が好ましいでしょう。設定は以下の通りに行います。

  • インターフェースはPort2(WAN)を選択します
  • 認証タイプは事前共有鍵を選択します
  • 事前共有鍵は文字列を入力、また繰り返し同じ鍵を入力します
  • 許可されたユーザーには、上記で作成したユーザーを選択します
  • 名前はXGの配置場所として適当な名前を入力します
  • XGのVPNの割り当てネットワークは、LANとは別のネットワークアドレスを入力します。例えばLANが192.168.2.0/24のネットワークならば、192.168.20.1192.168.20.8などと別のネットワークを入力します
  • DNSについては、XG自身のDNS(XGのLAN側のIPアドレス)を入力します
  • 詳細設定のトンネルがアイドルの時に切断を有効にします
  • アイドルセッション時間の間隔は600にします(ご自身で希望の値を設定してください)

適用ボタンをクリックすると、”これにより、同じローカルピアとリモートピア間で設定したすべての接続の事前共有鍵が更新されます。続行してもよいですか?”と表示されます。OKをクリックすれば、VPNが有効になります。

XG側のFirewallルールの確認

上記で設定したVPNがFirewallのルールに登録されている事を確認します。VPNとWANの接続を優先に考え設定します。「XG Firewall v18のルールを作成する」では、デフォルトのルール”To_Internet”を作成しました。ルールについて、以下の図のように送信元ゾーンが、LANとVPNとなっている事を確認してください。

続いて、VPNからLANへのルールを作成します。NATは使わず全てのトラフィックを通過させるものです。以下の通り、送信元ゾーンはVPN、宛先ゾーンはLANのルールを設定します。

(2020-06-20更新)このルールでは、リンクNATルールの作成は行いません。NATの動作の確認のために「NATしない事を明示する」設定を行うと挙動がわかりやすいというメリットはありますが、v18では原則リンクNATは使わず運用可能という考え方のようで当初記載していたリンクNATの記述を削除しました。

さらにルールで保存をクリックしてルールの設定は完成です。念のため現在のルールについて確認しましょう。Traffic to Internalとして、VPNからLANへの接続ルールがあります。もう1つは、Traffice to WANとして、VPNおよびLANからWANへの接続ルールがあります。

XG側のDynamic DNSの設定

自宅のXGに接続するためには自宅に割り当てられたIPアドレスをあらかじめ知る必要がありますので、ここでダイナミックDNS(DDNS)が必要となります。

(2021-8-15更新)
Sophosが提供するDDNSであるmyfirewall.coについては2022年1月末をもってサービス提供終了となります。またXG v18.5では既にmyfirewall.coを選択できなくなっています。XGが対応しているDDNSは以下の通りです。もちろん、このDDNSでなくとも、NASをお持ちの方であればNASが提供しているDDNSを利用できます。

  • DynDNS
  • ZoneEdit
  • EasyDNS
  • DynAccess
  • No-IP
  • DNS-O-Matic
  • Google DNS
  • Namecheap
  • FreeDNS
IPv4アドレスの箇所は、NATされたパブリックIPを選んでください。

登録が終わると、直ちにグローバルIPがダイナミックDNSに登録されます。その後、前回更新したIPにグローバルIPが表示され、前回更新した状態にSuccessと表示されます。

XG側のデバイスのアクセス設定

XG側はこれが最後の設定です。左ペインの管理から、デバイスのアクセスへと進みます。そこに、LAN、WAN、VPN毎にサービスのアクセス権限が定めている一覧になります。ここでは以下の項目のアクセス権を加えます。

  • 管理サービス HTTPS/SSH
    XGの管理メニューにVPN経由でアクセスする事を可能とします。
  • Ping/Ping6
    こちらの設定は任意です。
  • DNS
    LANおよびVPNからのアクセスはXGのDNSをまず最初に参照します。LANにあるホストを参照する時は、XGのDNSがプライベートIPを返すように、スタティックのプライベートIPをDNSに登録しておきたいためです。これは後々サーバーを宅内に立てる場合、活用する事になります。

クライアントのダウンロード

WindowsでVPN接続するためにはVPNクライアントをダウンロードします。上記のXGのVPN設定画面でSophos Connectクライアントのダウンロードというボタンがありました。そちらをクリックし、ソフトウェアをダウンロードします。こちらは、Windows版、macOS版のダウンロードが出来ます。

XG v18 MR-3以前の設定ファイル

この画面の接続のエクスポートボタンをクリックし、接続設定ファイルをダウンロードしてください(拡張子tgb)。

XG v18 MR-4以降の設定ファイル

XG v18 MR-4以降はIPSecの接続に関する詳細設定がXG本体で行えるようになりました。設定画面は以下の通りです。

  • VPNを張る場合、クライアントからの全ての通信を原則XGを経由するため、デフォルトのゲートウェイとして使用を”On”にします。
  • ユーザー、パスワードの保存を許可をチェックします。
  • 2要素認証を使う場合は「2FAトークンの入力を求める」にチェックしますが、2要素認証の事前セットアップが必要であるため、この段階では一旦外しておきましょう。

上記設定し、接続のエクスポートボタンをクリックし、接続設定ファイルをダウンロードしてください(拡張子tar.gz)。このなかにさらに拡張子scxというファイルがありそれを使います。

クライアントのセットアップ

クライアントへのセットアップは、Windowsの場合は、SophosConnect.msiをインストールします。macOSの場合は、SophosConnect.pkgをインストールします。プログラム実行後、右上のメニューから、Import Connectionをクリックし、先ほどダウンロードした接続設定ファイル(拡張子scx)を読み込んでください。

もし、DDNSを上記のDDNS提供業者ではなく、別のものを用意するものに変更するのであれば、scxファイルのddns名の箇所を任意のホスト名に修正できます。
以下のように、”gateway”で始まる行にホスト名またはIPアドレスが記述されているので、この行を目的のホスト名に変更します。

1
"gateway" : "xxxx.myfirewall.co",

1
"gateway" : "xxxx.myhost.domain",

VPNの接続確認

Connectをクリックし、VPN用に設定したユーザー名とパスワードでインターネットから、宅内のXGに接続します。

VPN経由でインターネットに接続し、ブラウザからアクセスできること、IPアドレスがプロバイダから貸与されたアドレスになっているか確認します。また、LANの機器との接続が行える事も確認してください。接続業者によっては、IPSecで利用するESP,UDPプロトコルを通さないところもあります。

なお、ここまで説明してきた通り、LANとVPNのネットワークセグメントは異なりますので、ブロードキャストで相手を見つけるようなアプリケーションはVPNからLANに対する接続は行えません。

公衆回線経由でXGにIPSecで接続できたら、続いて2要素認証の設定に続きます。「XG Firewall VPNに2要素認証を設定する」を参照してください。

SSL/TLSインスペクションの設定(任意設定)

ここまでの設定でVPNの設定は終了ですが、VPNについてもSSL/TLSインスペクションが有効となるように設定をお勧めします。一旦はVPNのネットワークからインターネットにアクセスする場合は、全てがSSL/TLSインスペクションの対象とし、ファイアウォールルールを修正します。

  1. 最初にVPNのネットワークアドレスを左ペインのホストとサービスからIPホストを登録します。

  2. 上記のようにネットワークにIPアドレス(この記事では192.168.20.0/24としています)を登録します。VPNのネットワークは、LANのネットワークとは別のネットワークアドレスとする必要があります。

  3. 次に、左ペインのルールとポリシーから、SSL/TLSインスペクションを選択します。

  4. 事前に作成してあるCatch SSLルールを選択し、ここにVPNのネットワークがSSL/TLSインスペクションの対象である事を設定します。

  5. 上記の図では送信元ネットワークとデバイスに、CAがインストールされているPCおよびiPhoneを対象とするIPグループをCA_Clinet_IPv4として登録していました。これに今回はVPNのネットワークVPN_Network_IPv4を追加登録します。

ここまでの設定でIPSec-VPNの設定は一段落です。SSL/TLSインスペクションの設定および動作確認については、下記の記事を参照して下さい。