運用・管理 / 2要素認証


基本仕様
基本設定
応用設定
2FA未設定ユーザーの拒否
QRコード(OTP URL)に埋め込む情報の設定
TOTP方式における認証コードの再利用
TOTP方式における軽微な時刻ずれへの対応
TOTP方式における大幅な時刻ずれへの対応
HOTP方式におけるカウンターずれへの対応


2要素認証(2FA = Two Factor Authentication)は、2つの異なる認証要素を併用することでセキュリティーを高める仕組みです。

基本仕様

本製品がサポートする2FAの基本仕様は以下のとおりです。

基本設定

2FAを使用するための基本設定は次のとおりです。
  1. 2FA関連の設定は2要素認証サービスが有効になっていないと行えないため、最初に同サービスを有効化します。
    これには service 2faコマンドを使います。
    awplus(config)# service 2fa
    awplus(config)# exit
    

  2. 2FAを行うには、ユーザーごとにシークレットキー(パスワード)を生成し、本製品とユーザー(のモバイルアプリ)の間で共有する必要があります。シークレットキーの生成は特権EXECモードの2fa create userコマンドにより「2FAユーザーの追加」という形で行います。
    awplus# 2fa create user userA random-secret
    
    2FAを利用するユーザーのそれぞれについて、2fa create userコマンドを実行してください。
    Note
    • 2fa create userコマンドで指定するユーザー名は、第1要素(RADIUSサーバーまたはLDAPサーバー)に登録されているOpenVPNユーザー名と同じである必要があります。

    • 2fa create userコマンドを実行すると、認証コードの生成に必要なシークレットキーのほかに、モバイルアプリが利用不可となった場合に備えたバックアップ用の認証コードが5個生成されます。これらの情報は同コマンド実行時に表示されますが、あとからshow 2fa userコマンドで何度でも確認可能です。

    • HOTP方式を使用する場合は、2fa create userコマンドで hotp オプションを指定してください。同オプションを指定しない場合はTOTP方式を使います。
      awplus# 2fa create user userB random-secret hotp
      

  3. OpenVPNで2FAを使うよう設定します。これにはaaa authentication openvpnコマンドを使います。
    OpenVPNに関するその他の設定は2FAを使わないときと同じです。詳しくは「VPN」/「OpenVPN」をご覧ください。

    Note
    OpenVPNクライアントにおいて、ユーザー名・パスワードと2FA認証コードを別々に入力できるようにするには、クライアント設定ファイルに次のような設定行が必要です。必要な設定はクライアントの種類によって異なる可能性がありますので、ご使用のクライアントのマニュアルをご参照ください。
    static-challenge "Verification Code:" 1
    

    なお、使用するOpenVPNクライアントが2FA認証コードの入力に対応していない場合(認証コードの入力欄や入力画面がない場合など)は、aaa authentication openvpnコマンドの 2fa-in-password オプションを使用することで、通常のパスワードの一部として認証コードを受け取ることが可能です。

    この場合、OpenVPNクライアントのパスワード入力欄に <パスワード><認証コード> の形式でパスワードと認証コードをまとめて入力します。たとえばパスワードが「paSSxx__」で認証コードが「987654」だった場合、パスワード入力欄には「paSSxx__987654」と入力します。

    • RADIUSサーバーを使う場合
      awplus(config)# aaa authentication openvpn default group radius 2fa 2fa-in-password
      
    • LDAPサーバーを使う場合
      awplus(config)# aaa authentication openvpn default group ldap 2fa 2fa-in-password
      

  4. 各ユーザーにモバイルアプリ設定のための情報(シークレットキーなど)を提供します。


2FAを利用するための基本設定は以上です。

■ 2FAサービスの設定はshow 2faコマンドで確認できます。

■ 2FAユーザーの一覧はshow 2fa usersコマンドで確認できます。

■ 個々の2FAユーザーの情報(シークレットキー、バックアップコードなど)はshow 2fa userコマンドにユーザー名を指定することで確認できます。
前述のとおり、qrオプションを指定すればシークレットキー受け渡し用のQRコードを表示することも可能です。

■ 2FAユーザーのバックアップコードを再生成するには2fa reset scratch-codesコマンドにユーザー名を指定します。
同コマンドを実行すると、該当ユーザーの5つのバックアップコードがすべて新しいものに更新され、以前のコードは使用できなくなります。
awplus# 2fa reset scratch-codes userA

■ 2FAユーザーを削除するには2fa delete userコマンドを使います。
awplus# 2fa delete user userA

応用設定

2FAの動作は以下のコマンドでカスタマイズ可能です。

2FA未設定ユーザーの拒否

初期設定では、2FA未設定のユーザー(2fa create userコマンドで登録していないユーザー)は2FAを使わずに第1要素(RADIUSかLDAP)の認証をパスすればログインが可能です。
2FA未設定ユーザーのログインを拒否するには、2fa reject-unconfigured-usersコマンドを設定してください。
awplus(config)# 2fa reject-unconfigured-users

QRコード(OTP URL)に埋め込む情報の設定

シークレットキーを受け渡すためのQRコードは、OTP URLと呼ばれるURL文字列をQRコード化したものです。
このURLにはシークレットキーのほかに、参考情報としていくつかの文字列情報を付加することができます。
これは以下の各コマンドで設定します。
Note

■ OTP URLに発行者情報(issuerパラメーター)を付加するには、2fa issuerコマンドを使います。初期状態は未設定で、その場合発行者情報は埋め込まれません。
awplus(config)# 2fa issuer My Company

■ OTP URLに埋め込むラベル情報の後半部分を変更するには、2fa labelコマンドを使います。初期設定ではホスト名(hostname)が入ります。
awplus(config)# 2fa label My VPN

TOTP方式における認証コードの再利用

カウンターベースのHOTP方式では認証コードは使うたびに変更されますが、初期設定では時間ベースのTOTP方式でも認証コードは各々1回ずつしか使用できません。
たとえば、ユーザーが複数の装置からOpenVPN接続を行う場合、ある装置からログインした直後に別の装置からもログインしようとすると、最初の装置で使用した認証コードの有効期間内であっても、2つ目の装置で入力した認証コードは使用済みであるとして拒否されます。
TOTP方式で同じ認証コードを複数回使えるようにするには 2fa allow-reuseコマンドを使います。
awplus(config)# 2fa allow-reuse

TOTP方式における軽微な時刻ずれへの対応

時間ベースのTOTP方式では、認証を受ける側(ユーザー側)と認証する側(本製品)がそれぞれの時刻にもとづいてタイムステップ(30秒)ごとにワンタイムパスワード(認証コード)を計算するため、両者の時刻がずれていると正しく認証を行えません。

ただし、実際の運用ではシステム間で時刻がずれている可能性は十分考えられ、またユーザーが認証コードを確認して入力するまでのタイムラグもあるため、ある程度の時刻ずれを許容する設定が可能です。

■ 初期設定では、ある時点において現在の時刻に対応した認証コードに加え、前後1個ずつの認証コードも受け入れる設定になっています。
現在時刻を中心に前後あわせて合計何個の認証コードを許容するかを示す設定値をTOTPウィンドウサイズと呼び、2fa totp-window-sizeコマンドで変更が可能です。

たとえば次の設定ではTOTPウィンドウサイズを5に設定しています。これは現在のコードに加えて、前2個、後2個の合計5個のコードを受け入れる設定です。
awplus(config)# 2fa totp-window-size 5

一方、次の例ではTOTPウィンドウサイズを1、すなわち現在のコードしか受け入れない厳格な設定にしています。
awplus(config)# 2fa totp-window-size 1

TOTP方式における大幅な時刻ずれへの対応

時間ベースのTOTP方式では、前述のとおり、認証を受ける側(ユーザー側)と認証する側(本製品)がそれぞれの時刻にもとづいてワンタイムパスワード(認証コード)を計算するため、両者の時刻がウィンドウサイズ(2fa totp-window-sizeコマンド)よりも大きくずれていると正しく認証を行えません。

ウィンドウサイズよりも大きな時刻ずれの原因としてよく見られるものにタイムゾーン設定の不一致があります。
時刻ずれ補正機能は、このような状況に対応するために両者の時刻がずれていることを検出して自動補正する機能です。

時刻ずれ補正機能の有効時にユーザーが間違った認証コードを入力すると、本製品は現在時刻の前後 2fa max-skew個分の認証コードをチェックし、一致するコードが見つかった場合はユーザーがそのコードを入力した時刻と、実際のそのコードが使われるべき時刻の差(ずれ幅)を記憶しておきます。

該当ユーザーが同じずれ幅で間違ったコードを短期間に3回連続して入力した場合、本製品はこのずれ幅を該当ユーザーの時刻補正値として記憶し、それ以降該当ユーザーがログインしようとしてきた場合は現在時刻にこの補正値を適用して認証コードをチェックします。これにより、互いの時刻がずれたまま正しく認証が行えるようになります。

■ 初期状態では、時刻ずれ補正機能は無効です。有効にするには2fa skew-adjustコマンドを実行します。
awplus(config)# 2fa skew-adjust

■ 補正可能な最大ずれ幅(前後どちらにも適用)は 2fa max-skewコマンドで設定します。
同コマンドの指定値の単位は「タイムステップ」です(1タイムステップ=30秒)。
初期値は1500タイムステップ(45000秒=750分=12時間30分)です。

次の例では、最大補正幅を設定可能な最大値である3000タイムステップ(25時間)に設定しています。
awplus(config)# 2fa max-skew 3000

■ 時刻補正値が保存されているユーザーについては、show 2fa userコマンドの出力にその旨が表示されます。
awplus# show 2fa user userA

■ ユーザーごとの時刻補正値をリセットするには2fa reset skewコマンドにユーザー名を指定します。
awplus# 2fa reset skew userA

HOTP方式におけるカウンターずれへの対応

カウンターベースのHOTP方式では、認証を受ける側(ユーザー側)と認証する側(本製品)がそれぞれ次が何個目の認証コードであるかを示すカウンターを保持しており、このカウンターの値にもとづいて認証コードを計算するため、両者のカウンターがずれていると正しく認証を行えません。

ただし、HOTPではユーザーが任意でカウンターを進める(認証アプリで認証コードを更新する=次のカウンターのコードを取得する)ことができるため、カウンターの不一致は起こり得る前提で、認証する側(本製品)でユーザー側がいくつまでカウンターを進めていても許容するかを設定できるようになっています。

■ 初期設定では、認証する側から見て、現在のカウンター値に対応した認証コードに加え、次とその次の認証コードを加えた合計3つの認証コードを受け入れる設定になっています。現在の認証コードを1つ目とした場合に何個目の認証コードまでを許容するかを示す設定値をHOTPウィンドウサイズと呼び、2fa hotp-window-sizeコマンドで変更が可能です。

たとえば次の設定ではHOTPウィンドウサイズを5に設定しています。これは現在のコードから4つ先のコードまで合計5個のコードを受け入れる設定です。
awplus(config)# 2fa hotp-window-size 5

一方、次の例ではHOTPウィンドウサイズを1、すなわち現在のコードしか受け入れない(カウンターのずれを許容しない)厳格な設定にしています。
awplus(config)# 2fa hotp-window-size 1



(C) 2015 - 2022 アライドテレシスホールディングス株式会社

PN: 613-002107 Rev.AU