📄 2026.01.26 (Day 63) - Wazuh Agent 등록 및 모니터링 실습
1. 핵심 개념 정리
Wazuh Agent 개요
| # | 핵심 개념 | 설명 | 실무/보안 관점 |
|---|---|---|---|
| 1 | Agent 방식 | 대상 시스템에 직접 프로그램을 설치하여 실시간 모니터링 수행 | 실시간 위협 탐지가 가능하여 대부분의 서버/워크스테이션 환경에서 권장되는 방식 |
| 2 | Agentless 방식 | SSH 프로토콜을 통해 원격으로 주기적 점검 수행, 별도 설치 불필요 | 네트워크 장비나 Agent 설치가 제한된 환경에서 유용하나 기능이 제한적 |
| 3 | 에이전트 통신 포트 | 1514(등록), 1515(통신) 포트를 통해 Wazuh 서버와 양방향 통신 | 방화벽 정책 수립 시 필수 허용 포트이며, 통신 장애의 주요 원인 |
| 4 | 에이전트 상태 관리 | Active, Disconnected, Never connected 등 상태로 에이전트 연결 관리 | 정기적인 상태 점검으로 모니터링 사각지대 방지 필요 |
| 5 | 에이전트 그룹 | 에이전트를 논리적으로 그룹화하여 정책 및 설정 일괄 적용 가능 | 조직 구조나 시스템 특성에 따른 그룹 분류로 효율적 관리 가능 |
Windows Agent 구성
| # | 핵심 개념 | 설명 | 실무/보안 관점 |
|---|---|---|---|
| 6 | MSI 설치 패키지 | PowerShell 명령어 또는 GUI 방식으로 설치 가능한 설치 파일 | 대규모 배포 시 GPO나 자동화 스크립트 활용 고려 |
| 7 | WazuhSvc 서비스 | Windows 서비스로 등록되어 백그라운드에서 실행되는 에이전트 프로세스 | 서비스 자동 시작 설정으로 재부팅 후에도 모니터링 연속성 보장 |
| 8 | ossec.conf 설정 | 에이전트의 동작 방식, 로그 수집 대상 등을 정의하는 핵심 설정 파일 | 조직 보안 정책에 맞춰 커스터마이징 필요 |
| 9 | 이벤트 채널 수집 | Windows 이벤트 로그를 실시간으로 수집하여 서버로 전송 | 로그인 실패, 권한 변경 등 주요 보안 이벤트 탐지의 기반 |
| 10 | 에이전트 로그 | ossec.log 파일에 에이전트 동작 상태 및 오류 정보 기록 | 문제 발생 시 1차 점검 대상, 연결 실패나 설정 오류 진단에 활용 |
Linux Agent 구성
| # | 핵심 개념 | 설명 | 실무/보안 관점 |
|---|---|---|---|
| 11 | DEB 패키지 설치 | apt 저장소 등록 또는 직접 다운로드하여 dpkg로 설치 | Ubuntu/Debian 계열 서버에서 표준 패키지 관리 방식 활용 |
| 12 | systemd 서비스 관리 | systemctl 명령어로 에이전트 서비스 시작/중지/상태 확인 | 자동 시작 설정(enable)으로 서버 재부팅 시에도 모니터링 유지 |
| 13 | 서버 주소 설정 | ossec.conf의 server/address 태그에 Wazuh 서버 IP 지정 | 잘못된 주소 설정은 에이전트 등록 실패의 가장 흔한 원인 |
| 14 | 로그 경로 | /var/ossec/logs/ossec.log에 에이전트 동작 로그 저장 | tail -f 명령으로 실시간 로그 확인 가능 |
| 15 | 권한 관리 | ossec 사용자 권한으로 실행되며, 시스템 로그 접근 권한 필요 | 보안을 위해 최소 권한 원칙 적용, 필요 시 sudo 권한 부여 |
2. 실습 내용 정리
실습 61-1: Windows Agent 설치 및 등록
목표: Windows 시스템에 Wazuh Agent를 설치하고 서버에 등록하여 실시간 모니터링 환경 구축
실습 환경:
- Wazuh 서버: 192.168.2.10
- Windows 클라이언트 (관리자 권한 필요)
- PowerShell 5.1 이상
실습 단계:
- 관리자 권한 PowerShell 실행 후 에이전트 다운로드 및 설치
- Invoke-WebRequest로 wazuh-agent-4.7.0-1.msi 다운로드 (packages.wazuh.com)
- msiexec.exe 로 MSI 설치, WAZUH_MANAGER=192.168.2.10, WAZUH_AGENT_GROUP=default 지정
- 서비스 시작: NET START WazuhSvc
- 에이전트 상태 확인: agent-control.exe -s 실행
- 설정 파일 확인: C:\Program Files (x86)\ossec-agent\ossec.conf
- Wazuh 대시보드 https://192.168.2.10 접속 → Agents 메뉴에서 등록 확인
확인 항목:
- 에이전트가 Active 상태로 표시되는지 확인
- Last keep alive 시간이 최근인지 점검
- ossec.log에서 “Connected to the server” 메시지 확인
- 방화벽에서 1514, 1515 포트 허용 상태 확인
보안 인사이트:
- 에이전트 설치 후 즉시 서버와 통신하므로 네트워크 세그먼트 설계 중요
- 기본 그룹보다는 시스템 역할별 그룹 분류로 차별화된 정책 적용 권장
- WazuhSvc 서비스 자동 시작 설정으로 재부팅 후에도 모니터링 연속성 확보
실습 61-2: Linux Agent 설치 및 서버 연동
목표: Ubuntu 시스템에 Wazuh Agent를 설치하고 중앙 서버와 연동
실습 환경:
- Ubuntu 20.04/22.04
- Wazuh 서버: 192.168.2.10
- sudo 권한 필요
실습 단계:
- GPG 키 및 저장소 추가
- curl -s packages.wazuh.com/key/GPG-KEY-WAZUH | sudo apt-key add -
- echo 저장소 URL | sudo tee /etc/apt/sources.list.d/wazuh.list
- 패키지 설치: sudo apt update && sudo apt install -y wazuh-agent
- 서버 주소 설정: sudo nano /var/ossec/etc/ossec.conf → client/server/address 태그에 192.168.2.10 입력
- 서비스 시작 및 활성화
- sudo systemctl daemon-reload
- sudo systemctl enable wazuh-agent
- sudo systemctl start wazuh-agent
- sudo systemctl status wazuh-agent
systemd 서비스 동작 방식:
- systemctl enable: 부팅 시 자동 시작되도록 심볼릭 링크 생성 (/etc/systemd/system/multi-user.target.wants/)
- systemctl start: 서비스 즉시 시작, PID 파일 생성 및 프로세스 포크
- daemon-reload: systemd가 유닛 파일 변경사항 인식하도록 재로드
발견 가능한 연결 상태:
- Active (running): 정상 동작 중
- Failed: 설정 오류 또는 서버 연결 실패
- Inactive: 서비스가 중지된 상태
보안 고려사항:
- systemctl status에서 “active (running)” 상태 확인
- /var/ossec/logs/ossec.log에서 연결 성공 메시지 모니터링
- 대시보드에서 Agent 상태가 “Active"로 변경되는지 확인
- 방화벽에서 Wazuh 서버 IP만 허용하도록 iptables 규칙 설정
- ossec.conf 파일 권한을 640으로 제한하여 무단 수정 방지
실습 61-3: Agentless 모니터링 설정
목표: SSH 기반 Agentless 방식으로 원격 시스템 무결성 검사 구성
실습 환경:
- Wazuh 서버: 192.168.2.10
- 대상 서버: 192.168.2.100 (admin 계정)
- SSH 키 인증 방식 사용
실습 단계:
- Wazuh 서버에서 SSH 키 생성: sudo -u ossec ssh-keygen -t rsa -N "” -f /var/ossec/.ssh/id_rsa
- 대상 서버에 공개키 복사: sudo -u ossec ssh-copy-id admin@192.168.2.100
- 비밀번호 없이 접속 테스트: sudo -u ossec ssh admin@192.168.2.100
- Agentless 호스트 등록: sudo /var/ossec/agentless/register_host.sh add admin@192.168.2.100 NOPASS
- ossec.conf에 설정 추가 (agentless 섹션)
ossec.conf Agentless 설정 항목:
- type: ssh_integrity_check_linux
- frequency: 36000 (초 단위, 약 10시간)
- host: admin@192.168.2.100
- state: periodic
Agentless 점검 항목:
- 파일 무결성 검사 (중요 시스템 파일 변경 탐지)
- 주기적 시스템 설정 점검
- 사용자 계정 및 권한 변경 모니터링
제약 사항:
- 실시간 모니터링 불가 (frequency 설정에 따른 주기적 점검)
- Agent 방식 대비 제한적인 로그 수집
- 네트워크 장비나 특수 환경에 적합
실습 61-4: Windows Sysmon 연동
목표: Sysmon을 통해 Windows 시스템의 상세한 활동 로그를 Wazuh로 수집
실습 환경:
- Windows 10/11 또는 Windows Server
- Sysmon 다운로드 필요 (Microsoft Sysinternals)
- Wazuh Agent 설치 완료 상태
실습 단계:
- Sysmon 다운로드 및 설치: Sysmon64.exe -accepteula -i
- Wazuh Agent 설정 파일 수정: notepad C:\Program Files (x86)\ossec-agent\ossec.conf
- ossec.conf에 Sysmon 로그 수집 설정 추가
- localfile 섹션 추가
- location: Microsoft-Windows-Sysmon/Operational
- log_format: eventchannel
- Wazuh Agent 서비스 재시작: NET STOP WazuhSvc -> NET START WazuhSvc
- 대시보드에서 Sysmon 이벤트 확인
- Agents -> Security Events -> 필터: data.win.system.channel:Microsoft-Windows-Sysmon/Operational
Sysmon 수집 이벤트:
- Event ID 1: 프로세스 생성 (프로세스명, 명령줄, 해시값 등)
- Event ID 3: 네트워크 연결 (출발지/목적지 IP, 포트)
- Event ID 7: 이미지 로드 (DLL 로딩)
- Event ID 11: 파일 생성
- Event ID 13: 레지스트리 값 설정
보안 활용도:
APT 공격 탐지:
- 비정상적인 프로세스 실행 패턴 분석
- 악성 DLL 인젝션 탐지
- C&C 통신 네트워크 연결 식별
침해사고 분석:
- 공격자 실행 명령어 타임라인 재구성
- 악성코드 파일 생성 이력 추적
- 레지스트리 변조 흔적 발견
3. Agent vs Agentless 비교 분석
모니터링 방식 비교
| 항목 | Agent 방식 | Agentless 방식 | 사용 시기/적용 방안 |
|---|---|---|---|
| 설치 | 대상 시스템에 프로그램 설치 필요 | SSH 연결만으로 모니터링 가능 | Agent: 일반 서버/PC, Agentless: 네트워크 장비 |
| 모니터링 주기 | 실시간 이벤트 수집 및 전송 | 스케줄 기반 주기적 점검 (예: 10시간) | Agent: 즉각 대응 필요한 시스템, Agentless: 보조적 점검 |
| 수집 범위 | 전체 로그, 레지스트리, 프로세스 등 | 파일 무결성, 기본 설정 점검 위주 | Agent: 포괄적 모니터링, Agentless: 특정 무결성 점검 |
| 시스템 부하 | 에이전트 프로세스가 지속 실행 | 점검 시점에만 SSH 연결 발생 | Agent: 리소스 여유 환경, Agentless: 최소 부하 요구 환경 |
| 관리 복잡도 | 각 시스템별 설치 및 업데이트 필요 | 서버 측 설정만으로 관리 | Agent: 중앙 관리 도구 활용, Agentless: 소규모 환경 |
운영 환경별 권장 방식
| 환경 유형 | 권장 방식 | 사용 이유 |
|---|---|---|
| Windows/Linux 서버 | Agent | 실시간 위협 탐지, 전체 로그 수집 가능 |
| 네트워크 장비 (스위치, 라우터) | Agentless | Agent 설치 불가능한 펌웨어 기반 시스템 |
| IoT 디바이스 | Agentless | 제한된 리소스, 별도 프로그램 설치 어려움 |
| 보안 정책상 Agent 설치 불가 | Agentless | 시스템 변경 최소화 요구사항 충족 |
| 임시 시스템 (테스트 서버 등) | Agentless | 짧은 운영 기간, 설치 오버헤드 불필요 |
4. 심화 분석
에이전트 통신 프로토콜 상세 분석
| 구분 | 포트 번호 | 프로토콜 | 용도 | 분석/인사이트 |
|---|---|---|---|---|
| 등록 | 1514 | TCP | 에이전트 최초 등록 및 인증 키 교환 | 등록 과정에서 고유 ID와 공유 키 생성, 중간자 공격 방지 위해 암호화 |
| 통신 | 1515 | TCP | 로그 데이터 실시간 전송 및 명령 수신 | AES 256 암호화로 데이터 기밀성 보장, 압축으로 대역폭 최적화 |
| Syslog | 514 | UDP | 레거시 시스템 로그 수신 (선택적) | Syslog 포워딩 환경에서 활용, 신뢰성은 TCP 대비 낮음 |
| API | 55000 | HTTPS | RESTful API 통한 관리 작업 | 자동화 스크립트나 외부 시스템 연동에 활용 |
에이전트 인증 메커니즘
에이전트 등록 시 인증 키 생성 과정:
- 에이전트가 서버에 등록 요청 (1514 포트) → 호스트명, OS 정보 전송
- 서버가 고유 에이전트 ID 할당 (예: 001, 002) → /var/ossec/etc/client.keys에 기록
- 공유 인증 키 생성 및 배포 → 양방향 암호화 통신을 위한 대칭키, 에이전트 측에도 동일 키 저장
- 이후 모든 통신은 인증 키로 암호화/검증 → 키 불일치 시 통신 거부
Wazuh 룰 레벨 체계
레벨 체계 (0~15):
- 0~3: 정보성 이벤트 (일반 로그, 시스템 정보)
- 4~5: 낮은 우선순위 (보안과 무관한 일반 경고)
- 6~7: 중간 우선순위 (주의가 필요한 의심 활동)
- 8~11: 높은 우선순위 (확실한 보안 위협)
- 12~15: 심각 (즉각 대응 필요한 공격 탐지)
SOC 대응 기준:
- Level 7 이상: 보안 담당자 리뷰 필요
- Level 10 이상: 즉각 조사 및 격리 고려
- Level 12 이상: 긴급 대응 프로세스 가동
5. 실무/보안 적용
보안 전문가 관점 - 에이전트 모니터링 포인트
| 단계/유형 | 탐지 포인트 | 로그 예시 | 대응 방안 |
|---|---|---|---|
| 에이전트 연결 | Agent 등록 이벤트, 최초 연결 시각, 인증 키 교환 성공 여부 | INFO: New connection from 192.168.2.100 | 승인되지 않은 IP의 등록 시도 차단, 등록 이벤트 로깅 및 검토, 정기적 에이전트 목록 감사 |
| 비정상 연결 해제 | 예기치 않은 Disconnect, Keep-alive 실패, 인증 오류 반복 | WARNING: Agent disconnected: 001 | 네트워크 장애 vs 악의적 차단 구분, 에이전트 무응답 알림 설정, 자동 재연결 시도 모니터링 |
| 설정 변경 탐지 | ossec.conf 수정, 서비스 중지 시도, 에이전트 삭제 시도 | CRITICAL: Configuration file modified | 파일 무결성 모니터링 활성화, 변경 이력 추적 및 승인 프로세스, 백업 설정 자동 복원 |
Sysmon 룰셋 예시
의심스러운 PowerShell 실행 탐지를 위한 Sysmon 설정 항목:
- ProcessCreate 이벤트에서 powershell.exe 이미지 포함, -encodedcommand 명령줄 포함인 경우 탐지
- NetworkConnect 이벤트에서 목적지 포트 4444, 5555 연결 탐지
Wazuh 커스텀 룰 예시
Windows 방화벽 비활성화 탐지 (rule id: 100010, level: 12):
- 조건: EventID 60103이면서 commandLine에 .ps1 또는 netsh firewall disable 포함
- MITRE ATT&CK: T1562.004 매핑
6. 배운 점 및 인사이트
새로 알게 된 점
- Agent vs Agentless 선택 기준: 실시간성이 중요한 환경에서는 Agent 방식이 필수이며, Agentless는 보조적 수단이나 제한 환경에서 활용하는 것이 적절함을 이해했다.
- Sysmon의 강력한 탐지 능력: Windows 기본 이벤트 로그만으로는 파악하기 어려운 프로세스 생성, DLL 로딩, 네트워크 연결까지 상세하게 추적할 수 있어 APT 공격 분석에 핵심적임을 확인했다.
- 에이전트 통신 암호화: 1515 포트를 통한 데이터 전송이 AES 256으로 암호화되어 있어 네트워크 스니핑 공격에도 안전하다는 점을 배웠다.
- 룰 레벨의 실무적 의미: Level 7 이상을 주요 검토 대상으로 하고, Level 12 이상은 즉각 대응하는 구조가 SOC 운영의 효율성을 크게 높인다는 것을 이해했다.
- Agentless SSH 키 인증 방식: 비밀번호 없는 키 기반 인증으로 자동화된 점검이 가능하며, ossec 사용자 권한으로 실행되어 보안성도 확보된다는 점이 인상적이었다.
이전 학습과의 연결고리
- Splunk SIEM 연계: Wazuh에서 수집한 로그를 Splunk로 포워딩하면 더욱 강력한 상관분석과 시각화가 가능할 것으로 예상된다. 특히 Sysmon 이벤트를 Splunk에서 분석하면 공격 타임라인 재구성에 유용할 것이다.
- Security Onion & Suricata 통합: 네트워크 레벨(Suricata)과 호스트 레벨(Wazuh) 탐지를 결합하면 내부 측면 이동과 외부 C&C 통신을 동시에 포착하는 다층 방어가 구현된다.
- 웹 취약점 진단 -> 침해 탐지: 이전에 학습한 XSS, CSRF 공격을 Wazuh로 탐지한다면 웹 서버 로그에서 비정상 패턴을 룰로 정의하여 실시간 차단이 가능하다.
실무 적용 아이디어
보안 전문가 관점:
- 계층별 모니터링 체계 구축: 일반 서버는 Agent로 실시간 모니터링, 네트워크 장비는 Agentless로 보조 점검하여 사각지대 없는 관제 환경 구현
- Sysmon + MITRE ATT&CK 매핑: Sysmon 이벤트를 MITRE 공격 기법과 연결하는 커스텀 룰을 작성하여 공격 단계별 탐지 정확도 향상
- 에이전트 상태 자동 점검: 주기적으로 Disconnected 에이전트를 확인하고 알림을 발송하는 Python 스크립트를 작성하여 관제 공백 최소화
인프라 엔지니어 관점:
- 대규모 배포 자동화: Ansible이나 GPO를 활용한 Wazuh Agent 일괄 설치 및 설정 배포로 수백 대 서버 관리 효율화
- 로그 보관 정책 수립: 법적 요구사항과 저장 용량을 고려하여 Wazuh 로그 보관 기간 및 압축 정책 설정
7. Quick Reference
에이전트 관리 명령어 모음
Wazuh 서버 측:
- 전체 에이전트 목록 조회: sudo /var/ossec/bin/agent_control -l
- 특정 에이전트 상세 정보: sudo /var/ossec/bin/agent_control -i 001
- 에이전트 삭제: sudo /var/ossec/bin/manage_agents -r 001
- Agentless 호스트 등록: sudo /var/ossec/agentless/register_host.sh add user@host NOPASS
- Wazuh 매니저 재시작: sudo systemctl restart wazuh-manager
Windows Agent 관리:
- 서비스 시작: NET START WazuhSvc
- 서비스 중지: NET STOP WazuhSvc
- 상태 확인: C:\Program Files (x86)\ossec-agent\agent-control.exe -s
- 로그 확인: Get-Content ossec.log -Tail 50
Linux Agent 관리:
- 서비스 제어: sudo systemctl start/stop/restart/status wazuh-agent
- 실시간 로그 모니터링: sudo tail -f /var/ossec/logs/ossec.log
- 서버 연결 테스트: sudo /var/ossec/bin/agent-auth -m 192.168.2.10
핵심 파일 경로 요약표
| 구분 | 항목 | 경로 | 주요 내용 | 적용 방법 |
|---|---|---|---|---|
| Windows | 설정 파일 | C:\Program Files (x86)\ossec-agent\ossec.conf | 서버 주소, 로그 수집 대상 | notepad로 편집 후 서비스 재시작 |
| Windows | 로그 파일 | C:\Program Files (x86)\ossec-agent\ossec.log | 에이전트 동작 로그 | 문제 발생 시 확인 |
| Linux | 설정 파일 | /var/ossec/etc/ossec.conf | 서버 주소, 로그 수집 대상 | nano/vi로 편집 후 systemctl restart |
| Linux | 로그 파일 | /var/ossec/logs/ossec.log | 에이전트 동작 로그 | tail -f로 실시간 모니터링 |
| 서버 | 클라이언트 키 | /var/ossec/etc/client.keys | 등록된 에이전트 인증 키 | 백업 필수, 무단 수정 방지 |
대시보드 필터링 체크리스트
기본 필터:
- 룰 레벨 7 이상만 표시: rule.level:>=7
- 특정 에이전트 이벤트: agent.name:“DESKTOP-ABC123”
- Sysmon 이벤트: data.win.system.channel:Microsoft-Windows-Sysmon/Operational
- 인증 실패 이벤트: rule.groups:authentication_failed
고급 쿼리:
- PowerShell 실행: data.win.eventdata.commandLine:powershell
- 외부 IP 연결: data.srcip:!192.168.*
- 실패한 로그인 5회 이상: rule.id:5710 AND rule.level:>=7
8. 트러블슈팅
| 문제 | 원인 | 해결 방법 |
|---|---|---|
| Agent가 Never connected 상태 | 방화벽에서 1514/1515 포트 차단 | ufw allow 1514/tcp, ufw allow 1515/tcp 실행, Windows 방화벽에서 포트 허용 규칙 추가, 클라우드 환경이면 보안그룹 설정 확인 |
| Agent가 Disconnected로 변경됨 | 네트워크 단절 또는 에이전트 서비스 중지 | systemctl status wazuh-agent 또는 NET START WazuhSvc 확인, 네트워크 연결 및 DNS 해석 점검, ossec.log에서 “Connection refused” 메시지 확인 |
| Sysmon 로그가 수집되지 않음 | ossec.conf 설정 누락 또는 Sysmon 미설치 | 이벤트 뷰어에서 Sysmon 로그 생성 확인, ossec.conf에 location 태그 추가, WazuhSvc 재시작 |
| Agentless 연결 실패 | SSH 키 인증 설정 오류 | sudo -u ossec ssh user@host 명령으로 비밀번호 없이 접속 테스트, authorized_keys 파일 권한 600 확인, /var/ossec/.ssh/id_rsa 키 파일 존재 여부 점검 |
Today’s Insight:
Wazuh Agent 실습을 통해 호스트 기반 보안 모니터링의 핵심을 체득했다. Agent 방식은 실시간 위협 탐지에 필수적이며, Sysmon과 결합하면 Windows 환경에서도 공격자의 미세한 흔적까지 추적할 수 있다는 것을 확인했다. 특히 에이전트 통신이 암호화되어 있고, 인증 키 기반으로 동작하여 무단 접근이 원천 차단되는 구조가 인상적이었다. 앞으로 Splunk와 통합하여 네트워크 탐지(Suricata)와 호스트 탐지(Wazuh)를 융합한 다층 방어 체계를 구현하면, 내외부 위협을 효과적으로 대응하는 실전 SOC 환경을 완성할 수 있을 것이다.