SK shieldus Rookies/클라우드 기반 시스템 운영ㆍ구축 실무

[SK shieldus Rookies 16기] Zeek 환경 구성

su. 2024. 1. 9. 16:39
[SK shieldus Rookies 16기] 클라우드 기반 스마트 융합보안 과정
클라우드기반 시스템 운영 구축 실무 #05

 

 

Zeek

•  네트워크 침입탐지시스템(NIDS)
    - Bro에서 zeek으로 바뀌면서 프로토콜 분석에 이용하게 되었다
    - 네트워크를 모니터링 할 수 있는 오픈 소스 프로그램
•  IP헤더와 TCP 헤더를 분석하여 로그를 생성한다
•  응용 프로토콜의 헤더를 분석하여 로그를 생성한다
    - FTP, HTTP, SMTP, X.509 ..

 

HIDS: 한 Host 내에서 이상 징후 탐지

 

 

Zeek 설치 방법

망의 트래픽을 zeek에 모두 넘기려면, 확장이 필요하다

- Switch의 SPAN 또는 Port Mirroring

- TAP 이용

 

그러나, 가상 머신은 HUB를 이용하므로 확장이 필요하지 않다.

 

Zeek 설치 환경

 

 

1.  [ZeekIDS - Ubuntu]  Zeek 설치

Step 1.  설치 전 환경 설정

sudo su -

apt update

apt-get install curl gnupg2 wget -y

 

curl: 원격 서버에서 또는 원격 서버로 데이터를 전송하는 도구. HTTP, HTTPS, SCP, SFTP, FTP 등 지원되는 프로토콜을 사용하여 데이터를 다운로드/업로드 할 수 있다.
gnupg2: 데이터 암호화, 디지털 서명을 위한 도구. 공개 키 암호화와 관련된 모든 것을 처리하며, 사용자는 신뢰할 수 있는 소프트웨어를 통해 안전하게 통신할 수 있다.
wget: 웹 서버에서 파일이나 웹 페이지를 다운로드하는 데 사용되는 도구. HTTP, HTTPS, FTP 프로토콜을 지원. 웹 사이트를 미러링하는 데 사용될 수 있다.

 

# 지정된 사이트로부터 키 저장

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

 

 

# zeek에 저장소 등록
echo 'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_20.04/ /' | tee /etc/apt/sources.list.d/security:zeek.list

 

 

Step 2.  Zeek 설치

# 변경된 저장소로부터 업데이트 받기
apt update -y

# zeek 설치
apt-get install zeek -y

보라색 화면이 뜨면 스페이스바 등의 키를 눌러 진입한다

로컬 전용 선택, <Enter>

 

 

이메일 입력(zeekids@test.com), <Enter>

 

 

 

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

v 6.1.0

 

 

Step 4.  Zeek Configuration 설정

cd /opt/zeek/etc

# networks.cfg, node.cfg 파일을 확인하고 수정

ls -l

 

# 관제할 범위 설정

nano networks.cfg

192.168.0.0/16  Private IP space

 

ctrl + o / Enter / ctrl + x
ifconfig

 

# 모니터링할 LAN Card 설정

nano node.cfg

[zeek]
type=standalone
host=localhost
interface=ens33

 

 

 

Step 5.  Zeek 활성화

zeekctl check
zeekctl deploy

# 상태 보기
zeekctl status

 


ls -l /opt/zeek/spool/zeek

 

실시간 로그 디렉터리 - 일정 시간 후 초기화된다

 

 

< 로그 생성하기 >

[WebServere - CentOS]

"HTTPS 구성 실습"에서 만든 페이지 접속 가능하게 하는 설정

service httpd start

service iptables start

 

[kali]에서도 로그 생성하려면

Firefox > 설정 > 네트워크 설정 > No porxy 설정 후 진행

 

 

192.168.10.30 접속하거나

192.168.10.60 (metasploit) 기본 페이지 접속하는 등 이것 저것 클릭 수행

 

 

< 로그 확인 >

# 실시간 로그가 저장되는 디렉터리

cd /opt/zeek/spool/zeek

nano http.log

http 헤더의 내용으로 log 필드 내용이 채워진다

 

# 일정 시간이 지나면 /logs/날짜 폴더 아래에 압축된 파일로 저장되고, 실시간 로그는 초기화된다

/opt/zeek/spool/zeek/logs/2024-01-09

 

 

 

Zeek에서 수행하는 것

- 패킷 수집

- 헤더 분석

- 프로토콜 분류

- 프로토콜 로그 생성

➞ 이렇게 수집한 로그를 분석기가 있는 중앙 관제 서버로 전송해 분석할 수 있도록 한다

FTP(File Transfer Protocol) 서버를 이용하거나, 오늘 실습할 openssh를 이용하는 방법이 있다

 

 

# 전송 설정

2.  [SplunkServer & ZeekIDS - Ubuntu]  SCP 설치

[SplunkServer - Ubuntu]

sudo su -

 

SSH 서비스 활성화

- scp를 이용하기 위해서는 ssh 서비스가 활성화되어야 한다

[SplunkServer & ZeekIDS]

apt-get install –y openssh-server

 

[SplunkServer]

# 방화벽 openssh 22번 포트 허용

ufw allow 22/tcp

# 방화벽 상태 확인

ufw status

# inactive인 경우

ufw enable

 

/tmp 디렉터리를 보면, 't' sticky bit가 설정된 걸 볼 수 있다
따라서, 누구나 사용할 수 있는 공용 디렉터리이고, (파일/디렉터리 생성)
dir소유자, 파일 소유자, 슈퍼유저만 파일을 삭제하거나 수정할 수 있다
이 디렉터리로 zeek로그 파일을 전송받을 것이다.

 

 

[ZeekIDS]

SCP를 이용해 Zeek 로그 파일을 SplunkServer로 전송

압축 파일을 전송하는 것이 맞지만, 원활한 확인을 위해 실시간 로그 파일 하나를 보내본다

# scp [전송파일명] [서버계정명]@[전송받을 서버]:[전송받을 서버 디렉터리]

cd /opt/zeek/spool/zeek

scp http.log splunk@192.168.10.10:/tmp

yes

1234

 

 

[SplunkServer]

전송받은 파일 확인

cd /tmp

ls -l