Linux 시스템 보안 기초 · 08/50편

이 글은 리눅스 시스템 기초 · 파일 · 권한 · 사용자 관리 · 서비스 · 프로세스 관리 시리즈를 선행 학습으로 두고, 동일한 개념을 보안관제(SOC) 관점에서 한 단계 확장합니다.

선행 학습

1. 들어가며

강한 해시도 약한 비밀번호 앞에서는 무력합니다. password나 1234는 아무리 SHA-512로 해시해도 사전 공격에 즉시 뚫립니다. 비밀번호 정책은 '해시 이전 단계'의 방어선입니다.

2. 핵심 개념

정책은 크게 두 축입니다.

  • 만료(aging): /etc/login.defs와 shadow 필드로 관리. min/max/warn 일수.
  • 복잡도(complexity): pam_pwquality(Ubuntu는 libpam-pwquality, RHEL은 libpwquality)로 최소 길이·문자 종류·재사용 금지 등을 강제.

여기에 잠금(lockout) 정책(pam_faillock, 09편)이 더해져 무차별 대입을 막습니다.

비밀번호 설정 시도
     │
     ▼
[ pam_pwquality ] ── 길이/복잡도/사전단어 검사 → 실패 시 거부
     │ 통과
     ▼
shadow 저장 (+ aging: min/max/warn)
     │
     ▼
로그인 반복 실패 → [ pam_faillock ] → 계정 잠금

3. 동작 원리

복잡도 검사는 PAM 스택의 password 유형에서 pam_pwquality가 담당합니다. /etc/security/pwquality.conf의 minlen, minclass, dcredit 등이 규칙입니다. 만료 정책은 로그인 시 shadow의 lastchg와 max를 비교해 만료 여부를 판단합니다. 즉 복잡도는 '설정 시점', 만료는 '로그인 시점'에 작동합니다.

4. 명령어 실습

# 전역 aging 기본값
grep -E '^PASS_(MAX|MIN|WARN)' /etc/login.defs

# 특정 계정의 만료 정책
sudo chage -l alice

# 복잡도 정책 확인
grep -Ev '^#|^$' /etc/security/pwquality.conf 2>/dev/null

5. 실행 결과

실습 환경에서 chage -l 실제 실행 결과입니다. (실제 캡처)

$ sudo chage -l alice
Last password change                    : Sep 25, 2026
Password expires                        : never
Password inactive                       : never
Account expires                         : never
Minimum number of days between password change  : 0
Maximum number of days between password change  : 99999
Number of days of warning before password expires : 7

Maximum: 99999, expires: never는 사실상 만료 없음을 의미합니다. 운영 정책상 90일 등으로 조정하려면 sudo chage -M 90 alice.

6. 보안 관점 — 정상 사용 vs 악용

  • 정상: 최소 12자 이상 복잡도, 합리적 만료(예: 90일), 잠금 정책 활성.
  • 위험 징후:
    • minlen이 낮거나 pwquality 미설정
    • 관리자 계정이 expires: never + 약한 비밀번호
    • 정책을 우회해 만든 계정(공격자 생성)

주의: 과도하게 잦은 만료는 오히려 사용자가 규칙적으로 약한 변형(Passw0rd1→2)을 쓰게 만들 수 있어, 복잡도·잠금과 균형이 중요합니다.

7. 탐지 방법

  • 정책 미준수 계정 스캔: chage -l을 계정별 순회하는 스크립트
  • 정책 파일 변경 감사: auditd -w /etc/login.defs -w /etc/security/pwquality.conf
  • 만료 임박/만료 계정 리포트(주기 크론)

8. SOC 관점 — SIEM · Wazuh · IOC

비밀번호 정책 자체는 예방 통제라 실시간 알람 대상은 아니지만, 정책 파일 변경은 탐지 대상입니다. 공격자가 잠금·복잡도 정책을 약화시키는 것은 지속성 확보의 일환이기 때문입니다. Wazuh SCA(Security Configuration Assessment)는 CIS 벤치마크 기준으로 정책 준수를 정기 점검하고 점수화합니다.

9. 실습 체크리스트

[ ] login.defs의 PASS_MAX/MIN/WARN 확인
[ ] chage -l로 계정 만료 정책 점검
[ ] pwquality 복잡도 설정 확인
[ ] 정책 파일 변경 감사 설정

10. 핵심 정리

  • 정책은 복잡도(설정 시점)·만료(로그인 시점)·잠금의 세 축이다.
  • 복잡도는 pam_pwquality, 만료는 shadow/login.defs가 담당한다.
  • expires:never + 약한 비밀번호 조합은 고위험이다.
  • 정책 파일 변경은 지속성 지표로 감사 대상이다.
  • SCA로 CIS 기준 준수를 정기 점검한다.

11. 다음 편

다음 편에서는 09. 계정 잠금과 해제 를 다룹니다. 무차별 대입을 실제로 막는 계정 잠금(faillock)의 동작과 해제 절차를 봅니다.


본 실습은 격리된 테스트 VM(Rocky Linux / Ubuntu, VMware) 및 테스트 계정 환경을 기준으로 하며, 운영 서버를 대상으로 하지 않습니다. 실행 결과는 실제 캡처와 예시 출력을 명확히 구분해 표기합니다.

profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글