この記事はFortiGateとFortiClientを利用して、社外から安全に社内ネットワークに接続できるSSL-VPNの構築手順となります。
ネットで調べれば断片的な設定情報は少しずつ見つかるのですが、包括的に網羅しているサイトが見つからなかったので作っちゃいました。
あくまでも弊社での構築例となりますので、ご利用の環境によって適宜変更してください。
- FortiGateでSSL-VPN接続を受け入れるための基本的な設定手順
- FortiGateでSSL-VPN接続する際、MACアドレス認証するための設定手順
- FortiGateでSSL-VPN接続する際、Eメールで二要素認証するための設定手順
- FortiClientをインストール・設定して、FortiGateにSSL-VPN接続するための設定手順
FortiGateでSSL-VPN接続を構築したきっかけ
言うまでもなく、新型コロナウイルスの影響で在宅勤務(リモートワーク)が必要になったことからです。
これまでも弊社では、とくに営業部隊から、外出先から社内ネットワークに接続したいとの要望が多くありました。
しかし本当に必要なの?とか、セキュリティホールになるからダメ、と断固拒否していました。
しかし今回ばかりはやむを得ないとのことで、急きょ構築することになりました。
弊社でのテレワーク構築全体について興味がある方は、以下の記事をお読みください。
経営層からの指示は以下のとおりです。
- 許可したユーザーのみ接続させること
- 許可した社有パソコンからのみ接続させること
さあ、社内SEの腕の見せどころです。
FortiGateで可能なVPN接続
FortiGateでできるVPN接続は2通り、SSL-VPNとIPsec-VPNです。
それぞれに特徴があり、メリットデメリットが存在します。
これらの説明は以下のブログが分かりやすかったので、気になる方はぜひお読みください。
弊社ではSSL-VPNを選択したのですが、その根拠は…単にこちらのほうが手軽に構築できそうだったからです。
FortiGateの設定
はじめにSSL-VPNを受け入れる、FortiGate側の設定をしていきます。
この記事で使用しているのはFortiGate 300E、FortiOS v5.6.4 build1575です。お使いの機種やバージョンによっては設定画面が異なる場合があります。
ユーザ定義
「ユーザ&デバイス」メニューの「ユーザ定義」からおこないます。
- ユーザタイプ:ローカルユーザ
- ログインクレデンシャル:ユーザ名とパスワードを登録
- コンタクト情報:何も設定せず次へ
- エキストラ情報:ユーザグループを作成してそこに所属させると、後々便利です
弊社の場合、ユーザグループ「SSL-VPN」を作成し、作成したユーザを所属させました。
SSL-VPNポータル
「VPN」メニューの「SSL-VPNポータル」からおこないます。
デフォルトで用意されている「tunnel-access」を編集して設定します。
- トンネルモード:有効
- スプリットトンネリングを有効:無効
- 送信元IPプール:デフォルトで用意されている「SSLVPN_TUNNEL_ADDR1」をセット
- Webモード有効:無効
弊社ではWebブラウザからのSSL-VPN接続は許可せず、FortiClientからの接続のみとしたいので、Webモードは無効にしました。
SSL-VPN設定
「VPN」メニューの「SSL-VPN設定」からおこないます。
- Listenするインターフェース:WAN側のインターフェースを指定
- Listenするポート:デフォルトの「443」でも良いですが、他の通信と被らないよう「10443」を指定
- アクセスを制限:任意のホストからアクセス許可を選択
- アドレス範囲:自動的にアドレス割り当てを選択
- DNSサーバ:クライアントシステムのDNSと同じを選択
- 認証/ポータルマッピング:「ポータル」のところに、前項で設定した「tunnel-access」を指定
②のListenするポートは、後で説明するFortiClient設定時にも必要なので、忘れずメモしてください。
IPv4ポリシー
「ポリシー&オブジェクト」メニューの「IPv4ポリシー」からおこないます。
インターネットからVPNを通してFortiGateに入ってきた通信を、どのように許可するかの設定です。
- 名前:任意の名前
- 入力インターフェース:SSL-VPNトンネルインターフェースを指定
- 出力インターフェース:LAN側のポートを指定
- 送信元:「all」と前項で作成したユーザまたはユーザグループを指定
- 宛先:「all」を指定
- スケジュール:「always」を指定
- サービス:「ALL」を指定
- アクション:「ACCEPT」を指定
その他、適用するセキュリティプロファイルは任意に設定してください。
上記はSSL-VPN→LANへのポリシーとなります。
なお弊社では、SSL-VPN接続した端末についてはインターネットも社内のFortiGate経由で使わせたかったので、SSL-VPN→WANのIPv4ポリシーも別途作成しています。
上記①~⑧のうち、③にWAN側のポートを指定するだけの違いです。
以上でFortiGateでSSL-VPN接続を受け入れる設定が完了しました。
MACアドレス認証が必要なければ、次の項目は読み飛ばして次章「FortiClientの設定」に進んでください。
SSL-VPN接続を許可する端末のMACアドレスを登録
ここまではGUIで簡単に登録できたのですが、このMACアドレス登録はコンフィグ(CLIコマンド)を直接書いていく必要があります。
この設定がネットでなかなか出てこなくて大変でしたが、見つけました。
インターネット時代に感謝です。
FortiGateでMACアドレス認証できるようにする
まずはじめに、FortiGateのSSL-VPN接続をMACアドレス認証できるようにします。
これは最初に一度設定するだけで大丈夫です。
- 右上の「>_」をクリックしてCLIコンソールを起動
- 「config vpn ssl web portal」を入力しエンター
- 「edit tunnel-access」を入力しエンター
- 「set mac-addr-check enable」を入力しエンター
- 「set mac-addr-action allow」を入力しエンター
- 「end」を入力しエンター ※設定が保存されます
④はMACアドレスのチェックを有効にする、⑤はこのあと登録したMACアドレスの接続を許可する、という意味です。
接続許可する端末のMACアドレスを登録する
次に接続を許可する端末のMACアドレスを登録していきます。
例としてコンピュータ名が「PC1」、MACアドレスが「a1:b2:c3:d4:e5:f6」のパソコンを登録しましょう。
- 右上の「>_」をクリックしてCLIコンソールを起動
- 「config vpn ssl web portal」を入力しエンター
- 「edit tunnel-access」を入力しエンター
- 「config mac-addr-check-rule」を入力しエンター
- 「edit PC1」と入力しエンター ※「new entry ‘PC1’ added」と表示されます
- 「set mac-addr-list a1:b2:c3:d4:e5:f6」と入力しエンター
- 「end」を入力しエンター ※設定が保存されます
以上の内容を、接続許可したい端末について登録していきます。
弊社の場合コンピュータ名で登録しましたが、その他管理しやすい名前でも問題ありません。
ちなみに登録を削除したいときは、⑤のところで「delete PC1」と入力します。
また、これまでの登録内容を確認したいときは、⑤のところで「show」と入力してください。
【おまけ】Eメールを使用した二要素認証をする手順
最終的に弊社では採用しませんでしたが、検討過程においては二要素認証も候補に挙がりました。
ここで言う二要素認証とは、Eメールを利用した手順となります。
ForiClientでSSL-VPN接続をする際ユーザ名とパスワードを入力すると、トークン入力画面が表示されます。
それと同時に指定したEメールに6桁数字の認証コードが送信されるので、それを入力することでSSL-VPN接続できる仕組みとなります。
FortiGateでは簡単に導入できるFortiTokenでの二要素認証もありますが、ライセンス費用がかかるので弊社では採用しませんでした。
Eメール送信サーバーを設定する
CLIコマンド入力により、Eメール送信に使用するサーバー情報を設定する必要があるのですが、デフォルトでFortinet社のメールサーバーが使用できるようになっています。
自社のメールサーバーを指定したいなど設定変更する場合は、以下の手順で実施します。
- 右上の「>_」をクリックしてCLIコンソールを起動
- 「conf system email-server」を入力しエンター
- 必要なサーバー情報を入力していきます
- 「end」を入力しエンター ※設定が保存されます
Eメールサーバーの設定情報は、以下のブログがとても参考になりました。
なおCLIコンソールでは、「set ○○」で必要な情報を入力するのですが、入力した情報を削除したいときのコマンドが分からずハマりました。
最終的にはFortiGateサポートに連絡し回答をもらいました。
「set ○○」を削除するには「unset ○○」を入力します。
ユーザ定義の二要素認証で「Eメール」を選択できるようにする
Eメールでの二要素認証を利用するかどうか、ユーザごとに許可しなくてはいけません。
- 右上の「>_」をクリックしてCLIコンソールを起動
- 「conf user local」を入力しエンター
- 「edit ○○(編集したいユーザ名)」を入力しエンター
- 「set two-factor email」を入力しエンター
- 「end」を入力しエンター ※設定が保存されます
このコンフィグ登録によって、GUIのユーザ定義画面の二要素認証で「Eメールベースの二要素認証」が選択できるようになります。
【注意点】Eメールが送信されないアドレスがありました
こうしてEメールを使用した二要素認証ができるようになりましたが、最終的には採用しませんでした。
その理由は「Eメールが送信されないアドレスがあった」ことです。
社内の何人かで二要素認証の検証をしていたのですが、最後まで僕のスマホメールには送信されませんでした。
おそらく「アンダーバー」を含むEメールアドレスには送信できないようです。
Eメールでの二要素認証を検討しているかたは注意してください。
FortiClientの設定
FortiGate側の設定が終われば、次はパソコン側の設定をしていきましょう。
FortiGateでSSL-VPN接続が簡単にできるよう、端末にインストールするソフトが無償で提供されています。
それが【FortiClient】です。
今回の一連の設定・検証では「バージョン6.0」を使用しています。
Windows用をはじめとして、様々なOSに対応しています。
インストール~設定まで、特に悩まず設定できたので詳細は割愛しますが、注意点だけ書いておきます。
- インストール時の「Choose Setup Type」では「Secure Remote Access」にチェックする ※デフォルトでチェックが付いているはずです
- インストール後のVPN設定では、「リモートGW」にFortiGateからインターネットに出ているグローバルIPアドレスを指定します
- ポートの編集を忘れがちなので注意する ※ここでは「10443」にします
ここまで設定が済んだら、ユーザ名とパスワードを入力して接続してみましょう。
あたかも社内でパソコンを扱うように、ストレスなくサクサク操作できることを実感してもらえると思います。
FortiClientでSSL-VPNがつながらないときは
FortiClientでSSL-VPNがつながらないときのエラーメッセージと対処方法をまとめました。
興味がある方は読んでみてください。
まとめ:FortiGateとFortiClientでSSL-VPNを構築するのは簡単
自分で調べながらなんとか構築できましたが、こうしてまとめてみると意外と簡単でした。
MACアドレス認証とEメールの二要素認証の登録だけ、CLIコンソールを使用するので注意深く作業しましょう。
FortiGateではこの他にも多彩な機能があるのですが、専門書を読むことで総合的に学習できます。
会社でFortiGateを導入しているなら、一度読んでおくと良いでしょう。
今回のSSL-VPN構築についてもこの本で分かりやすく解説していたので、短時間で構築できました。
今回の対応の早さには経営層の評価も良く、社内SEとしての価値も向上したと思います。