バックアップPAMモジュールを持つ方法

バックアップPAMモジュールを持つ方法

私は現在PAMについて学んでいます。今はOTPとパスワードを使用していますが、OTPとパスワードを使用できるようにしたいと思います。失敗した場合は、YubiKeyとパスワードを使用してください。私はArchを使用しており、pam.dディレクトリのシステム認証ファイルは次のようになります。

auth      required  pam_oath.so     usersfile=/etc/users.oath window=30 digits=6 debug
auth      required  pam_unix.so     try_first_pass nullok
auth      optional  pam_permit.so
auth      required  pam_env.so

account   required  pam_unix.so
account   optional  pam_permit.so
account   required  pam_time.so

password  required  pam_unix.so     try_first_pass nullok sha512 shadow
password  optional  pam_permit.so

session   required  pam_limits.so
session   required  pam_unix.so
session   optional  pam_permit.so

答え1

ArchはLinux PAM(Solaris PAMおよびFreeBSD PAMとは異なり)であり、Linux PAMにはルールをスキップする方法があるため、これを達成する1つの方法は次のとおりです。

auth required pam_unix.so ... # password
auth [success=2 default=bad] pam_yubikey ...
auth [success=1 default=bad] pam_otp ...
auth required pam_deny.so
auth required pam_env.so
...

envyubikeyの場合、有効な場合は2つのルール(後続の認証設定フェーズ)を下げ、OTPの場合は1つのルールを下げる必要があり、そうでない場合は認証を拒否する必要があります。このビットdefaultのオプションや他のオプションが何であるかわからないため、[...]失敗するように設定しました。

別のオプションはサブスタックです。デフォルトのルールファイルには次の内容があります。

...
auth substack otp-foo
auth substack yubikey-foo
...

その後、添付ファイルは/etc/pam.d/{otp-foo,yubikey-foo}if-authgood-or-pam_denyを実行します。ただし、この場合は両方とも試行されます(Linux PAMはすべてのサブスタックで動作します)。 yubikeyが機能している場合は、otpチェックをスキップする前の例とは異なります。

答え2

thrigの助けを借りてついに正解を得ましたが、default = badのためにスタックが常に失敗したため、彼の最初の解決策は機能しませんでした。私のアプローチは2faサブスタックを作成することです。今回はsystem-authの代わりにsuでテストしました。 su PAMファイルは次のとおりです。

#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth           required        pam_wheel.so use_uid
auth            required        pam_unix.so
auth            substack        2fa
account         required        pam_unix.so
session         required        pam_unix.so

pam_unixの後に見られるように、以下のようにサブスタック2faを含めました。

auth sufficient pam_yubico.so id=35659 authfile=/etc/yubikey_mappings debug
auth required   pam_oath.so usersfile=/etc/users.oath window=30 digits=6 debug

サブスタックにあるため、十分な制御値はモジュールスタック全体を終了せず、サブスタックのみを終了します。 yubikeyが失敗しても正しいパスワードを入力すると、OTPを使用できます。

関連情報