리눅스 비밀번호 정책 강화 방법, /etc/login.defs와 pam_pwquality 설정으로 보안 업그레이드
🔒 비밀번호 최소 길이, 복잡성, 만료 기간 설정으로 서버 보안을 한층 높이는 법
서버를 운영하다 보면 외부 침입 시도나 무차별 대입 공격(Brute Force Attack) 같은 보안 위협이 생각보다 자주 발생합니다.
특히 사용자 계정의 비밀번호가 짧거나 단순하다면 시스템 전체가 위험에 빠질 수 있죠.
이럴 때 가장 기본이면서도 강력한 방어 수단이 바로 비밀번호 정책 강화입니다.
운영체제 수준에서 강제 규칙을 설정하면, 사용자가 비밀번호를 만들 때 최소 길이와 복잡성, 사용 기한 등을 자동으로 적용하게 됩니다.
이 글에서는 리눅스에서 대표적으로 사용하는 /etc/login.defs와 pam_pwquality 모듈을 활용해 안전한 비밀번호 정책을 구축하는 방법을 알려드립니다.
여기서 다루는 내용은 실무 서버 환경에서도 바로 적용할 수 있는 설정 예시와 함께, 각 옵션이 실제로 어떤 의미를 가지는지 이해하기 쉽게 설명합니다.
또한, 잘못된 설정으로 인한 계정 잠금이나 접근 불가 문제를 예방하는 팁도 함께 제공하니, 리눅스 서버 관리자라면 꼭 참고해 보시기 바랍니다.
글의 마지막에는 자주 묻는 질문(FAQ) 코너를 통해 초보자도 헷갈리지 않도록 정리해 드립니다.
📋 목차
📂 /etc/login.defs 주요 설정 항목
리눅스에서 사용자 계정과 관련된 기본 비밀번호 정책은 /etc/login.defs 파일에 정의되어 있습니다.
이 파일은 신규 계정을 생성할 때 기본적으로 적용되는 규칙을 지정하며, 보안 강화를 위해 반드시 검토해야 하는 핵심 설정들이 모여 있습니다.
아래에서는 특히 비밀번호 보안과 직결되는 주요 항목을 설명합니다.
🔑 비밀번호 최소 길이 (PASS_MIN_LEN)
비밀번호 최소 길이를 설정하는 항목입니다.
예를 들어 PASS_MIN_LEN 12로 지정하면, 최소 12자 이상을 입력해야 비밀번호로 인정됩니다.
길이가 길수록 무차별 대입 공격(Brute Force Attack)에 대한 방어력이 높아집니다.
⏳ 비밀번호 최대 사용 기간 (PASS_MAX_DAYS)
비밀번호의 유효기간을 설정합니다.
예를 들어 PASS_MAX_DAYS 90으로 설정하면, 비밀번호를 만든 지 90일이 지나면 반드시 변경해야 합니다.
이렇게 하면 장기간 동일한 비밀번호 사용으로 인한 보안 취약점을 줄일 수 있습니다.
📆 비밀번호 변경 최소 주기 (PASS_MIN_DAYS)
비밀번호를 변경한 뒤 최소 며칠이 지나야 다시 변경할 수 있는지를 지정합니다.
이 값은 사용자가 짧은 기간 동안 여러 번 변경해 이전 비밀번호로 되돌리는 것을 방지합니다.
예를 들어 PASS_MIN_DAYS 7이면, 비밀번호 변경 후 최소 7일은 다시 변경할 수 없습니다.
- 🛠️PASS_MIN_LEN : 비밀번호 최소 길이
- ⚙️PASS_MAX_DAYS : 비밀번호 최대 사용 기간
- 📆PASS_MIN_DAYS : 비밀번호 변경 최소 주기
# /etc/login.defs 예시 설정
PASS_MIN_LEN 12
PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
💡 TIP: 설정 변경 후에는 신규 생성 계정에만 적용됩니다. 기존 계정의 경우 chage 명령어로 직접 변경해야 합니다.
⚙️ pam_pwquality 모듈로 복잡성 강화
리눅스에서 비밀번호의 복잡성을 세밀하게 제어하려면 pam_pwquality 모듈을 활용하는 것이 좋습니다.
이 모듈은 단순히 길이 제한만 두는 것이 아니라, 대문자·소문자·숫자·특수문자의 포함 여부까지 검증해 보안을 한층 강화할 수 있습니다.
설정 파일은 보통 /etc/security/pwquality.conf 또는 /etc/pam.d/system-auth에 적용됩니다.
🔍 주요 옵션 설명
| 옵션 | 설명 |
|---|---|
| minlen | 비밀번호 최소 길이 설정 (예: 12) |
| ucredit | 대문자 최소 개수 지정 (음수 값은 필수 개수 의미) |
| lcredit | 소문자 최소 개수 지정 |
| dcredit | 숫자 최소 개수 지정 |
| ocredit | 특수문자 최소 개수 지정 |
💻 설정 예시
# /etc/security/pwquality.conf 예시
minlen = 12
ucredit = -1
lcredit = -1
dcredit = -1
ocredit = -1
💡 TIP: pam_pwquality 설정은 PAM 인증 흐름에 포함되어야 적용됩니다. /etc/pam.d/system-auth와 /etc/pam.d/password-auth 파일에서 password requisite pam_pwquality.so 라인이 있는지 꼭 확인하세요.
⚠️ 주의: 너무 높은 복잡성을 강제하면 사용자가 비밀번호를 메모에 적어두는 등 오히려 보안에 취약해질 수 있습니다. 보안과 사용성을 적절히 균형 맞추는 것이 중요합니다.
🕒 비밀번호 만료 기간과 변경 주기 설정
비밀번호 만료 정책은 사용자가 동일한 암호를 장기간 사용하지 않도록 강제해 침해 사고의 확률을 낮추는 핵심 요소입니다.
리눅스에서는 신규 계정의 기본 만료 규칙을 /etc/login.defs로 정의하고, 이미 존재하는 계정은 chage 명령으로 개별 관리합니다.
조합해야 할 주요 항목은 최대 사용 기간, 최소 변경 간격, 만료 경고일이며, 환경에 맞는 균형 잡힌 값이 중요합니다.
📐 PASS_MAX_DAYS, PASS_MIN_DAYS, PASS_WARN_AGE 관계
신규 계정 기본값은 /etc/login.defs에서 정의합니다.
PASS_MAX_DAYS는 동일 비밀번호를 사용할 수 있는 최대 일수입니다.
PASS_MIN_DAYS는 변경 후 다시 바꾸기까지 필요한 최소 대기일입니다.
PASS_WARN_AGE는 만료 전 사용자에게 경고를 시작하는 일수입니다.
아래 예시처럼 조합하면 90일 사용, 7일 최소 간격, 만료 14일 전 경고가 적용됩니다.
# /etc/login.defs (신규 계정 기본값)
PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 14
🧰 기존 계정에 적용하기: chage 사용법
이미 생성된 계정은 /etc/login.defs 변경만으로 값이 바뀌지 않습니다.
이때는 chage로 개별 설정을 갱신합니다.
대표 옵션은 최대 사용 기간(-M), 최소 변경 간격(-m), 경고 시작일(-W), 계정 만료일(-E)입니다.
설정 상태 확인은 -l을 사용합니다.
# 현재 사용자 설정 확인
sudo chage -l alice
# 90일 만료, 7일 최소 간격, 만료 14일 전 경고
sudo chage -M 90 -m 7 -W 14 alice
# 특정 날짜(YYYY-MM-DD)로 계정 만료일 지정
sudo chage -E 2025-12-31 alice
🔄 강제 변경과 만료 알림 워크플로
보안 이벤트나 규정 변경 시 즉시 비밀번호 재설정을 강제해야 할 때가 있습니다.
이 경우 마지막 변경일을 초기화하거나 만료일을 과거로 설정해 다음 로그인 시 변경을 요구하도록 할 수 있습니다.
또한 만료 경고일을 충분히 길게 두고 안내 메시지와 함께 사내 공지를 병행하면 사용자 혼란을 줄일 수 있습니다.
# 다음 로그인 때 반드시 변경 요구
sudo chage -d 0 alice
# 오늘 기준으로 만료 처리(사용자가 즉시 변경해야 함)
sudo chage -E 0 alice
- 🛠️신규 계정 기본값은 /etc/login.defs에서 관리하기
- 🔎기존 계정은 chage -l 사용자로 현황 점검하기
- ⚖️업무 특성에 맞춰 MAX·MIN·WARN 값을 균형 있게 조정하기
💡 TIP: 대규모 사용자 환경에서는 스크립트로 chage를 반복 적용하고, 크론과 메일 알림을 연동해 만료 7일·3일·1일 전에 자동 안내를 보내면 운영 편의성이 크게 향상됩니다.
⚠️ 주의: 지나치게 짧은 만료 주기는 사용자 피로와 헷갈림을 유발하고, 비밀번호 재사용 증가나 메모 기록 같은 역효과를 만들 수 있습니다. 조직의 위험도와 규정에 맞는 합리적 주기를 설정하세요.
🔍 설정 적용 여부와 테스트 방법
비밀번호 정책을 수정한 뒤에는 실제로 설정이 정상 반영되었는지 반드시 확인해야 합니다.
설정이 적용되지 않은 상태에서 사용자가 약한 비밀번호를 생성하면, 모든 보안 노력이 무용지물이 될 수 있습니다.
이 과정에서는 새로운 계정 생성 시도, 비밀번호 변경 테스트, 로그 모니터링이 핵심입니다.
🧪 신규 계정 생성 테스트
관리자 계정에서 useradd로 테스트 계정을 만들고 비밀번호를 설정해 봅니다.
설정한 최소 길이나 복잡성 규칙에 맞지 않으면 거부 메시지가 출력되어야 합니다.
이때 passwd 명령어로 직접 입력해 보는 것이 가장 확실한 방법입니다.
# 테스트 계정 생성
sudo useradd testuser
# 비밀번호 설정 (규칙 위반 시 에러 메시지 출력)
sudo passwd testuser
📜 비밀번호 변경 시도
기존 계정에서도 passwd 명령을 사용해 정책 준수 여부를 확인할 수 있습니다.
예를 들어 너무 짧거나 단순한 문자열을 입력하면 BAD PASSWORD 경고와 함께 거부됩니다.
이는 pam_pwquality 모듈이 정상 동작하는 신호입니다.
📂 로그 파일 확인
시스템 로그에는 비밀번호 변경 거부 사유와 관련된 메시지가 기록됩니다.
예를 들어 CentOS/RHEL 계열은 /var/log/secure, Debian/Ubuntu 계열은 /var/log/auth.log에서 확인할 수 있습니다.
정책 위반 시 메시지를 기록하도록 PAM 설정이 구성되어 있다면, 문제 원인 분석이 훨씬 쉬워집니다.
# CentOS/RHEL
sudo tail -f /var/log/secure
# Debian/Ubuntu
sudo tail -f /var/log/auth.log
- 🛠️신규 계정 생성 시 정책 적용 여부 확인
- 🔄기존 계정에서 비밀번호 변경 테스트
- 📑로그 파일에서 위반 메시지와 정책 동작 여부 확인
💡 TIP: 자동화된 보안 점검 스크립트를 만들어 주기적으로 정책 준수 여부를 확인하면, 설정 누락이나 변경을 조기에 발견할 수 있습니다.
⚠️ 주의: 테스트 계정은 반드시 점검 후 삭제해야 합니다. 남겨두면 불필요한 보안 위험 요소가 됩니다.
💡 보안 설정 시 주의할 점과 팁
비밀번호 정책 강화는 보안성을 높이는 강력한 방법이지만, 무작정 강하게만 설정하면 사용자 불편이 커지고 오히려 보안이 약화될 수 있습니다.
실제 운영 환경에서는 보안성과 사용성의 균형을 유지하며, 규정 위반 가능성을 최소화하는 것이 중요합니다.
⚖️ 보안성과 편의성의 균형 맞추기
너무 긴 비밀번호 길이나 과도한 복잡성 요구는 사용자가 비밀번호를 메모하거나 재사용하게 만들 수 있습니다.
반대로 규칙이 너무 약하면 침해 시도의 성공률이 높아집니다.
따라서 정책은 조직의 보안 수준, 사용자 수, 업무 특성 등을 종합해 결정하는 것이 바람직합니다.
📢 사용자 교육과 공지
정책 적용 전에 사전 안내와 교육을 진행하면 혼란을 줄일 수 있습니다.
비밀번호 변경 시기, 규칙 위반 시 메시지, 안전한 비밀번호 작성법 등을 안내문과 내부 포털에 게시하세요.
필요하다면 정책 적용 직후 초기 지원 창구를 운영해 사용자 불만과 문제를 신속히 해결할 수 있도록 합니다.
🔄 주기적 검토와 개선
비밀번호 정책은 한 번 설정하고 끝나는 것이 아니라, 새로운 보안 위협과 기술 변화에 맞춰 주기적으로 검토해야 합니다.
예를 들어, 최근에는 복잡성보다는 길이에 중점을 둔 패스프레이즈(passphrase) 사용이 권장되는 추세입니다.
또한 MFA(다중 인증)와 함께 사용하면 보안성이 크게 향상됩니다.
- 🛠️보안 규칙은 조직 환경에 맞춰 최적화
- 📢정책 적용 전 충분한 사용자 안내
- 🔄정기적인 정책 점검 및 최신화
- 🛡️MFA와 병행해 보안성 극대화
💡 TIP: 정책 문서와 함께 구체적인 비밀번호 생성 가이드(예시 포함)를 제공하면, 사용자가 규칙을 더 쉽게 이해하고 따를 수 있습니다.
⚠️ 주의: MFA 도입 없이 비밀번호 정책만 강화하는 것은 한계가 있습니다. 특히 피싱, 키로깅 등 비밀번호 유출에 취약한 공격은 복잡성 강화만으로는 막을 수 없습니다.
❓ 자주 묻는 질문 (FAQ)
/etc/login.defs 수정 후 바로 적용되나요?
pam_pwquality 설정은 어디서 변경하나요?
비밀번호 최소 길이는 몇 자로 설정하는 게 좋을까요?
비밀번호 만료일을 강제로 설정할 수 있나요?
비밀번호 정책이 너무 강하면 어떤 문제가 있나요?
pam_pwquality가 동작하는지 어떻게 확인하나요?
로그 파일에서 정책 위반 기록은 어디서 확인하나요?
MFA 없이 비밀번호 정책만 강화해도 안전한가요?
🔐 리눅스 비밀번호 정책 강화로 서버 보안 지키기
리눅스 환경에서 /etc/login.defs와 pam_pwquality 모듈을 활용한 비밀번호 정책 강화는 서버 보안을 향상시키는 핵심 방법입니다.
최소 길이, 복잡성, 만료 기간을 적절히 설정하면 무차별 대입 공격에 대한 방어력이 높아지고, 사용자 계정 탈취 가능성을 크게 줄일 수 있습니다.
또한 정책 적용 여부를 테스트하고 주기적으로 검토·개선하는 습관은 장기적인 보안 안정성 확보에 매우 중요합니다.
여기에 MFA를 병행하면 비밀번호 유출로 인한 피해를 최소화할 수 있습니다.
안전한 서버 운영은 단순한 규칙 설정이 아니라, 지속적인 관리와 사용자 교육이 함께 이루어질 때 완성됩니다.
🏷️ 관련 태그 : 리눅스보안, 비밀번호정책, 서버관리, pam_pwquality, login.defs, 계정보안, 시스템관리, MFA, 패스워드관리, 보안설정