[Linux] 리눅스에서 비밀번호 정책 설정하기

리눅스 서버를 운영할 때, 비밀번호 보안 정책을 설정하는 것은 매우 중요합니다.
사용자가 너무 짧거나 단순한 비밀번호를 설정하면, 계정이 쉽게 공격당할 수 있습니다.

 

  • 비밀번호 복잡도와 길이 제한
  • 최소/최대 사용 기간 설정
  • 비밀번호 재사용 방지
  • 관련 설정 파일 및 명령어

1. 비밀번호 복잡도 설정 – pam_pwquality

PAM(Pliable Authentication Modules)은 리눅스에서 인증을 제어하는 시스템입니다.
복잡도 정책은 /etc/security/pwquality.conf 또는 PAM 설정 파일을 통해 관리합니다.

- 설정 예시

# /etc/security/pwquality.conf
minlen = 12
dcredit = -1   # 최소 1개 이상의 숫자
ucredit = -1   # 최소 1개 이상의 대문자
lcredit = -1   # 최소 1개 이상의 소문자
ocredit = -1   # 최소 1개 이상의 특수문자

- PAM 적용 확인

# /etc/pam.d/common-password (Debian/Ubuntu)
/etc/pam.d/system-auth (RHEL/CentOS)
password requisite pam_pwquality.so retry=3

 

2. 비밀번호 사용 기간 제한 – chage 명령어

chage 명령을 사용하면 사용자의 비밀번호 만료 정책을 쉽게 설정할 수 있습니다.

- 사용자 정책 확인

chage -l 사용자이름

- 예시: john 계정에 만료일 설정

sudo chage -M 90 -m 7 -W 7 john
  • -M 90 : 비밀번호 최대 사용일 90일
  • -m 7 : 최소 7일 지나야 변경 가능
  • -W 7 : 만료 7일 전부터 경고

 

3. 비밀번호 재사용 방지 – pam_pwhistory

이 모듈을 사용하면 과거에 사용한 비밀번호를 다시 사용할 수 없도록 설정할 수 있습니다.

- 예시 (Ubuntu/Debian)

# /etc/pam.d/common-password
password required pam_pwhistory.so remember=5 use_authtok

위 설정은 최근 5번 사용한 비밀번호는 다시 사용할 수 없도록 합니다.

 

4. 로그인 실패 잠금 – 선택적으로 고려

비밀번호 정책과 함께, pam_tally2pam_faillock 모듈로 로그인 실패 횟수 제한도 함께 적용하는 것이 좋습니다.

# 예시: 5회 실패 시 10분 잠금
auth required pam_faillock.so deny=5 unlock_time=600

 

5. 정책 적용 후 테스트

설정이 완료되면 새로운 사용자 생성 또는 기존 사용자 비밀번호 변경을 시도해 보세요:

passwd 사용자이름

정책에 어긋나는 비밀번호는 거부되고, 정책을 만족하는 경우에만 변경이 완료됩니다.

 

 

비밀번호도 시스템 자산입니다

강력한 비밀번호 정책은 서버의 첫 번째 방어선입니다.
pwquality, chage, pam_pwhistory 같은 도구들을 통해
단순한 공격 시도를 효과적으로 막을 수 있습니다.

정책은 보안을 강화하되, 사용자에게 지나치게 불편하지 않도록 균형 있게 설정하는 것이 좋습니다.