pam_tally2는 실패한 로그인을 추가합니다.

pam_tally2는 실패한 로그인을 추가합니다.

갤럭시 pam_tally2에서 사용 하려고 하는데/etc/pam.d

sshd를 다음으로 변경했습니다

#%PAM-1.0
auth     required       pam_securetty.so
auth     required       pam_tally2.so deny=3 unlock_time=600
auth     required       pam_env.so
auth     required       pam_unix.so
auth     required       pam_nologin.so
account  required       pam_unix.so
password required       pam_unix.so
session  required       pam_limits.so
session  required       pam_unix.so
session  required       pam_lastlog.so nowtmp
session  optional       pam_mail.so standard

로그인하기 전에 테스트 계정을 만들었고 로그인 실패 횟수를 테스트했습니다.

pam_tally2 -u tst3402
(empty)

이제 올바른 비밀번호로 로그인합니다(이것은 expect스크립트에 의해 수행되며 비밀번호는 다음과 같습니다 aaa12BBB,).

spawn ssh -l tst3402 172.9.2.1
Password:
No mail.
Last login: Tue Mar 20 14:25:17 2018 from 172.2.2.2
tst3402@hostname:~>

status OK

어디

  • 정상상태보내는 사람:expect

실패 횟수를 다시 확인합니다

pam_tally2 -u tst3402
Login           Failures Latest failure     From
tst3402             1    03/20/18 14:25:17  172.2.2.2

즉, 3번의 로그인 성공 후에는 계정이 잠깁니다.

질문

성공적으로 로그인한 후 pam_tally21개의 실패가 표시되는 이유는 무엇입니까 ?

일반적인 용의자:

  • SSH 키를 사용할 수 있다는 것을 알고 있지만 ISAE3420의 저주를 받았습니다.

  • ssh -vvv -l을 사용하면...두 개의 교환이 표시됩니다..두 개의 실패가 표시되어야 합니까?

    debug3: send packet: type 50
    debug3: receive packet: type 51
    
  • SELinux 없음

  • security.SE에서 pam_tally2 문제를 찾지 못했습니다.

답변1

질문

내 컴퓨터 중 하나에서 비슷한 동작이 나타납니다. sudo올바른 비밀번호를 사용하면 pam_tally2카운터에 항목이 생성됩니다.

문맥

pam.d/sudo항목은 기본값이며 매우 간단합니다.

session    required   pam_env.so readenv=1 user_readenv=0
session    required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0
@include common-auth
@include common-account
@include common-session-noninteractive

common-auth맨 위 줄 앞에 다음 줄을 추가했습니다 .pam_tally2.sopam_unix.so

auth    required                    pam_tally2.so onerr=fail audit deny=5 unlock_time=900

# 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

설명하다

매뉴얼 pam_tally2페이지에는 다음과 같이 명시되어 있습니다(강조).

인증 단계는 시도된 로그인 카운터를 증가시키고 사용자의 액세스를 거부해야 하는지 여부를 확인하는 것으로 시작됩니다. 사용자가 인증된 경우pam_setcred(3)가 호출되면 로그인 프로세스가 계속됩니다.시도 카운터를 재설정합니다.

따라서 지금까지는 스택이 올바르게 호출되지 않은 것으로 보입니다 pam_setcred. 파일이 pam.d호출되지 않습니다 pam_setcred(시스템에 설치되지도 않았습니다).

해결책

예제에서 매뉴얼 페이지에는 다음과 같이 명시되어 있습니다(강조).

모듈을 호출할 필요는 없습니다.계정 단계에서로그인이 올바르게 pam_setcred(3)를 호출하기 때문입니다.

pam_setcred따라서 호출 이 없으면 account이 단계에서 모듈을 호출해야 합니다.

파일을 편집 pam.d/common-account하고 맨 위에 추가했습니다.

account required                        pam_tally2.so

사용자가 인증을 완료하면 카운터가 재설정됩니다.

사용자가 인증을 취소하면(예: 비밀번호를 입력하라는 메시지가 표시될 때 Ctrl+C를 누름) 카운터가 감소하지 않고 증가하므로 실패한 시도와 구별할 수 없습니다.

관련 정보