Sophos UTMでVPNユーザに割り当てるIPを固定する方法

sophos

こんにちわ。大阪の市田です。
今回は、Sophos-UTMでSSL VPNを利用している時、VPNユーザに対して割り当てられるIPアドレスを固定化する方法についてご紹介します。

概要

Sophos UTMでSSL-VPNを利用する時は、基本的にVPNユーザに対して自動的にIPプールから昇順でIPアドレスを割り当てます。
しかし、「どのユーザがどのIPを利用しているか管理したい」とか、「クライアント毎に細かくアクセス制御したい」といったケースがあるかと思います。
Sophos UTMでは、NAT設定を行うことで、ユーザへのIP振り出しをユーザ毎に固定化することができます。例えば「ユーザAは常に10.242.10.10の割当」、「ユーザBは常に10.242.10.11の割当」といった具合です。
今回はその設定方法について紹介したいと思います。

sophos-sslvpn-staticip

前提

Sophos UTM側のSSL VPN設定は完了しているものとします。設定は下記のエントリを参考にして頂ければと思います。

設定概要

ネットワーク設定

  • SSL VPNのIPプールはデフォルトの「10.242.2.0/24」
  • VPNユーザに固定で割り当てる為のIPアドレスは「10.10.1.0/24」を想定
  • VPCはデフォルトVPCを利用
  • Sophos UTMと動作確認用のWebサーバは同じサブネットに設置
  • その他の設定は過去のエントリの内容と同様

Sophos UTM設定

  • VPNユーザにスタティックIPアドレス使用を設定
  • NAT設定の追加

AWS設定

  • VPCのルートテーブルの修正
  • (必要に応じて)VPN経由でアクセスするインスタンスのセキュリティグループの修正

Sophos設定手順

まず、対象VPNユーザにスタティックIPの設定を行います。 今回は「cm-ichida」というユーザに対して設定します。既にユーザ作成は完了している想定です。
対象ユーザの設定画面にて「リモートアクセスにスタティックIPアドレスを使用」にチェックを入れ、固定したいIPアドレスを入力し、保存します。

01-static

次に、NAT設定を行う為、NAT設定画面に移ります。
「ネットワークプロテクション」ー「NAT」ー「NATタブ」 の順にクリックしてNAT設定画面を開きます。NAT設定画面を開いたら「新規NATルール」をクリックして設定を作成していきます。

02-nat

まずDNAT設定を作成します。
「ルールタイプ」を「DNAT(宛先)」を選択します。次の「マッチング条件」欄で、フォルダアイコンをクリックします。そうすると左側のメニュー欄がネットワーク項目の表示に変わります。
この状態で左側の「Internal(Network)」を「トラフィック送信元」の空欄にドラッグします。これで設定できます。

03-matching

(この「Internal(Network)」はデフォルトではSophosインスタンスがあるサブネットが指定されています。この環境はデフォルトVPCで検証したので、172.31.16.0/20になっています。)

次の「トラフィック宛先」では「+」をクリックして新規作成します。

03-matching2

今回はクライアントに「10.10.1.5」を固定で割当したいので下記のように設定します。

04-object

「アクション」欄では、先程と同じように左側の一覧から対象の「cm-ichida(User Network)」をドラッグして保存します。これで「DNAT」の設定は完了です。

05-action

同様に「SNAT」の設定を行います。下記のように各設定項目をドラッグして保存します。

06-snat

「SNAT」と「DNAT」の設定が完了したら、下記の箇所をクリックしてグリーンに変更することで有効化します。

07-enable

AWS側設定

次にAWS側の設定を行います。
VPC側へのトラフィックは固定したIPアドレス(10.10.1.0/24)になるので「10.10.1.0/24」宛のトラフィックをSophos UTMにルーティングするように設定します。 (IP固定をせずにVPN接続する際は、VPN用のIPプール(SSL VPNのデフォルトで10.242.2.0/24)宛のトラフィックをルーティングするようにしていました。)

08-routing

今回は簡単な構成として、WebサーバのプライベートIPでページが表示されることを確認したいと思いますので、Webサーバのセキュリティグループに対して「10.10.1.0/24」からのアクセスを許可します。 これでIPプールからのアクセスはできず、固定したIPアドレスからの接続のみ許可するように制御ができます。

09-sg

確認

実際にVPN接続して、WebサーバのプライベートIPに対してブラウザでアクセスしてみます。下記のようにApacheのデフォルトページが出ることを確認します。 MacでVPN接続する手順は下記をご参考にしてください。

10-access

アクセスログを見ると「10.10.1.5」からのアクセスが記録されていました。

10.10.1.5 - - [06/Dec/2016:19:46:17 +0900] "GET /favicon.ico HTTP/1.1" 404 287 "http://172.31.27.44/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36"

注意

今回の設定では、VPN接続した後にVPN経由でアクセスしてくるユーザのIPを固定する方法を紹介しました。しかし、Sophos UTMの仕様でIPプールのIPを各VPNユーザに固定で設定することはできませんので、予めご了承ください。

今回設定した結果の動作としては、下記のようになります。

  1. SSL VPNのIPプールからクライアントにIPアドレスの割り当て
  2. VPNユーザに対して固定設定したスタティックIPアドレスの設定
  3. NAT設定にて上記のスタティックIPアドレスでVPC環境にアクセス

実際にSophos UTMの画面で見ると、VPNユーザにはIPプールのアドレスが割り当てられています。
ちなみに、IPプールからクライアントに割り当てられるIPは、プールされているIPの2つ目(今回だと10.242.2.2)からになるようです。1つ目のIPは、クライアント(Mac)上で経路追加される時にゲートウェイ用のIPとして使われます。

11-remote2

割当IPを固定しない場合

クライアントへの割当IPを固定しない場合は、IPプールか昇順で割り当てられます。
ただし「10.242.2.0/24」のような場合、先程書いたようにクライアントへの割当IPは「10.242.2.2」からになります。

ファームウェアバージョンの注意点

Sophos-UTMのファームウェアのバージョンにより、設定通りにならない場合があるようです。
観測した範囲では、9.3.Xのバージョンにバグがあるようです。既にMarketplaceのAMIは9.4.Xのバージョンになっているので新規に作成される場合は問題ないかと思いますが、以前から利用されている場合は、バージョンアップの上で設定頂ければと思います。

最後に

今回紹介した内容は、ユーザとIPアドレスをスタティックに関連付けることができるというものでした。これを利用することでユーザ単位でアクセス制御を行うことができるようになりますが、IPプールからの割当は固定できないことに注意が必要です。
仕様をうまく活用してVPNライフを楽しんで頂ければと思います。

以上になります。