
Linux 서버에서 인증을 강화하는 방법에 대한 Redhat의 지침을 따랐지만 공개 키 인증과 함께 SSH만 사용합니다. 다음 지침에 따르면: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/chap-hardening_your_system_with_tools_and_services
여기 내 /etc/pam.d/system-auth 및 /etc/pam.d/password-auth 파일이 있습니다. 둘 다 실제로 동일합니다.
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth required pam_faildelay.so delay=2000000
auth required pam_faillock.so preauth silent audit deny=3 even_deny_root unlock_time=60
auth sufficient pam_unix.so nullok try_first_pass
auth [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=60
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth required pam_deny.so
account required pam_faillock.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 1000 quiet
account required pam_permit.so
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
-session optional pam_systemd.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
이 구성을 사용하면 예를 들어 사용자가 3번 시도한 후 잘못된 키로 인증을 시도하면 일종의 잠금 메시지가 표시되기를 바랐습니다. 하지만 잠금에 대한 메시지가 나타나지 않으며 잠금 정책이 작동하는지 여부를 알 수 있는 방법이 없습니다. pam_tally2 모듈도 있지만 pam_faillock 모듈과 어떤 차이가 있는지는 알 수 없습니다.
로그에는 루트 권한이 거부되었다는 것 외에는 아무것도 표시되지 않습니다.
[some_user@ip-10-10-2-53 ~]$ cat /var/run/faillock/some_user
[some_user@ip-10-10-2-53 ~]$ cat /var/run/faillock/root
cat: /var/run/faillock/root: Permission denied
그리고 ssh에 잘못된 키를 사용하려고 시도했지만 some_user
장애 잠금 로그나 ssh를 시도하는 곳에서 보낸 ssh 메시지에 아무 것도 표시되지 않기 때문에 나를 잠그지 않는 것 같습니다.
답변1
문제는 인증 스택 내부에서 이러한 정책을 시행하려고 한다는 것입니다.
auth required pam_env.so
auth required pam_faildelay.so delay=2000000
auth required pam_faillock.so preauth silent audit deny=3 even_deny_root unlock_time=60
auth sufficient pam_unix.so nullok try_first_pass
auth [default=die] pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=60
auth requisite pam_succeed_if.so uid >= 1000 quiet_success
auth required pam_deny.so
account required pam_faillock.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 1000 quiet
account required pam_permit.so
SSH 데몬 자체 내에서 구현된 공개 키 인증은 인증 스택을 우회합니다. (제출된 키의 유효성을 검사하기 위해 호출되는 PAM 인증 모듈이 없으므로 그렇게 작동해야 합니다.) 유일한 예외는 키보드 대화형 내부에서도 성공이 필요한 사용자 정의 구성을 실행하는 경우입니다. 이것이 기본값이 아니기 때문에 이러한 인증 중에는 인증 스택이 거의 무시됩니다.
account
스택이 있는 동안대개공개 키 전용 로그인에 제한을 두는 경우 PAM 모듈을 호출하려면 먼저 인증에 성공해야 하기 때문에 여기서는 작동하지 않을 것이라고 생각합니다. PAM 모듈이 호출되지 않으면 로그인이 실패할 때마다 횟수가 증가할 수 없습니다.
이것이 작동하는 것을 볼 수 있는 유일한 방법은 키보드 대화형 인증을 요구하도록 sshd 구성을 조정하는 것입니다.게다가공개키 인증. (당신이 사용할 수있는이 Q&A출발점으로) JohnA가 지적했듯이 이것이 실제로 어떤 가치를 제공할지 여부는 논쟁의 여지가 있습니다.
답변2
나는 당신이 이 용량으로 PAM을 사용할 수 없을 것이라고 확신합니다. 사용자에게 서버의 SSH 공개 키에 해당하는 SSH 개인 키가 없으면 인증할 수 없습니다.
비밀번호 실패 잠금의 목적은 사용자 계정에서 비밀번호를 무차별 대입하는 것을 방지하는 것입니다. SSH 키 인증이 시행되면 고려해야 할 사용자 계정 비밀번호가 없습니다.
SSH 키 인증을 위해 요청하는 비밀번호의 경우 개인 키에 대한 비밀번호입니다. 개인 키에 대한 인증 실패로 인해 서버에 대한 인증 실패가 발생하지 않습니다.