지금 운영하고있는 방화벽(pfsense)에서 suricata(IPS)를 운영하고있는데 여기 탐지된 suricata로그를 Splunk를 통해서 보고자 한다.
pfSense에 Splunk Forwarder 설치해서 진행할 예정이므로 pfSense에 ssh접근도 미리해놓자.
구축 환경
pfSense 2.4.4
Splunk 8.0.2
SplunkForwader 설치(pfSense 서버에)
2.4.4-p3 버전은 FreeBSD 11.2버전이다.
https://www.splunk.com/en_us/download/universal-forwarder.html#tabs/freebsd
다운로드 받아서 pfSense 서버로 옮기도록하자.
tar xJfP splunkforwarder-8.0.2-a7f645ddaf91-freebsd-11.1-amd64.txz
로 splunkforwarder 설치
SplunkForwarder 구성
Splunk에 데이터를 전달하기 위해서는 Forwarder에서도 아웃풋 설정이 필요하다.
vi /opt/splunkforwarder/etc/system/local/outputs.conf
[tcpout]
defaultGroup=my_indexers
[tcpout:my_indexers]
server=192.168.x.x:9999 //pfsense outputip와 받을 포트 임의지정
이제 전달할 데이터(Suricata) 구성
pfSense > Services > Suricata 의 WAN configure로 들어가서
설정후 Save
수리카타 재시작을하면 아래와같이 eve.json 파일이 생성되는걸 확인할 수 있다.
이제 보낼 데이터 input.conf 생성
vi /opt/splunkforwarder/etc/system/local/inputs.conf
[monitor:///var/log/suricata/suricata_em047481/eve.json]
sourcetype=suricata
이렇게 하면 Suricata 데이터를 전송할 pfsense 셋팅은 완료된다.
이제 Splunk 서버설정
Splunk Forwarder의 데이터 수신을 위한 Splunk 서버 / 인덱서 구성
vi /opt/splunk/etc/system/local/inputs.conf
[splunktcp://:9999]
disabled = false
sourcetype = suricata
connection_host = none
compressed = true
json 파일을 읽을수 있도록 셋팅
vi /opt/splunk/etc/system/local/props.conf
[suricata]
KV_MODE = json
NO_BINARY_CHECK = 1
TRUNCATE = 0
이제 스플렁크를 재 시작 후 9999포트가 열리는지 확인해보자.
/opt/splunk/bin/splunk restart
netstat -lntp 로 포트 확인
이제 방화벽도 오픈
firewall-cmd --zone=public --permanent --add-port=9999/tcp
firewall-cmd --reload
이제 pfsense 에서 Splunk로 통신이 되는지 확인해보자.
telnet 스플렁크ip 포트
Splunk Forwarder 실행(pfSense)
다시 pfSense 터미널 접근 후
/opt/splunkforwarder/bin/splunk list forward-server
splunk 계정이랑 pw넣으면 된다. 그리고 이제 시작
/opt/splunkforwarder/bin/splunk start
시작하고 tail -f /opt/splunkforwarder/var/log/splunk/splunkd.log 로 로그를 확인해주자
warning이 없으면 성공적..
스플렁크 웹 SplunkForwarder 활성화
웹 접근 후 로그인 > 앱 > 앱관리 > SplunkForwarder 활성화
활성화 후 포워더 인스턴스를 보고있으면 아까 등록한 pfSense가 나오는걸 확인할 수 있다.