Sophos UTM SSL-VPNとVPC Peeringを組み合わせる

2016.02.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、あべいかです。 今回はSophosUTMを使ったSSLVPNとVPC Peeringの組み合わせをご紹介します。

概要

SohpsoUTMを使ったSSLVPNについて、整理しましょう。 SophosUTMでは、クライアントに割り当てるアドレスプールを定義することが出来ます。 SSLVPN接続すると、アドレスプールからIPアドレスが払い出され、クライアントに設定されます。 SSLVPN接続後はVPC内のインスタンスにプライベートIPアドレスでアクセスする事が出来ます。 図中のAPサーバから見ると、送信元IPアドレスはアドレスプール内のIPアドレスになります。

sophosutm1

アドレスプールのデフォルト値は「10.242.2.0/24」です。 SSLVPN接続後にクライアントでIPアドレスを確認すると、プールの範囲内のIPアドレス「10.242.2.6」が割り当てられています。

C:\Users\***>ipconfig
Windows IP 構成
イーサネット アダプター イーサネット:

   接続固有の DNS サフィックス . . . . .:
   リンクローカル IPv6 アドレス. . . . .: fe80::*****:****:****:*****
   IPv4 アドレス . . . . . . . . . . . .: 10.242.2.6
   サブネット マスク . . . . . . . . . .: 255.255.255.252
   デフォルト ゲートウェイ . . . . . . .:

クライアントからAPサーバ(192.168.1.181)に対して、pingを実行します。 APサーバでtcpdumpを実行すると「10.242.2.6」 からICMP echo requestを受け取り、echo replayを返しています。 クライアントはecho replyを受け取る事が出来ます。

$ sudo tcpdump -n icmp
(略)
IP 10.242.2.6 > 192.168.1.181: ICMP echo request, id 1, seq 117, length 40
IP 192.168.1.181 > 10.242.2.6: ICMP echo reply, id 1, seq 117, length 40

SSL VPNの手順はこちらを参照下さい。 【AWS】統合脅威管理「Sophos UTM」を使ってVPCへSSL-VPN接続する(Windows7編)

VPC Peering

次にVPC Peering先への接続について考えてみます。図中、APサーバ②への接続は出来るのでしょうか?

sophosutm2

クライアントからAPサーバ②(172.16.1.248)に対して、pingを実行します。 APサーバ②でtcpdumpを実行すると「10.242.2.6」 からICMP echo requestを受け取り、echo replayを返しています。 しかし、クライアントはecho replayを受け取る事は出来ません。

$ sudo tcpdump -n icmp
(略)
IP 10.242.2.6 > 172.16.1.248: ICMP echo request, id 1, seq 495, length 40
IP 172.16.1.248 > 10.242.2.6: ICMP echo reply, id 1, seq 495, length 40

VPC Peeringでは、Peeringで繋ぐ2VPC間以外のルーティングを持つ事はできません。 APサーバ②が送信したecho replayはVPC Peeringにルーティングされず、クライアントはreplayを受け取る事が出来ません。 つまり、アクセス対象から見た送信元IPアドレスがアドレスプールの場合、通信は成立しないという事になります。

NAT設定

Sophos UTMにはNAT機能があります。 送信元IPアドレスをSophosUTMが持つアドレスに変換して、通信が成立するか確認してみます。

設定手順

ネットワークプロテクション -> NAT -> NATタブ -> 新規NATルール...を選択します。 ルールタイプを[SNAT(送信元)]にします。 トラフィック送信元にVPN Pool(=10.242.2.0/24)、宛先をAPサーバ②のサブネットにします。 この条件にマッチした場合、送信元アドレスをInternalAddress(= SophosUTMが持つプライベートIPアドレス)に指定します。

NATRule

ルールの作成後、デフォルトでルールは無効になっています。 トグルスイッチを切り替えて、ルールを有効化します。

toggle

確認

クライアントからAPサーバ②(172.16.1.248)に対して、pingを実行します。 APサーバ②でtcpdumpを実行すると192.168.1.90からICMP echo requestを受け取り、echo replayを返しています。 クライアントはecho replayを受け取る事が出来ます!

「192.168.1.90」はSophosUTMのIPアドレスです。 NATルールにより、クライアントから送信されたecho requestはSophosUTMから送られたように見えています。 VPC Peeringのルーティング制限をクリアする事が出来ました。

$ sudo tcpdump -n icmp
(略)
IP 192.168.1.90 > 172.16.1.248: ICMP echo request, id 1, seq 1146, length 40
IP 172.16.1.248 > 192.168.1.90: ICMP echo reply, id 1, seq 1146, length 40

検証環境

以下の環境で確認しました。

  • Sophos UTM
    • AMI:ami-d6379cd6
    • ファームウェアバージョン:9.353-4

参考ページ

以下のページを参考にさせて頂きました。ありがとうございます。

Sophos UTM 管理ガイド

おわりに

SophosUTMでのSSLVPNとNATの組み合わせを試し、 VPC Peeringを使う場合でも、SophosUTMを活用出来る事がわかりました。 くコ:彡