Hướng dẫn cài đặt SIEM dùng Suricata và Elastic Stack trên Ubuntu 20.04
Giới thiệu
Trong bài hướng dẫn trước chúng ta đã tìm hiểu về cách cài đặt và thiết lập 1 số cấu hình với Suricata, để nó như một hệ thống phát hiện xâm nhập (IDS) và ngăn chặn xâm nhập (IPS).
Trong hướng dẫn này, chúng ta sẽ khám phá cách tích hợp Suricata
với Elasticsearch
, Kibana
và Filebeat
để bắt đầu tạo công cụ quản lý sự kiện và thông tin bảo mật (SIEM) trên Ubuntu 20.04. Các công cụ SIEM được sử dụng để thu thập, tổng hợp, lưu trữ và phân tích dữ liệu sự kiện nhằm tìm kiếm các mối đe dọa bảo mật và hoạt động đáng ngờ trên mạng và máy chủ của chúng ta.
Các thành phần sẽ sử dụng để xây dựng công cụ SIEM:
- Elasticsearch: để lưu trữ, lập chỉ mục và tìm kiếm các sự kiện bảo mật đến từ máy chủ Suricata.
- Kibana: để hiển thị nhật ký sự kiện bảo mật được lưu trữ trong Elasticsearch.
- Filebeat: để phân tích cú pháp tệp nhật ký của Suricata eve.json và gửi từng sự kiện đến Elasticsearch để xử lý.
- Suricata: để quét lưu lượng mạng để tìm các sự kiện đáng ngờ và ghi lại hoặc loại bỏ các gói không hợp lệ.
Đầu tiên, chúng ta sẽ cài đặt và định cấu hình Elasticsearch và Kibana với một số cài đặt xác thực cụ thể. Sau đó, sẽ thêm Filebeat vào hệ thống Suricata của chúng ta để gửi eve.json của nó tới Elasticsearch.
Cuối cùng, chúng sẽ ta kết nối với Kibana bằng SSH và trình duyệt web, sau đó tải và thao tác với các bảng điều khiển Kibana hiển thị các sự kiện và cảnh báo của Suricata.
Cài đặt Elasticsearch và Kibana trên Ubuntu
Điều kiện cần để cài đặt Elasticsearch và Kibana
Nếu như chúng ta đang theo dõi bài hướng dẫn cách cài đặt và thiết lập 1 số cấu hình với Suricata thì chúng ta đã có Suricata đang chạy trên máy chủ Ubuntu 20.04.
Nếu như chúng ta vẫn chưa cài đặt Suricata thì chúng ta có thể theo dõi bài hướng dẫn cách cài đặt và thiết lập 1 số cấu hình với Suricata
Chúng ta cũng sẽ cần một máy chủ thứ hai để lưu trữ Elasticsearch và Kibana. Máy chủ này sẽ được gọi là máy chủ Elasticsearch. Yêu cầu cần thiết phải là một máy chủ Ubuntu 20.04 với:
- RAM 4GB
- 2 CPU
Ngoài ra chúng ta cũng có thể chọn chạy Elasticsearch, Kibana, Filebeat và Suricata trên cùng một máy chủ để thử nghiệm.
Cài đặt Elasticsearch và Kibana
Đầu tiên để có thể cài đặt Elasticsearch và Kibana chúng ta cần thêm Elastic GPG key vào máy chủ của chúng ta bằng lệnh sau:
Tiếp theo, thêm danh sách nguồn vào thư mục sources.list.d
trong đó apt
sẽ tìm kiếm các nguồn mới:
Sau đó chúng ta đã có thể cài đặt Elasticsearch và Kibana bằng cách thực thi lệnh sau:
Sau khi đã cài đặt Elasticsearch và Kibana hoàn tất chúng ta cần tiến hành lưu lại địa chỉ IP của máy chủ đã được cài đặt. Chúng ta có thể sử dụng lệnh sau để kiểm tra:
Chúng ta cần ghi nhớ địa chỉ IP của máy chủ Elasticsearc(trong trường hợp này 10.124.11.30). Địa chỉ này sẽ được đề cập đến your_private_ip
ngoài ra chúng ta cần lưu ý tên interface, trong trường hợp này ens4.
Trong phần tiếp theo, chúng ta sẽ định cấu hình Elasticsearch và Kibana để lắng nghe các kết nối trên địa chỉ IP đến từ máy chủ Suricata.
Cấu hình Elasticsearch
Elasticsearch được cấu hình để chỉ chấp nhận các kết nối cục bộ theo mặc định và không có bất kỳ xác thực nào được kích hoạt, vì vậy các công cụ như Filebeat sẽ không thể gửi nhật ký đến nó. Trong phần này của hướng dẫn, chúng ta sẽ định cấu hình cài đặt mạng cho Elasticsearch và sau đó kích hoạt mô-đun xpack
tích hợp của Elasticsearch.
Cấu hình mạng Elasticsearch
Bởi vì máy chủ Elasticsearch và Suricata của chúng ta là riêng biệt do đó cần phải định cấu hình Elasticsearch để lắng nghe các kết nối trên interface của nó.
Mở file /etc/elasticsearch/elasticsearch.yml
bằng chỉnh sửa ưa thích:
Tìm dòng network.host: 192.168.0.1
tiến hành comment dòng này và thêm một dòng mới sau dòng đó để định cấu hình network.bind_host
như bên dưới:
Cần tiến hành thay thế your_private_ip
sang IP máy chủ mà các bạn đã thiết lập.
Tiếp theo cần tiến hành thêm các dòng sau vào cuối file:
Tuỳ chọn discovery.type
cho phép Elasticsearch chạy dưới dạng một node duy nhất còn xpack.security.enabled
bật một số tính năng bảo mật có trong Elasticsearch.
Lưu và đóng file khi chúng ta chỉnh sửa xong.
Tiếp theo, chúng ta sẽ khởi động Elasticsearch và sau đó định cấu hình mật khẩu để sử dụng mô-đun xpack
.
Chúng ta đã định cấu hình mạng và bảo mật xpack
cho Elasticsearch, bạn cần khởi động nó để các thay đổi có hiệu lực bằng cách thực thi lệnh sau:
Sau khi Elasticsearch đã được bật chúng ta tiến đến phần cấu hình mật khẩu Elasticsearch.
Cấu hình mật khẩu Elasticsearch
Chúng ta đã tiến hành bật xpack.security.enabled
vì thế cần tạo mật khẩu cho người dùng Elasticsearch như hướng dẫn sau:
Chúng ta sẽ nhận được đầu ra như sau.
Khi được nhắc tiếp tục, hãy nhấn y
và sau đó ENTER
:
Chúng ta sẽ không thể chạy lại tiện ích này, vì vậy hãy đảm bảo ghi lại những mật khẩu này. Vì chúng ta sẽ sử dụng mật khẩu của người dùng trong phần tiếp theo của hướng dẫn này.
Tại thời điểm này trong hướng dẫn, chúng ta đã hoàn tất việc định cấu hình Elasticsearch. Phần tiếp theo giải thích cách định cấu hình cài đặt mạng của Kibana và xpack
.
Cấu hình Kibana
Trong phần trước của hướng dẫn này, chúng ta đã định cấu hình Elasticsearch để lắng nghe các kết nối trên địa chỉ IP của máy chủ Elasticsearch. Chúng ta sẽ làm điều tương tự đối với Kibana để Filebeats trên máy chủ Suricata có thể tiếp cận.
Đầu tiên, cần kích hoạt xpack
của Kibana. Sau đó,sẽ định cấu hình cài đặt mạng và chi tiết xác thực của Kibana để kết nối với Elasticsearch.
Kích hoạt trong Kibana xpack.security
Chúng ta có thể tạo các khóa mã hóa cần thiết bằng cách sử dụng kibana-encryption-keys
có trong thư mục /usr/share/kibana/bin
như sau:
Kết quả như sau:
Bây giờ chúng ta sẽ thêm kết quả trên vào file cấu hình của Kibana /etc/kibana/kibana.yml
như sau:
Tiến hành thêm kết quả trên vào cuối file.
Cấu hình mạng Kibana
Để cấu hình mạng của Kibana để nó có sẵn trên địa chỉ IP của máy chủ Elasticsearch, tìm dòng #server.host: "localhost"
trong file /etc/kibana/kibana.yml
. Thêm một dòng mới sau dòng với địa chỉ IP của máy chủ.
Lưu và đóng file khi đã chỉnh sửa xong.
Tiếp theo, chúng ta sẽ cần cấu hình tên người dùng và mật khẩu mà Kibana sử dụng để kết nối với Elasticsearch.
Cấu hình thông tin đăng nhập Kibana
Có hai cách để đặt tên người dùng và mật khẩu mà Kibana sử dụng để xác thực với Elasticsearch. Đầu tiên là chỉnh sửa file /etc/kibana/kibana.yml
và thêm các giá trị vào đó. Phương pháp thứ hai là lưu trữ các giá trị trong kho khóa của Kibana , đây là một file được xáo trộn mà Kibana có thể sử dụng để lưu trữ.
Chúng tôi sẽ sử dụng phương pháp kho khóa trong hướng dẫn này vì nó tránh chỉnh sửa trực tiếp file cấu hình của Kibana.
Để thêm vào kho khóa bằng cách sử dụng kibana-keystore
, trước tiên hãy di chuyển vào thư mục /usr/share/kibana/bin
. Tiếp theo, chạy lệnh sau để đặt tên người dùng cho Kibana:
Tiến hành nhập username là kibana_system
như sau:
Bây giờ lặp lại lệnh tương tự cho mật khẩu.
Tiến hành nhập password đã được tạo bên trên khi nảy:
Bây giờ chúng ta đã định cấu hình mạng và xpack
cho Kibana, cũng như thêm thông tin đăng nhập vào kho khóa, chúng ta cần khởi động nó để các thay đổi có hiệu lực.
Khi Kibana bắt đầu, chúng ta có thể tiếp tục đến phần tiếp theo của hướng dẫn này, nơi chúng ta sẽ định cấu hình Filebeat trên máy chủ Suricata để gửi nhật ký của nó đến Elasticsearch.
Cài đặt Filebeat
Các quy trình Elasticsearch và Kibana đã được định cấu hình với cài đặt mạng và xác thực, bước tiếp theo là cài đặt và thiết lập Filebeat trên máy chủ Suricata.
Để bắt đầu cài đặt Filebeat, hãy thêm khóa Elastic GPG vào máy chủ Suricata bằng lệnh sau:
Kết quả như sau:
Tiếp theo, thêm danh sách nguồn vào thư mục sources.list.d:
Kết quả như sau:
Bây giờ chúng ta sẽ tiến hành cài đặt gói Filebeat:
Tiếp theo, chúng ta sẽ cần định cấu hình Filebeat để kết nối với cả Elasticsearch và Kibana. Mở /etc/filebeat/filebeat.yml
bằng trình chỉnh sửa ưa thích của bạn:
Thêm một dòng sau #host: "localhost:5601"
trỏ đến địa chỉ IP và cổng của máy chủ Kibana:
Tìm Elasticsearch Output của file chỉnh sửa hosts
username
và password
để khớp với các giá trị cho máy chủ Elasticsearch:
Lưu và đóng file khi chúng ta chỉnh sửa xong.
Tiếp theo, kích hoạt mô-đun Suricata tích hợp sẵn của Filebeats bằng lệnh sau:
Kết quả như sau:
Bây giờ Filebeat đã được định cấu hình để kết nối với Elasticsearch và Kibana, với mô-đun Suricata được bật, bước tiếp theo là tải bảng điều khiển và vào Elasticsearch.
Kết quả như sau:
Nếu không có lỗi, tiến hành khởi động Filebeat. Nó sẽ bắt đầu gửi các sự kiện từ nhật ký của Suricata eve.json tới Elasticsearch.
Bây giờ chúng ta đã cấu hình Filebeat, Kibana và Elasticsearch để xử lý nhật ký Suricata, bước cuối cùng trong hướng dẫn này là kết nối với Kibana và khám phá trang tổng quan SIEM.
Tổng quan SIEM của Kibana
Kibana là thành phần đồ họa. Chúng ta sẽ sử dụng Kibana với trình duyệt để khám phá dữ liệu cảnh báo và sự kiện của Suricata. Vì chúng ta đã định cấu hình Kibana để chỉ khả dụng qua địa chỉ IP của máy chủ Elasticsearch, chúng ta sẽ cần sử dụng đường hầm SSH để kết nối với Kibana.
Kết nối với Kibana bằng SSH
Chạy lệnh sau trong một thiết bị đầu cuối trên máy tính của chúng ta để tạo đường hầm SSH tới Kibana:
Trong đó:
-L
chuyển tiếp lưu lượng truy cập đến hệ thống cục bộ của chúng ta trên cổng 5601 tới máy chủ từ xa.- Phần 10.124.11.30:5601của lệnh chỉ định dịch vụ trên máy chủ Elasticsearch nơi lưu lượng truy cập sẽ được chuyển tiếp đến.
- IP 103.97.125.173 là địa chỉ IP công cộng mà chúng ta sử dụng để kết nối và quản lý máy chủ.
-N
hướng dẫn SSH không chạy một lệnh giống như một trình/bin/bash
, và thay vào đó, chỉ giữ kết nối mở.
Nếu muốn đóng đường hầm bất kỳ lúc nào, hãy nhấn CTRL+C
.
Trên Windows giống như ảnh chụp màn hình sau:
Trên MacOS và Linux giống như ảnh chụp màn hình sau:
Khi chúng ta đã kết nối với máy chủ Elasticsearch qua SSH với cổng chuyển tiếp tại chỗ, hãy mở trình duyệt và truy cập http://127.0.0.1:5601 . Chúng ta sẽ được chuyển hướng đến trang đăng nhập của Kibana:
Nếu trình duyệt không thể kết nối với Kibana, sẽ nhận được một thông báo như sau:
Lỗi này cho biết rằng đường hầm SSH không thể kết nối với dịch vụ Kibana trên máy chủ. Đảm bảo rằng đã chỉ định địa chỉ IP chính xác cho máy chủ Elasticsearch của mình và tải lại trang trong trình duyệt của bạn.
Đăng nhập vào máy chủ Kibana bằng Tên người dùng và mật khẩu của elastic
mà chúng ta đã sao chép trước đó trong hướng dẫn này.
Sau khi đăng nhập vào Kibana, chúng ta có thể khám phá trang tổng quan Suricata mà Filebeat đã định cấu hình.
Hãy nhập các cụm từ tìm kiếm type:dashboard suricata
. Tìm kiếm này sẽ trả về hai kết quả: Suricata Events và Suricata Alerts như hình sau:
Nhấp vào [Filebeat Suricata] Events Overview
để truy cập trang tổng quan Kibana hiển thị tổng quan về tất cả các sự kiện Suricata đã ghi:
Để truy cập trang tổng quanSuricata Alerts, hãy lặp lại tìm kiếm hoặc nhấp vào Alerts. Kết quả sẽ giống như ảnh chụp màn hình sau:
Nếu chúng ta muốn kiểm tra các sự kiện và cảnh báo mà mỗi bảng điều khiển hiển thị, hãy cuộn xuống cuối trang sẽ tìm thấy một bảng liệt kê từng sự kiện và cảnh báo. Chúng ta có thể mở rộng từng mục nhập để xem mục nhập nhật ký gốc từ Suricata và kiểm tra chi tiết các trường khác nhau như IP của một cảnh báo, kiểu tấn công, ID chữ ký Suricata và các trường khác.
Kibana cũng tích hợp sẵn các bảng điều khiển mà chúng có thể truy cập bằng menu ở bên trái cửa sổ trình duyệt. Điều hướng đến Networkđể biết tổng quan về các sự kiện được hiển thị trên bản đồ, cũng như dữ liệu tổng hợp về các sự kiện trên mạng.
Chúng ta có thể cuộn xuống cuối trang để có bảng liệt kê tất cả các sự kiện phù hợp với khung thời gian tìm kiếm đã chỉ định của bạn. Cũng có thể kiểm tra chi tiết từng sự kiện hoặc chọn một sự kiện để tạo dòng thời gian Kibana, sau đó chúng ta có thể sử dụng để điều tra luồng lưu lượng truy cập cụ thể, cảnh báo hoặc ID cộng đồng.
Tổng kết
Qua bài viết hướng dẫn trên chúng ta hoàn tất việc cài đặt và cấu hình Filebeat, Kibana và Elasticsearch để xử lý nhật ký Suricata trên Ubuntu 20.04. Hy vọng các bạn thành công trong việc cài đặt cũng như áp dụng vào trong thực tế, công việc.
Tính năng đang được phát triển