Linux 로그 경로 정리 · 46/50 · Part 6. SOC / SIEM / Wazuh
선행 학습 → 36. 원격 Syslog와 중앙 로그 서버 · 기초 50. 보안관제 실습
이번 글 → Linux 로그를 SIEM으로 보내는 구조
이어서 → 47. Wazuh에서 Linux 로그 수집 구조
Part 6은 지금까지의 로그 지식을 보안관제 체계에 연결합니다. SOC 분석가가 보는 것은 서버의 /var/log/secure 가 아니라 SIEM의 Alert입니다. 그 Alert가 어떤 과정을 거쳐 만들어지는지 알아야 오탐을 판단하고, 탐지 공백을 메우고, 원본으로 되돌아갈 수 있습니다.
핵심 요약
- 파이프라인: Linux → Log Collector → Normalization → Parsing/Decoding → Correlation → Alert → SOC Analyst
- SIEM은 로그 한 줄을 필드로 바꾸고(디코딩), 룰로 판단하고, 여러 이벤트를 엮어(상관) 위험도를 올린다.
- 수집되지 않은 로그는 탐지되지 않는다 — 파이프라인의 시작은 로그 소스 설계다.
| 단계 | 하는 일 | Wazuh에서 |
|---|---|---|
| Log Collection | 로그를 읽어 전송 | Agent의 logcollector (<localfile>) |
| Normalization | 시간·호스트·프로그램 추출, 형식 통일 | Pre-decoding |
| Parsing / Decoding | 메시지에서 필드 추출 | Decoder (srcip, dstuser, audit.key …) |
| Correlation | 빈도·순서·다중 소스 결합 | Rule (if_sid, if_matched_sid, frequency, timeframe) |
| Detection Rule | 조건 → level(0~15), MITRE 매핑 | /var/ossec/ruleset/rules, local_rules.xml |
| Alert | 임계 level 이상 이벤트 저장·표시 | alerts.json → Indexer → Dashboard |
| SOC Analyst | 분류·조사·대응 | Triage → Investigation → Response |

상관분석의 실제 예 (47편에서 실측): 단일 실패(5760, level 5)가 짧은 시간에 반복되면 5763(level 10)이 되고, 그 IP에서 성공이 나오면 40112(level 12, "Multiple authentication failures followed by a success"), 이어서 계정이 추가되면 40501(level 15)이 됩니다. 각각은 평범한 로그가 순서로 엮여 고위험 Alert가 되는 구조입니다.
| 위치 | 경로 |
|---|---|
| 수집 대상 (서버) | /var/log/secure · auth.log · audit/audit.log · journald |
| Agent 설정 | /var/ossec/etc/ossec.conf |
| Manager 디코더/룰 | /var/ossec/ruleset/decoders/, /var/ossec/ruleset/rules/ |
| 사용자 정의 | /var/ossec/etc/decoders/local_decoder.xml, /var/ossec/etc/rules/local_rules.xml |
| Alert 출력 | /var/ossec/logs/alerts/alerts.json · alerts.log |
| 테스트 도구 | /var/ossec/bin/wazuh-logtest |
# 로그 한 줄이 어떻게 디코딩·판정되는지 (Manager 에서)
echo 'Sep 20 02:14:44 web01 sshd[4096]: Failed password for deploy from 203.0.113.45 port 50164 ssh2' | /var/ossec/bin/wazuh-logtest
# 실제 Alert 확인 (Manager)
tail -f /var/ossec/logs/alerts/alerts.json | jq -r '[.timestamp, .rule.id, .rule.level, .rule.description, .data.srcip] | @tsv'
# 수집 경로 확인 (Agent)
grep -A3 '<localfile>' /var/ossec/etc/ossec.conf | grep -E 'log_format|location'

위 이미지는 Rocky Linux 9.8 컨테이너에 Wazuh Manager 4.14.8을 설치하고 wazuh-logtest 를 실제로 실행한 결과입니다(입력 로그는 실습 시나리오의 가상 데이터).
| Phase | 결과 | 의미 |
|---|---|---|
| 1 Pre-decoding | timestamp, hostname, program_name=sshd | syslog 헤더 정규화 (7편의 필드 구조) |
| 2 Decoding | dstuser=deploy, srcip=203.0.113.45, srcport=50164 | 메시지 본문 파싱 → IOC 후보 필드 |
| 3 Rule | id 5760, level 5, authentication_failed | 판정, 컴플라이언스 매핑(PCI DSS 10.2.4 등) |
| Alert | Alert to be generated | level이 기록 임계(기본 3) 이상 |
| 파이프라인 문제 | 결과 | 점검 |
|---|---|---|
| 로그 미수집 | 탐지 불가 | 에이전트 localfile 목록 |
| 디코딩 실패 | 필드 없음 → 룰 미동작 | wazuh-logtest Phase 2 |
| 룰 부재 | 로그는 있으나 Alert 없음 | Phase 3가 level 0 |
| 시간 파싱 오류 | 타임라인 왜곡 | Phase 1 timestamp |
| 에이전트 중단 | 수집 공백 | Agent disconnected Alert |
Alert (rule 40112, level 12)
↓ Triage: 원본 full_log 확인 → srcip / dstuser → 같은 IP 이전 이벤트 (5760, 5763)
↓ Investigation: 원본 서버 secure / audit 교차검증 (18편, 39편)
↓ 판정: 정탐 → Incident 생성
↓ Response: 계정 잠금·IP 차단·증거 보존 (45편)
↓ Detection 개선: 놓친 단계(실행·지속성) 룰 추가 (47편)
[ ] 파이프라인 7단계 설명
[ ] Pre-decoding / Decoding / Rule 차이 설명
[ ] wazuh-logtest 로 한 줄 판정 확인
[ ] 상관 룰(5760 → 5763 → 40112 → 40501) 흐름 설명
[ ] 파이프라인 문제 5가지 점검 방법
[ ] Alert → 원본 로그로 되돌아가는 절차
| 구분 | 글 |
|---|---|
| ◀ 이전 글 | 45. 로그 보존 정책과 증거 보존 |
| ▶ 다음 글 | 47. Wazuh에서 Linux 로그 수집 구조 |
| 시리즈 | Linux 로그 경로 정리 전체 보기 |
| 선행 시리즈 | 리눅스 시스템 기초 · 파일 · 권한 · 사용자 관리 · 서비스 · 프로세스 관리 · Linux 시스템 보안 기초 |