とりあえずブログ作ってみた、的なブログ

このブログの99.99%は「与太話」でできています。

Fortigateを設定してみた(その3・VPNの設定)

今回はVPN設定のお話。元々Fortigateを購入したのは、より安全性の高いVPNを構築したかったからなので、ここからが本当にやりたかったことになる。ぶっちゃけ、VPNがなければ普通のブロードバンドルータで十分なので。

Fortigateでは「IPSec VPN」と「SSL-VPN」という2種類のVPNをサポートしている。それぞれの違いとか詳しい仕組みについては、一から説明していくと膨大な量になるので、ここでは割愛する。巷にはその手の書籍が沢山あるので、興味があればそちらを参照されたい。

また、VPNの方式として、VPN装置(今回で言えばFortigate)同士を接続する「拠点間VPN(←呼び方は他にもある。用途としては、オフィス同士を接続する場合などに用いられる)」と、モバイル機器からVPN装置に接続する「クライアントVPN(←これも呼び方は他にもある)」の2種類があるが、今回はモバイルからの接続をしたいので「クライアントVPN」になる。

ということで、早速設定していく。実際の使用では、IPSecSSLのどちらか一つが使えれば問題ないのだが、折角なので両方使えるようにしておいた。

では実際の手順を。

IPSecSSL共通の設定】
・ユーザの作成

VPNの認証にはいくつか方法があるが、今回は一番オーソドックスな「ユーザID/パスワード」による認証方式とすることにした。ということで、まずユーザを作成する。なお、ここで作成したユーザは、IPSecSSLで共用することが可能である。

イメージ 1

「ユーザ」-「ユーザ」-「ローカル」の順にメニューを辿っていくと、上図のような画面に切り替わるので、ここで「新規作成」を押す。

イメージ 2

ユーザの追加画面が表示されるので、「ユーザ名」と「パスワード」を入力して「OK」ボタンを押す。これでユーザが追加される。

次に、ユーザグループを作成する。ユーザグループというのは、文字通りユーザを所属させるグループのことだが、FortigateのVPNではグループ単位でアクセス制御を行うので、グループの作成が必須となる。

イメージ 3
「ユーザ」-「ユーザグループ」-「ユーザグループ」の順にメニューを辿っていくと、上図のような画面が表示されるので、「新規作成」を押す。

イメージ 4

ここではグループの作成と、メンバの追加を行う。まず基本的な設定として
 ・名前
 ・タイプ
 ・SSL-VPNアクセスを許可
の設定を行う。上図のような感じに設定する。今回はこのグループをSSL-VPNでも使うので「SSL-VPNアクセスを許可」にチェックを入れておく。

続いて、このグループにユーザを追加する。上図左側の「利用できるユーザ」から、このグループに参加させたいユーザを選択して、「→」ボタンを押すと、上図右側のようにユーザがグループのメンバとなる。あとは「OK」ボタンを押せばグループの作成が完了する。

まずここまでが準備段階。ここからはIPSec VPNSSL-VPNそれぞれの設定を行っていく。

IPSec VPNの設定】
・FortiClient VPNの作成

イメージ 5

VPN」-「IPsec」-「自動鍵(IKE)」の順にメニューを辿っていくと、上図のような画面が表示されるので、「FortiClient VPNを作成」を押す。

イメージ 6

上図の画面にて設定を行っていく。
・「ローカル出力インタフェース」は「WAN1(インターネットに接続されたインタフェース)」を選択する。

・「認証方法」は「事前共通鍵」を設定し、その下の「事前共通鍵」に任意の文字列(8文字以上)を設定する。なお、「事前共通鍵」はVPNクライアント側でも同一の文字列を設定する必要があるので忘れないように。

・「ユーザグループ」はこのVPN接続で使用するユーザグループを選択する。

・「アドレス範囲 スタートIP」と「アドレス範囲 エンドIP」は、VPNクライアントに割り当てるIPアドレスを設定する。VPNクライアントがFortigateに接続すると、クライアント側のFortigateクライアントはこの範囲のアドレスから割り当てられたIPアドレスVPNの通信を行う。なお、このIPアドレスの範囲は、一度設定するとGUIの画面からの変更ができない(と思われる)。変更する場合はCUIでコマンドベースでの変更が必要となるため、安易な決め方をすると後で苦労することになる。

・「Enable IPv4 Split Tunnel」は、「VPNを通じて行う通信」と「VPNを通さない通信」を分けるための設定で、これをオフにすると、すべての通信はVPN経由でしか通信できなくなる。つまり、上図の例では、「192.168.xxx.0/24」向けの通信はVPNを通してアクセスするが、それ以外の通信はすべてインターネット(VPNを通さない)向けの通信となる。簡単に言えば、VPNを使いながらそれ以外のインターネットアクセスも同時に行いたい場合にこれをオンにする。

設定が終わったら「OK」ボタンを押して設定を保存する。
イメージ 7

Fortigate Client VPNが作成されると、上図のようになる。ちなみに「クライアントVPN」は、Fortigateでは「インタフェースモード」で実現する。

フェーズ1の設定はこんな感じ。
ネットワーク構成にもよるが、「NATトラバーサル」は基本的には有効にしておいた方がいい。これが有効になっていないと、NAT環境下でのVPN接続ができなくなる。

イメージ 8


フェーズ2の設定。
暗号化、認証共に、もっと強力な方式を使用することが可能なのだが、ここでは暗号化は「AES128」、認証は「SHA-1」を設定しておく。理由は、Android版のFortiClientがここまでしかサポートしていないため。

イメージ 9

これで認証と暗号化に関する設定が終わったので、次にファイアウォールポリシーの設定を行う。
忘れているかもしれないが、Fortigateはファイアウォールでもあるので、ファイアウォールポリシーの設定を行わなければVPNの接続ができてもその先のネットワークへのアクセスができない。

ファイアウォールポリシーの設定

イメージ 10

上図では既に設定済みの状態となっているが、IPSec VPN経由で「Internal1」への通信を許可するためには、上図のシーケンス番号1の設定を行う。まっさらな状態から行うには、まず「新規作成」を押す。

イメージ 11

・「送信元インタフェース/ゾーン」は「FortiClient(IKEの設定で作成した時に付けた名前)」を選択する。「送信元アドレス」は「all」で構わない。

・「宛先インタフェース/ゾーン」は「Internal1」を選択する。「宛先アドレス」は、必要に応じて設定する。Internal1内の全てに対してアクセスを許可する場合は「all」で構わない。「サービス」も同様。

設定が終わったら、「OK」を押してポリシーの設定を保存する。

ここまででIPSec VPNが使えるようになる(はず)。
次にSSL-VPNの設定。
SSL-VPNの設定】
・アドレスオブジェクトの作成

SSL-VPNクライアントに割り当てるIPアドレスを設定する。

イメージ 12

ファイアウォールオブジェクト」-「アドレス」-「アドレス」の順にメニューを辿ってゆき、上図の画面で「新規作成」を押す。

イメージ 13

上図のように設定する。なお、IP範囲は「192.168.1.[1-15]」のような指定も可能。この場合、「192.168.1.1」~「192.168.1.15」を意味する。他にも「192.168.1.0/24」のような指定も可能。

SSL-VPNの設定
イメージ 14

VPN」-「SSL」-「設定」の順にメニューを辿っていくと、上図の画面が表示される。
ここでは、「IPプール」の設定を行う。IPプールとは、クライアントに割り当てるIPアドレスのことで、前の手順で作成したアドレスを指定する。

そのほかの設定は基本的にデフォルトで問題ないが、「ログインポート」はセキュリティを高めたい場合は別のポート番号に変更した方がよい。なお、その場合はクライアント側の接続ポート番号を変更することも忘れずに。

「適用」ボタンを押して設定を保存。

ファイアウォールポリシーの作成
イメージ 15

SSL-VPNでは最低2つのファイアウォールポリシーを作成する必要がある。上図でいうところの「シーケンス番号3」と「シーケンス番号7」がそれにあたる。なお、上図では既にポリシーが作成済みだが、実際には新規でポリシーを作成する。また、図のシーケンス番号はファイアウォールポリシーの設定状態によって変わってくる。

イメージ 16

まずシーケンス番号7の方の設定から。
「送信元インタフェース」は「WAN1」、「宛先インタフェース」は「Internal1」を指定する。
また、「アクション」は「SSL-VPN」を設定する。
更に、「SSL-VPNユーザを設定」をチェックし、「追加」ボタンを押してSSL-VPNへのアクセスを許可するユーザグループ(今回は「VPN_Users」)を追加する。

設定が終わったら「OK」ボタンを押して設定を保存する。

次にシーケンス番号3の設定。
イメージ 17

送信先インタフェース」は「sslvpn トンネルインタフェース」を指定する。
「送信元アドレス」は前の手順で作成したアドレスオブジェクトを設定する。
「宛先インタフェース」は「Internal1」を選択する。「宛先アドレス」はアクセス範囲に応じて設定するが、Internal1全体へのアクセスを許可する場合は「all」で問題ない。「サービス」も同様。

設定が終わったら「OK」ボタンを押して設定を保存する。

これでSSL-VPNの設定が完了した(はず)。
Fortigate側の設定は以上になる。


次にVPNクライアントの設定を行う。
【WindowsPC】
・FortiClientの入手及びインストール
まず、http://forticlient.com/ からFortiClientをダウンロードする。

イメージ 18

上図の「Get FortiClient 5.4(現時点の最新バージョン) for Windows」を選択し、「Download」をクリックしてダウンロードする。ダウンロードされたファイルはオンラインインストーラなので、インストーラ本体はまだダウンロードされていない。なので、インターネットに接続された状態で下図のアイコンをダブルクリックする。
イメージ 19

あとは指示にしたがってインストールを進めていく。

IPSec接続の設定

イメージ 20

インストールしたFortiClientを起動すると、上図のような画面が表示されるので、一番上の歯車のボタン(赤丸で囲んだ部分)をクリックして、メニューから「新規接続の追加」を選択する。

イメージ 21

上図の一番上にある「SSL-VPN」「IPsec VPN」から、「IPsec VPN」を選択すると、IPsec VPN用の設定画面が表示されるので、上図のように設定していく(設定値は環境に合わせて読み替えてください)。

下図へ続く。
イメージ 22

「モード」はアグレッシブ」を選択する。

更に続く。
イメージ 23

フェーズ1の設定は基本的にこのままでいい。強いて挙げれば「NATトラバーサル」を有効にするぐらい。

更に続く。
イメージ 24

フェーズ2も基本的にそのままで問題ない。
ここまで設定したら「適用」を押して設定を保存する。

これでIPSec VPNの設定が完了。

SSL-Sec接続の設定
設定の新規追加の方法はIPSec VPNと同じなので省略。

イメージ 25

SSL-VPNの方は、IPSec VPNに比べると設定項目が少ない。
なお、Fortigate側の設定で「ログインポート」の設定を変更した場合は、「ポートのカスタム」にチェックを入れて、右側の数値をForitigateの「ログインポート」のポート番号と合わせる必要がある。
設定が終了したら「適用」を押して設定を保存する。

これでSSL-VPNの方も設定が完了。
実際に接続テストを行ってみる。なお、接続テスト時には「外部からのインターネットアクセス」が必要となるので、モバイルルータやスマホテザリングなどを使って、該当PCを外部から接続できる状態にする必要がある(内部からのインターネット接続では、VPN接続が失敗する)ので注意が必要。

・接続確認
イメージ 26

ユーザ名とパスワードを入力して「接続」ボタンを押す。手順はIPSec VPNSSL-VPNも同じ。
接続が成功すると、下図のような表示に切り替わる。

イメージ 27

あとは実際に内部のリソース(ファイル共有など)にアクセスできることを確認すれば終了。
Mac OSの方は環境がないので試していないが、多分Windowsと大差ないと思われる。

Android端末】
・FortiClientの入手及びインストール

Androidの場合は、「Playストア」からインストールする。
インストールが完了すると、下図のアイコンが表示されるのでこれをタップする。
イメージ 28


下図のような画面(下図は既にVPNの設定済みの状態)が表示されるので、一番下の「新規VPN」をタップする。

イメージ 29


イメージ 30

VPN名(識別用の名前)」と「VPNタイプ」を選択して、「作成」をタップする。
ここまではIPSec VPNSSL-VPN共に共通。

IPSec VPNの設定
以下、ざっと設定画面を。基本的な考え方はWindows PCと同じ。

サーバアドレスの設定。
イメージ 31

共有キーの設定。
イメージ 32

ネットワーク、認証関係の設定。
ここでは「IKEモード」を「アグレッシブモード」にする。
イメージ 33

IPSec フェーズ1の設定。
基本的に変更する必要はない。
イメージ 34

IPsec XAuth(認証)設定。
Windows用クライアントとの違いは、パスワードを保存できる点。この辺りはセキュリティと利便性を秤にかけて判断するとよい。
イメージ 35

IPSec フェーズ2の設定。
こちらも基本的に変更する項目はない。
イメージ 36

ここまでで設定は完了。
なお、Android用のFortiClientの場合は設定を保存するための「OK」や「適用」がないが、設定は保存されている。


IPSec VPNの設定
同じく、ざっと設定画面を。基本的な考え方はWindows PCと同じ。

設定項目はIPSec VPNに比べると少ない。
なお、Fortigate側の設定で「ログインポート」の設定を変更した場合は、「ポート」の数値をForitigateの「ログインポート」のポート番号と合わせる必要がある。
イメージ 37

接続先サーバ(Fortigate)のアドレス設定。
イメージ 38

ユーザ名の設定。
なお、図は省略しているが、パスワードはIPSec VPNと同様に保存が可能。
イメージ 39

設定完了状態。
イメージ 40


以上でAndroid端末用のFortiClientの設定が完了。
iOS版は(以下同文)。

設定が終わったので、実際に接続してみる。

イメージ 41
「接続」をタップする。なお、インターネットへの接続ができない場合は「接続」がグレーアウトしてタップできないようになっている。

イメージ 42
ユーザ名とパスワードを入力(設定時に登録されている場合はそれが表示される)して、「ログイン」をタップ。

イメージ 43
接続中。ちょっと時間がかかる・・・

イメージ 44
接続が成功すると、上図の状態になる。
接続を切断する場合は「切断」をタップする。

あとは適当な内部リソースへのアクセスができることを確認する。
以上で接続確認終了。

これでようやくFortigateでVPNが使えるようになった。
使ってみた感想としては、PPTPの頃はかなりの頻度で接続断が発生していたが、Fortigateに変えてからはIPSecSSL共にPPTPに比べて通信が安定している。これまで使ってきて、足回り(インターネット)の不調以外でVPN接続が切れた記憶がない。これだけでもFortigateに変えた価値があったと思う。

さて、残るはVPN経由でのWOL。またそれは次回の話ということで。

つづく。


【おまけ:Android端末のモバイルデータ通信での注意点】
Android 6.0からはアプリ単位で「バックグラウンド通信の許可/拒否」を設定できるようになった。

イメージ 45

ここで「アプリのバックグラウンドデータを制限」を有効にすると、FortiClientでVPNに接続してから何か別のアプリケーションを実行するためにFortiClientを終了すると、VPN接続が切断されてしまう。ちなみに上図の設定は「モバイルデータ通信」のみ有効なので、Wi-Fi接続には影響しない。

通信量を節約するためにアプリのバックグラウンド通信を制限していると、結構やりがちなので参考までに。
Android 5.x以前やiOSについては、実機がないので分からないが、Android5.xの場合は「バックグラウンド通信を制限」という項目で全てのアプリのバックグラウンド通信を制限していたが、制限を有効にした場合は前述と同じ動作になるのではないかと思われる(5.xの頃はそもそもWi-Fiオンリーでモバイルデータ通信自体使っていなかったのと、機種変してパケット通信プランを変えられてからはバックグラウンド通信を許可していたので、実際どうなるのかは不明)。

イメージ 46