「Pam oath」の版間の差分
(カテゴリ変更) |
Kusanaginoturugi (トーク | 投稿記録) (二段階認証に用語を統一) |
||
(2人の利用者による、間の11版が非表示) | |||
1行目: | 1行目: | ||
{{DISPLAYTITLE:pam_oath}} |
{{DISPLAYTITLE:pam_oath}} |
||
− | [[Category: |
+ | [[Category:セキュアシェル]] |
[[Category:認証]] |
[[Category:認証]] |
||
[[en:Pam oath]] |
[[en:Pam oath]] |
||
+ | [[zh-hans:Pam oath]] |
||
− | [https://www.nongnu.org/oath-toolkit/index.html OATH Toolkit] はワンタイムパスコード (OTP) を使用する2段階認証を実現します。RFC 標準になっている2つの OTP 手法に対応 ([[Wikipedia:HMAC-based_One-time_Password_Algorithm|HOTP]], [[Wikipedia:Time-based_One-time_Password_Algorithm|TOTP]])。OTP を生成するアプリケーションは iOS, Android, Blackberry などの端末で使うことができます。[[Google Authenticator]] と同じように認証メカニズムは Linux の [[PAM]] システムと統合されています。このページではインストールと設定について説明します。 |
||
+ | [https://www.nongnu.org/oath-toolkit/index.html OATH Toolkit] はワンタイムパスコード (OTP) を使用する二段階認証を実現します。RFC 標準になっている2つの OTP 手法に対応 ([[Wikipedia:HMAC-based_One-time_Password_Algorithm|HOTP]], [[Wikipedia:Time-based_One-time_Password_Algorithm|TOTP]])。OTP を生成するアプリケーションは iOS, Android, Blackberry などの端末で使うことができます。[[Google Authenticator]] と同じように認証メカニズムは Linux の [[PAM]] システムと統合されています。このページではインストールと設定について説明します。 |
||
== インストール == |
== インストール == |
||
13行目: | 14行目: | ||
oath のシードは16進数の数字で、ユーザーごとに一意である必要があります。新しいシードを生成するには、以下のコマンドラインを使用します: |
oath のシードは16進数の数字で、ユーザーごとに一意である必要があります。新しいシードを生成するには、以下のコマンドラインを使用します: |
||
+ | {{hc|$ openssl rand -hex 10| |
||
− | $ head -10 /dev/urandom | sha512sum | cut -b 1-30 |
||
+ | 12345678909876543210 |
||
− | 1ab4321412aebcw |
||
+ | }} |
||
− | この記事では上記のシードを例として使用しますが、同じシードを実際に設定するときに使ってはいけません。 |
+ | {{Note|この記事では上記のシードを例として使用しますが、同じシードを実際に設定するときに使っては'''いけません'''。}} |
+ | oath はユーザーごとに必要で、設定ファイル {{ic|/etc/users.oath}} の中にリンクします。[[ユーザーとグループ#概要|Root ユーザー]] でファイルを作成して、ユーザーのシードを記述してください: |
||
− | {{hc|/etc/users.oath|# Option User Prefix Seed |
||
− | HOTP/T30/6 ''user'' - ''1ab4321412aebcw''}} |
||
+ | {{Tip|1 つの端末で root ユーザー権限を使用してセッションにログインし、別の端末で PAM 設定を変更します。この方法では、PAM 設定に問題がある場合でも、ログインして修正するためのアカウントが残っているため、リモート接続する場合に特に便利です。}} |
||
− | ファイルは root からしかアクセスできないようにします: |
||
+ | |||
+ | {{hc|/etc/users.oath| |
||
+ | # Option User Prefix Seed |
||
+ | HOTP/T30/6 ''user'' - ''12345678909876543210'' |
||
+ | }} |
||
+ | |||
+ | {{Warning|T を 60 より大きく設定しないでください。エラーが発生します:(OATH_UNKNOWN_USER: Cannot find information about user)}} |
||
+ | |||
+ | HOTP が必要な場合は、次の設定を使用します。 |
||
+ | |||
+ | {{hc|/etc/users.oath| |
||
+ | # Option User Prefix Seed |
||
+ | HOTP ''user'' - ''12345678909876543210'' |
||
+ | }} |
||
+ | |||
+ | ファイルに root ユーザーのみがアクセスできることを確認します。 |
||
# chmod 600 /etc/users.oath |
# chmod 600 /etc/users.oath |
||
36行目: | 53行目: | ||
auth required pam_oath.so usersfile=/etc/users.oath window=30 digits=6 |
auth required pam_oath.so usersfile=/etc/users.oath window=30 digits=6 |
||
+ | SSH ログインが機能するためには、ファイル {{ic|/etc/ssh/sshd_config}} でこれらのオプションが有効になっていることを確認します: |
||
− | == oath パスの記録 == |
||
+ | |||
+ | ChallengeResponseAuthentication yes |
||
+ | UsePAM yes |
||
+ | |||
+ | {{ic|sshd.service}} を[[再起動]]して、変更を有効にします。 |
||
+ | |||
+ | 公開鍵認証やパスワード認証が有効な場合でも、OATH のリクエスト・レスポンスを強制したい場合は、 {{ic|/etc/ssh/sshd_config}} に以下を追加します: |
||
+ | |||
+ | AuthenticationMethods publickey,keyboard-interactive:pam |
||
+ | KbdInteractiveAuthentication yes |
||
+ | PasswordAuthentication yes |
||
+ | |||
+ | {{Tip|ローカルログインの場合は、{{ic|/etc/pam.d/login}} を編集してください。}} |
||
+ | |||
+ | == OATH パスワードを使用したログイン == |
||
+ | |||
+ | TOTP でログインする場合: |
||
+ | |||
+ | $ oathtool -v --totp -d 6 ''12345678909876543210'' |
||
+ | |||
+ | {{Warning|TOTP モード設定時のエラー {{ic|SHA512}} は開発者が修正していません。[https://gitlab.com/oath-toolkit/oath-toolkit/issues/8 Gitlab の open issue] を参照してください。}} |
||
+ | HOTPでログインする場合: |
||
− | 現在の oath パスが必要な場合は以下のコマンドを実行: |
||
− | oathtool -v - |
+ | $ oathtool -v -d 6 ''12345678909876543210'' |
− | 上記の '' |
+ | 上記の ''12345678909876543210'' は適当なシードに置き換えてください。以下のような表示がされます: |
Hex secret: 1ab4321412aebc |
Hex secret: 1ab4321412aebc |
||
58行目: | 96行目: | ||
''user'', ''machine'', ''DK2DEFASV26A===='' は適当な文字列に置き換えてください。生成が完了したら、お好きな画像作成アプリケーションで qrcode を視覚化して使用することができます。FreeOTP を使用して png のスクリーンショットを撮影し、必要になったときに OTP パスを表示するのが一番簡単です。 |
''user'', ''machine'', ''DK2DEFASV26A===='' は適当な文字列に置き換えてください。生成が完了したら、お好きな画像作成アプリケーションで qrcode を視覚化して使用することができます。FreeOTP を使用して png のスクリーンショットを撮影し、必要になったときに OTP パスを表示するのが一番簡単です。 |
||
+ | {{Note|ユーザーの秘密鍵は、このシステムで最も重要な情報です。OTP を提供するように携帯電話をセットアップすると、その携帯電話はそのキーを持つようになります。png ファイル内の qr コードには、そのキーが含まれています。このファイルには細心の注意を払う必要があります。暗号化された媒体にのみ保存する必要があります(あなたの携帯電話は、まともなレベルのセキュリティのために暗号化を使用する必要があります)。そうでない場合は、サードパーティ製アプリケーションからのアクセスを防ぐため、Samsung Knox のようなサンドボックス内に閉じ込めることもできません。}} |
||
− | {{Note|The secret key of your users is the most important information in this system. Once you setup a phone to provide OTP, it does have that key. The qr code in that png file does have that key. You need to take extra care of this file. They should only be stored on encrypted medium (Your phone need to be using encryption for any sane level of security). If not even confined in a sandbox like Samsung Knox to prevent third party application to potentially access them.}} |
||
== 参照 == |
== 参照 == |
2024年9月5日 (木) 20:52時点における最新版
OATH Toolkit はワンタイムパスコード (OTP) を使用する二段階認証を実現します。RFC 標準になっている2つの OTP 手法に対応 (HOTP, TOTP)。OTP を生成するアプリケーションは iOS, Android, Blackberry などの端末で使うことができます。Google Authenticator と同じように認証メカニズムは Linux の PAM システムと統合されています。このページではインストールと設定について説明します。
インストール
oath-toolkit パッケージをインストールしてください。
oath の設定
oath のシードは16進数の数字で、ユーザーごとに一意である必要があります。新しいシードを生成するには、以下のコマンドラインを使用します:
$ openssl rand -hex 10
12345678909876543210
oath はユーザーごとに必要で、設定ファイル /etc/users.oath
の中にリンクします。Root ユーザー でファイルを作成して、ユーザーのシードを記述してください:
/etc/users.oath
# Option User Prefix Seed HOTP/T30/6 user - 12345678909876543210
HOTP が必要な場合は、次の設定を使用します。
/etc/users.oath
# Option User Prefix Seed HOTP user - 12345678909876543210
ファイルに root ユーザーのみがアクセスできることを確認します。
# chmod 600 /etc/users.oath # chown root /etc/users.oath
PAM の設定
特定のサービスだけで oath を有効にするには、例えば ssh なら /etc/pam.d/sshd
ファイルを編集してファイルの先頭に以下の行を追加します:
auth sufficient pam_oath.so usersfile=/etc/users.oath window=30 digits=6
これで正しい oath コードを入力したときに認証が通るようになります。認証を必須にして pam スタックの処理を止めるようにしたい場合は以下のように設定します:
auth required pam_oath.so usersfile=/etc/users.oath window=30 digits=6
SSH ログインが機能するためには、ファイル /etc/ssh/sshd_config
でこれらのオプションが有効になっていることを確認します:
ChallengeResponseAuthentication yes UsePAM yes
sshd.service
を再起動して、変更を有効にします。
公開鍵認証やパスワード認証が有効な場合でも、OATH のリクエスト・レスポンスを強制したい場合は、 /etc/ssh/sshd_config
に以下を追加します:
AuthenticationMethods publickey,keyboard-interactive:pam KbdInteractiveAuthentication yes PasswordAuthentication yes
OATH パスワードを使用したログイン
TOTP でログインする場合:
$ oathtool -v --totp -d 6 12345678909876543210
HOTPでログインする場合:
$ oathtool -v -d 6 12345678909876543210
上記の 12345678909876543210 は適当なシードに置き換えてください。以下のような表示がされます:
Hex secret: 1ab4321412aebc Base32 secret: DK2DEFASV26A==== Digits: 6 Window size: 0 Start counter: 0x0 (0) 820170
最後の数字は実際にログインに使用することができます。また、Base32 secret は qr コードを生成するのに必要な文字列です。qr コードを生成するには qrencode パッケージをインストールして次のコマンドを実行:
qrencode -o user.png 'otpauth://totp/user@machine?secret=DK2DEFASV26A===='
user, machine, DK2DEFASV26A==== は適当な文字列に置き換えてください。生成が完了したら、お好きな画像作成アプリケーションで qrcode を視覚化して使用することができます。FreeOTP を使用して png のスクリーンショットを撮影し、必要になったときに OTP パスを表示するのが一番簡単です。