백업 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에는 규칙을 건너뛸 수 있는 방법이 있으므로 이를 달성하는 한 가지 방법은 다음과 같습니다.

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의 경우 유효한 경우 두 개의 규칙(후속 인증 설정 단계 로)을 내려야 하고 , OTP의 경우 하나의 규칙을 내려야 하며, 그렇지 않으면 인증을 거부해야 합니다. 이 비트 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를 사용할 수 있습니다.

관련 정보