❏ 개요
Ubuntu 24.04 LTS에서는 로그인 실패 시 계정 잠금을 설정할 수 있는 PAM(PAM Authentication Modules) 기능으로 pam_faillock을 공식 지원하며, 기존의 pam_tally2는 더 이상 지원되지 않습니다. 이 문서는 pam_faillock.so 모듈을 사용하여 로그인 실패 시도 횟수에 따라 계정을 잠그고 일정 시간 후 자동 해제도도록 설정하는 방법을 설명합니다.
❏ PAM 모듈 비교
항목 | pam_tally2 | pam_faillock |
지원 여부 | Ubuntu 24.04에서 제거됨 | Ubuntu 24.04에서 기본 지원 |
설정 파일 | /etc/pam.d/common-auth 등 | /etc/pam.d/common-auth, common-account |
로그 확인 방법 | pam_tally2 –user [USER] | faillock –user [USER] |
계정 해제 방법 | pam_tally2 –reset | faillock –user [USER] –reset |
구성 유연성 | 낮음 | 높음(/etc/security/faillock.conf로도 가능) |
❏ pam_faillock 설정 방법
- 모듈 설치 여부 확인
Ubuntu 24.04에서는 기본 설치되어 있으므로 따로 설치할 필요는 없습니다. 그래도 확인하려면:
ls /lib/x86_64-linux-gnu/security/pam_faillock.so
정상적으로 설치되어 있다면 결과는 다음처럼 나옵니다.
/lib/x86_64-linux-gnu/security/pam_faillock.so
만약 위 경로에 없다면, 패키지가 누락되었을 수 있습니다.
sudo apt update
sudo apt install libpam-modules libpam-modules-bin
- /etc/security/faillock.conf 설정(선택)
사용 안 해도 됨. 모든 설정은 common-auth / common-account에서 직접 인자 입력으로 처리함.
- /etc/pam.d/common-auth 설정
sudo nano /etc/pam.d/common-auth

auth required pam_env.so
# 로그인 시 환경 변수 설정(예: LANG, PATH 등)
# /etc/environment, /etc/security/pam_env.conf 등에서 값을 불러와 사용자 환경 구성
auth required pam_faillock.so preauth silent audit deny=3 unlock_time=600
# 로그인 전에 실패 이력 확인(잠긴 계정 여부 확인)
# 3회 실패 시 계정 잠금, 10분 후 해제
# audit: journalctl 로그 남김 / silent: 실패 횟수 출력 생략
auth [success=1 default=bad] pam_unix.so nullok try_first_pass
# 로컬 계정의 비밀번호 인증 수행
# 성공하면 다음 1줄 건너뜀 / 실패하면 전체 인증 실패
# nullok: 비밀번호 없는 사용자 허용 / try_first_pass: 앞선 모듈의 입력 사용
auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=600
# pam_unix 실패 시 실패 횟수 누적
# 실패한 경우에는 인증 즉시 중단(die) / audit: 로그 기록
auth sufficient pam_faillock.so authsucc audit deny=3 unlock_time=600
# 인증 성공 시 실패 횟수 초기화
# sufficient: 성공 시 전체 인증 성공 처리, 이후 모듈 무시 가능
auth [success=1 default=ignore] pam_sss.so use_first_pass
# SSSD(AD/LDAP) 사용자 인증 처리
# 성공하면 다음 1줄 건너뜀 / 실패하더라도 무시
# use_first_pass: 기존 입력 비밀번호 재사용
auth requisite pam_deny.so
# 이 위치까지 성공한 모듈이 없다면 인증 실패로 처리
auth required pam_permit.so
# 앞선 인증이 모두 통과됐을 경우 인증 성공 처리
auth optional pam_cap.so
# Linux capabilities 관련 설정(보통 영향 없음, 일부 rootless 설정 등에서 활용)
- /etc/pam.d/common-account 설정
sudo nano /etc/pam.d/common-account

account required pam_faillock.so
# 계정 관리 단계에서 로그인 실패 횟수를 확인하여 계정이 잠겼는지 판단
# 실패 횟수가 초과된 경우, 계정 인증을 거부함
# 반드시 가장 위에 있어야 함(순서 매우 중요)
account [success=1 new_authtok_reqd=done default=ignore] pam_unix.so
# 로컬 계정 상태 확인(예: 계정 만료, 만료된 패스워드 등)
# 성공하면 다음 1줄 건너뛰고 진행
# 비밀번호 변경 필요 시 'done' 상태 반환
account requisite pam_deny.so
# 이 줄까지 성공한 모듈이 없다면 인증 실패 처리
# 실패 시 바로 인증 중단
account required pam_permit.so
# 앞선 모든 모듈을 통과했다면 인증 성공을 허용
account sufficient pam_localuser.so
# 로컬 시스템에 존재하는 사용자라면 추가 조건 없이 인증 성공 처리
# sufficient이므로 성공 시 이후 줄을 무시할 수 있음
account [default=bad success=ok user_unknown=ignore] pam_sss.so
# LDAP/SSSD 사용자에 대한 계정 상태 확인
# 로컬에 없는 사용자일 경우 무시
# 성공 시 인증 계속 진행
- 잠금 상태 확인 및 초기화
- 실패 기록 보기 & 실패 기록 초기화
faillock --user [USER]
faillock --user [USER] --reset
- 동작 예시
- 잘못된 비밀번호 3회 입력 ➠ GUI: “암호 인증이 작동하지 않았습니다” / CLI: “sudo: 잘못된 암호 입력 시도 3번”
- 이후 로그인 차단
- 10분(600초) 경과 후 ➠ 정상적인 비밀번호로 로그인 가능
❏ 백업 권장
수정 전 반드시 백업:
sudo cp /etc/pam.d/common-auth /etc/pam.d/common-auth.bak
sudo cp /etc/pam.d/common-account /etc/pam.d/common-account.bak
테스트 시 SSH 접속 외에 콘솔 또는 다른 관리자 계정을 준비해두는 것이 좋습니다.
❏ PAM 설정 파일 수정 시 주의사항
다음 사항들은 common-auth, common-account 파일을 잘못 수정할 경우 발생할 수 있는 시스템 장애입니다.
- 시스템 로그인 불가
- PAM 설정 오류는 GDM, TTY, SSH, sudo, su 등 모든 인증 수단이 차단됩니다.
- 루트 계정 또는 사용자 계정으로 로그인 자체가 불가능해질 수 있습니다.
- sudo 사용 불가
- sudo 실행 시 정상적인 비밀번호를 입력해도 “계정 검증 실패” 또는 “암호 인증이 작동하지 않았습니다” 메시지가 출력되며, 시스템 관리 명령어를 전혀 사용할 수 없게 됩니다.
- 실패 횟수 초기화 안됨(영구 잠금)
- pam_faillock.so authsucc 또는 pam_faillock.so authfail 설정 누락 시, 성공해도 실패 카운터가 초기화되지 않아 계정이 계속 잠긴 상태로 유지됩니다.