094. 계정 · 인증 보안 — Wazuh 인증 기본 룰 해석

changseop lee·5일 전

시스템 보안 · 취약점 › B. 계정 · 인증 보안 강화 · 44/50편 (전체 094/450)
학습 단계: 4단계 · 자동 점검·로그 분석
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

Wazuh는 인증 관련 기본 룰을 이미 많이 제공합니다. 커스텀 룰(045편)을 만들기 전에, 기본 룰이 무엇을 이미 탐지하는지 알아야 중복·누락을 피합니다.

Wazuh 기본 인증 룰 (대표, 버전에 따라 ID·내용 상이 — logtest로 확인)
 5500대: pam (pam_unix 인증 성공/실패)
 5700대: sshd (5710 비존재 사용자, 5712 brute force, 5715 인증 성공, 5716 실패 ...)
 5400대: sudo (5402 sudo to root, 5403 실패 ...)
 5300대: su, login, 계정 관련
 2900대: dpkg/계정 (Debian 계열 계정 생성 등)

룰 구조: id · level · group · if_sid(부모) · description

기본 룰을 부모(if_sid)로 삼아 조건을 좁히는 것이 커스텀 룰의 기본 패턴입니다(045편).

2. 왜 중요한가

  • 기본 룰을 모르면 이미 있는 탐지를 중복으로 만들거나, 반대로 기본 룰이 안 잡는 것을 놓칩니다.
  • 기본 룰의 레벨이 조직 기준과 다를 수 있어(예: 인증 성공이 낮은 레벨), 필요 시 상향/하향을 판단해야 합니다.
  • wazuh-logtest로 실제 매칭을 확인하는 습관이 룰 운영의 기본입니다(047편).

3. 핵심 명령어 / 설정

도구/파일용도
/var/ossec/bin/wazuh-logtest로그→룰 매칭 확인
/var/ossec/ruleset/rules/*.xml기본 룰(수정 금지, 참조용)
0095-sshd_rules.xml 등서비스별 기본 룰 파일
/var/ossec/etc/rules/local_rules.xml커스텀(수정 대상)
Wazuh 문서 Ruleset룰 ID·설명 참조

4. 실습 (실습 예시)

# 1) 샘플 로그로 매칭 룰 확인
sudo /var/ossec/bin/wazuh-logtest
# 입력: Oct 2 02:10:44 host sshd[1]: Accepted password for devops from 192.168.56.77 port 50110 ssh2
# 출력: Phase 3 id '5715' level '3' description 'sshd: authentication success'

# 2) 기본 룰 파일에서 인증 룰 ID·설명 보기 (참조만)
sudo grep -hE 'rule id|<description>' /var/ossec/ruleset/rules/0095-sshd_rules.xml | head -40

# 3) brute-force·sudo 룰 확인
echo 'Oct 2 02:30 host sudo: devops : TTY=pts/1 ; USER=root ; COMMAND=/bin/bash' | sudo /var/ossec/bin/wazuh-logtest

5. 정상 상태

**Phase 3: Completed filtering (rules).
	id: '5715'
	level: '3'
	description: 'sshd: authentication success'
	groups: '['syslog', 'sshd', 'authentication_success']'

로그가 의도한 기본 룰(5715)에 매칭되고, 그룹·레벨을 확인할 수 있는 상태가 정상입니다. 인증 성공이 레벨 3(낮음)인 것은 정상 로그인이 많기 때문입니다.

6. 이상 상태

기본 룰만으로는 부족한 경우를 식별합니다.

입력: 비관리망·새벽 devops 로그인 성공
출력: id '5715' level '3'   → "성공"으로만 잡힘, 이상 로그인 맥락은 없음
→ 커스텀 룰(101171, 051편)로 '업무 외+비관리망' 조건을 더해야 이상으로 탐지됨
  • 기본 5715는 모든 성공을 같은 레벨로 잡아, 이상 로그인을 구분하지 못함
  • 돌파(074편)·스프레이(073편)도 기본 5712(brute force)만으로는 "성공 여부"를 묶지 못함
  • → 기본 룰을 부모로 삼아 맥락 조건을 더한 커스텀 룰이 필요(045편)

7. 로그 분석 (분석 방법)

기본 룰과 커스텀 룰의 역할 분담 예시입니다(가상의 예시).

로그: Accepted password for devops from 192.168.56.77 (02:10)
 기본 5715 (level 3)     : "인증 성공" — 기록
 커스텀 101171 (level 11): "업무 외+비관리망 성공" — 이상 Alert
 커스텀 101220 (level 13): "돌파(실패 후 성공)" — Incident
→ 하나의 로그가 여러 룰에 매칭, 레벨이 가장 높은 것이 우선순위
룰역할
기본 5715사실 기록(성공)
커스텀(맥락)이상 판정·상관

기본 룰은 "사실", 커스텀 룰은 "판정"을 담당하는 구조입니다.

8. SOC 관제 포인트

  • 커스텀 룰 작성 전 wazuh-logtest로 기본 룰이 이미 잡는지 확인합니다.
  • 기본 룰은 부모(if_sid)로 재사용하고, 맥락·상관 조건만 커스텀으로 더합니다.
  • 인증 성공처럼 레벨이 낮은 기본 룰은 이상 맥락에서만 커스텀으로 상향합니다.

9. 탐지 규칙

<!-- 기본 룰을 부모로 삼아 맥락만 추가하는 패턴 (045편에서 확장) -->
<rule id="101400" level="11">
  <if_sid>5715</if_sid>              <!-- 기본: 인증 성공 -->
  <srcip>!192.168.56.0/28</srcip>   <!-- 추가: 비관리망 -->
  <description>비관리망 SSH 로그인 성공(기본 5715 + 맥락)</description>
</rule>

이렇게 하면 기본 룰의 디코딩·파싱을 그대로 활용하면서 조건만 좁힐 수 있습니다. 기본 룰 파일은 절대 수정하지 않고 local_rules.xml에만 작성합니다(047편 원칙).

10. 대응 방법

  1. 초기 확인 — 대상 로그가 어떤 기본 룰에 매칭되는지 wazuh-logtest로 확인합니다.
  2. 범위 확인 — 기본 룰이 놓치는 맥락(시간·출발지·상관)을 식별합니다.
  3. 증거 확보 — 기본 룰 ID·레벨·그룹 매핑을 문서화합니다.
  4. 차단/조치 — 부족한 부분만 커스텀 룰로 보완(045편)하고 중복을 피합니다.
  5. 재발 방지 — 기본 룰 참조 문서와 logtest 검증 절차를 운영합니다.

11. 핵심 정리

룰 대역담당
5500대pam 인증
5700대sshd(5712 brute, 5715 성공, 5716 실패)
5400대sudo(5402 root)
커스텀 101000대맥락·상관(B영역)
면접 포인트"기본 룰=사실 기록, 커스텀 룰=이상 판정 — 기본을 부모로 재사용"

12. 다음 편 예고

다음 편 095. 계정 · 인증 보안 — Wazuh 인증 커스텀 룰과 상관 룰 에서는 기본 룰을 확장하는 Wazuh 인증 커스텀 룰과 상관 룰을 다룹니다.


이전 편: 093. 계정 · 인증 보안 — 인증 이벤트 타임라인 작성
📚 시리즈 전체 보기: 시스템 보안 · 취약점

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

0개의 댓글