네트워크 보안 · 5 min read · Sep 12, 2025
우분투 24.04에 Zeek 네트워크 보안 모니터링 도구 설치하는 방법

Zeek (구 Bro)는 네트워크 보안 모니터링을 위한 무료 오픈 소스 플랫폼입니다. 이는 의심스럽거나 악의적인 활동을 조사하는 강력한 수동 네트워크 트래픽 분석기입니다. Zeek는 네트워크 보안 모니터(NSM)로 사용될 수 있으며, 보안 도메인에서 성능 측정 및 문제 해결에 이르기까지 다양한 트래픽 분석을 지원합니다.
이 튜토리얼에서는 우분투 24.04 서버에 Zeek 네트워크 보안 모니터링 도구를 설치하는 방법을 배웁니다. 또한 Zeek를 클러스터 모드로 실행하는 방법, ‘zeek-cut’ 명령으로 Zeek 로그를 파싱하는 방법, ‘jq’ 유틸리티로 Zeek JSON 로그를 생성하고 파싱하는 방법도 배웁니다.
전제 조건
시작하기 전에 다음 사항을 확인하세요:
- 우분투 24.04 서버
- 관리자 권한이 있는 비루트 사용자
Zeek 설치하기
Zeek는 유닉스 계열 운영 체제에서 사용하는 네트워크 보안 모니터링 도구입니다. 여러 방법으로 설치할 수 있습니다. 이 예제에서는 OpenSUSE 빌드 서비스의 APT 패키지 관리자를 사용하여 우분투 24.04 서버에 Zeek를 설치합니다.
먼저 아래 명령어를 실행하여 Zeek 저장소를 우분투 시스템에 추가합니다.
echo 'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_24.04/ /' | sudo tee /etc/apt/sources.list.d/security:zeek.list이제 아래 명령어로 Zeek 저장소의 GPG 키를 다운로드하고 추가합니다.
curl -fsSL https://download.opensuse.org/repositories/security:zeek/xUbuntu_24.04/Release.key |
gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/security_zeek.gpg > /dev/nullZeek GPG 키와 저장소가 추가되면 아래 ‘ apt ‘ 명령어를 실행하여 우분투 패키지를 업데이트합니다.
sudo apt update이제 아래 ‘ apt ‘ 명령어를 실행하여 ‘ zeek ‘ 패키지를 확인할 수 있습니다. 여러 Zeek 버전을 볼 수 있습니다.
sudo apt search zeek
sudo apt-cache policy zeek
다음으로 아래 ‘ apt ‘ 명령어로 Zeek를 설치합니다. 이 예제에서는 Zeek LTS를 설치합니다.
sudo apt install zeek설치를 확인하려면 ‘ Y ‘를 입력합니다.

설치가 완료되면 ‘ /opt/zeek/bin ‘ 디렉토리를 ‘ ~/.bashrc ‘ 파일을 통해 시스템 PATH에 추가합니다. 그런 다음 ‘ ~/.bashrc ‘ 파일을 다시 로드하여 새 변경 사항을 적용합니다. 이렇게 하면 터미널을 통해 Zeek 명령줄을 실행할 수 있습니다.
echo "export PATH=$PATH:/opt/zeek/bin" >> ~/.bashrc
source ~/.bashrc마지막으로 아래 ‘ zeek ‘ 명령어를 실행하여 Zeek 버전 및 기본 명령과 옵션을 확인합니다.
zeek --version
zeek --help다음과 같은 출력이 표시됩니다:

Zeek 설정하기
Zeek가 설치된 후에는 Zeek가 인프라에서 어떻게 실행될지를 설정해야 합니다. Zeek를 독립 실행형 또는 클러스터 모드로 실행할 수 있습니다. 대규모 배포의 경우, Zeek 구성 요소가 별도의 서버에 설치되는 클러스터 모드를 사용할 수 있습니다. 이 테스트 목적을 위해, 단일 서버에서 Zeek를 클러스터 모드로 설정하고 실행합니다.
아래 ‘ ip ‘ 명령어로 서버 IP 주소를 확인합니다. 이 예제에서는 우분투 서버 IP 주소가 ‘ 192.168.10.60 ‘입니다.
ip a‘ nano ‘ 편집기로 Zeek 네트워크 구성 ‘ /opt/zeek/etc/networks.cfg ‘를 엽니다.
sudo nano /opt/zeek/etc/networks.cfg아래와 같이 대상 서버의 네트워크 서브넷을 입력합니다.
192.168.10.0/24 Local Network작업이 끝나면 파일을 저장하고 편집기를 종료합니다.
이제 ‘ nano ‘를 사용하여 Zeek 노드 구성 ‘ /opt/zeek/etc/node.cfg ‘를 엽니다.
sudo nano /opt/zeek/etc/node.cfg다음 줄을 주석 처리하여 Zeek 독립 실행형 모드를 비활성화합니다. 기본적으로 Zeek는 기본 ‘ localhost ‘ 및 네트워크 인터페이스 ‘ eth0 ‘와 함께 독립 실행형 모드로 실행됩니다.
#[zeek]
#type=standalone
#host=localhost
#interface=eth0단일 서버 내에서 클러스터 모드로 Zeek를 실행하기 위해 다음 구성을 붙여넣습니다. 우분투 서버 IP 주소로 IP 주소를 변경해야 합니다. 아래와 같이 Zeek 클러스터 모드는 logger, manager, proxy, workers와 같은 여러 구성 요소를 가집니다.
# logger
[zeek-logger]
type=logger
host=192.168.10.60
# manager
[zeek-manager]
type=manager
host=192.168.10.60
# proxy
[zeek-proxy]
type=proxy
host=192.168.10.60
# worker
[zeek-worker]
type=worker
host=192.168.10.60
interface=eth0
# worker localhost
[zeek-worker-lo]
type=worker
host=localhost
interface=lo작업이 끝나면 파일을 저장하고 편집기를 종료합니다.
다음으로 아래 ‘ zeekctl ‘ 명령어를 실행하여 Zeek 구문을 확인합니다. 올바른 구성이면 ‘ scripts are ok ‘라는 출력을 볼 수 있습니다.
zeekctl check
이제 ‘ deploy ‘ 명령어를 실행하여 Zeek 설치를 배포합니다. 이로써 Zeek 로거, 관리자, 프록시 및 작업자가 시작됩니다.
zeekctl deploy
아래 명령어로 각 Zeek 구성 요소를 확인할 수 있습니다.
zeekctl status아래 출력에서 각 Zeek 구성 요소가 실행 중임을 확인할 수 있습니다. 이는 Zeek 클러스터 단일 노드의 배포가 성공적임을 의미합니다.

zeek-cut을 사용하여 Zeek 로그 파싱하기
이제 Zeek를 설치하고 배포했으므로, 네트워크의 로그 파일이 ‘ /opt/zeek/logs/current ‘ 디렉토리에 생성됩니다. 여러 Zeek 로그 파일이 있으며, 이를 알고 주의 깊게 살펴봐야 합니다. 이 섹션에서는 ‘zeek-cut’ 유틸리티를 사용하여 TSV(탭으로 구분된 값) 형식으로 로그를 생성하는 방법을 배웁니다.
아래 ‘ls’ 명령어로 Zeek 로그 디렉토리 ‘ /opt/zeek/logs/current ‘를 확인합니다.
ls -ah /opt/zeek/logs/current/다음과 같은 여러 로그 파일을 볼 수 있습니다:
- conn.log: TCP 및 UDP의 연결 로그. 이 로그 파일은 타임스탬프, 연결 지속 시간, 서비스 등과 같은 가장 유용한 정보를 제공합니다.
- dns.log: DNS(도메인 이름 시스템) 로그 파일
- http.log.log: 하이퍼텍스트 전송 프로토콜(HTTP) 로그
- ssh.log: SSH 연결을 추적하는 보안 셸(SSH) 로그.
- ssl.log: HTTPS 로그도 포함된 보안 소켓 레이어(SSL) 로그
이제 ‘ /opt/zeek/logs/current ‘ 디렉토리로 이동하고 ‘ cat ‘ 명령어를 실행하여 Zeek 로그를 표시하고 ‘ zeek-cut ‘ 명령어로 출력을 파싱하여 TSV(탭으로 구분된 값) 형식으로 변환합니다.
cd /opt/zeek/logs/current/
cat dns.log | zeek-cut id.orig_h query answers
cat dns.log | zeek-cut query answers id.orig_h이 예제에서는 ‘ id.orig_h ‘, ‘ query ‘, ‘ answers ‘ 필드의 값을 보여줍니다.

다음과 같이 ‘ zeek-cut ‘ 명령어를 사용하여 TSV 로그를 처리하고 유사한 출력을 얻을 수 있습니다.
zeek-cut id.orig_h query answers < dns.log
Zeek 출력을 JSON으로 설정하기
Zeek는 TSV 및 JSON을 포함한 여러 로그 형식을 지원합니다. 이 섹션에서는 Zeek 로그를 JSON 형식으로 생성하는 방법을 배우고, ‘jq’ 명령줄로 JSON 로그를 파싱하여 로그를 쉽게 읽는 방법을 배웁니다.
아래 ‘nano’ 편집기로 Zeek 구성 ‘/opt/zeek/share/zeek/site/local.zeek’를 엽니다.
sudo nano /opt/zeek/share/zeek/site/local.zeek출력을 JSON으로 활성화하려면 다음 줄의 주석을 제거합니다.
@load policy/tuning/json-logs파일을 저장하고 편집기를 종료합니다.
이제 아래 ‘ zeekctl ‘ 명령어를 실행하여 변경 사항을 적용하고 배포합니다. 프로세스가 완료되면 Zeek에 의해 JSON 로그 형식이 생성됩니다.
zeekctl deployZeek 배포 중 다음 출력을 볼 수 있습니다.

다음으로 아래 ‘ cat ‘ 명령어를 실행하여 Zeek 로그 파일을 확인합니다. 이제 Zeek 로그가 JSON 형식임을 확인할 수 있습니다.
cat /opt/zeek/logs/current/dns.logjq로 Zeek JSON 형식 파싱하기
아래 ‘apt’ 명령어로 ‘ jq ‘ 패키지를 설치합니다.
sudo apt install jq -y설치가 완료되면 ‘cd’ 명령어로 ‘/opt/zeek/logs/current’ 디렉토리로 이동합니다.
cd /opt/zeek/logs/current/JSON 형식의 로그를 파싱하려면 아래 ‘jq’ 명령어를 실행합니다.
jq . dns.log
간결한 출력을 원하면 다음과 같이 ‘-c’ 옵션을 사용하세요:
jq . -c dns.log마지막으로 아래 ‘jq’ 명령어로 JSON 로그 파일을 지정할 수도 있습니다.
jq -c '[."id.orig_h", ."query", ."answers"]' dns.log
결론
축하합니다! 우분투 24.04 서버에 Zeek 네트워크 모니터링 도구 설치를 완료했습니다. 단일 노드/서버에서 Zeek 클러스터 모드를 배포하는 방법, ‘ zeek-cut ‘ 유틸리티로 Zeek 로그를 파싱하여 TSV(탭으로 구분된 값) 형식을 생성하는 방법, JSON 형식으로 Zeek 로그를 생성하는 방법, 그리고 ‘jq’ 유틸리티로 JSON 로그를 파싱하는 방법을 배웠습니다. 여기서부터는 JSON 로그 또는 Zeek 로그를 Graylog 및 ELK/EFK 스택과 같은 중앙 집중식 로깅 시스템으로 전송하는 다음 단계로 진행할 수 있습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.