Linux 시스템 보안 기초 · 09/50편
이 글은
리눅스 시스템 기초·파일 · 권한 · 사용자 관리·서비스 · 프로세스 관리시리즈를 선행 학습으로 두고, 동일한 개념을 보안관제(SOC) 관점에서 한 단계 확장합니다.
비밀번호가 아무리 복잡해도 시도 횟수에 제한이 없으면 언젠가는 뚫립니다. 계정 잠금(lockout)은 '무한 시도'를 막아 무차별 대입 공격을 실질적으로 무력화하는 장치입니다.
현대 배포판은 pam_faillock으로 잠금을 구현합니다(과거 pam_tally2 대체). 핵심 파라미터:
deny: 몇 회 실패 시 잠글지 (예: 5)unlock_time: 자동 해제까지 시간(초)fail_interval: 실패 카운트 유지 기간잠금은 /etc/security/faillock.conf 또는 PAM 설정으로 관리하며, 관리자는 faillock 명령으로 상태 조회·초기화를 합니다.
로그인 실패 1..4 로그인 실패 5회째
│ │
▼ ▼
카운트 증가 [ 계정 잠금 ] ──unlock_time 경과──> 자동 해제
│
└ 관리자: faillock --user alice --reset (수동 해제)
인증 실패가 발생하면 PAM의 auth 단계에서 pam_faillock이 실패 카운터를 증가시킵니다. deny 한계에 도달하면 이후 인증은 비밀번호가 맞아도 거부됩니다. unlock_time이 지나거나 관리자가 --reset 하면 카운터가 초기화됩니다. 이 카운터는 사용자별로 /var/run/faillock/에 기록됩니다.
# 계정별 실패 기록 조회
sudo faillock --user alice
# 특정 계정 잠금 카운터 초기화(해제)
sudo faillock --user alice --reset
# usermod로 계정 자체를 잠그기/풀기 (별개 개념)
sudo usermod -L bob # 잠금(shadow에 ! 부가)
sudo usermod -U bob # 해제
실습 환경에서 faillock 조회 결과입니다. (실제 캡처 — 실패 기록 없는 상태)
$ sudo faillock --user alice
alice:
When Type Source Valid
실패가 쌓이면 아래처럼 시각·소스가 기록됩니다. (예시 출력 — 다수 실패 발생 시)
alice:
When Type Source Valid
2026-09-25 14:20:01 RHOST 203.0.113.10 V
2026-09-25 14:20:03 RHOST 203.0.113.10 V
Source에 반복되는 원격 IP가 있으면 그것이 공격 출발지이자 IOC입니다.
주의: 잠금 정책은 DoS로 악용될 수 있습니다(일부러 남의 계정을 잠금). 그래서 SSH는 키 인증을 기본으로 하고(12·15편), 잠금은 보조 방어로 두는 것이 좋습니다.
faillock 기록의 반복 Source IPFailed password 급증(14편에서 상세)SIEM에서 '단위 시간당 실패 임계 초과'는 대표적 상관분석 룰입니다(예: 1분 내 동일 IP 10회 실패 → 알람). Wazuh는 기본 룰셋으로 SSH 무차별 대입을 탐지하고, active-response로 해당 IP를 방화벽에서 자동 차단할 수 있습니다. 잠금 로그와 방화벽 차단을 연동하면 탐지→대응이 자동화됩니다.
[ ] faillock으로 계정 실패 기록 조회
[ ] 반복 Source IP 식별
[ ] deny/unlock_time 정책 확인
[ ] 잠금과 usermod -L의 차이 이해
다음 편에서는 10. PAM 구조 이해 를 다룹니다. 이 모든 인증의 뼈대인 PAM의 구조를 정면으로 다룹니다.
본 실습은 격리된 테스트 VM(Rocky Linux / Ubuntu, VMware) 및 테스트 계정 환경을 기준으로 하며, 운영 서버를 대상으로 하지 않습니다. 실행 결과는 실제 캡처와 예시 출력을 명확히 구분해 표기합니다.