Zeek 및 SCP 설치 및 설정

Zeek

NIDS : 우리망에 공격자가 있는지 탐지하는 시스템

● 네트워크 칩입탐지시스템(NIDS)

   - Bro 또는 프로토콜 분석

   - 네트워크를 모니터링 할 수 있는 오픈 소스 프로그램

● IP 헤더와 TCP 헤더를 분석하여 로그 생성

● 응용 프로토콜의 헤더를 분석하여 로그 생성

   - FTP, HTTP, SMTP, X.509...

● zeek은 패킷을 수집하고, 헤더를 분석하여 프로토콜별 분류를 하고, 각각의 파일에 로그를 생성

   - ★ 로그에는 반드시 시간이 기록되어야함!! ★

 

zeek      a(192.168.1.1:4043)      b(192.168.1.2:80)

=> a가 b에 접속한 정보가 zeek으로 넘어가게 되고, a가 b로 전송한 데이터의 헤더들을 보고 zeek은 로그를 남김

 

설치환경

이 작업을 하는 이유?

현재 hub를 사용하고 있기에 관제범위를 넓힐 필요는 없음. 즉, 포트미러링을 하거나 tap을 사용할 필요가 없음.

ZeekIDS는 우리망에 떠돌아다니는 모든 패킷을 담아서 로그로 만들어 기록을 할 것임.

그것을 압축하여 중앙관제에게 넘길 예정

중앙관제(Splunk)에서는 이 로그들을 분석하여 어떤 패턴의 데이터들이 우리망에 많이 돌아다니는지 확인하고, 이상징후를 탐지할 예정

=> 네트워크 로그를 만들어 중앙관제로 보내는 것!


 

1. (Ubuntu : ZeekIDS) Zeek 설치

0) 관리자로 로그인

$ sudo su - root

1234

 

1) 설치 전 환경설정

# apt update

# apt-get install curl gnupg2 wget #zeek을 설치하기 위해 필요로 하는 유틸리티 설치

 

# curl -fsSL https://download.opensuse.org/repositories/security:zeek/xUbuntu_20.04/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/security_zeek.gpg

=> 프로그램 설치를 하기위해 인증작업이 필요한데, 사이트로 이동하여 인증키를 다운받아 저장소에 gpg파일 저장

 

# echo 'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_20.04/ /' | tee /etc/apt/sources.list.d/security:zeek.list 

=> zeek을 설치할 수 있는 저장소 위치를 등록

 

2) Zeek 설치

# apt update -y
# apt-get install zeek -y

=> 창이 나오면 전체 enter 또는 오른쪽 방향키

=> 이 부분 뭐가 많이 나옴

 

3) PATH 설정

# echo "export PATH=$PATH:/opt/zeek/bin" >> ~/.bashrc #어디서나 zeek을 운영할 수 있도록 경로설정
# source ~/.bashrc
# zeek --version #정상적으로 설치되었는지 확인

 

4) Zeek 환경설정

# cd /opt/zeek/etc

# cat networks.cfg

# nano networks.cfg

networks.cfg 관제할 대역대 설정

=> 관제할 망의 주소 등록

 

# ifconfig

=> ens33

 

# cat node.cfg

=> interface=eth0

=> 이 부분을 ens33으로 변경해줘야함

=> 관제할 때 사용할 랜카드 설정

node.cfg 랜카드 주소 설정

 

# nano /opt/zeek/etc/networks.cfg #파일 수정

# cat node.cfg #파일 수정 확인

 

5) Zeek 활성화

# zeekctl check

# zeektctl deploy

# zeekctl status

 

# ls-l /opt/zeek/spool/zeek

=> 로그들이 생성된 것을 확인할 수 있음

=> 헤더를 보고 로그들을 분석하고 분류해서 파일로 만들어줌

=> Kali에서 Metasploitable, WebServer에 접속하는 정보들이 전부 ZeekIDS로 넘어가게 됨.

=> 망에서 벌어지는 모든 네트워크 트래픽들은 ZeekIDS로 넘어가게 되는데, 이때 HTTP, SSL, DNS 등 굉장히 많은 트래픽이 넘어감. 

 

[추가]

kali에서 https://192.168.10.30 접속

=> 30은 WebServer 접속

=> 접속 안되면 서비스, 방화벽 열어줘야함

=> Webserver에서 다음 명령어 입력

      # service httpd start

      # service iptables start

kali에서 https://192.168.10.60 접속

ZeekIDS에서 명령어 ls-l /opt/zeek/spool/zeek 입력

=> 더 많은 로그 파일 생성되어있음을 확인 가능

=> 얼마 후 확인해보면 로그의 용량이 줄어든 것을 확인할 수 있음

=> 이 로그를 항상 이곳에 가지고 있지는 않음. 용량이 정해져 있기 때문에

=> 이곳은 실시간으로 수집하고 있는 패킷들을 저장하는 공간임!!

=> 그럼 저장되었던 로그들은 버려지는가? 아님.

=> 일정 시간이 지나면 압축하여 다른 곳에 저장됨

 

# cd /opt/zeek

# ls -l #  logs 확인

# cd logs

# ls -l #2024-01-09 확인 가능

# cd 2024-01-09

# ls -l

=> 압축한 형태로 로그가 저장되어 있음을 확인


전체 명령어 정리(복사 가능)

0) 관리자로 로그인
$ sudo su - root
1234

1) 설치 전 환경설정
# apt update
# apt-get install curl gnupg2 wget
# curl -fsSL https://download.opensuse.org/repositories/security:zeek/xUbuntu_20.04/Release.key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/security_zeek.gpg
# echo 'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_20.04/ /' | tee /etc/apt/sources.list.d/security:zeek.list

2) Zeek 설치
# apt update -y
# apt-get install zeek -y

3) PATH 설정
# echo "export PATH=$PATH:/opt/zeek/bin" >> ~/.bashrc
# source ~/.bashrc
# zeek --version

4) Zeek 환경설정
# cd /opt/zeek/etc
# cat networks.cfg
# nano networks.cfg
# ifconfig
# cat node.cfg
# nano /opt/zeek/etc/networks.cfg
# cat node.cfg

5) Zeek 활성화
# zeekctl check
# zeektctl deploy
# zeekctl status
# ls-l /opt/zeek/spool/zeek

[추가]
(WebServer에서)
# service httpd start
# service iptables start
(ZeekIDS에서)
# ls-l /opt/zeek/spool/zeek

 

2. SCP 설치 및 로그 전송

zeek에서는 로그를 모으고 그것을 중앙으로 전송! 실제 분석은 중앙서버(Splunk)에서 하게 됨.

왜?? 실제로 망의 규모가 크면 zeek에서 기록되는 로그들이 굉장히 많기 때문에 대량의 패킷을 따로 분석할 별도의 서버가 필요함

zeek에서는 분석하기 어려움 -> 분석기를 사용해야함 -> 분석기를 가지고 있는 중앙관제로 넘기는 것 

 

1) Splunk에서 SCP를 이용하기 위해 SSH 서비스를 활성화

# apt-get install -y openssh-server

# ufw allow 22/tcp

 

2) ZeekIDS에서 SCP를 이용하기 위해 SSH 서비스를 활성화

# apt-get install -y openssh-server

 

3) ZeekIDS에서 Splunk로 http.log 넘기기

# spc http.log splunk@192.168.10.10:/tmp

 

4) Splunk에서 로그 확인

# cd /tmp

# ls -l