Ubuntu 로그인 시도 관리(pam_tally2, pam_faillock)

❏ 개요

Ubuntu 24.04 LTS에서는 로그인 실패 시 계정 잠금을 설정할 수 있는 PAM(PAM Authentication Modules) 기능으로 pam_faillock을 공식 지원하며, 기존의 pam_tally2는 더 이상 지원되지 않습니다. 이 문서는 pam_faillock.so 모듈을 사용하여 로그인 실패 시도 횟수에 따라 계정을 잠그고 일정 시간 후 자동 해제도도록 설정하는 방법을 설명합니다.

❏ PAM 모듈 비교
항목pam_tally2pam_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 –resetfaillock –user [USER] –reset
구성 유연성낮음높음(/etc/security/faillock.conf로도 가능)
❏ pam_faillock 설정 방법
  1. 모듈 설치 여부 확인
    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
  1. /etc/security/faillock.conf 설정(선택)
    사용 안 해도 됨. 모든 설정은 common-auth / common-account에서 직접 인자 입력으로 처리함.
  1. /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 설정 등에서 활용)
      1. /etc/pam.d/common-account 설정
      sudo nano /etc/pam.d/common-account
      pam
      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 사용자에 대한 계정 상태 확인
      # 로컬에 없는 사용자일 경우 무시
      # 성공 시 인증 계속 진행
      1. 잠금 상태 확인 및 초기화
        • 실패 기록 보기 & 실패 기록 초기화
      faillock --user [USER]
      faillock --user [USER] --reset
      1. 동작 예시
        • 잘못된 비밀번호 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 설정 누락 시, 성공해도 실패 카운터가 초기화되지 않아 계정이 계속 잠긴 상태로 유지됩니다.