SB C&Sの最新技術情報 発信サイト

C&S ENGINEER VOICE

SAMLをやってみよう(FortiGateのSSL-VPNとSAML認証)

Zero Trust
2021.04.26

SAMLにチャレンジする理由

ここに来て、大手や新興ベンダーから続々とSASE関連のソリューションがリリースされています。オンプレ型のネットワークセキュリティの移行が少しずつ準備が整ってきている雰囲気を感じるこの頃です。

さて、今回はSAMLがテーマです。 SAMLを使ったことのない人はおそらくいないと思います。多くのクラウドシステムではSSO(シングルサインオン)で利用されているので、仕組みがわからなくてもユーザーとして利用しているはずです。 ただ実際にネットワーク機器へSAMLを実装するケースはそれほど機会は多くないと思います。今でも多くの環境ではローカル(RadiusやAD/LDAP)を活用するケースが多いというのも事実です。

SASE(ZTNAやSWGなど)の登場によってユーザー認証の実現については少し見直しが必要かもしれません。SASE製品では、従来のローカルDBとは連携せず、SAMLをベースとした認証が主体となっています。 SAMLだから安全ということではないですが、SASEへ移行するためにはSAMLが必要となることが多くなる可能性が高いため、今から少しずつ理解を深めることが重要だと思います。

今回は、FortiGateとSAMLの認証ということで、なるべく少ない部材だけで、VPNとSAMLの認証を実現する方法を紹介します。ちょうどフォーティネットさんのナレッジベースに大手のSAMLの認証方法が多数掲載されていますので、本ブログではナレッジを解説するという方法で、FortiGateとSAMLの設定について見てみたいと思います。

Technical Tip: Configuring SAML SSO login for SSL VPN with Jumpcloud acting as SAML IdP

FortiGateのSSL-VPNはSAMLに対応

実環境でわざわざFortiGateのSSL-VPN認証をSAMLで実装するか?と言われると特にないですが、検証環境を用意する、SAMLの一通りの流れを確認するためにはちょうど良いです。

なによりもSAMLの検証環境を持っておくことによって、SAMLの認証がうまく行かないときに、確実に動くサンプルを持っておくことは、安心感にもつながります。

用意するもの

  • FortiGate 6.2以降
  • JumpCloud(SAML対応のIDサービス)

今回利用するのは、この2つシステムだけです。 もちろん、インターネット回線やVPNクライアントをインストールするPCも必要です。

SAML-IDPとしては"JumpCloud"はよく利用されるIDaaSの一つで、SAMLだけでなく、ディレクトリ機能やRadius機能があるので、社内の有線、無線LANの認証や、リモートアクセス用のユーザー認証の際にも役に立つので我社の取り扱い製品ではないですが、個人的とても愛用しているサービスです。もちろん、他社のSAML/IDaaSサービスを使っても問題ありません。

今回のイメージはこんな感じ

図1.png

FortiGateの設定

KBを参照に設定していくのですが、前提としてSSL-VPNの基本設定は必要です。 SSL-VPN設定とSSL-VPNポータル設定はいつもどおり行ってください。

SSL-VPNの設定 図2.png

SSL-VPNポータル 図3.png

ユーザーグループ 図4.png

※ユーザーグループの設定はKBにはないですが、ファイアウォールポリシーで指定するように設定しています。

SAMLの設定としては、従来ユーザーの作成において、ローカルユーザーやリモートユーザーを指定する部分をSAMLユーザーとして指定するというのがポイントです。 ただ、SAMLを使う場合、CLIによるSSOの設定が必要ということです。あと付け加えるなら、ついでサーバーのタイムアウト値を長く設定しておくことは忘れずに。


config user setting
 set auth-timeout 60

SAMLユーザーを作る

設定のポイントはconfig user samlです。 通常ローカルユーザーを作る場合はGUIからconfig user localへ作成しますがSAMLの場合、FortiGateの内部にデータベースはつくらないので、user samlの中にSSOに必要な設定をCLIで書き込むという作業が必要です。

JumpCloudのSSOと連携させる場合 以下は私の環境を参照しています。環境に応じて変更してください。


# config user saml
 edit "<任意の名前>"
  set entity-id "https://<fortigateのWANIP>/remote/saml/metadata"
  set single-sign-on-url "https://<fortigateのWANIP>/remote/saml/login"
  set single-logout-url "https://<fortigateのWANIP>/remote/saml/logout"
  set idp-entity-id "<JumpCloudに入力するIdp Entity IDと合致させる>"
  set idp-single-sign-on-url "https://sso.jumpcloud.com/saml2/<JumpCloudで指定>"
  set idp-cert "REMOTE_CertXX"
  set use-rname "username"
  set group-name "<先の作成したグループ名>"

上記で設定した内容はそのままJumpCloudにも同じ値を設定する必要があります。 特にSAMLの場合はこの合致がとても重要です。

SAML-IDPの証明書をインポートする

設定のポイントはset idp-cert "REMOTE_CertXX"の部分です。 後ほどJumpCloudでSSOの設定を行っていくのですが、SAML-IDPの証明書をFortiGateにインストールする必要があります。

各種値の書き方は、形式が決まっていますので、利用する製品のマニュアルに従って入力する必要があります。

JumpCloudを用意

JumpCloudに一度もサインアップしたことがない場合はこちらからサインアップをおこなてください。 https://console.jumpcloud.com/signup

すでに管理者アカウントを持っている場合はこちら
https://console.jumpcloud.com/login

ログインすると、ダッシュボードが開きますので、KBを見ながら必要事項を入力ください。 すでにFortiGateのconfig user samlにて設定した内容をもう一度JumpCloudへ入力するという作業になります。

SSOの設定

今回のSSOの設定の成功のポイントは入力値の一致です。FortiGate側で設定した内容と全く同じ内容を入力しなければなりません。 特にSAML-IDP(今回はJumpCloud)側はACS(アサーション)という名前なのに、SAML-SP(今回はFortiGate)はSingle-sign-on-urlで指定した値など、言葉の違いなどで混乱してしまうかもしれません。慣れの問題もありますが、一旦こういうふうに設定するんだというぐらいでいいんじゃないでしょうか。

JumpCloud カスタムSSOアプリケーション 図5.png 図6.png

パラメーターの設定が正しく終わったら、必ずJumpCloudから証明書をダウンロードしてください。 図7.png

リモート証明書をFortiGateへインストール

KBには詳細な記載はありませんが、JumpCloudからダウンロードした証明書(certificate.pem)をFortiGateへインストールしなければなりません。 FortiGateのシステム→証明書→インポート→リモートと進んでダウンロードした証明書をFortiGateにアップロードしてください。

インストールされると、REMOTE_CertXという番号が付きますので、この証明書をconfig user samlset idp-cert "REMOTE_CertXとなります。
図8.png

設定の順番としては、JumpCloud→証明書発行→FortiGateという手順がやりやすいかもしれません。

設定の確認

念のため確認します。

  • JumpCloudのユーザー作成
  • SSOアプリケーションの設定
  • SSL-VPN設定
  • SSL-VPNポータル設定
  • ユーザーグループの設定
  • User SAMLの設定
  • SAML-IDPの証明書のインポート

までが終わっていれば、後はVPN接続で確認します。 FortiGateのファイアウォールポリシーで、SSLVPNインターフェースから対象のネットワークへの許可ポリシーを設定します。 メンバーは"user saml"で指定したものが設定されなければなりません。 図9.png

接続の確認

FortiClientを立ち上げてVPNプロファイルを作成
Enable Single Sign On (SSO) for VPN Tunnelにチェックを付け忘れないように。 図10.png

SAML Login可能なVPNプロファイルが作成される 図11.png

ログインすると、JumpCloud側の認証ページにリダイレクトされる 図12.png

認証が成功するとVPNが接続される 図14.png

ということで、FortiGateとSAMLを使ったVPN接続の紹介でした。 画像が付けて設定のポイントをまとめたつもりですが、細かいところは試行錯誤しながら是非試してみてください。

実際SAML化することで、認証サーバーをクラウド化(可用性向上)することができたり、高度なリスクベース認証を搭載したIDaaS製品やCisco DuoのようなMFA製品と組み合わせれば、FortiGateのSSL-VPN機能をゼロトラストネットワークアクセスへ進化させることも可能です。

著者紹介

SB C&S株式会社
ICT事業本部 ICT事業戦略・技術本部 技術統括部 第3技術部
宮本 世華

釣りが好きです。