Tổng quan
Vị trí đặt Suricata và ELK trong hệ thống mạng:
- Suricata được đặt sau các thiết bị mạng để lắng nghe và phân tích lưu lượng mạng
- ELK stack (Elasticsearch, Logstash/Filebeat, Kibana) được đặt sau Suricata, trên cùng một máy bảo Ubuntu 22.04 với cấu hình 4 core CPU, 8GBRAM, 60GB Disk, xử lý việc thu thập, lưu trữ, hiển thị log, alert
Vai trò từng thành phần:
- Suricata: công cụ IDS/IPS, lắng nghe traffic, phân tích gói tin, sinh ra log/alert theo format JSON
- ELK stack:
- ElasticSearch: lưu trữ và tìm kiếm log
- Filebeat hoặc Logstash: nhận log từ Suricata và gửi vào ElasticSearch
- Kibana: dashboard
=> Luồng dữ liệu (Flow) :Traffic được chuyển đến Suricata thu thập, phân tích => sinh log dưới dạng JSON (EVE log) => log này được gửi sang ELK qua Filebeat/Logstash => log được lưu trữ ở ElasticSearch => Kibana hiển thị và phân tích
Cài đặt và cấu hình Suricata + ELK stack
Bước 1: Cài đặt và cấu hình cho Suricata:
sudo apt update && sudo apt upgrade -y
sudo add-apt-repository ppa:oisf/suricata-stable -y sudo apt update sudo apt install suricata -y Cấu hình Suricata: sudo nano /etc/suricata/suricata.yaml Kích hoạt Community ID (khoảng dòng 200-300): Tìm phần # Community Flow ID và thay community-id: false thành: true Đặt giao diện mạng ở af-packet và pcap: ens160
Cập nhật rule: sudo suricata-update
Kiểm tra cấu hình: sudo suricata -T -c /etc/suricata/suricata.yaml -v
Chạy và kiểm tra suricata: sudo systemctl start suricata sudo systemctl status suricata
Để đảm bảo Suricata đang chạy, kiểm tra nhật ký, theo dõi log khởi động: sudo tail /var/log/suricata/suricata.log: có log là được Mô phỏng lưu lượng đáng ngờ, kiểm tra Suricata xem đã phát hiện chưa
Bước 2: Cài đặt và cấu hình Elasticsearch
sudo apt install openjdk-17-jdk -y Kiểm tra phiên bản Java: java -version
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt update
sudo apt install elasticsearch
Mở file cấu hình ElasticSearch và chỉnh một số thông tin: sudo nano /etc/elasticsearch/elasticsearch.yml
Thêm network.bind_host: ["127.0.0.1", “private id”] để chấp nhận kết nối từ Kibana
Ở xpack.security.enabled để false: không yêu cầu xác thực. Còn nếu để true thì cần cấu hình username/password với tên đăng nhập mặc định là elastic và mật khẩu tạo khi cài đặt
Nên để là true, tạo tài khoản, mật khẩu nếu muốn search alert về sau
Thêm cuối file: discovery.type: single-node và xpack.security.enabled: true (cho single-node; bỏ discovery nếu multi-node).
Uncomment dòng này: cluster.initial_master_nodes: ["suricata-virtual-machine"] (nếu cài elasticsearch 8.x)
Firewall: sudo ufw allow in/out on (ví dụ: enp6s0) cho private network.
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
Tạo khóa tự động cho các tài khoản phụ thuộc:
cd /usr/share/elasticsearch/bin
sudo ./elasticsearch-setup-passwords auto
Bước 3. Cài đặt và cấu hình Kibana
sudo apt install kibana
Tạo encryption keys: ./kibana-encryption-keys generate -q --force trong /usr/share/kibana/bin
Chỉnh sửa file cấu hình: sudo nano /etc/kibana/kibana.yml paste 3 dòng xpack trước đó vào cuối /etc/kibana/kibana.yml.
sudo systemctl start kibana
Mở firewall nếu cần (vì cùng máy, có thể skip, nhưng nếu truy cập từ ngoài sau):
sudo ufw allow 5601/tcp
sudo ufw reload
Bước 4. Cài đặt Filebeat - cấu hình cho Filebeat nhận được log của Suricata
Thêm key/repo giống Elasticsearch
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt update
rồi sudo apt install filebeat
sudo nano /etc/filebeat/filebeat.yml: Đặt : host: "192.168.229.139:5601".
Elasticsearch output: hosts: ["192.168.229.139:9200"], username: "elastic", password từ trước.
sudo filebeat modules enable suricata
Load dashboards: sudo filebeat setup
Khởi động: sudo systemctl start filebeat
Bước 5. Điều hướng bảng điều khiển SIEM của Kibana
Mở trình duyệt, truy cập vào 192.168.229.139:5601
Tìm kiếm: suricata
2 Dashboard chính của Suricata. Trong đó:
- Alert Overview: tổng quan về các cảnh báo (alerts) mà Suricata sinh ra
- Events Overview: tổng quan về sự kiện (events) mà Suricata ghi nhận, không chỉ giới hạn ở alert
Thử nghiệm Suricata Rules
Dùng nmap scan
Trên log thu được alert:
Xem được vài thông tin như source port, source id của nguồn tấn công