안녕하세요! 😊
이번에 회사를 옮기면서 SIEM(Security Information and Event Management) 제품을 다루게 되는데요, SIEM이 처음이라 개념부터 차근차근 공부하며 실습 환경을 구축해보았습니다.
8년간 D.AMO 데이터베이스 암호화 솔루션을 다루면서 보안 로그와 이벤트는 많이 봤지만, 이를 통합적으로 관리하고 분석하는 SIEM은 처음이었습니다. 오늘은 SIEM의 개념과 오픈소스 SIEM인 Wazuh를 VirtualBox 환경에 직접 구축한 과정을 공유하려고 합니다!
🔹 SIEM이란?
SIEM의 개념
SIEM(Security Information and Event Management)은 보안 정보 및 이벤트 관리 시스템입니다.
쉽게 말하면, 기업 내 모든 시스템(서버, 네트워크 장비, 애플리케이션, 데이터베이스 등)에서 발생하는 보안 이벤트와 로그를 한곳에 모아서 실시간으로 분석하고 탐지하는 시스템입니다.
SIEM의 주요 기능
1. 로그 수집 (Log Collection)
- 다양한 소스로부터 로그 데이터 수집
- 서버, 방화벽, IDS/IPS, 데이터베이스, 애플리케이션 등
- Syslog, Agent, API 등 다양한 방식 지원
2. 로그 정규화 (Normalization)
- 서로 다른 형식의 로그를 표준화된 형식으로 변환
- 예: Apache 로그, Windows 이벤트 로그, Oracle 감사 로그 → 통일된 포맷
3. 상관관계 분석 (Correlation)
- 여러 이벤트를 연관지어 보안 위협 탐지
- 예: "로그인 실패 5회 + 다른 IP에서 성공" → 계정 탈취 의심
4. 실시간 모니터링 & 알림
- 위협 실시간 탐지 및 알림
- 대시보드를 통한 시각화
5. 규정 준수 (Compliance)
- 각종 보안 규정 준수 지원 (PCI-DSS, HIPAA, GDPR 등)
- 감사 보고서 자동 생성
실무에서 SIEM이 필요한 이유
제가 8년간 데이터베이스 암호화 업무를 하면서 느낀 점은, 각 시스템의 로그를 개별적으로 확인하는 것의 한계였습니다.
예를 들어:
- 데이터베이스에서 민감한 데이터 조회 시도 발생
- 같은 시간에 방화벽에서 이상한 IP 접속 탐지
- 애플리케이션 로그에서 권한 상승 시도 발견
이런 이벤트들이 동일한 공격자에 의한 연계 공격일 수 있는데, 각 시스템 로그를 따로 보면 연관성을 파악하기 어렵습니다.
SIEM은 이런 분산된 이벤트들을 한눈에 보고 상관관계를 분석할 수 있게 해줍니다.
🔹 오픈소스 SIEM 비교
SIEM 학습을 위해 오픈소스 솔루션들을 조사했습니다.
주요 오픈소스 SIEM
솔루션특징활성도
| Wazuh | OSSEC 기반, 엔터프라이즈급 기능, 활발한 커뮤니티 | ⭐⭐⭐⭐⭐ |
| Security Onion | IDS(Suricata/Zeek) 통합, 네트워크 보안 특화 | ⭐⭐⭐⭐ |
| ELK Stack | 범용 로그 분석 플랫폼, SIEM 기능 추가 구현 필요 | ⭐⭐⭐⭐ |
| TheHive | 인시던트 대응 플랫폼, SIEM과 연동 사용 | ⭐⭐⭐ |
Wazuh 선택 이유
저는 Wazuh를 선택했습니다. 이유는:
- 완성도 높은 SIEM 기능: 별도 개발 없이 즉시 사용 가능
- 훌륭한 문서: 공식 문서가 매우 잘 정리되어 있음
- 에이전트 기반 아키텍처: 다양한 OS 지원 (Linux, Windows, macOS)
🔹 Wazuh 아키텍처
Wazuh는 크게 3가지 컴포넌트로 구성됩니다 :
┌─────────────────────────────────────┐
│ Wazuh Dashboard (Web UI) │ ← 웹 브라우저로 접근
│ (Kibana 기반) │
└────────────────┬────────────────────┘
│
┌────────────────▼────────────────────┐
│ Wazuh Indexer (저장소) │
│ (Elasticsearch/OpenSearch) │
└────────────────┬────────────────────┘
│
┌────────────────▼────────────────────┐
│ Wazuh Manager (분석 서버) │ ← 핵심 엔진
│ - 로그 수집 및 분석 │
│ - 규칙 엔진 (Rule Engine) │
│ - 에이전트 관리 │
└────────────┬───┬───┬────────────────┘
│ │ │
┌────────▼┐ ┌▼──────┐ ┌▼────────┐
│ Agent 1 │ │Agent 2│ │ Agent 3 │
│ (Linux) │ │(Win) │ │(macOS) │
└─────────┘ └───────┘ └─────────┘
Manager와 Agent의 역할 차이
- Manager: 중앙 관리 서버, 모든 로그 수집·분석
- Agent: 각 서버에 설치, 로컬 로그 수집 후 Manager로 전송
중요: Manager와 Agent는 동일 서버에 설치 불가합니다! (이유는 뒤에서 설명)
🔹 VirtualBox 환경 구축
시스템 요구사항
Wazuh 공식 권장 사양:
- CPU: 2 cores
- RAM: 4GB (최소)
- Disk: 50GB (권장)
처음에는 디스크 24GB로 시작했다가 설치 중 공간 부족으로 실패했습니다. 😅 그래서 LVM 디스크 확장 작업을 진행했습니다.
VirtualBox LVM 디스크 확장
1. VirtualBox에서 가상 디스크 추가
VirtualBox Manager → 설정 → 저장소 → 컨트롤러에 디스크 추가
# 디스크 확인
fdisk -l
# 출력 예시
Disk /dev/sda: 50 GiB # 기존 디스크
Disk /dev/sdb: 50 GiB # 새로 추가한 디스크
2. 새 디스크 파티션 생성
# 파티션 생성
fdisk /dev/sdb
# fdisk 명령어 입력
n # 새 파티션
p # primary
(Enter) # 파티션 번호 기본값
(Enter) # First sector 기본값
(Enter) # Last sector 기본값 (전체 사용)
w # 저장 및 종료
3. LVM 물리 볼륨 생성 및 확장
# Physical Volume 생성
pvcreate /dev/sdb1
# Volume Group 확장
vgdisplay # VG 이름 확인 (예: ubuntu-vg)
vgextend ubuntu-vg /dev/sdb1
# Logical Volume 확장
lvextend /dev/ubuntu-vg/ubuntu-lv /dev/sdb1
# 파일시스템 크기 조정
# 작업 간 빠트리지 않도록 유의할 것!
resize2fs /dev/ubuntu-vg/ubuntu-lv
# 확인
lsblk
# 결과
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
...
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 48G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 74G 0 lvm /
sdb 8:16 0 50G 0 disk
└─sdb1 8:17 0 50G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 74G 0 lvm /
sr0 11:0 1 1024M 0 rom
24GB → 73GB로 확장 성공! ✅
🔹 Wazuh 설치
All-in-One 설치 방식
Wazuh는 설치 스크립트를 제공하여 매우 간단하게 설치할 수 있습니다.
# 1. 필수 패키지 설치
sudo apt update
sudo apt install curl apt-transport-https lsb-release gnupg -y
# 2. Wazuh 설치 스크립트 다운로드
curl -sO https://packages.wazuh.com/4.14/wazuh-install.sh
# 3. All-in-One 설치 실행
sudo bash wazuh-install.sh -a
설치는 약 20분 소요되었습니다.
설치 과정:
1. Wazuh Indexer 설치
2. Wazuh Manager 설치
3. Filebeat 설치
4. Wazuh Dashboard 설치
설치 완료
24/11/2025 11:51:55 INFO: --- Summary ---
24/11/2025 11:51:55 INFO: You can access the web interface https://<wazuh-dashboard-ip>:443
User: admin
Password: [임의의 해쉬값]
24/11/2025 11:51:55 INFO: Installation finished.
중요: 웹 콘솔 접속 계정 정보(ID, 패스워드)는 최초 한 번 나타나니 반드시 따로 보관해야 합니다.
서비스 상태 확인
# 모든 서비스 확인
systemctl status wazuh-manager
systemctl status wazuh-indexer
systemctl status wazuh-dashboard
systemctl status filebeat
모두 active (running) 상태여야 합니다.
🔹 웹 대시보드 접속
1. IP 주소 확인
ip addr show | grep inet
# 또는
hostname -I
2. 웹 브라우저 접속
https://192.168.0.170:443
자체 서명 인증서 경고가 나오면 "고급" → "계속 진행" 클릭
3. 로그인
User: admin
Password: (설치 시 출력된 비밀번호)
대시보드 화면
로그인하면 Wazuh Dashboard가 나타납니다:
- Overview: 전체 보안 현황 한눈에 확인
- Agents Summary: 등록된 에이전트 목록 (현재는 0개)
- Last 24 Hours Alerts: 최근 24시간 알림
- Threat Intelligence: 위협 정보
- Vulnerability Detection: 취약점 탐지
현재는 에이전트가 없어서 "This instance has no agents registered" 메시지가 표시됩니다.

🔹 Manager와 Agent 동시 설치 불가 이슈
문제 상황
처음에는 Manager 서버 자체도 모니터링하려고 같은 서버에 Agent를 설치하려 했습니다.
WAZUH_MANAGER="127.0.0.1" apt-get install wazuh-agent -y
결과:
The following packages will be REMOVED:
wazuh-manager
The following NEW packages will be installed:
wazuh-agent
Manager가 자동으로 제거되었습니다! 😱
왜 동시 설치가 안 될까?
1. 패키지 충돌 (Package Conflict)
Debian/Ubuntu 패키지 관리자(apt)에서 wazuh-manager와 wazuh-agent는 상호 배타적(mutually exclusive) 관계로 정의되어 있습니다.
Conflicts: wazuh-manager
Replaces: wazuh-manager
하나를 설치하면 다른 하나가 자동으로 제거됩니다.
2. 아키텍처 설계상 이유
Manager의 역할:
- 에이전트로부터 데이터 수집 (Receiver)
- 로그 분석 및 규칙 엔진 실행
- 중앙 집중식 관리 서버
- 포트: 1514 (agent 통신), 1515 (agent 등록)
Agent의 역할:
- 로컬 시스템 모니터링 (Sender)
- 로그 수집 후 Manager로 전송
- Manager의 명령 수신 및 실행
- Manager 연결 대상: Manager IP:1514
하나의 프로세스가 동시에 송신자(Agent)와 수신자(Manager) 역할을 할 수 없는 구조입니다.
3. 파일 시스템 충돌
둘 다
'/var/ossec' 디렉토리를 사용하지만, 디렉토리 구조와 설정 파일이 다릅니다:
Manager:
/var/ossec/
├── bin/
│ ├── wazuh-remoted # Agent 연결 수신
│ ├── wazuh-analysisd # 로그 분석
│ └── wazuh-authd # Agent 등록
├── etc/
│ └── ossec.conf # Manager 설정
└── logs/
└── ossec.log
Agent:
/var/ossec/
├── bin/
│ └── wazuh-agentd # Manager 연결 시도
├── etc/
│ └── ossec.conf # Agent 설정
└── logs/
└── ossec.log
동일한 경로를 사용하기 때문에 충돌이 발생합니다.
4. 프로세스 포트 충돌
- Manager: `wazuh-remoted`가 1514 포트에서 Listen
- Agent: `wazuh-agentd`가 Manager:1514로 Connect
같은 서버에서 실행 시 포트 및 소켓 충돌이 발생합니다.
권장 구성
┌──────────────────────────┐
│ Wazuh Manager Server │
│ ├─ Wazuh Manager │
│ ├─ Wazuh Indexer │
│ └─ Wazuh Dashboard │
└────────────┬─────────────┘
│
┌────────┼────────┐
│ │ │
┌───▼───┐ ┌─▼────┐ ┌─▼────┐
│Agent 1│ │Agent2│ │Agent3│
│Server1│ │Server2│ │Server3│
└───────┘ └──────┘ └──────┘
Manager 서버 자체 모니터링 방법
그렇다면 Manager 서버 자체는 어떻게 모니터링할까요?
방법 1: Manager 내장 모니터링 (권장)
Manager는 자기 자신을 자동으로 모니터링합니다:
- File Integrity Monitoring (FIM)
- Security Configuration Assessment (SCA)
- Vulnerability Detection
- Rootcheck
# Manager 로그 확인
tail -f /var/ossec/logs/ossec.log
로그를 보면 Manager가 자체적으로 스캔을 수행하는 것을 확인할 수 있습니다:
2025/11/24 11:51:22 wazuh-syscheckd: INFO: (6008): File integrity monitoring scan started.
2025/11/24 11:51:27 sca: INFO: Starting Security Configuration Assessment scan.
2025/11/24 11:51:30 wazuh-modulesd:vulnerability-scanner: INFO: Vulnerability scanner module started.
방법 2: 계층적 Manager 구조
대규모 환경에서는 여러 Manager를 계층적으로 구성할 수 있지만, 이 경우에도 각 Manager는 Agent를 별도로 실행하지 않고 Manager 간 통신을 사용합니다.
🔹 마치며
처음으로 VirtualBox 기반 Wazuh 시스템을 구축해보았습니다.
개별 시스템의 로그가 아닌, 전체 인프라를 통합적으로 관리하고 분석한다는 관점이 새로운 것 같습니다.
특히 Wazuh는 오픈소스임에도 불구하고 엔터프라이즈급 기능을 제공하여 학습 도구로 매우 적합하다는 의견이 많아서
이번 실습을 통해 쌓은 기본기가 큰 도움이 될 것 이라 생각하고 있습니다.
다음으로는 Syslog 통합을 진행하고, 실제 여러 서버들을 연동하여 다양한 환경의 로그들을 통합하는 과정들도 추가적으로 소개해 보겠습니다.
감사합니다!
'기술 공부 > DevOps' 카테고리의 다른 글
| VirtualBox 새 파티션 LVM 디스크 확장 (0) | 2025.12.14 |
|---|---|
| Wazuh SIEM에서 Syslog 연동 실습 (2편) - Rule 작성부터 대시보드까지 (1) | 2025.12.14 |
| Wazuh SIEM에서 Syslog 연동 실습 (1편) - 삽질부터 첫 성공까지 (0) | 2025.12.07 |
| Self-hosted GitHub Runner를 통한 CI/CD 자동 배포 파이프라인 구축 (0) | 2025.11.02 |
| Linux Git 완전 설치 및 다중 사용자 설정 가이드 (0) | 2025.09.28 |