Search

Zeek Splunk 연동 가이드 (Universal Forwarder)

위 과정에서 이어지는 문서다.
Zeek 로그를 JSON 형식으로 바꾸고 Splunk 사의 Universal Forwader를 통해 생성된 Zeek로그를 Splunk의 zeek index로 발송할 것이다.

 Zeek?

NIDS (Network + IDS)
Zeek의 목적은 네트워크 트래픽을 검사하고 보이는 활동을 설명하는 다양한 로그를 생성하는 것으로 http, dns, ssh, ssl 등 다양한 통신에 대한 로그를 만들어 남겨준다.
보통 이것만으로는 로그를 보기 힘들기 때문에 ELK나 Splunk 등 SIEM에 연동하여 로그를 기반으로 악성 행위는 없는지 분석하곤 한다.
헤더 정보 중심으로 수집하는 만큼 풀패킷 정보를 얻기 위해서는 Snor나 Suricata 등의 다른 오픈소스 기반 툴과 연계해야한다.

Zeek to Splunk

다음 문서를 참조했고 설치는 우분투 22.04 이미지 위에 설치했다.
공식 문서와 블로그에서 참조 및 인용했다.

🅐 Zeek 로그를 JSON 형식으로 출력

zeek 계정으로 접속 실행중인 Zeek을 중지한다.
zeekctl stop
Bash
복사
설정 파일을 편집하고 다음 내용을 최하단에 추가한다.
vi /opt/zeek/share/zeek/site/local.zeek
Bash
복사
# Output to JSON @load policy/tuning/json-logs.zeek
Bash
복사
Zeek을 다시 시작하고 현재 로그를 보고 JSON 형식이 정상적으로 나타나는지 확인한다.
zeekctl deploy cd /opt/zeek/logs/current less conn.log #check Log as JSON
Bash
복사

🅑 splunk 로컬 계정 생성

splunk 계정을 생성하고 유니버셜포워더를 설치할 splunkforwader 디렉토리와 권한을 설정한다.
sudo adduser splunk sudo usermod -aG splunk splunk sudo usermod -aG zeek splunk sudo usermod -aG sudo splunk sudo passwd splunk
Bash
복사

🅒 유니버셜 포워더 설치

1) 디렉토리 생성

유니버셜 포워더 설치를 위한 디렉토리와 권한을 설정한다.
su splunk sudo mkdir /opt/splunkforwarder sudo chown -R splunk:splunk /opt/splunkforwarder sudo chmod 750 /opt/splunkforwarder export SPLUNK_HOME="/opt/splunkforwarder"
Bash
복사

2) 유니버셜 포워더 다운로드

유니버셜포워더 다운 및 최신 버전은 여기서 확인한다.
Ubuntu 22.04 버전을 사용 중으로 해당 방식으로 다운로드한다.
cd /opt/splunkforwarder/ wget -O splunkforwarder-9.0.4-de405f4a7979-Linux-x86_64.tgz "https://download.splunk.com/products/universalforwarder/releases/9.0.4/linux/splunkforwarder-9.0.4-de405f4a7979-Linux-x86_64.tgz" tar xvzf splunkforwarder-9.0.4-de405f4a7979-Linux-x86_64.tgz mv /opt/splunkforwarder/splunkforwader/* /opt/splunkforwarder
Bash
복사

3) 포워더 실행

포워더를 실행한다. (최초 실행 시 관리자 권한과 비밀번호를 설정한다.)
cd /opt/splunkforwarder/bin ./splunk start --accept-license
Bash
복사

4) 최소권한 설정

최소 권한을 위해 boot-start를 비활성화 한다.
sudo /opt/splunkforwarder/bin/splunk disable boot-start
Bash
복사

🅓 Splunk Zeek 인덱스 생성

필수적이지는 않지만 Zeek 만을 위한 인덱스를 생성하는 것이 데이터를 분석하는데 좋다.
Splunk 로그인 후 우측 상단에서 아래 Indexes로 접근한다.
인덱스 페이지에서 새 인덱스(New Index)를 클릭한다.
인덱스 이름 zeek을 입력하고 저장해 새 인덱스를 생성한다.

🅔 Splunk 유니버셜 포워더 설정

splunk 사용자로 로그인하고 우선 포워더를 중지한다.
cd /opt/splunkforwader/bin ./splunk stop
Bash
복사

1) limits.conf

Zeek은 로그 전송량이 상당하므로 제한을 해제해야한다.
데이터 처리 제한을 제거하기 위해 설정 파일 값을 생성/수정한다.
디렉토리 중간 값이 default가 아닌 local이다. 로컬에 있는 설정 값이 디폴트를 덮어 쓴다고 보면 된다.
# How to find line: cat limits.conf | grep -n "thruput" vi /opt/splunkforwarder/etc/system/local/limits.conf # 참조 vi /opt/splunkforwader/etc/system/default/limits.conf
Bash
복사
해당 부분을 찾아 0으로 생성/수정하면 된다.
# means unlimited [thruput] maxKBps = 0
Bash
복사

2) inputs.conf

전송하길 원하는 Zeek로그를 경로와 index, sourcetype을 지정해 전송한다.
Corelight for Splunk App 을 사용하는 경우 sourcetype 접두사를 ‘corelight’로, 아닐 경우 ‘zeek’을 접두사로 사용해주면 된다.
host = <string> : 데이터 전송 시, 호스트명
vi /opt/splunkforwarder/etc/system/local/inputs.conf
Bash
복사
[default] host = corelight [monitor:///opt/zeek/logs/*/conn*.log] _TCP_ROUTING = * index = zeek sourcetype = corelight_conn [monitor:///opt/zeek/logs/*/dns*.log] _TCP_ROUTING = * index = zeek sourcetype = corelight_dns [monitor:///opt/zeek/logs/*/software*.log] _TCP_ROUTING = * index = zeek sourcetype = corelight_software [monitor:///opt/zeek/logs/*/smtp*.log] _TCP_ROUTING = * index = zeek sourcetype = corelight_smtp [monitor:///opt/zeek/logs/*/ssl*.log] _TCP_ROUTING = * index = zeek sourcetype = corelight_ssl [monitor:///opt/zeek/logs/*/ssh*.log] _TCP_ROUTING = * index = zeek sourcetype = corelight_ssh [monitor:///opt/zeek/logs/*/x509*.log] _TCP_ROUTING = * index = zeek sourcetype = corelight_x509 [monitor:///opt/zeek/logs/*/ftp*.log] _TCP_ROUTING = * index = zeek sourcetype = corelight_ftp [monitor:///opt/zeek/logs/*/http*.log] _TCP_ROUTING = * index = zeek sourcetype = corelight_http [monitor:///opt/zeek/logs/*/rdp*.log] _TCP_ROUTING = * index = zeek sourcetype = corelight_rdp [monitor:///opt/zeek/logs/*/smb_files*.log] _TCP_ROUTING = * index = zeek sourcetype = corelight_smb_files [monitor:///opt/zeek/logs/*/smb_mapping*.log] _TCP_ROUTING = * index = zeek sourcetype = corelight_smb_mapping [monitor:///opt/zeek/logs/*/snmp*.log] _TCP_ROUTING = * index = zeek sourcetype = corelight_snmp [monitor:///opt/zeek/logs/*/sip*.log] _TCP_ROUTING = * index = zeek sourcetype = corelight_sip [monitor:///opt/zeek/logs/*/files*.log] _TCP_ROUTING = * index = zeek sourcetype = corelight_files
Bash
복사

3) outputs.conf

어떤 서버로 보낼 것인가를 설정하는 부분이다.
vi /opt/splunkforwarder/etc/system/local/outputs.conf
Bash
복사
각 서버 ip를 설정해주면 된다.
[tcpout] defaultGroup = group_name [tcpout:group_name] server = splunkserver:9997, splunkserver2:9997,splunkserver3:9997
Bash
복사

4) Splunk 시작

cd /opt/splunkforwarder/bin ./splunk start
Bash
복사
일정 시간이 지난 뒤 Splunk에서 검색해보면 로그가 들어오는 것을 확인할 수 있다.

다른 포스트

✓ 다른 [정리] 포스트

베트남 환전 왜 한국에서 하면 안될까? (한국 vs 공항 vs 금은방)
Travel
베트남 환전 왜 한국에서 하면 안될까? (한국 vs 공항 vs 금은방)
Travel
Load more
︎ 더 많은 게시물을 보려면
︎ 작성자가 궁금하면?
 2023. Absolroot all rights reserved.