「Pam oath」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(カテゴリ変更)
(他言語へのリンクを追加)
 
(2人の利用者による、間の9版が非表示)
3行目: 3行目:
 
[[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) を使用する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]] システムと統合されています。このページではインストールと設定について説明します。
   
13行目: 14行目:
 
oath のシードは16進数の数字で、ユーザーごとに一意である必要があります。新しいシードを生成するには、以下のコマンドラインを使用します:
 
oath のシードは16進数の数字で、ユーザーごとに一意である必要があります。新しいシードを生成するには、以下のコマンドラインを使用します:
   
  +
{{hc|$ openssl rand -hex 10|
$ head -10 /dev/urandom | sha512sum | cut -b 1-30
 
  +
12345678909876543210
1ab4321412aebcw
 
  +
}}
   
この記事では上記のシードを例として使用しますが、同じシードを実際に設定するときに使ってはいけません。oath はユーザーごとに必要で、設定ファイル {{ic|/etc/users.oath}} の中にリンクします。root でファイルを作成して、ユーザーのシードを記述してください:
+
{{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 -d6 ''1ab4321412aebcw''
+
$ oathtool -v -d 6 ''12345678909876543210''
   
上記の ''1ab4321412aebcw'' は適当なシードに置き換えてください。以下のような表示がされます:
+
上記の ''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.}}
 
   
 
== 参照 ==
 
== 参照 ==

2023年8月25日 (金) 13:35時点における最新版

OATH Toolkit はワンタイムパスコード (OTP) を使用する2段階認証を実現します。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 ユーザー でファイルを作成して、ユーザーのシードを記述してください:

ヒント: 1 つの端末で root ユーザー権限を使用してセッションにログインし、別の端末で PAM 設定を変更します。この方法では、PAM 設定に問題がある場合でも、ログインして修正するためのアカウントが残っているため、リモート接続する場合に特に便利です。
/etc/users.oath
# Option User Prefix Seed
HOTP/T30/6 user - 12345678909876543210
警告: T を 60 より大きく設定しないでください。エラーが発生します:(OATH_UNKNOWN_USER: Cannot find information about user)

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
ヒント: ローカルログインの場合は、/etc/pam.d/login を編集してください。

OATH パスワードを使用したログイン

TOTP でログインする場合:

$ oathtool -v --totp -d 6 12345678909876543210
警告: TOTP モード設定時のエラー SHA512 は開発者が修正していません。Gitlab の open issue を参照してください。

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 パスを表示するのが一番簡単です。

ノート: ユーザーの秘密鍵は、このシステムで最も重要な情報です。OTP を提供するように携帯電話をセットアップすると、その携帯電話はそのキーを持つようになります。png ファイル内の qr コードには、そのキーが含まれています。このファイルには細心の注意を払う必要があります。暗号化された媒体にのみ保存する必要があります(あなたの携帯電話は、まともなレベルのセキュリティのために暗号化を使用する必要があります)。そうでない場合は、サードパーティ製アプリケーションからのアクセスを防ぐため、Samsung Knox のようなサンドボックス内に閉じ込めることもできません。

参照