PAM 모듈을 체인으로 연결하여이 작업을 수행 할 수 있습니다. 그러나 세부 정보를 얻기 전에 :
PAM을 잘못 구성하면 시스템에 로그인하지 못할 수 있습니다.
고맙게도 항상 단일 사용자 모드로 부팅하고 문제를 해결할 수 있지만 PAM이 필요 이상으로 엉망이 아니라는 경고를 받으십시오.
어쨌든,이 뒤에 아이디어는 확인하십시오를 만들기 위해 쌓아 PAM 모듈을 사용 할 수 있다는 것입니다 pam-google-authenticator
, pam_unix
(이 검사 암호) 및 인증서 모듈은 모든 당신에게 액세스를 허용하기 위해 성공해야합니다. 기본적으로 PAM은 다른 인증 모듈을 건너 뛰고 모든 인증 모듈이 사용자를 인증 할 수 있도록 구성되어 있습니다.
/etc/pam.d/common-auth에서 맨 위 근처에 다음과 유사한 줄이 표시됩니다.
auth [success=2 default=ignore] pam_unix.so nullok_secure try_first_pass
이는 PAM에게 pam_unix.so
성공 해야한다는 것을 알려주고 다음 두 규칙 (보통 다른 인증 모듈 pam_deny.so
) 을 건너 뛰고 옵션 모듈로 진행합니다. 그러나 모듈이 실패하면 무시되고 제어는 체인의 다음 모듈로 넘어갑니다. 제어가 선택적 블록으로 건너 뛰거나 PAM이 pam_deny.so에 도달하여 실패 할 때까지 각 인증 모듈이 계속 작동합니다.
이것은을 보장하기 위하여 활용 될 수있다 pam-google-authenticator
, pam_unix.so
당신의 인증서 PAM 모듈은 모든 당신에게 액세스를 허용하기 위해 성공해야합니다. 사용중인 Google 인증 자 모듈 또는 인증서 모듈의 이름을 모르지만 공통 인증 파일에서 찾을 수 있어야합니다. 따라서 맨 위에 다음과 같은 것을 넣으십시오.
auth requisite pam_unix.so nullok_secure
auth requisite pam_google_authenticator.so
auth requisite pam_certificate_auth.so
auth [success=<n>] pam_permit.so
장착 <n>
여기 pam_permit.so 모듈 및 다음과 모듈의 수와 pam_permit.so
모듈 - 말하면 이것은 코드 + 1이 구문은 비트 펑키 최상위 인증 모듈의 설정 [성공 = N 기본 = 무시]되어야 위의 모듈이 성공한 후 인증 모듈을 건너 뜁니다.
물론이 3 단계 인증을 사용자 계정으로 만 제한하는 방법이 궁금 할 수도 있습니다. pam_succeed_if.so
모듈 로 수행 할 수 있으며 위에서 설명한 3 단계 인증 블록 위에 삽입해야합니다.
auth [success=ignore default=4] pam_succeed_if.so user = <username>
어디에서 <username>
사용자 이름으로 대체됩니다. 이 줄은 단순히 pam_succeed_if.so가 성공하면 (즉, 사용자 이름이 해당 줄의 사용자 이름과 일치 함) PAM은 다음 모듈 인 3 단계 인증 모듈로 진행해야합니다. 그렇지 않으면 PAM은이 모듈에서 4 개 모듈 떨어진 실제 모듈로 이동해야합니다.
예를 들어 특정 사용자 이름과 함께 그룹 멤버십과 같은 여러 항목을 일치 시키려면 다음과 같이 여러 줄을 사용해야합니다.
auth [success=1 default=ignore] pam_succeed_if.so user = <username>
auth [success=ignore default=4] pam_succeed_if.so user ingroup <group>
이 작업을 수행하기 전에 공용 인증 파일을 백업하고 단일 사용자 모드와 응급 상황에서 이전 파일을 복원하는 방법에 익숙해 질 것입니다. 이 구성은 나에게 테스트되지 않았지만 작동해야합니다.
이것을 처음으로 테스트하려면 루트 셸을 두 개 열어 두십시오. 공통 인증을 백업으로 쉽게 대체 할 수 있기 때문에 문제가 발생하는 경우 대체로 작동합니다. 그런 다음 변경하십시오. 다음으로 su
사용자 계정에 로그인하여 3 단계 인증 프로세스를 거쳐야합니다.
pam_succeed_if.so
모듈에 대한 전체 문서 는 http://linux.die.net/man/8/pam_succeed_if 에서 찾을 수 있습니다