Cách cài đặt công cụ giám sát bảo mật mạng Zeek trên Ubuntu 24.04

theanh

Administrator
Nhân viên
Zeek (trước đây là Bro) là một nền tảng mã nguồn mở và miễn phí để giám sát bảo mật mạng. Đây là một trình phân tích lưu lượng mạng thụ động mạnh mẽ để điều tra hoạt động đáng ngờ hoặc độc hại. Zeek có thể được sử dụng như một trình giám sát bảo mật mạng (NSM) và hỗ trợ nhiều loại phân tích lưu lượng, từ miền bảo mật đến đo lường hiệu suất và khắc phục sự cố.

Trong hướng dẫn này, bạn sẽ tìm hiểu cách cài đặt công cụ giám sát bảo mật mạng Zeek trên máy chủ Ubuntu 24.04. Bạn cũng sẽ học cách chạy Zeek ở chế độ cụm, cách phân tích cú pháp nhật ký Zeek bằng lệnh 'zeek-cut' và cách tạo và phân tích cú pháp nhật ký JSON Zeek bằng tiện ích 'jq'.

Điều kiện tiên quyết​

Trước khi bắt đầu, hãy đảm bảo bạn có những điều sau:
  • Máy chủ Ubuntu 24.04
  • Người dùng không phải root có quyền quản trị viên

Cài đặt Zeek​

Zeek là một công cụ giám sát bảo mật mạng, hệ điều hành giống Unix. Có thể cài đặt bằng nhiều phương pháp. Trong ví dụ này, bạn sẽ cài đặt Zeek vào máy chủ Ubuntu 24.04 bằng trình quản lý gói APT từ dịch vụ xây dựng OpenSUSE.

Trước tiên, hãy chạy lệnh bên dưới để thêm kho lưu trữ Zeek vào hệ thống Ubuntu của bạn.
Mã:
echo 'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_24.04/ /' | sudo tee /etc/apt/sources.list.d/security:zeek.list
Bây giờ hãy tải xuống và thêm khóa GPG cho kho lưu trữ Zeek bằng lệnh bên dưới.
Mã:
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/null
Sau khi khóa GPG Zeek và kho lưu trữ được thêm vào, hãy chạy lệnh 'apt' bên dưới để cập nhật gói Ubuntu của bạn.
Mã:
sudo apt update

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22145%22%3E%3C/svg%3E


Bây giờ bạn có thể chạy lệnh 'apt' bên dưới để kiểm tra gói 'zeek'. Bạn sẽ thấy nhiều phiên bản Zeek.
Mã:
sudo apt search zeek
sudo apt-cache policy zeek

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22151%22%3E%3C/svg%3E


Tiếp theo, cài đặt Zeek bằng lệnh 'apt' sau. Trong ví dụ này, bạn sẽ cài đặt Zeek LTS.
Mã:
sudo apt install zeek
Nhập 'Y' để xác nhận cài đặt.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22255%22%3E%3C/svg%3E


Sau khi cài đặt hoàn tất, hãy thêm thư mục '/opt/zeek/bin' vào hệ thống PATH thông qua tệp '~/.bashrc'. Sau đó tải lại tệp '~/.bashrc' để áp dụng những thay đổi mới của bạn. Với lệnh này, bạn có thể chạy dòng lệnh Zeek thông qua thiết bị đầu cuối của mình.
Mã:
echo "export PATH=$PATH:/opt/zeek/bin" >> ~/.bashrc
source ~/.bashrc
Cuối cùng, hãy chạy lệnh 'zeek' bên dưới để kiểm tra phiên bản Zeek cũng như các lệnh và tùy chọn cơ bản.
Mã:
zeek --version
zeek --help
Bạn sẽ thấy đầu ra như sau:


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22315%22%3E%3C/svg%3E

Thiết lập Zeek​

Sau khi Zeek được cài đặt, bạn cần thiết lập cách Zeek sẽ chạy trên cơ sở hạ tầng của mình. Bạn có thể chọn chạy Zeek ở chế độ độc lập hoặc chế độ cụm. Đối với các triển khai lớn, bạn có thể sử dụng chế độ cụm, trong đó các thành phần Zeek được cài đặt trên các máy chủ riêng biệt. Với mục đích thử nghiệm này, chúng tôi sẽ thiết lập và chạy Zeek ở chế độ Cụm bằng cách sử dụng một máy chủ duy nhất.

Kiểm tra địa chỉ IP máy chủ của bạn bằng lệnh 'ip' sau. Trong ví dụ này, chúng ta có địa chỉ IP của máy chủ Ubuntu là '192.168.10.60'.
Mã:
ip a
Mở cấu hình mạng Zeek '/opt/zeek/etc/networks.cfg' bằng trình soạn thảo 'nano'.
Mã:
sudo nano /opt/zeek/etc/networks.cfg
Nhập mạng con của máy chủ mục tiêu như sau.
Mã:
192.168.10.0/24 Local Network
Lưu tệp và thoát khỏi trình chỉnh sửa khi hoàn tất.

Bây giờ hãy mở cấu hình nút Zeek '/opt/zeek/etc/node.cfg' bằng cách sử dụng 'nano'.
Mã:
sudo nano /opt/zeek/etc/node.cfg
Bình luận các dòng sau để tắt Zeek chế độ độc lập. Theo mặc định, Zeek đang chạy ở chế độ độc lập với 'localhost' mặc định và giao diện mạng 'eth0'.
Mã:
#[zeek]
#type=standalone
#host=localhost
#interface=eth0
Dán cấu hình sau để chạy Zeek ở chế độ cụm trong một máy chủ duy nhất. Đảm bảo thay đổi địa chỉ IP bằng địa chỉ IP máy chủ Ubuntu của bạn. Như bạn có thể thấy bên dưới, chế độ cụm Zeek sẽ có nhiều thành phần như logger, manager, proxyworkers.
Mã:
# 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
Khi hoàn tất, hãy lưu tệp và thoát khỏi trình chỉnh sửa.

Tiếp theo, chạy lệnh 'zeekctl' bên dưới để xác minh cú pháp Zeek của bạn. Nếu bạn cấu hình đúng, bạn sẽ thấy đầu ra 'scripts are ok'.
Mã:
zeekctl check

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22528%22%20height=%22265%22%3E%3C/svg%3E


Bây giờ hãy chạy lệnh 'deploy' để triển khai cài đặt Zeek của bạn. Với điều này, Zeek logger, manager, proxy và workers sẽ được khởi động.
Mã:
zeekctl deploy

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22372%22%20height=%22502%22%3E%3C/svg%3E


Bạn có thể kiểm tra từng thành phần Zeek bằng lệnh bên dưới.
Mã:
zeekctl status
Trong đầu ra bên dưới, bạn có thể thấy rằng từng thành phần Zeek đang chạy. Điều này có nghĩa là việc triển khai nút đơn cụm Zeek đã thành công.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22698%22%20height=%22214%22%3E%3C/svg%3E

Sử dụng zeek-cut để phân tích Nhật ký Zeek​

Bây giờ bạn đã cài đặt và triển khai Zeek, các tệp nhật ký của mạng của bạn sẽ được tạo tại thư mục '/opt/zeek/logs/current'. Sẽ có nhiều tệp nhật ký Zeek mà bạn phải biết và chú ý. Trong phần này, bạn sẽ học cách sử dụng tiện ích 'zeek-cut' để tạo nhật ký theo định dạng TSV (Giá trị phân tách bằng tab).

Kiểm tra thư mục nhật ký Zeek '/opt/zeek/logs/current' bằng lệnh 'ls' bên dưới.
Mã:
ls -ah /opt/zeek/logs/current/
Bạn sẽ thấy nhiều tệp nhật ký như:
  • conn.log: Nhật ký kết nối cho cả TCP và UDP. Tệp nhật ký này cung cấp thông tin hữu ích nhất như dấu thời gian, thời lượng kết nối, dịch vụ và nhiều thông tin khác
  • dns.log: Tệp nhật ký DNS (Hệ thống tên miền)
  • http.log.log: Nhật ký Giao thức truyền siêu văn bản (HTTP)
  • ssh.log: Nhật ký Secure Shell (SSH) để theo dõi các kết nối SSH.
  • ssl.log: Nhật ký Lớp ổ cắm bảo mật (SSL) cũng chứa nhật ký HTTPS

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%2281%22%3E%3C/svg%3E


Bây giờ hãy di chuyển đến thư mục '/opt/zeek/logs/current' và có thể chạy Lệnh 'cat' để hiển thị nhật ký Zeek và chuyển đầu ra bằng lệnh 'zeek-cut' để phân tích cú pháp đầu ra thành định dạng TSV (Giá trị phân tách bằng tab).
Mã:
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
Trong ví dụ này, chúng tôi sẽ hiển thị cho bạn các giá trị từ các trường 'id.orig_h', 'query' và 'answers'.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22329%22%3E%3C/svg%3E


Bạn cũng có thể sử dụng lệnh 'zeek-cut' như sau để xử lý nhật ký TSV và nhận được kết quả tương tự.
Mã:
zeek-cut id.orig_h query answers < dns.log

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22213%22%3E%3C/svg%3E

Thiết lập đầu ra Zeek thành JSON​

Zeek hỗ trợ nhiều định dạng nhật ký, bao gồm TSV và JSON. Trong phần này, bạn sẽ tìm hiểu cách tạo nhật ký Zeek ở định dạng JSON. Sau đó, bạn sẽ học cách phân tích cú pháp nhật ký JSON bằng dòng lệnh 'jq' để có thể dễ dàng đọc nhật ký của mình.

Mở cấu hình Zeek '/opt/zeek/share/zeek/site/local.zeek' bằng trình soạn thảo 'nano' sau.
Mã:
sudo nano /opt/zeek/share/zeek/site/local.zeek
Bỏ chú thích dòng sau để bật nhật ký đầu ra JSON.
Mã:
@load policy/tuning/json-logs
Lưu tệp và thoát khỏi trình chỉnh sửa.

Bây giờ hãy chạy lệnh 'zeekctl' bên dưới để áp dụng và triển khai các thay đổi của bạn. Và sau khi quá trình hoàn tất, định dạng nhật ký JSON sẽ được Zeek tạo ra.
Mã:
zeekctl deploy
Bạn có thể thấy đầu ra sau trong quá trình triển khai Zeek.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22478%22%3E%3C/svg%3E


Tiếp theo, chạy lệnh 'cat' bên dưới để kiểm tra tệp nhật ký Zeek. Bạn sẽ thấy nhật ký Zeek hiện ở định dạng JSON.
Mã:
cat /opt/zeek/logs/current/dns.log

Phân tích cú pháp định dạng JSON của Zeek bằng jq​

Cài đặt gói 'jq' bằng lệnh 'apt' bên dưới.
Mã:
sudo apt install jq -y
Sau khi cài đặt hoàn tất, hãy chuyển đến thư mục '/opt/zeek/logs/current' bằng lệnh 'cd'.
Mã:
cd /opt/zeek/logs/current/
Để phân tích cú pháp nhật ký ở định dạng JSON, hãy chạy lệnh 'jq' bên dưới.
Mã:
jq . dns.log

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22523%22%20height=%22622%22%3E%3C/svg%3E


Nếu bạn muốn có đầu ra nhỏ gọn, hãy sử dụng tùy chọn '-c' như sau:
Mã:
jq . -c dns.log
Cuối cùng, bạn cũng có thể chỉ định các tệp nhật ký JSON bằng lệnh 'jq' bên dưới.
Mã:
jq -c '[."id.orig_h", ."query", ."answers"]' dns.log

data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22338%22%3E%3C/svg%3E

Kết luận​

Xin chúc mừng! Bạn đã hoàn tất cài đặt Công cụ giám sát mạng Zeek trên máy chủ Ubuntu 24.04. Bạn đã học cách triển khai chế độ cụm Zeek trong một nút/máy chủ duy nhất, phân tích cú pháp nhật ký Zeek bằng tiện ích 'zeek-cut' để tạo định dạng TSV (Tab Separated Value), tạo nhật ký Zeek ở định dạng JSON và phân tích cú pháp nhật ký JSON bằng tiện ích 'jq'. Từ đây, bạn có thể tiến hành bước tiếp theo bằng cách gửi nhật ký JSON hoặc nhật ký Zeek của mình đến hệ thống ghi nhật ký tập trung như Graylog và ELK/EFK Stack.
 
Back
Bên trên