이 PAM 코드가 데비안 시스템에 대한 모든 로그인을 차단하는 이유는 무엇입니까?

이 PAM 코드가 데비안 시스템에 대한 모든 로그인을 차단하는 이유는 무엇입니까?

이 줄을 추가하는 이유는 다음과 /etc/pam.d/common-auth같습니다.

auth        required      pam_tally2.so deny=4 unlock_time=1200 even_deny_root

다음 행을 다음에 추가하십시오 /etc/pam.d/common-account.

account     required      pam_tally2.so

예방하다모두내 Debian 10 시스템에 로그인하시겠습니까? 다른 모든 pam구성 파일( login, common-session, 및 common-password은 기본값과 동일하지만 필요한 경우 해당 파일도 게시할 수 있습니다)

pam_tally나는 다음과 같은 몇 가지 다른 질문에 대해 논의하는 것을 보았습니다.이것,이것, 그리고이것pam_tally, 그러나 구체적인 답변이 없거나 답변이 전혀 없습니다 .

(배경으로는 적응하려고 노력 중입니다.이번 업데이트 안내데비안 시스템의 경우)

편집: libpam-modules패키지가 설치되었습니다.

에서 common-auth:

auth    [success=1 default=ignore]  pam_unix.so nullok_secure
auth    required      pam_tally2.so deny=4 unlock_time=1200 even_deny_root
auth    requisite     pam_deny.so
auth    required      pam_permit.so

에서 common-account:

account required      pam_tally2.so
account [success=1 new_authtok_reqd=done default=ignore]    pam_unix.so 
account requisite     pam_deny.so
account required      pam_permit.so

답변1

이 답변에는 두 부분이 있습니다. 첫 번째는 pam_tally2에 추가합니다 auth. 두 번째는 에 추가합니다 account.pam_tally2제대로 작동하려면 이 두 부분이 필요합니다..

당신의 것을 보자 common-auth,

auth    [success=1 default=ignore]  pam_unix.so nullok_secure
auth    required      pam_tally2.so deny=4 unlock_time=1200 even_deny_root
auth    requisite     pam_deny.so
auth    required      pam_permit.so

첫 번째 줄은 다음과 같습니다. "UNIX( ) 인증을 사용해 보세요 /etc/passwd. 성공하면 줄을 건너뛰고 계속하세요. 그렇지 않으면 다음 단계를 계속하세요." 이 논리를 사용하면 문제가 분명해집니다.

  1. 성공: 한 줄( success=1)을 건너뛰고 로그인 거부를 pam_tally2클릭합니다.pam_deny
  2. 실패: pam_tally2다음을 클릭했는데 pam_deny로그인이 거부되었습니다.

지금 볼 수 있듯이 모든 로그인이 차단됩니다.

해결책의 일부는 pam_tally2목록을 스택 위에 놓는 것입니다. (변경 사항이 success=2작동할 것이라고 생각할 수도 있지만 이는 pam_tally2성공적인 인증을 건너뛰므로 시간 초과 후 실패 시 재설정만 됩니다.) 다음은 꽤 일반적인 데비안 시스템에서 제가 가지고 있는 것입니다:

auth    required                        pam_tally2.so deny=5 unlock_time=1200 even_deny_root
# here are the per-package modules (the "Primary" block)
auth    [success=1 default=ignore]      pam_unix.so nullok_secure
# here's the fallback if no module succeeds
auth    requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
auth    required                        pam_permit.so
# and here are more per-package modules (the "Additional" block)
auth    optional                        pam_cap.so
# end of pam-auth-update config

이렇게 하면 개수가 늘어나지만 성공적인 로그인 후 명령을 사용하지 않고 이를 재설정할 수 있는 방법이 필요합니다 pam_tally2. 특히 명확하지 않은 점은 첫 번째 항목으로도 섹션 pam_tally2.so에 추가해야 한다는 것입니다.account

account required                        pam_tally2.so onerr=fail

이것을 테스트했지만 시도해 볼 때 sudo -sPAM 구성에 대한 변경 사항을 되돌릴 수 있도록 대상 컴퓨터에서 추가 루트 셸(예: )을 열어야 합니다!

tail -F /var/log/auth.log당신은 무슨 일이 일어나고 있는지 볼 수 있습니다 watch pam_tally2 --user {user}.

인증이 시도되면 횟수가 증가하고 성공 시에만 재설정되므로 횟수 제한은 허용된 시도 횟수보다 1 커야 합니다.

관련 정보