PAM에서 로그인 실패 횟수를 제한하는 기능은 보안 강화에 필수적입니다. PAM에서는 pam_faillock.so
, pam_tally2.so
와 같은 모듈을 조합하여 계정 잠금과 잠금 해제 기능을 구현할 수 있습니다. 특히 pam_faillock.so
는 계정 잠금과 실패 제한을 위한 기능을 제공하여, 특정 횟수 이상 실패 시 계정을 잠그고 일정 시간이 지나면 자동으로 해제할 수 있습니다. 예제와 함께 설정 방법을 설명하겠습니다.
1. pam_faillock.so
를 사용한 계정 잠금 설정
pam_faillock.so
모듈은 최근 PAM의 실패 제한과 계정 잠금 설정에 널리 사용됩니다. 보통 pam_unix.so
와 함께 조합하여 사용하며, 특정 횟수 이상 로그인 시도가 실패하면 계정을 잠그고, 일정 시간이 지나면 자동으로 잠금 해제하는 방식입니다.
1. 예제 설정
다음은 /etc/pam.d/sshd
와 같은 SSH 로그인 관련 PAM 설정 파일에서 pam_faillock.so
와 pam_unix.so
를 조합하여 계정 잠금을 구현하는 예제입니다.
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=600
auth [success=1 default=bad] pam_unix.so
auth [default=die] pam_faillock.so authfail deny=5 unlock_time=600
account required pam_faillock.so
설명
auth required pam_faillock.so preauth silent audit deny=3 unlock_time=600 fail_interval=900
- preauth: 이 모듈이 사전 인증 단계에서 실행되도록 설정합니다.
- silent: 오류 메시지를 출력하지 않고 조용히 작동합니다.
- audit: 실패한 시도를 로그에 기록합니다.
- deny=3: 로그인 실패가 3회 이상 발생하면 계정을 잠급니다.
- unlock_time=600: 계정이 잠긴 후 10분(600초) 후에 자동으로 잠금을 해제합니다.
- fail_interval=900: 실패 횟수를 계산할 때 15분(900초) 동안의 시도만 감시합니다.
auth [success=1 default=bad] pam_unix.so
- pam_unix.so: 로컬 계정 인증을 담당합니다.
- [success=1 default=bad]: 인증이 성공하면 다음 모듈(
pam_faillock.so authfail
)을 건너뛰고, 실패하면bad
로 간주하여 실패 처리를 진행합니다.
auth [default=die] pam_faillock.so authfail deny=5 unlock_time=600
- authfail: 이전 인증이 실패했을 때 실행됩니다.
- deny=5, unlock_time=600: 앞서 설정한 것과 동일하게 작동합니다.
- default=die: 인증 실패 시 전체 인증을 종료합니다.
account required pam_faillock.so
- pam_faillock.so를
account
단계에 추가하여, 계정 잠금 상태를 확인하고 해제 여부를 결정합니다.
- pam_faillock.so를
2. 예제 설정
다음은 /etc/pam.d/sshd
와 같은 SSH 로그인 관련 PAM 설정 파일에서 pam_faillock.so
와 pam_unix.so
를 조합하여 계정 잠금을 구현하는 예제입니다.
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=600
auth [success=1 default=bad] pam_unix.so nullok
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=600
auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=600
account required pam_faillock.so
설명
- 'auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=600'
- authsucc: 인증 성공할 경우 이전 실패 기록을 모두 지웁니다.
동작 방식
- 사용자가 로그인 시도를 할 때
pam_faillock.so
모듈이 사전 인증을 수행합니다. pam_unix.so
모듈에서 로컬 계정 인증이 수행됩니다.- 인증이 실패하면
pam_faillock.so
모듈의authfail
설정이 작동하여 실패 횟수를 기록하고, 설정된 실패 횟수를 초과하면 계정을 잠급니다. - 잠긴 계정은 설정된
unlock_time
이 지난 후 자동으로 잠금 해제됩니다.
# Generated by authselect on Mon Nov 4 18:43:05 2024
# Do not modify this file manually.
auth required pam_env.so
auth required pam_faildelay.so delay=2000000
auth [default=1 ignore=ignore success=ok] pam_usertype.so isregular
auth [default=1 ignore=ignore success=ok] pam_localuser.so
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=600
auth [success=1 default=bad] pam_unix.so nullok
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=600
auth sufficient pam_faillock.so authsucc audit deny=5 unlock_time=600
auth [default=1 ignore=ignore success=ok] pam_usertype.so isregular
auth sufficient pam_sss.so forward_pass
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_usertype.so issystem
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account required pam_permit.so
account required pam_faillock.so
password requisite pam_pwquality.so local_users_only
password sufficient pam_unix.so sha512 shadow nullok use_authtok
password [success=1 default=ignore] pam_localuser.so
password sufficient pam_sss.so 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
session optional pam_sss.so
2. pam_tally2.so
를 사용한 계정 잠금 설정 (구버전)
pam_tally2.so
는 PAM에서 오래전부터 제공되던 실패 횟수 제한 모듈로, 최근에는 pam_faillock.so
로 대체되는 추세입니다. 하지만 여전히 일부 시스템에서는 pam_tally2.so
가 사용될 수 있습니다.
예제 설정
auth required pam_tally2.so deny=3 unlock_time=600 onerr=fail
auth required pam_unix.so
account required pam_tally2.so
설명
auth required pam_tally2.so deny=3 unlock_time=600 onerr=fail
- deny=3: 로그인 실패가 3회 이상 발생하면 계정을 잠급니다.
- unlock_time=600: 계정이 잠긴 후 10분 후에 자동으로 잠금을 해제합니다.
- onerr=fail: 오류가 발생할 경우 실패로 처리합니다.
auth required pam_unix.so
- 로컬 계정 인증을 수행하는
pam_unix.so
모듈을 사용하여 기본 인증을 진행합니다.
- 로컬 계정 인증을 수행하는
account required pam_tally2.so
- 계정 잠금 상태를 확인하고 해제 여부를 결정합니다.
동작 방식
- 로그인 시도가 발생하면
pam_tally2.so
모듈이 로그인 실패 횟수를 기록하고, 지정된 횟수를 초과하면 계정을 잠급니다. - 계정이 잠기면
unlock_time
옵션에 따라 일정 시간이 지난 후 자동으로 잠금이 해제됩니다.
요약
pam_faillock.so
와pam_unix.so
를 조합하면, 사용자가 일정 횟수 이상 인증에 실패할 경우 계정이 잠기고 일정 시간이 지나면 잠금이 자동으로 해제됩니다.pam_tally2.so
는 오래된 모듈로, 최신 시스템에서는 주로pam_faillock.so
를 사용하는 것이 권장됩니다.
이 설정을 통해 무차별 대입 공격을 방어하고, 일정 횟수 이상 실패한 계정의 로그인을 잠금 처리하여 보안을 강화할 수 있습니다.
'Linux Unix > Command' 카테고리의 다른 글
[ Linux ] PAM - 모듈 실행 순서 살펴보기 (1) | 2024.11.05 |
---|---|
[ Linux ] PAM - 사용되는 모듈 용도 살펴보기 (0) | 2024.11.05 |
[ Linux ] PAM - 사용자 인증 프로세스를 관리하기 (1) | 2024.11.05 |
[ Linux ] nmap - 호스트 및 서비스 탐지하기, 포트 확인하기 (0) | 2024.11.01 |
[ Linux ] systemctl - service 목록 보기 (0) | 2024.10.31 |