私は現在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
...
env
yubikeyの場合、有効な場合は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チェックをスキップする前の例とは異なります。