Linux 로그 경로 정리 · 47/50 · Part 6. SOC / SIEM / Wazuh
선행 학습 → 46. Linux 로그를 SIEM으로 보내는 구조 · 37. auditd 구조 이해 · Linux 시스템 보안 기초 시리즈
이번 글 → Wazuh에서 Linux 로그 수집 구조
이어서 → 48. Linux 로그 기반 IOC 추출
Wazuh는 오픈소스 SIEM/XDR로, 국내 보안관제 실습·중소 조직 운영에서 널리 쓰입니다. 이번 글은 Rocky Linux 9.8 실습 환경에 Wazuh Agent와 Manager 4.14.8을 실제로 설치해, Linux 로그가 어떤 설정으로 수집되고 어떤 룰로 Alert가 되는지 확인합니다.
핵심 요약
- Agent
<localfile>이 수집 경로를 결정한다. 설치 시점에 없던 로그 파일은 자동 등록되지 않을 수 있다 → 수동 추가·검증.- 형식:
syslog(secure·cron·auth.log),audit(audit.log),journald(저널 직접)- auditd 이벤트는 기본 룰
80700(level 0, 그룹핑)에 걸린다 → audit key 기반 커스텀 룰이 있어야 Alert가 된다.
| 구성 | 역할 | 실습 확인 |
|---|---|---|
| Agent | 로그 수집(logcollector), FIM(syscheck), 설정 점검(SCA) | wazuh-agent 4.14.8 |
| Manager | 디코딩·룰·Alert 생성 | wazuh-manager 4.14.8 |
| localfile | 수집 대상 + 형식 | 기본값에 journald, 명령 출력 수집 포함 |
| decoder | 필드 추출 | sshd, auditd 등 |
| rule | 판정·상관 | 기본 룰 + local_rules.xml |
| SCA | 보안 설정 점검 정책 | cis_rocky_linux_9.yml 자동 포함 |

| 위치 | 경로 |
|---|---|
| Agent 설정 | /var/ossec/etc/ossec.conf (+ Manager의 그룹 설정 agent.conf) |
| Agent 로그 | /var/ossec/logs/ossec.log (수집 오류 확인) |
| Manager 룰 | /var/ossec/ruleset/rules/0095-sshd_rules.xml, 0365-auditd_rules.xml 등 |
| 커스텀 룰 | /var/ossec/etc/rules/local_rules.xml |
| Alert | /var/ossec/logs/alerts/alerts.json |
Agent 측: 수집 블록 추가 → 문법 검증 → 재시작
<ossec_config>
<localfile>
<log_format>syslog</log_format>
<location>/var/log/secure</location> <!-- Ubuntu: /var/log/auth.log -->
</localfile>
<localfile>
<log_format>syslog</log_format>
<location>/var/log/cron</location> <!-- Ubuntu: /var/log/syslog -->
</localfile>
<localfile>
<log_format>audit</log_format>
<location>/var/log/audit/audit.log</location>
</localfile>
</ossec_config>
/var/ossec/bin/wazuh-logcollector -t && systemctl restart wazuh-agent
grep -i 'logcollector' /var/ossec/logs/ossec.log | tail -5 # "Analyzing file: '/var/log/secure'" 확인
Manager 측: audit key 기반 커스텀 룰 (실습 환경에 실제 적용·검증한 내용)
<group name="local,audit,">
<rule id="100210" level="12">
<if_sid>80700</if_sid>
<field name="audit.key">^log_tamper$</field>
<description>auditd: 로그 파일 변조 명령 실행 (auid=$(audit.auid) exe=$(audit.exe))</description>
<mitre><id>T1070.002</id></mitre>
</rule>
<rule id="100211" level="10">
<if_sid>80700</if_sid>
<field name="audit.key">^net_out$</field>
<description>auditd: 감시 대상 외부 연결 시도 (exe=$(audit.exe))</description>
<mitre><id>T1071</id></mitre>
</rule>
<rule id="100212" level="10">
<if_sid>80700</if_sid>
<field name="audit.key">^cron_mod$|^user_mod$</field>
<description>auditd: 지속성 관련 변경 (key=$(audit.key) exe=$(audit.exe))</description>
<mitre><id>T1053.003</id></mitre>
</rule>
</group>
/var/ossec/bin/wazuh-analysisd -t && systemctl restart wazuh-manager # 룰 문법 검증 후 재시작
grep 'key="log_tamper"' audit.log | /var/ossec/bin/wazuh-logtest # 커스텀 룰 동작 확인

위 이미지는 Rocky Linux 9.8 컨테이너에 설치한 Wazuh Agent 4.14.8의 실제 설정 확인·추가·검증 결과입니다. Manager 주소는 문서용 IP(192.0.2.20)로 등록했습니다.
실습 시나리오 데이터(가상)를 Manager의 wazuh-logtest 에 입력한 실제 판정 결과:
[실제 실행 결과 · wazuh-manager 4.14.8 · 입력: 실습용 가상 로그]
secure/cron → 5710(5) 비존재 계정 시도 · 5760(5) 인증 실패 · 5712/5763(10) 무차별 대입
40112(12) 실패 다수 후 성공 · 5403(4) 첫 sudo · 5902(8) 사용자 추가
40501(15) 공격 후 사용자 추가 · 2833(8) root crontab 변경
audit.log → 커스텀 룰 적용 전: 80700(0) "Audit: Messages grouped." (Alert 아님)
커스텀 룰 적용 후: 100212(10) cron_mod · 100211(10) net_out · 100210(12) log_tamper
| 관찰 | 해석 |
|---|---|
기본 localfile에 /var/log/secure 없음 | 실습 컨테이너에는 설치 시점에 파일이 없었음 → 설치 후 생긴 로그는 수동 등록 |
journald 수집 기본 포함 | 파일이 없어도 저널로 수집 가능 (중복 수집 여부 설계 필요) |
full_command | 명령 출력(예: netstat, last) 주기 수집 — 30편 스크립트 연계 가능 |
| audit 기본 룰 level 0 | 규칙은 있어도 Alert는 없다 → 커스텀 룰이 탐지의 핵심 |
| 정상 | 의심 |
|---|---|
| Agent active, 이벤트 연속 수신 | Agent disconnected / 이벤트 급감 |
ossec.conf 변경이 관리 절차로 | 수집 블록 삭제 (FIM으로 감시) |
| 커스텀 룰 버전 관리(Git) | 룰 파일 수동 수정 이력 없음 |
location 필드로 원본 경로, full_log 로 원문 확인.<rule ... level="0"> 로 끄기보다 조건(<field>, <srcip> 예외)으로 좁힌다.[ ] Agent localfile 기본값 확인
[ ] secure / cron / audit.log 수집 블록 추가
[ ] wazuh-logcollector -t 검증
[ ] wazuh-logtest 로 sshd 룰 확인
[ ] audit key 커스텀 룰 작성 및 analysisd -t 검증
[ ] 로그 소스 ↔ 룰 ↔ MITRE 매핑표 작성
localfile 이 수집 범위이며, 설치 후 생긴 로그는 직접 등록한다.| 구분 | 글 |
|---|---|
| ◀ 이전 글 | 46. Linux 로그를 SIEM으로 보내는 구조 |
| ▶ 다음 글 | 48. Linux 로그 기반 IOC 추출 |
| 시리즈 | Linux 로그 경로 정리 전체 보기 |
| 선행 시리즈 | 리눅스 시스템 기초 · 파일 · 권한 · 사용자 관리 · 서비스 · 프로세스 관리 · Linux 시스템 보안 기초 |