Skip to main content

Ubuntu에서 콘솔, ssh등 계정 로그인 시도 임계값 초과 시 차단 설정방법

환경

OS : Ubuntu 22.04 LTS

사용 모듈 : faillock, pam.d

유의사항 : faillock은 24.04부터 공식 인정받아 24.04이전 버전은 패키지 설치부터 진행해야함

 

설정방법

1. 패키지 설치

apt update && apt install libpam-modules libpam-modules-bin

2. /etc/security/faillock.conf 설정

vim /etc/security/faillock.conf

# 로그인 시도 임계치
deny = 3

# 잠금 설정된 계정이 풀리는 시간
unlock_time = 900

3. /etc/pam.d/common-auth 설정

테스트 환경에선 편의를 위해 기존 common-auth파일 백업 및 삭제 후 진행

순서 매우 중요!

파일 내용 백업 후 삭제

# 1. (preauth) 비밀번호 입력 전에 계정이 잠겼는지 먼저 확인
auth    required        pam_faillock.so preauth audit silent

# 2. (pam_unix) 사용자에게 비밀번호를 물어봄
#    (success=1 이면 3번 authfail을 건너뛰고 4번 permit으로 감)
auth    [success=1 default=ignore] pam_unix.so nullok

# 3. (authfail) pam_unix 인증이 실패하면(비밀번호 틀리면) 실패 기록
auth    [default=die]   pam_faillock.so authfail audit

# 4. (permit) 1, 2, 3번을 통과하면 최종 인증 허용
auth    required        pam_permit.so

# (optional)
auth    optional        pam_cap.so

4. /etc/pam.d/common-account 설정

테스트 환경에선 편의를 위해 기존 common-auth파일 백업 및 삭제 후 진행

순서 매우 중요!

common-account에서는 옵션 값 따로 들어가지 않음

# 1. (pam_faillock) 계정이 잠겼는지 확인하고, 잠겼으면 접근을 거부
account required        pam_faillock.so

# 2. (pam_unix) 계정이 유효한지(만료 등) 확인
account [success=1 new_authtok_reqd=done default=ignore] pam_unix.so

# 3. (permit) 1, 2번을 통과하면 최종 계정 승인
account required        pam_permit.so

# (optional)
account optional        pam_time.so

참고) 계정 정보 확인방법(잠겼는지, 접속시도, 잠김계정 풀기 등)

# 전체 계정 정보 확인
faillock

# 특정 계정 정보 확인
faillock --user [user명]

# 전체 계정 잠금 초기화
faillock --reset

# 특정 계정 잠금 초기화
faillock --user [user명] --reset