SSLクライアント証明書(PKI USER)を利用する
VPNの多要素(2要素)認証(MFA)を実現したい場合、FortiGate UTMで実現できるもっとも安易な方法は下記の方法があります。
- モバイルトークンなどを使ったOTP(ワンタイムパスワード)
- ユーザー毎に、FortiTokenを購入する必要があります。認可サービスとしてLDAP(Active Directory含む)を利用することができます。
- FortiToken Mobile quick start
- SSLクライアント証明書を使った認証
ここでは、無料で二要素認証を行うことができる、SSLクライアント証明書を利用する方法について記載します。
SSLクライアント証明書を用いた認証手段
SSLのクライアント証明書を用いたリモートVPN接続をする場合、クライアントがアクセスする時の次の2つの箇所でSSLクライアント証明書をチェックすることができます。
- SSL接続時のクライアント証明書の(存在の)チェック
- FortiGateにSSLプロトコル的に接続可能な、SSLクライアント証明書が、デバイスにインストールされているかどうかのチェック。
- ユーザーの認証を行う時に、クライアント証明書のSubjectをチェック(PKI USERのみ)
- SSLクライアント証明書が「正しい」かどうか。
以上から、ユーザ認可サービスにLDAP(Active Directory含む)を利用する場合、上記1の「SSLクライアント証明書」があるかどうか?しかチェックができず、2要素にはなりません。
厳密には、SSLクライアント証明書が「ある」か、どうかを最初にチェックしているため、不特定多数から特定多数まで絞り込むことはでき、このことから「若干のセキュリティ向上」を得られると考えられなくはありません。
しかし、この層でのクライアント証明書のチェックは、実際には「使えればなんでも良い」ので、FortiGateにルート証明のインストールされている有償のクライアント証明書(概ね、一般的なSSLサーバ証明書を販売しているベンダが扱う、有償のSSLクライアント証明書)は、全て適合してしまうことになります。
1、2の通過も、利用するSSLクライアント証明書が発行された、ルートCAをFortiGate VDOMにインストールしておく必要があります。
ルートCAもクライアント証明書も、自社で用意し厳密に管理できれば、セキュリティは高くなります。
サーバ証明書の自己証明書はセキュリティ的によろしいとは言えませんが、これは不特定多数のユーザに公開するサーバにおいて、第三者証明の意味を持たないことが大きな問題となります。しかし、SSLクライアント証明書の認証を行う場合は、「ルート証明書までインストールされた限定空間」で運用されることになるため、この部分においては問題にならないでしょう。
そのため、自社で閉じた形のルート証明を作り完全な形で管理できれば、セキュリティ的に望ましい環境になるといえます。
とはいえ、SSLクライアント証明書の管理や、配付システムの管理は煩雑になりがちなので、当社で用意しているルートCAをインストールし、クライアント証明書発行ツールを利用することも、考え方としては可能です。ただ、当社クライアント証明書発行ツールでは、当社サービスの利用者(の管理者)であれば、無料で利用することが可能です。そのため、当社サービスの利用者という限定されたユーザ空間において、そのクライアント証明書を持ちうることは、常に意識する必要があります。(後述するSubjectチェック方法の検討も必要かと思われます)。
ルート証明書の公開鍵は、こちらからダウンロードが可能です。このCAを、「System-Certificates」よりImportすることにより、利用することができます。
SSL接続時のクライアント証明書の(存在の)チェック
SSL接続時のクライアント証明書のチェックは、SSL設定にて「Require Client Certificate」をチェックすることで、行われます。
これはあくまでも存在のチェックに過ぎないので、ユーザーがローカルユーザーやLDAPユーザーであったとしても、「チェックだけは」行います。
事実上、SSLクライアント証明書がインストールされているかどうか?しかチェックされないため、二要素認証とはなりません。
当社SSLクライアント証明書を利用した場合は、それを利用できるユーザーは全て、このチェックを通り抜けることができてしまいます。ただ、不特定多数からアクセスができるのか、特定の人数からしかアクセスできないかの大きな違いはあります(上記囲み参照)。
ユーザーの認証を行う時に、クライアント証明書のSubjectをチェック(PKI USERのみ)
PKI USERを利用する場合、発行した証明書とユーザーの適合をする事ができます。ただし、この方法の場合、LDAP(Active Directory)と認可の連携はできません。
PKIユーザーは、デフォルトではWEBUIでは現れません。FortiGateのCLIから一人目のPKIユーザーを追加した後は、WEBUIでのコントロールが可能になります。
ユーザーは、「Create New」から作成可能です。
- Name
- ユーザー名を指定します。Local Userや、LDAPと重なってはいけません。
- Subject
- 前方一致でSSLクライアント証明書のSubjectを指定します。前方一致でチェックされます。
- Two-factor authentication
- 二要素認証を有効にします。
- Password/Confirm password
- ユーザのパスワードを登録します。
これらのユーザをグループに入れることで、そのユーザーは二段階認証対応のユーザーとなります。
ただ、PKI USERは認可データベースがFortiGateのローカル空間にあるため、従業員の入退職管理などと連動することができていないことに注意が必要です。特にVPNはどこからでもアクセスできる事が多いため、退職したユーザのアカウントが間違って残ることは非常に大きな問題を生む場合があります。