FortiGateの評価ガイド➃ IPsecVPNの認証/RADIUS連携したワンタイムパスワード認証
目次
目的
FortiGateのリモートアクセスVPN(IPsecVPN)について、以下の要件を満たすために、SingleIDを利用します。
- RADIUSサーバに登録されたユーザでログインする。
- 特定グループに属するユーザのみアクセスを許可する。
- ログインの認証方式は、パスワード+ワンタイムパスワード認証(時間ベースのTOTP)とする。
環境
グループの情報
グループ名 | グループの説明 | メンバー |
リモートアクセスユーザ(ビルトイングループ) | FortiGateのリモートアクセスVPNへログインできるユーザのグループ | user1 |
RADIUSの情報
設定に必要な情報 | 説明および情報取得の方法など |
RADIUSサーバのホスト名 | SingleID 管理者ポータル>認証>RADIUS画面の基本情報タブの「ホスト名」です。 |
RADIUSサーバのIPアドレス | SingleID 管理者ポータル>認証>RADIUS画面の基本情報タブの「IPアドレス」です。 |
RADIUSサーバのポート番号 | SingleID 管理者ポータル>認証>RADIUS画面の基本情報タブの「RADIUSポート番号」です。デフォルトUDP1812です。 |
RADIUSクライアントのIPアドレス | FortiGate側のグローバルIPアドレスです。インターネットに出ていくときの送信元のIPアドレスです。 |
RADIUSクライアントのシークレット | 任意の文字列を設定します。ここでは、「fortigate」とします。 |
VPN設定の情報
設定に必要な情報 | 説明および情報取得の方法など |
着信インターフェース | FortiGateのWAN側のインターフェースです。環境により異なります。 |
VPNゲートウェイIPアドレス | VPNクライアントが接続するIPアドレスです。環境により異なります。 |
ローカルインターフェース | FortiGateのLAN側のインターフェースです。環境により異なります。 |
VPNクライアントIPアドレス範囲 | VPNクライアントに割り当てるIPアドレスの範囲です。環境により異なります。 |
VPN方式 | IPsec VPN |
認証方式 | 事前共有鍵 |
事前共有鍵 | 任意の文字列を設定します。ここでは、「fortigate」とします。 |
設定方法
SingleIDの設定
SingleIDの管理者ポータルへログインします。
https://www.singleid.jp/product-login/
ユーザの作成
SingleID 管理者ポータル>ユーザ一覧画面へ移動します。
「登録」をクリックします。

ユーザ登録画面の「基本情報」を入力します。 作成するユーザは、環境/グループの情報を参照します。
「グループ」タブをクリックします。

参加するグループを選択し、「登録」をクリックします。参加するグループについては、環境/グループの情報を参照します。

RADIUSの設定
SingleID 管理者ポータル>認証>RADIUS画面へ移動します。「FortiGate」タブへ移動します。
「登録」をクリックします。

RADIUSクライアントに関する以下の項目を入力します。
「VPNアクセスの認証」タブへ移動します。
項目 | |
ワンタイムパスワードの強制 | 有効 |
IPアドレス | 環境/RADIUSの情報 の「RADIUSクライアントのIPアドレス」です。 |
シークレット | 環境/RADIUSの情報 の「RADIUSクライアントのシークレット」です。 |
選択するサーバの番号により、RADIUSサーバのポート番号が異なります。
サーバが1の場合には、UDP1812です。
SingleID 管理者ポータル>認証>RADIUS>基本情報タブ画面の「RADIUSポート番号」にサーバの番号と通信ポート番号の対応が記載されています。

許可グループの設定で「リモートアクセスユーザ」グループをダブルクリックし、許可へ移動させます。
「登録」をクリックします。

FortiGateの設定
FortiGateの管理GUIへログインします。

RADIUSサーバの設定
FortiGate管理GUI> ユーザ&認証>RADIUSサーバへ移動します。「新規作成」ボタンをクリックします。
以下の項目を設定し、「OK」をクリックします。
項目 | 設定値 |
名前 | SingleID_RADIUS |
認証方式 | 指定 PAP |
IP/名前 | 環境/RADIUSの情報 の「RADIUSサーバのIPアドレス」です。 |
シークレット | 環境/RADIUSの情報 の「RADIUSクライアントのシークレット」です。 |

「接続をテスト」をクリックし、接続が成功しない場合には、以下をご確認ください。
・設定内容が間違いないこと
・FortiGateからSingleIDのRADIUSサーバのIPアドレスへ接続可能であること
SingleIDのRADIUSサーバでは、FortiGateのVPNアクセスや管理アクセスのみ認証可能となるように制限をかけているため、「ユーザクレデンシャルをテスト」ボタンをクリックし、正しいユーザ情報を入力しても成功となりませんが、問題ではありません。
ユーザグループの設定
FortiGate管理GUI>ユーザ&認証>ユーザグループへ移動します。「新規作成」ボタンをクリックします。
以下の項目を設定し、「OK」を クリックします。
項目 | 設定値 |
名前 | SingleID |
タイプ | ファイアウォール |
リモートグループ | リモートサーバ:SingleID_RADIUS グループ:すべて |

VPNの設定
FortiGate管理GUI>VPN>IPsecウィザードへ移動します。
以下の項目を設定し、「次へ」を クリックします。
項目 | 設定値 |
名前 | IPsecVPN |
テンプレートタイプ | リモートアクセス |
リモートデバイスタイプ | クライアントベース FortiClient |

以下の項目を設定し、「次へ」を クリックします。
項目 | 設定値 |
着信インターフェース | 環境/VPN設定の情報を参照 |
認証方式 | 環境/VPN設定の情報 の「認証方式」です。 |
事前共有鍵 | 環境/VPN設定の情報 の「事前共有鍵」です。 |
ユーザグループ | SingleID |

以下の項目を設定し、「次へ」を クリックします。
項目 | 設定値 |
ローカルインターフェース | 環境/VPN設定の情報 の「ローカルインターフェース」です。 |
ローカルアドレス | LAN側ネットワークを指定(例:internal) |
クライアントアドレス範囲 | 環境/VPN設定の情報 の「VPNクライアントIPアドレス範囲」です。 |
サブネットマスク | 255.255.255.255 |

「次へ」を クリック します。

設定を確認し、「作成」をクリックします。
動作確認方法
ソフトウェアトークンのインストール
ソフトウェアトークンとして、以下のiPhoneおよびAndroidのスマートフォンアプリが利用できます。どちらかのアプリをスマートフォンへインストールします。
- FreeOTP
- Google Authenticator
SingleIDへソフトウェアトークンの登録
user1のSingle IDのユーザポータルへログインします。
https://www.singleid.jp/product-login/
SingleID ユーザポータル>オーセンティケーター画面へ移動します。
QRコードが表示されていることを確認します。

スマートフォンへインストールしたソフトウェアトークンアプリを起動します。(ここでは、Google Authenticatorを利用します。)
+をクリックし、新規アカウントを追加します。

「QRコードをスキャン」をクリックし、ユーザポータルに表示されているQRコードを読み取ります。

「アカウントを追加」をクリックし、アカウントを追加します。

表示されている6桁の数字をSingleID ユーザポータル>オーセンティケーター画面の「ワンタイムコード」へ入力し、「保存」をクリックし、オーセンティケーターを登録します。
ソフトウェアトークンの6桁の数字の表示は、30秒ごとに変わります。変わる前に、オーセンティケーターの登録を完了させる必要があります。登録する途中で、ソフトウェアトークンの数字が変わってしまった場合には、変わった数字を登録します。


FortiClientのインストール
以下、URLからFortiClientをダウンロードして、インストールします。
FortiClientの設定
項目 | 設定値 |
VPN | IPsec VPN |
接続名 | 任意です。例:SingleID |
リモートGW | 環境/VPN設定の情報 の「VPNゲートウェイIPアドレス」です。 |
認証方法 | 環境/VPN設定の情報 の「認証方式」です。 |
認証(XAuth) | ユーザ名入力 |

FortiGateへリモートアクセスVPN
スマートフォンのソフトウェアトークンアプリを起動し、6桁のワンタイムパスワードを確認します。
ソフトウェアトークンの6桁の数字の表示は、30秒ごとに変わります。数字が変わる前に、ログイン処理を終了させる必要があります。

SingleIDのユーザ(user1)でログインを試みます。
user1のパスワードとワンタイムパスワードを:(コロン)でつなげた文字列をパスワードとして入力します。(例:password:123456)

user1でログインできたことを確認します。
