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

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

선행 학습

1. 들어가며

비밀번호가 아무리 복잡해도 시도 횟수에 제한이 없으면 언젠가는 뚫립니다. 계정 잠금(lockout)은 '무한 시도'를 막아 무차별 대입 공격을 실질적으로 무력화하는 장치입니다.

2. 핵심 개념

현대 배포판은 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 (수동 해제)

3. 동작 원리

인증 실패가 발생하면 PAM의 auth 단계에서 pam_faillock이 실패 카운터를 증가시킵니다. deny 한계에 도달하면 이후 인증은 비밀번호가 맞아도 거부됩니다. unlock_time이 지나거나 관리자가 --reset 하면 카운터가 초기화됩니다. 이 카운터는 사용자별로 /var/run/faillock/에 기록됩니다.

4. 명령어 실습

# 계정별 실패 기록 조회
sudo faillock --user alice

# 특정 계정 잠금 카운터 초기화(해제)
sudo faillock --user alice --reset

# usermod로 계정 자체를 잠그기/풀기 (별개 개념)
sudo usermod -L bob      # 잠금(shadow에 ! 부가)
sudo usermod -U bob      # 해제

5. 실행 결과

실습 환경에서 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입니다.

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

  • 정상: 사용자의 우발적 오타로 인한 소수 실패. 잠금 정책이 활성.
  • 공격 징후:
    • 짧은 시간에 동일 IP발 다수 실패 → 무차별 대입
    • 여러 계정에 대한 실패 → password spraying
    • 잠금 후에도 다른 계정으로 계속 시도

주의: 잠금 정책은 DoS로 악용될 수 있습니다(일부러 남의 계정을 잠금). 그래서 SSH는 키 인증을 기본으로 하고(12·15편), 잠금은 보조 방어로 두는 것이 좋습니다.

7. 탐지 방법

  • faillock 기록의 반복 Source IP
  • auth 로그의 Failed password 급증(14편에서 상세)
  • 잠금 이벤트 자체를 로그로 수집

8. SOC 관점 — SIEM · Wazuh · IOC

SIEM에서 '단위 시간당 실패 임계 초과'는 대표적 상관분석 룰입니다(예: 1분 내 동일 IP 10회 실패 → 알람). Wazuh는 기본 룰셋으로 SSH 무차별 대입을 탐지하고, active-response로 해당 IP를 방화벽에서 자동 차단할 수 있습니다. 잠금 로그와 방화벽 차단을 연동하면 탐지→대응이 자동화됩니다.

9. 실습 체크리스트

[ ] faillock으로 계정 실패 기록 조회
[ ] 반복 Source IP 식별
[ ] deny/unlock_time 정책 확인
[ ] 잠금과 usermod -L의 차이 이해

10. 핵심 정리

  • 계정 잠금은 무한 시도를 막아 무차별 대입을 무력화한다.
  • 현대 배포판은 pam_faillock을 사용한다.
  • faillock --reset으로 수동 해제, unlock_time으로 자동 해제.
  • 반복 Source IP는 공격 출발지이자 IOC다.
  • 잠금은 DoS 악용 소지가 있어 키 인증과 병행해야 한다.

11. 다음 편

다음 편에서는 10. PAM 구조 이해 를 다룹니다. 이 모든 인증의 뼈대인 PAM의 구조를 정면으로 다룹니다.


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

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

0개의 댓글