Elastic Windows Event Log Beats 로그 수집
이 문서에서는 Bindplane 에이전트를 사용하여 Elastic Windows 이벤트 로그 Beats 로그를 Google Security Operations에 수집하는 방법을 설명합니다.
Winlogbeat는 Windows 이벤트 로그를 수집하여 다양한 대상으로 전달하는 Elastic의 Windows 전용 이벤트 로그 전송 에이전트입니다. Windows 시스템에서 Windows 서비스로 실행되며 Application, Security, System 및 기타 Windows 이벤트 로그 채널에서 이벤트를 수집할 수 있습니다.
시작하기 전에
다음 기본 요건이 충족되었는지 확인합니다.
- Google SecOps 인스턴스
- Windows Server 2016 이상 또는 Bindplane 에이전트를 실행하기 위한
systemd가 있는 Linux 호스트 - Bindplane 에이전트와 Logstash 서버 간의 네트워크 연결
- Logstash와 Bindplane 에이전트 간 네트워크 연결
- 프록시 뒤에서 실행하는 경우 Bindplane 에이전트 요구사항에 따라 방화벽 포트가 열려 있는지 확인합니다.
- 이벤트 로그를 수집하기 위해 Winlogbeat가 설치될 Windows 시스템
- Winlogbeat 설치를 위한 Windows 시스템에 대한 관리자 액세스 권한
- 중간 처리를 위한 Logstash 서버 (버전 7.x 또는 8.x)
Google SecOps 수집 인증 파일 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 수집 에이전트로 이동합니다.
수집 인증 파일을 다운로드합니다. Bindplane이 설치될 시스템에 파일을 안전하게 저장합니다.
Google SecOps 고객 ID 가져오기
- Google SecOps 콘솔에 로그인합니다.
- SIEM 설정 > 프로필로 이동합니다.
조직 세부정보 섹션에서 고객 ID를 복사하여 저장합니다.
Bindplane 에이전트 설치
다음 안내에 따라 Windows 또는 Linux 운영체제에 Bindplane 에이전트를 설치합니다.
Windows 설치
- 명령 프롬프트 또는 PowerShell을 관리자로 엽니다.
다음 명령어를 실행합니다.
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet설치가 완료될 때까지 기다립니다.
다음을 실행하여 설치를 확인합니다.
sc query observiq-otel-collector서비스 상태는 실행 중이어야 합니다.
Linux 설치
- 루트 또는 sudo 권한으로 터미널을 엽니다.
다음 명령어를 실행합니다.
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh설치가 완료될 때까지 기다립니다.
다음을 실행하여 설치를 확인합니다.
sudo systemctl status observiq-otel-collector서비스 상태는 active (running)이어야 합니다.
추가 설치 리소스
추가 설치 옵션 및 문제 해결은 Bindplane 에이전트 설치 가이드를 참고하세요.
syslog를 수집하여 Google SecOps로 전송하도록 Bindplane 에이전트 구성
구성 파일 찾기
Linux:
sudo nano /etc/bindplane-agent/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
구성 파일 설정
config.yaml의 전체 내용을 다음 구성으로 바꿉니다.receivers: tcplog: listen_address: "0.0.0.0:1514" exporters: chronicle/winlogbeat: compression: gzip creds_file_path: '<CREDS_FILE_PATH>' customer_id: '<CUSTOMER_ID>' endpoint: <REGION_ENDPOINT> log_type: ELASTIC_WINLOGBEAT raw_log_field: body ingestion_labels: env: production source: winlogbeat service: pipelines: logs/winlogbeat_to_chronicle: receivers: - tcplog exporters: - chronicle/winlogbeat다음 자리표시자를 바꿉니다.
수신기 구성:
listen_address: 포트 1514 (TCP)에서 모든 인터페이스를 수신하려면0.0.0.0:1514로 설정합니다. 필요한 경우 포트 번호를 변경할 수 있지만 Logstash syslog 출력 구성과 일치해야 합니다.
내보내기 도구 구성:
<CREDS_FILE_PATH>: 수집 인증 파일의 전체 경로- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
<CUSTOMER_ID>: 이전 단계의 고객 ID<REGION_ENDPOINT>: 리전 엔드포인트 URL:- 미국:
malachiteingestion-pa.googleapis.com - 유럽:
europe-malachiteingestion-pa.googleapis.com - 아시아:
asia-southeast1-malachiteingestion-pa.googleapis.com - 전체 목록은 리전 엔드포인트를 참고하세요.
- 미국:
구성 예:
receivers: tcplog: listen_address: "0.0.0.0:1514" exporters: chronicle/winlogbeat: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: 'a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6' endpoint: malachiteingestion-pa.googleapis.com log_type: ELASTIC_WINLOGBEAT raw_log_field: body ingestion_labels: env: production source: winlogbeat service: pipelines: logs/winlogbeat_to_chronicle: receivers: - tcplog exporters: - chronicle/winlogbeat
구성 파일 저장
수정 후 파일을 저장합니다.
- Linux:
Ctrl+O,Enter,Ctrl+X순서로 누릅니다. - Windows: 파일 > 저장을 클릭합니다.
Bindplane 에이전트를 다시 시작하여 변경사항 적용
Linux에서 Bindplane 에이전트를 다시 시작하려면 다음 단계를 따르세요.
다음 명령어를 실행합니다.
sudo systemctl restart observiq-otel-collector서비스가 실행 중인지 확인합니다.
sudo systemctl status observiq-otel-collector로그에서 오류를 확인합니다.
sudo journalctl -u observiq-otel-collector -f
Windows에서 Bindplane 에이전트를 다시 시작하려면 다음 단계를 따르세요.
다음 옵션 중 하나를 선택합니다.
관리자 권한으로 명령 프롬프트 또는 PowerShell:
net stop observiq-otel-collector && net start observiq-otel-collector서비스 콘솔:
Win+R키를 누르고services.msc을 입력한 다음 Enter 키를 누릅니다.- observIQ OpenTelemetry Collector를 찾습니다.
- 마우스 오른쪽 버튼을 클릭하고 다시 시작을 선택합니다.
서비스가 실행 중인지 확인합니다.
sc query observiq-otel-collector로그에서 오류를 확인합니다.
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
Logstash 설치 및 구성
Winlogbeat에서 이벤트를 수신하고 syslog를 통해 Bindplane 에이전트로 전달하려면 Logstash가 중개자로 필요합니다. Winlogbeat에는 기본 syslog 출력 기능이 없습니다.
Logstash 설치
- Elastic 다운로드 페이지에서 Logstash를 다운로드합니다.
- Windows 또는 Linux 서버에 Logstash를 설치합니다.
Linux (Debian/Ubuntu):
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - sudo apt-get install apt-transport-https echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list sudo apt-get update && sudo apt-get install logstashLinux (RHEL/CentOS):
sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch sudo tee /etc/yum.repos.d/logstash.repo <<EOF [logstash-8.x] name=Elastic repository for 8.x packages baseurl=https://artifacts.elastic.co/packages/8.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF sudo yum install logstashWindows:
- Elastic 다운로드 페이지에서 ZIP 파일을 다운로드합니다.
C:\logstash에 추출합니다.
Logstash 파이프라인 구성
새 파이프라인 구성 파일을 만듭니다.
Linux:
sudo nano /etc/logstash/conf.d/winlogbeat-to-syslog.confWindows:
notepad "C:\logstash\config\winlogbeat-to-syslog.conf"
다음 구성을 추가합니다.
input { beats { port => 5044 } } output { syslog { host => "<BINDPLANE_AGENT_IP>" port => 1514 protocol => "tcp" rfc => "rfc5424" appname => "winlogbeat" facility => "user-level" severity => "informational" } }<BINDPLANE_AGENT_IP>를 Bindplane 에이전트를 실행하는 서버의 IP 주소로 바꿉니다.
Logstash 구성 예
input { beats { port => 5044 } } output { syslog { host => "192.168.1.100" port => 1514 protocol => "tcp" rfc => "rfc5424" appname => "winlogbeat" facility => "user-level" severity => "informational" } }
Logstash 시작
Linux:
Logstash를 시작합니다.
sudo systemctl start logstash sudo systemctl enable logstashLogstash가 실행 중인지 확인합니다.
sudo systemctl status logstashLogstash 로그를 확인합니다.
sudo tail -f /var/log/logstash/logstash-plain.log
Windows:
cd C:\logstash\bin logstash.bat -f C:\logstash\config\winlogbeat-to-syslog.conf프로덕션 용도로는 NSSM 또는 유사한 도구를 사용하여 Logstash를 Windows 서비스로 설치합니다.
Windows 시스템에 Winlogbeat 설치
Winlogbeat 다운로드
- Elastic 다운로드 페이지에서 Winlogbeat를 다운로드합니다.
- Windows용 ZIP 또는 MSI 설치 프로그램을 선택합니다.
Winlogbeat 설치
MSI 설치 프로그램 사용:
- MSI 설치 프로그램을 실행합니다.
- 설치 마법사를 따릅니다.
- 기본 위치(
C:\Program Files\Winlogbeat)에 설치합니다.
ZIP 파일 사용:
- ZIP 파일의 압축을
C:\Program Files\Winlogbeat에 풉니다. - PowerShell을 관리자로 엽니다.
Winlogbeat 디렉터리로 이동합니다.
cd 'C:\Program Files\Winlogbeat'설치 스크립트를 실행합니다.
.\install-service-winlogbeat.ps1
- ZIP 파일의 압축을
Logstash로 로그를 보내도록 Winlogbeat 구성
Winlogbeat 구성 파일을 엽니다.
notepad "C:\Program Files\Winlogbeat\winlogbeat.yml"수집할 이벤트 로그를 구성합니다.
winlogbeat.event_logs섹션을 찾아 다음과 같이 구성합니다.winlogbeat.event_logs: - name: Application ignore_older: 72h - name: System - name: Security - name: Microsoft-Windows-Sysmon/Operational ignore_older: 72h - name: Windows PowerShell event_id: 400, 403, 600, 800 - name: Microsoft-Windows-PowerShell/Operational event_id: 4103, 4104, 4105, 4106 - name: ForwardedEvents tags: [forwarded]각 줄의 시작 부분에
#를 추가하여 Elasticsearch 출력 섹션을 주석 처리합니다.#output.elasticsearch: # hosts: ["localhost:9200"]Logstash 출력 섹션의 주석을 해제하고 구성합니다.
output.logstash: hosts: ["<LOGSTASH_SERVER_IP>:5044"]<LOGSTASH_SERVER_IP>를 Logstash 서버의 IP 주소로 바꿉니다.
Winlogbeat 구성 예시
winlogbeat.event_logs: - name: Application ignore_older: 72h - name: System - name: Security - name: Microsoft-Windows-Sysmon/Operational ignore_older: 72h output.logstash: hosts: ["192.168.1.50:5044"]
구성 파일 저장
저장하고 파일을 닫습니다.
Winlogbeat 서비스 시작
- PowerShell을 관리자로 엽니다.
Winlogbeat 서비스를 시작합니다.
Start-Service winlogbeat서비스가 실행 중인지 확인합니다.
Get-Service winlogbeat상태가 실행 중으로 표시됩니다.
Winlogbeat 로그에서 오류를 확인합니다.
Get-Content "C:\ProgramData\winlogbeat\Logs\winlogbeat" -Tail 50
로그 흐름 확인
Winlogbeat-Logstash 연결 확인
Logstash 서버에서 Logstash 로그를 확인합니다.
Linux:
sudo tail -f /var/log/logstash/logstash-plain.logWindows:
type C:\logstash\logs\logstash-plain.log
Beats 연결을 나타내는 메시지를 찾습니다.
[INFO ][logstash.inputs.beats] Beats inputs: Starting input listener {:address=>"0.0.0.0:5044"}
Logstash와 Bindplane 에이전트 연결 확인
Bindplane 에이전트 서버에서 에이전트 로그를 확인합니다.
Linux:
sudo journalctl -u observiq-otel-collector -fWindows:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
로그 수집이 성공했음을 나타내는 메시지를 찾습니다.
Google SecOps에서 로그 확인
- Google SecOps 콘솔에 로그인합니다.
- 검색으로 이동합니다.
검색 쿼리를 실행하여 Winlogbeat 로그가 수집되고 있는지 확인합니다.
metadata.log_type = "ELASTIC_WINLOGBEAT"Windows 이벤트 로그가 검색 결과에 표시되는지 확인합니다.
문제 해결
Winlogbeat가 Logstash에 연결되지 않음
Winlogbeat와 Logstash 간의 네트워크 연결을 확인합니다.
Test-NetConnection -ComputerName <LOGSTASH_IP> -Port 5044Windows 방화벽 규칙이 포트 5044에서 아웃바운드 연결을 허용하는지 확인합니다.
Logstash가 포트 5044에서 수신 대기하는지 확인합니다.
Linux:
sudo netstat -tulpn | grep 5044Windows:
netstat -an | findstr 5044
Logstash가 Bindplane 에이전트로 전달되지 않음
Logstash와 Bindplane 에이전트 간의 네트워크 연결을 확인합니다.
Linux:
telnet <BINDPLANE_IP> 1514Windows:
Test-NetConnection -ComputerName <BINDPLANE_IP> -Port 1514
방화벽 규칙이 포트 1514에서 TCP 연결을 허용하는지 확인합니다.
Bindplane 에이전트가 포트 1514에서 리슨하는지 확인합니다.
Linux:
sudo netstat -tulpn | grep 1514Windows:
netstat -an | findstr 1514
로그가 Google SecOps에 표시되지 않음
- 고객 ID와 수집 인증 파일이 올바른지 확인합니다.
- 인증 오류가 있는지 Bindplane 에이전트 로그를 확인합니다.
- 리전 엔드포인트가 Google SecOps 인스턴스 리전과 일치하는지 확인합니다.
log_type이 표시된 대로 정확하게ELASTIC_WINLOGBEAT로 설정되어 있는지 확인합니다.
UDM 매핑 테이블
이 파서에는 필드 매핑 정보를 사용할 수 없습니다.
도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가에게 문의하여 답변을 받으세요.