Hướng dẫn tích hợp Suricata với ELK

Sýnesis™ Lite for Suricata cung cấp phân tích nhật ký cơ bản cho Suricata IDS/IPS bằng Elastic Stack. Đây là 1 giải pháp thu thập và phân tích log eve.json của suricata. Điều này bao gồm alerts, flows, http, dns, statistics và các loại log khác.

synesis_lite_suricata

Để bắt đầu cài đặt tích hợp Suricata với ELK, trước tiên bạn cần có môi trường ELK và Suricata đang hoạt động. Nếu chưa thiết lập hoặc không biết cách thiết lập cài đặt ELK và Suricata, bạn có thể xem lại hướng dẫn cài đặt ELKhướng dẫn cài đặt Suricata trên Ubuntu 18.04 của mình để tiếp tục nhé.

1. Mô hình

1.1 Mô hình lab

1.2 IP Planning

2. Cài đặt

2.1 Trên máy Suricata

Thêm kho lưu trữ elastic.

wget -qO - 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 /etc/apt/sources.list.d/elastic-7.x.list

Update lại hệ thống và cài đặt filebeat.

apt update
apt install filebeat -y

Sao chép lại file cấu hình filebeat phòng trường hợp cấu hình xảy ra lỗi.

mv /etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml.bk

Chỉnh sửa cấu hình filebeat.

cat <<EOF> /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/suricata/eve.json

  fields:
    event.type: suricata

output.logstash:
  hosts: ["192.168.98.179:5044"]
  #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
  #ssl.certificate: "/etc/pki/client/cert.pem"
  #ssl.key: "/etc/pki/client/cert.key"
EOF

Khởi động và kiểm tra trạng thái filebeat.

systemctl enable filebeat
systemctl start filebeat
systemctl status filebeat

2.2 Trên máy ELK

Sử dụng tcpdump để kiểm tra các gói tin đã được đẩy từ máy suricata sang hay chưa.

tcpdump -Xni eth0 port 5044

Nếu có các gói tin trả về tức là bạn đã cấu hình thành công filebeat.

Tiếp theo, ta sẽ tải về các cấu hình có sẵn của synesis Lite for Suricata.

cd 
git clone https://github.com/robcowart/synesis_lite_suricata.git

Di chuyển thư mục cấu hình vào logstash.

mv /root/synesis_lite_suricata/logstash/synlite_suricata /etc/logstash/

Chỉ định đường dẫn đến tệp cấu hình logstash.

cat <<EOF> /etc/logstash/pipelines.yml 
- pipeline.id: synlite_suricata 
  path.config: "/etc/logstash/synlite_suricata/conf.d/*.conf" 
EOF

synesis Lite for Suricata tận dụng các tính năng bộ nhớ đệm và xếp hàng có sẵn trong nhiều plugin Logstash. Nên ta cần tăng không gian heap JVM trong file jvm.options.

sed -i 's/\-Xmx1g/\-Xmx4g/g' /etc/logstash/jvm.options
sed -i 's/\-Xms1g/\-Xms4g/g' /etc/logstash/jvm.options

Sau đó, ta cần thêm cấu hình đặc biệt cho elasticsearch.

echo "indices.query.bool.max_clause_count: 8192" >> /etc/elasticsearch/elasticsearch.yml
echo "search.max_buckets: 250000" >> /etc/elasticsearch/elasticsearch.yml

Chỉnh sửa cấu hình Output của logstash như sau:

vi /etc/logstash/synlite_suricata/conf.d/30_output_elasticsearch.logstash.conf

Sau đó chỉnh sửa ip thành ip mà kibana sẽ sử dụng để truy cập trên web.

Sau đó ta di chuyển thư mục daemon vào systemd.

mv /root/synesis_lite_suricata/logstash.service.d /etc/systemd/system/

Chạy các biến môi trường.

cd /etc/logstash/
Environment="SYNLITE_SURICATA_RESOLVE_IP2HOST=false" 
Environment="SYNLITE_SURICATA_NAMESERVER=127.0.0.1" 
Environment="SYNLITE_SURICATA_DNS_HIT_CACHE_SIZE=25000" 
Environment="SYNLITE_SURICATA_DNS_HIT_CACHE_TTL=900" 
Environment="SYNLITE_SURICATA_DNS_FAILED_CACHE_SIZE=75000" 
Environment="SYNLITE_SURICATA_DNS_FAILED_CACHE_TTL=3600"
Environment="SYNLITE_SURICATA_DICT_PATH=/etc/logstash/synlite_suricata/dictionaries" 
Environment="SYNLITE_SURICATA_TEMPLATE_PATH=/etc/logstash/synlite_suricata/templates" 
Environment="SYNLITE_SURICATA_GEOIP_DB_PATH=/etc/logstash/synlite_suricata/geoipdbs" 
Environment="SYNLITE_SURICATA_GEOIP_CACHE_SIZE=8192" 
Environment="SYNLITE_SURICATA_GEOIP_LOOKUP=true" 
Environment="SYNLITE_SURICATA_ASN_LOOKUP=true" 
Environment="SYNLITE_SURICATA_CLEANUP_SIGS=false"

Sau đó, hãy truy cập vào synesis_kibana sau đó tiến hành tải file về máy.

Sau khi tải file về, ta truy cập vào kibana và chọn Stack Management.

Tiếp đó, hãy chọn Saved Objects.

Chọn import để nhập các object có sẵn.

Sau đó, hãy chọn file synlite_suricata.kibana.7.1.x.json đã tải về trước đó từ máy của bạn và chọn Import để nhập các Object có sẵn.

Sau khi Import dữ liệu, trở lại terminal và sử dụng lệnh sau:

shutdown -h now

Sau khi tắt máy, hãy bật lại máy của bạn và truy cập kibana để kiểm tra. Trong phần Dashboard của kibana, hãy chọn Suricata: Alerts (Messages).

Ta thấy rằng đã có log hiển thị và log được thống kê dasboard. Như vậy ta đã cấu hình thành công tích hợp Suricata với ELK sử dụng 1 dự án có sẵn là Synesis Lite for Suricata.

Tài liệu tham khảo:

https://github.com/robcowart/synesis_lite_suricata

Add a Comment

Your email address will not be published. Required fields are marked *