Triển khai Arkime trên Linux: Bắt gói tin toàn diện để điều tra sự cố bảo mật

Security tutorial - IT technology blog
Security tutorial - IT technology blog

2 giờ 47 phút sáng. SIEM bắn cảnh báo — có lưu lượng ra ngoài bất thường từ một máy chủ cơ sở dữ liệu production. Bạn SSH vào, kiểm tra netstat, chẳng thấy gì đáng ngờ. Kết nối đã biến mất từ lúc nào. Không có dữ liệu ở cấp độ gói tin, bạn đang điều tra trong bóng tối.

Chính kịch bản này là lý do tôi giờ chạy Arkime trên mọi phân đoạn mạng quan trọng. Sau khi máy chủ bị tấn công brute-force SSH vào lúc nửa đêm, bảo mật trở thành ưu tiên hàng đầu trong mọi checklist triển khai — và “thiết lập ban đầu” giờ đây có nghĩa là bắt gói tin toàn diện, không chỉ dừng lại ở log tường lửa.

Log cho bạn biết chuyện gì đã xảy ra. Gói tin cho bạn biết chính xác như thế nào.

So sánh các phương án: Lựa chọn để bắt gói tin toàn diện

tcpdump + File pcap luân chuyển

Lựa chọn đầu tay cho các capture nhanh. Đơn giản, có sẵn ở khắp nơi, không cần cài thêm gì.

tcpdump -i eth0 -w /pcap/capture-%Y%m%d%H%M%S.pcap -G 3600 -z gzip

Dùng tốt cho đến khi sự cố xảy ra ba ngày sau và bạn phải ngồi grep thủ công qua 200GB pcap nén vào lúc 3 giờ sáng. Không có lập chỉ mục. Không có view phiên kết nối. Chỉ có bạn và một đống file nén.

Wireshark / tshark (Chạy nền)

tshark có thể chạy nền để bắt liên tục, nhưng Wireshark về bản chất là công cụ phân tích GUI. Không có lập chỉ mục, không có REST API, không có giao diện web cho cả nhóm truy cập. Không được thiết kế để lưu trữ lâu dài ở quy mô lớn.

Zeek (trước đây là Bro)

Zeek trích xuất metadata phong phú — log kết nối, DNS, HTTP, TLS, hash file — với overhead rất thấp. Các log này đưa thẳng vào SIEM, đó chính xác là lý do các nhóm bảo mật yêu thích nó. Nhưng khi một analyst hỏi “cho tôi xem chính xác từng byte của C2 beacon đó,” Zeek bó tay. Nó bỏ đi payload. Không tái tạo phiên kết nối, không xuất pcap được.

Arkime (trước đây là Moloch)

Arkime bắt tất cả — gói tin thô được lưu ở định dạng có lập chỉ mục, có thể tìm kiếm qua giao diện web cho phép tải về các đoạn pcap theo yêu cầu. Nó kết hợp lưu trữ pcap toàn diện với lập chỉ mục metadata qua OpenSearch hoặc Elasticsearch. Các SOC doanh nghiệp lớn và đơn vị bảo vệ mạng chính phủ dùng nó vì chính lý do này.

Ưu và nhược điểm

tcpdump / Raw pcap

  • Ưu điểm: Không mất thời gian thiết lập, chạy được trên mọi máy Linux, lý tưởng cho các capture ngắn có mục tiêu cụ thể
  • Nhược điểm: Không có khả năng tìm kiếm ở quy mô lớn, phải tự tương quan thủ công giữa các file, không tái tạo được phiên kết nối

Zeek

  • Ưu điểm: Cực kỳ nhẹ, phân tích protocol phong phú, log có cấu trúc sẵn sàng đưa vào SIEM
  • Nhược điểm: Không lưu payload, không thể tái tạo phiên kết nối cho forensics, cần công cụ bổ trợ để phân tích gói tin chuyên sâu

Arkime

  • Ưu điểm: Lưu trữ gói tin toàn diện kèm metadata có lập chỉ mục, giao diện web với ngôn ngữ truy vấn mạnh mẽ, tái tạo phiên TCP, REST API để tự động hóa, đang được triển khai thực tế tại các SOC chính phủ và doanh nghiệp lớn
  • Nhược điểm: Yêu cầu tài nguyên cao (backend OpenSearch), phức tạp khi thiết lập, chi phí lưu trữ đáng kể — pcap toàn diện ở 1Gbps tốn khoảng 450GB/giờ

Sự đánh đổi rất rõ ràng: nếu bạn cần tái tạo chính xác những gì kẻ tấn công đã làm ở cấp độ gói tin, Arkime là lựa chọn duy nhất trong danh sách này thực sự đáp ứng được.

Cấu hình đề xuất

Cho môi trường home lab hoặc SOC nhỏ:

  • Máy chủ capture: 4 core, 16GB RAM, 2TB+ lưu trữ (ổ cứng cơ học vẫn ổn cho pcap)
  • OpenSearch 2.x trên cùng máy chủ cho lab, hoặc cluster riêng cho production
  • Arkime 5.x — phiên bản stable hiện tại
  • Network tap hoặc cổng SPAN đẩy lưu lượng vào interface capture

Giám sát đường truyền production 1Gbps thì bài toán khác hẳn:

  • Máy chủ capture: 8+ core, 32GB RAM, NIC capture chuyên dụng không gán địa chỉ IP
  • Cluster OpenSearch: 3 node × 8GB heap
  • Lưu trữ: 10TB+ với chính sách retention (thường 7–30 ngày tùy ngân sách)

Hệ thống của tôi là phiên bản rút gọn — một máy workstation i7 cũ với 16GB RAM, bắt lưu lượng VLAN homelab. Nó đã phát hiện hai trường hợp thiết bị IoT bị xâm phạm đang beacon ra ngoài mà log tường lửa của tôi sẽ bỏ sót hoàn toàn.

Hướng dẫn triển khai

Bước 1: Cài đặt OpenSearch

Arkime cần OpenSearch (hoặc Elasticsearch 7.x) làm nơi lưu metadata. Trên Ubuntu/Debian:

wget -qO - https://artifacts.opensearch.org/publickeys/opensearch.pgp | \
  sudo gpg --dearmor -o /usr/share/keyrings/opensearch-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/opensearch-keyring.gpg] \
  https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/apt stable main" | \
  sudo tee /etc/apt/sources.list.d/opensearch-2.x.list

sudo apt update && sudo apt install opensearch -y

Cấu hình JVM heap — đặt bằng một nửa RAM khả dụng, không bao giờ vượt quá 31GB:

sudo nano /etc/opensearch/jvm.options
# Đặt cả hai dòng:
-Xms8g
-Xmx8g
sudo systemctl enable --now opensearch
# Kiểm tra đã chạy chưa:
curl -s http://localhost:9200/_cluster/health | python3 -m json.tool

Bước 2: Cài đặt Arkime

# Kiểm tra phiên bản mới nhất tại https://arkime.com/downloads
wget https://github.com/arkime/arkime/releases/download/v5.3.0/arkime_5.3.0-1_amd64.deb
sudo dpkg -i arkime_5.3.0-1_amd64.deb

Bước 3: Chạy Configurator

sudo /opt/arkime/bin/Configure

Công cụ cấu hình tương tác sẽ hỏi interface nào để capture, URL OpenSearch của bạn, và mật khẩu admin. Nó tạo ra file /opt/arkime/etc/config.ini. Các thông số quan trọng cần tinh chỉnh thủ công sau đó:

[default]
elasticsearch=http://localhost:9200
interface=eth1
pcapDir=/data/arkime/pcap
maxFileSizeG=12
maxFileTimeM=60
freeSpaceG=5%
# Tinh chỉnh dựa theo tốc độ đường truyền của bạn:
pcapWriteMethod=simple
pcapWriteSize=2560

Đặt interface thành interface capture của bạn — interface kết nối với cổng SPAN hoặc network tap, không phải NIC quản lý.

Bước 4: Khởi tạo cơ sở dữ liệu và khởi động dịch vụ

sudo /opt/arkime/db/db.pl http://localhost:9200 init

# Tạo tài khoản admin
sudo /opt/arkime/bin/arkime_add_user.sh admin "Admin User" MẬT_KHẨU_MẠNH_CỦA_BẠN --admin

# Khởi động capture và viewer
sudo systemctl enable --now arkimecapture
sudo systemctl enable --now arkimeviewer

Truy cập http://your-server:8005 trên trình duyệt. Trong vòng một phút, các phiên kết nối bắt đầu xuất hiện trong tab Sessions.

Bước 5: Cấu hình chính sách lưu trữ

Bỏ qua chính sách retention và OpenSearch sẽ ăn hết dung lượng ổ đĩa của bạn trong vài ngày. Chính sách ISM này tự động xóa các index cũ hơn 30 ngày:

curl -X PUT "http://localhost:9200/_plugins/_ism/policies/arkime-retention" \
  -H 'Content-Type: application/json' -d '{
  "policy": {
    "description": "Xóa các index arkime cũ hơn 30 ngày",
    "default_state": "hot",
    "states": [{
      "name": "hot",
      "actions": [],
      "transitions": [{
        "state_name": "delete",
        "conditions": { "min_index_age": "30d" }
      }]
    }, {
      "name": "delete",
      "actions": [{ "delete": {} }],
      "transitions": []
    }]
  }
}'

Tìm kiếm lưu lượng trong quá trình xử lý sự cố

Ngôn ngữ truy vấn của Arkime chính là thứ làm cho toàn bộ hệ thống trở nên đáng giá. Trong view Sessions:

# Tìm tất cả lưu lượng đến một IP đáng ngờ
ip.dst == 185.220.101.45

# Truy vấn DNS khớp với pattern domain độc hại
dns.host == /.*evil-c2\.com/

# Các luồng ra ngoài có dung lượng lớn — có thể là đánh cắp dữ liệu
ip.dst != 10.0.0.0/8 && databytes > 10000000

# Kết hợp: IP đáng ngờ + cổng cụ thể + khoảng thời gian
ip.dst == 185.220.101.45 && port.dst == 4444 && starttime >= 2024-01-15T02:00

Click chuột phải vào bất kỳ phiên nào → Download PCAP để kéo gói tin thô vào Wireshark. Trình xem gói tin tích hợp sẵn cũng có thể tái tạo luồng TCP ngay trong trình duyệt — không cần cài thêm công cụ nào. Chia sẻ màn hình với nhóm IR và cùng nhau xem xét phiên kết nối mà không ai cần cài đặt gì thêm.

Bảo vệ giao diện quản trị

Giao diện web của Arkime tuyệt đối không được để lộ ra internet công cộng. Không thể thương lượng:

# Chỉ cho phép VLAN quản lý của bạn truy cập giao diện Arkime
sudo ufw allow from 10.0.1.0/24 to any port 8005
sudo ufw deny 8005

# Interface capture không được gán địa chỉ IP
# Chế độ promiscuous không có bề mặt tấn công:
ip link set eth1 promisc on
ip link set eth1 up
# KHÔNG gán IP cho eth1

Để nhóm truy cập, đặt Arkime sau WireGuard VPN hoặc nginx reverse proxy với mutual TLS. Không bao giờ port-forward cổng 8005 ra internet.

Bắt gói tin toàn diện không hề rẻ — phần cứng, lưu trữ và thời gian thiết lập cộng lại đáng kể. Nhưng khi bạn đang nhìn chằm chằm vào một vụ xâm phạm lúc 2 giờ sáng, bạn cần câu trả lời ngay. Với Arkime đã chạy sẵn, việc truy vết chính xác những gì đã thoát ra khỏi mạng của bạn mất vài giờ thay vì vài ngày. Sự đánh đổi đó đã chứng minh xứng đáng mỗi lần tôi cần dùng đến.

Share: