【AWS】統合脅威管理「Sophos UTM」を使ってiPhoneからVPCへIPsec-VPN接続する
統合脅威管理製品「Sophos UTM」とはなにか?
こんにちは植木和樹です。今回は「Sophos UTM」という統合脅威管理製品を作って、IPsec-VPNを設定しました。
統合脅威管理ソフトというのはサイトを運営する際に必要とされる様々なセキュリティ管理、たとえば「Webアプリケーション・ファイアウォール(WAF)」「メールフィルタリング」「ワイヤレス管理」「アクセスポイント管理」などを単一のコーンソールから管理できるソフトウェアのことをいいます。数ヶ月前に都元さんが本製品のWAF機能を紹介していますので、統合脅威管理とは?についてはそちらを参考にしてください。
AWS上で Sophos UTM 9 の Web Application Firewall (WAF) を使ってSQLインジェクション攻撃を検出・防御してみた
今回はSophos UTMが持つ様々なセキュリティ管理機能の中から、VPNリモートアクセスを用いて「IPsec-VPNを使ったiPhoneからVPCへの接続」を試してみたいと思います。
今回解決したい課題
AWSのVPCには「Virtual Private Gateway」という機能があり、この機能とIPsec対応ルータがあれば比較的簡単にVPNを構築することが可能です。このVPN機能は「拠点間VPN」を目的としています。つまり事務所全体とVPCをVPNで結びたい、という用途です。
ただVPNのもう一つの用途として「リモートアクセス」があります。たとえばモバイル端末を携帯して、出先から社内のファイルサーバにアクセスしたいといった用途です。しかしAWSのVPN機能は設定の際にグローバルアドレスを求められるため、毎回IPアドレスが変わるモバイル端末からのリモートアクセス用途としては少々使いづらい点があります。
そこで代替策としてEC2上でソフトウェアVPNサーバを構築し、モバイル端末との間でVPN接続を行う方法が考えられます。VPN接続だけであればOpenSwanといったオープンソースソフトウェアで目的を果たせます。しかし「モバイル端末を紛失してしまった場合に、その端末からの接続は禁止したい」といった要件を満たすためには、VPN接続機能だけでなく端末やユーザーの管理とも連携させる仕組みが必要になってきます。
そこで今回は統合脅威管理ソフトである「Sophos UTM」を利用してみることにしました。必要機能である「VPNサーバ機能」と「ユーザー管理機能」をWebブラウザから管理可能であることに加え、Amazon Marketplaceで用意されているため数クリック(!)で導入可能な点も魅力です。
それでは早速使ってみましょう!!
IPsec接続までの全体の流れ
Sophos UTMでVPNサーバを設定し、iPhoneからVPN経由でVPC上のプライベートサーバに接続してみたいと思います。必要な手順は以下の通りです。
- Sophos UTMのインストールと基本設定
- インストール
- EIP割り当て
- 言語設定
- タイムゾーン設定
- システムDNSホスト名設定
- セキュリティグループ設定
- リモートアクセスを設定する
- サーバー証明書を作成する
- リモートアクセスユーザーを作成する
- Cisco VPNクライアントを設定する
- ユーザポータルを有効にする
- EC2インスタンス→VPNクライアントへのルーティングを設定する
- iPhoneにVPNを設定する
- iPhoneからVPC内のWebサーバにアクセスする
Sophos UTMのインストールと基本設定
Sophos UTMのインストールと基本設定については先程紹介した「AWS上で Sophos UTM 9 の Web Application Firewall (WAF) を使ってSQLインジェクション攻撃を検出・防御してみた」を参考に進めました。
インストール
インストールはAmazon Marketplaceから、インスタンスタイプを m1.small にして購入しました。1時間あたり40円くらいです。t1.microだと重くて管理画面操作が捗りませんでした。なお環境はデフォルトVPCを用いています。
インストールが完了したら、PublicDNSの4444番ポートにブラウザでアクセスすると管理画面(WebAdmin)が表示され、初期設定を行います。
EIP割り当て
外部から接続する際にIPアドレスが変化するといろいろ支障がでますので、AWSマネージメントコンソールでEIPを割り当てました。EIPを割り当てたら、改めてEIPアドレスの4444番ポートにブラウザでアクセスすると管理画面(WebAdmin)へのログインページが表示されます。
言語設定
前述のブログに従って[Management]-[WebAdmin Settings]-[General]で画面の表示を日本語にしました。
タイムゾーン設定
同様に[Management]-[System Settings]-[Time and Date]でタイムゾーンをAsia/Tokyoにしました。
システムDNSホスト名設定
EIPを割り当てましたので、改めてホスト名を設定します。[マネジメント]-[システム設定]-[ホスト名]にPublicDNSのホスト名を入力します。
セキュリティグループ設定
Sophos UTMで使用するポートへの接続を許可します。
- tcp/22 ... Sophosサーバへはsshでログインできます。普段はWeb管理画面を使うためアクセスする必要はありません。
- tcp/4444 ... Sophos Web管理画面用ポートです。接続元IPはそれぞれの環境にあわせて適切に制限してください。
- tcp/443 ... Sophos ユーザーポータル画面用ポートです。ユーザーポータル画面ではiPhone用VPNの自動設定ができます。
- udp/500 ... IPsec VPN接続用です。
- udp/1024〜65535 ... IPsec VPN接続用です。
リモートアクセスを設定する
リモートアクセスの設定方法については公式のドキュメントがでています(Sophos UTM Remote Access via IPsec Configuring UTM and Client)。今回はiPhone用設定なので、このドキュメント通りではないのですが設定する際に大変参考になりました。
サーバー証明書を作成する
サーバーの証明書を作成します。[リモートアクセス]-[証明書管理]から[新規証明書...]ボタンをクリックします。「VPN IDタイプ」を「ホスト名」にし「VPN ID」にPublicDNSを入力して保存してください。
リモートアクセスユーザーを作成する
[定義とユーザー]-[ユーザーとグループ]から[新規ユーザー...]ボタンをクリックします。ユーザー名、メールアドレス、パスワードを入力したら保存します。VPNに接続する際にはここで入力したユーザー名とパスワードが必要になります。
Cisco VPNクライアントを設定する
iPhoneからVPN接続する際は「Cisco VPNクライアント」の設定を行います。[リモートアクセス]-[CISCO VPNクライアント]の[グローバル]タグでサーバー設定を行います。「サーバー証明書」は先程作成したものを選択します。それ以外にVPN接続後にどのネットワークにアクセスできるか(下図ではANY接続)、どのユーザにVPN接続を許可するかを管理できます。
さらに[iOSデバイス]タグで「ホスト名を上書き」のところにPublicDNSを記入しておきます。
ユーザポータルを有効にする
iPhoneの場合はSophos UTMが提供する「ユーザーポータル」ページにアクセスしていくつか操作するだけで、VPN接続設定を自動的にiPhoneへダウンロードすることができます。ユーザーポータルは初期設定では無効になっていますので、有効にします。
[マネジメント]-[ユーザーポータル]の[グローバル]タブで機能を有効にします。どのネットワークからユーザポータルへのアクセスを許可するか設定することもできますが、ひとまずANYにしておきます。
EC2インスタンス→VPNクライアントへのルーティングを設定する
ルートテーブル: 10.242.5.0/24 のゲートウェイをSophosサーバにする
ここまででSophosのVPN設定はできました。しかしこれだけではIPsecで接続したiPhoneからVPC内のEC2へはアクセスできません。EC2からiPhoneへのルーティングが設定されていないためです。SophosはIPsec VPN接続した端末に対して10.242.5.0/24のIPアドレスを自動で割り当てます。そこでVPCの"Route Tables"を設定して、ルーティング情報を追加します。SophosサーバがVPNの先のネットワークへのルータになるわけですから、10.242.5.0/24宛のパケットはSophosサーバにルーティングするように設定しましょう。
Source/Dest. Check: disabled
Source/Dest Checkが enabled のままだと、Sophosサーバは自分宛てではないパケットは無視してしまうので、disabledに変更します。NATサーバと同じですね。
iPhoneにVPNを設定する
iPhoneへのVPN設定設定はSophosのユーザーポータル画面にアクセスすることで、自動的に設定できます。iPhoneでSafariブラウザを開いて、Sophosサーバへhttpsで接続します。するとユーザーポータルのログインページが表示されます。リモートアクセス設定時に作成したユーザーとパスワードでログインしましょう。
ログインしたらページ上部のメニューから「リモートアクセス」をクリックします。
画面に「iOSデバイスVPN設定」という項目があります。「エクスポートパスワード」に適当な文字列を入力し、インストールボタンをクリックしましょう。
「VPN Configuration」のインストール画面になりますのでインストールボタンをクリックします。
「未署名のプロファイル」をインストールして良いか確認されますのでインストールをクリックします。
お使いのiPhoneのパスコードを入力します。
先ほど設定した「エクスポートパスワード」を入力します。
VPN設定プロファイルのインストールが完了します。
[設定]-[一般]-[VPN]を確認すると新しいVPN構成が作成されているかと思います。これをクリックしてVPNを"On"にします。すると接続パスワードを求められますので、入力してください。
VPNに接続できました!画面上部に"VPN"の表示がでていますね。
iPhoneからVPC内のWebサーバにアクセスする
VPNに接続されている状態でSafariを起動し、VPC上のEC2インスタンスのプライベートIPアドレスをブラウズしてみましょう。
Apacheの画面が表示されましたね!これで接続成功です!!
ユーザー単位でVPN接続を無効にする
モバイル端末を紛失した場合など、端末にインストールしたプロファイルを無効にすれば特定端末からのVPN接続できなくすることができます。その後新しくユーザを作成するか、クライアント証明書を置き換えて新たに端末をセットアップしましょう。
まとめ
Sophos UTMを使うことで簡単にiPhoneのリモートアクセス環境を作成することができました。統合脅威管理製品というものを使うのは初めてだったのですが、WebコンソールのUIも非常に使いやすく、VPN設定の経験がある方ならすぐに使い始められるのではないでしょうか。しかもこの製品がAmazon Marketplaceで提供されていて、リーズナブルな値段ですぐに試せるのはうれしいですね。
さて、今回はiPhone(iOS)を対象にVPN接続しましたが、AndoroidやWindowsノートパソコンからも接続を試してみたいと思います。