---
title: "Cách tạo SIEM với Suricata và Elastic Stack trên Ubuntu 20.04"
description: "Cách tạo SIEM với Suricata và Elastic Stack trên Ubuntu 20.04"
url: https://cloudfly.vn/techblog/cach-tao-siem-voi-suricata-va-elastic-stack-tren-ubuntu-2004
image: https://media.cloudfly.vn/posts/techblog_093I9Rt.png
---

# Cách tạo SIEM với Suricata và Elastic Stack trên Ubuntu 20.04

## Giới thiệu

Trong hướng dẫn này, bạn 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ụ Security Information and Event Management (SIEM) (Quản lý sự kiện và Thông tin bảo mật) của riêng bạn bằng cách sử dụng Elastic stack và 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 bạn.

Các thành phần mà bạn sẽ sử dụng để xây dựng công cụ SIEM của riêng mình là:
* **Elasticsearch** để lưu trữ, lập chỉ mục, tương quan và tìm kiếm các sự kiện bảo mật đến từ máy chủ Suricata của bạn.
* **Kibana** để hiển thị và điều hướng xung quanh bảo mật event logs (nhật ký sự kiện) được lưu trữ trong Elasticsearch.
* **Filebeat** để phân tích cú pháp tệp nhật ký `eve.json` của Suricata và gửi từng sự kiện đến Elasticsearch để xử lý.
* **Suricata** quét lưu lượng mạng của bạn để 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ệ.

Trước tiên, bạn sẽ cài đặt và thiết lập cấu hình Elasticsearch và Kibana với một số cài đặt xác thực cụ thể. Sau đó, bạn sẽ thêm Filebeat vào hệ thống Suricata của mình để gửi nhật ký `eve.json` của nó tới Elasticsearch.

Cuối cùng, bạn sẽ học cách kết nối với Kibana bằng SSH và trình duyệt web của mình, sau đó tải và tương tác với trang tổng quan Kibana hiển thị các sự kiện và cảnh báo của Suricata.

## Điều kiện

Nếu bạn đang theo dõi loạt bài hướng dẫn này thì bạn đã có Suricata đang chạy trên máy chủ Ubuntu 20.04. Máy chủ này sẽ được gọi là **Suricata server** của bạn.

* Nếu bạn vẫn cần cài đặt Suricata thì bạn có thể làm theo hướng dẫn Cách cài đặt Suricata trên Ubuntu 20.04.
* Bạn cũng sẽ cần một số Suricata signatures được tải và thiết lập cấu hình để tạo cảnh báo hoặc giảm lưu lượng truy cập. Thực hiện theo Hướng dẫn tìm hiểu Suricata Signatures trong loạt bài này để biết  cách tạo signatures của riêng bạn. Hoặc bạn có thể tải xuống bộ signatures toàn diện bằng cách làm theo Bước 3: Cập nhật Bộ quy tắc Suricata trong hướng dẫn Cách cài đặt Suricata.

Bạn 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à **Elasticsearch server** của bạn. Nó phải là một máy chủ Ubuntu 20.04 với:
* RAM 4GB và 2 CPU được thiết lập với non-root sudo user. Bạn có thể đạt được điều này bằng cách làm theo Thiết lập máy chủ ban đầu với Ubuntu 20.04.

Đối với mục đích của hướng dẫn này, cả hai máy chủ sẽ có thể giao tiếp bằng địa chỉ IP riêng. Bạn có thể sử dụng VPN như WireGuard để kết nối các máy chủ của mình hoặc sử dụng nhà cung cấp dịch vụ đám mây có mạng riêng giữa các máy chủ. Bạn 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.

## Bước 1: Cài đặt Elasticsearch và Kibana

Bước đầu tiên trong hướng dẫn này là cài đặt Elasticsearch và Kibana trên máy chủ Elasticsearch của bạn. Để bắt đầu, hãy thêm Elastic GPG key vào máy chủ của bạn bằng lệnh sau:
```command
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
```

Tiếp theo, thêm danh sách nguồn Elastic vào thư mục `sources.list.d`, nơi `apt` sẽ tìm kiếm các nguồn mới:
```command
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
```

Bây giờ, hãy cập nhật chỉ mục gói của máy chủ của bạn và cài đặt Elasticsearch và Kibana:
```command
sudo apt update
sudo apt install elasticsearch kibana
```

Sau khi cài đặt xong các gói, hãy tìm và ghi lại địa chỉ IP riêng của máy chủ của bạn bằng lệnh `ip address show`:
```command
ip -brief address show
```

Bạn sẽ nhận được đầu ra như sau:
```
[secondary_label Output]
lo               UNKNOWN        127.0.0.1/8 ::1/128
eth0             UP             159.89.122.115/20 10.20.0.8/16 2604:a880:cad:d0::e56:8001/64 fe80::b832:69ff:fe46:7e5d/64
<^>eth1<^>             UP             <^>10.137.0.5/16<^> fe80::b883:5bff:fe19:43f3/64
```

Giao diện mạng riêng trong đầu ra này là thiết bị `<^>eth1<^>` được đánh dấu, với địa chỉ IPv4 `<^>10.137.0.5/16<^>`. Tên thiết bị và địa chỉ IP của bạn sẽ khác nhau. Tuy nhiên, địa chỉ sẽ từ các khối địa chỉ dành riêng sau:
* `10.0.0.0` to `10.255.255.255` (10/8 prefix)
* `172.16.0.0` to `172.31.255.255` (172.16/12 prefix)
* `192.168.0.0` to `192.168.255.255` (192.168/16 prefix)

<$>[note]
Nếu bạn muốn tìm hiểu thêm về cách các khối này được phân bổ, hãy truy cập RFC 1918 specification
<$>

Ghi lại địa chỉ IP riêng cho máy chủ Elasticsearch của bạn (trong trường hợp này là `<^>10.137.0.5<^>`). Địa chỉ này sẽ được gọi là `<^>your_private_ip<^>` trong phần còn lại của hướng dẫn này. Cũng lưu ý tên của giao diện mạng, trong trường hợp này là `<^>eth1<^>`. Trong phần tiếp theo của hướng dẫn này, bạn sẽ thiết lập cấu hình Elasticsearch và Kibana để lắng nghe các kết nối trên địa chỉ IP riêng đến từ máy chủ Suricata của bạn.

## Bước 2: Thiết lập cấu hình Elasticsearch

Elasticsearch được thiết lập cấu hình để chỉ chấp nhận các kết nối cục bộ theo mặc định. Ngoài ra, nó 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, bạn sẽ thiết lập cấu hình cài đặt mạng cho Elasticsearch và sau đó bật mô-đun bảo mật `xpack` tích hợp sẵn của Elasticsearch.

### Thiết lập cấu hình mạng Elasticsearch

Vì máy chủ Elasticsearch và Suricata của bạn là riêng biệt, bạn sẽ cần phải thiết lập cấu hình Elasticsearch để lắng nghe các kết nối trên giao diện mạng riêng của nó. Bạn cũng sẽ cần phải thiết lập cấu hình các quy tắc tường lửa của mình để cho phép truy cập vào Elasticsearch trên giao diện mạng riêng của bạn.

Mở tệp `/etc/elasticsearch/elasticsearch.yml` bằng `nano` hoặc trình chỉnh sửa ưa thích của bạn:
```command
sudo nano /etc/elasticsearch/elasticsearch.yml
```

Tìm dòng được nhận xét trong `#network.host: 192.168.0.1` giữa các dòng 50–60 và thêm một dòng mới sau dòng đó để thiết lập cấu hình cài đặt `network.bind_host`, như được đánh dấu bên dưới:
```nginx
[label //etc/elasticsearch/elasticsearch.yml]
# By default Elasticsearch is only accessible on localhost. Set a different
# address here to expose this node on the network:
#
#network.host: 192.168.0.1
<^>network.bind_host: ["127.0.0.1", "your_private_ip"]<^>
#
# By default Elasticsearch listens for HTTP traffic on the first free port it
# finds starting at 9200. Set a specific HTTP port here:
```

Thay thế IP riêng của bạn cho địa chỉ `your_private_ip`. Dòng này sẽ đảm bảo rằng Elasticsearch vẫn có sẵn trên địa chỉ cục bộ của nó để Kibana có thể truy cập nó, cũng như trên địa chỉ IP riêng cho máy chủ của bạn.

Tiếp theo, đi đến cuối tệp bằng phím tắt `nano` `CTRL + v` cho đến khi bạn đến cuối tệp.

Thêm các dòng được đánh dấu sau vào cuối tệp:
```nginx
[label /etc/elasticsearch/elasticsearch.yml]
. . .
<^>discovery.type: single-node<^>
<^>xpack.security.enabled: true<^>
```

Cài đặt `discovery.type` cho phép Elasticsearch chạy như một node duy nhất, trái ngược với trong một cụm các máy chủ Elasticsearch khác. Cài đặt `xpack.security.enabled` bật một số tính năng bảo mật có trong Elasticsearch.

Lưu và đóng tệp khi bạn chỉnh sửa xong. Nếu bạn đang sử dụng `nano`, bạn có thể làm như vậy bằng `CTRL + X`, sau đó `Y` và `ENTER` để xác nhận.

Cuối cùng, thêm các quy tắc tường lửa để đảm bảo máy chủ Elasticsearch của bạn có thể truy cập được trên giao diện mạng riêng của nó. Nếu bạn đã làm theo các hướng dẫn trước và đang sử dụng Uncomplicated Firewall (`ufw`), hãy chạy các lệnh sau:
```command
sudo ufw allow in on <^>eth1<^>
sudo ufw allow out on <^>eth1<^>
```

Thay thế giao diện mạng riêng của bạn thay cho `<^>eth1<^>` nếu nó sử dụng một tên khác.

Tiếp theo, bạn sẽ khởi động Elasticsearch daemon và sau đó cấu hình mật khẩu để sử dụng với mô-đun bảo mật `xpack`.

### Khởi động Elasticsearch

Bây giờ bạn đã thiết lập cấu hình mạng và cài đặt bảo mật `xpack` cho Elasticsearch, bạn cần khởi động nó để các thay đổi có hiệu lực.

Chạy lệnh `systemctl` dưới đây để khởi động Elasticsearch:
```command
sudo systemctl start elasticsearch.service
```

Khi Elasticsearch khởi động xong, bạn có thể tiếp tục đến phần tiếp theo của hướng dẫn này, nơi bạn sẽ tạo mật khẩu cho người dùng mặc định được tích hợp sẵn trong Elasticsearch.

### Thiết lập cấu hình mật khẩu Elasticsearch

Bây giờ bạn đã bật cài đặt `xpack.security.enabled`, bạn cần tạo mật khẩu cho người dùng Elasticsearch mặc định. Elasticsearch bao gồm một tiện ích trong thư mục `/usr/share/elasticsearch/bin` có thể tự động tạo mật khẩu ngẫu nhiên cho những người dùng này.

Chạy lệnh dưới đây để `cd` vào thư mục và sau đó tạo mật khẩu ngẫu nhiên cho tất cả người dùng mặc định:
```command
cd /usr/share/elasticsearch/bin
sudo ./elasticsearch-setup-passwords auto
```

Bạn sẽ nhận được đầu ra như dưới đây. Khi được nhắc tiếp tục, hãy nhấn `y` và sau đó `RETURN` hoặc `ENTER`:

<$>[note]
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
The passwords will be randomly generated and printed to the console.
Please confirm that you would like to continue [y/N]y


Changed password for user apm_system
PASSWORD apm_system = eWqzd0asAmxZ0gcJpOvn

Changed password for user kibana_system
PASSWORD kibana_system = 1HLVxfqZMd7aFQS6Uabl

Changed password for user kibana
PASSWORD kibana = 1HLVxfqZMd7aFQS6Uabl

Changed password for user logstash_system
PASSWORD logstash_system = wUjY59H91WGvGaN8uFLc

Changed password for user beats_system
PASSWORD beats_system = 2p81hIdAzWKknhzA992m

Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = 85HF85Fl6cPslJlA8wPG

Changed password for user elastic
PASSWORD elastic = 6kNbsxQGYZ2EQJiqJpgl
<$>

Bạn sẽ không thể chạy lại tiện ích, vì vậy hãy đảm bảo ghi lại những mật khẩu này ở một nơi an toàn. Bạn sẽ cần sử dụng mật khẩu của `kibana_system` user trong phần tiếp theo của hướng dẫn này và mật khẩu của `elastic` user trong bước Thiết lập cấu hình Filebeat của hướng dẫn này.

Tại thời điểm này trong hướng dẫn, bạn đã hoàn tất việc thiết lập cấu hình Elasticsearch. Phần tiếp theo giải thích cách thiết lập cấu hình cài đặt mạng của Kibana và mô-đun bảo mật `xpack` của nó.

## Bước 3: Thiết lập cấu hình Kibana

Trong phần trước của hướng dẫn này, bạn đã thiết lập cấu hình Elasticsearch để lắng nghe các kết nối trên địa chỉ IP riêng của máy chủ Elasticsearch của mình. Bạn sẽ cần làm điều tương tự đối với Kibana để Filebeats trên máy chủ Suricata của bạn có thể tiếp cận nó.

Trước tiên, bạn sẽ kích hoạt chức năng bảo mật `xpack` của Kibana bằng cách tạo một số bí mật mà Kibana sẽ sử dụng để lưu trữ dữ liệu trong Elasticsearch. Sau đó, bạn sẽ thiết lập 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.

### Bật `xpack.security` trong Kibana

Để bắt đầu với cài đặt bảo mật `xpack` trong Kibana, bạn cần tạo một số khóa mã hóa. Kibana sử dụng các khóa này để lưu trữ dữ liệu phiên (như cookie), cũng như các trang tổng quan và chế độ xem dữ liệu đã lưu khác nhau trong Elasticsearch.

Bạn có thể tạo các khóa mã hóa cần thiết bằng cách sử dụng tiện ích `kibana-encryption-keys` có trong thư mục `/usr/share/kibana/bin`. Chạy lệnh dưới đây để `cd` vào thư mục và sau đó tạo các khóa:
```command
cd /usr/share/kibana/bin/
sudo ./kibana-encryption-keys generate -q
```

Cờ `-q` ngăn chặn các hướng dẫn của công cụ để bạn chỉ nhận được đầu ra như sau:
```
[secondary_label Output]
xpack.encryptedSavedObjects.encryptionKey: 66fbd85ceb3cba51c0e939fb2526f585
xpack.reporting.encryptionKey: 9358f4bc7189ae0ade1b8deeec7f38ef
xpack.security.encryptionKey: 8f847a594e4a813c4187fa93c884e92b
```

Sao chép đầu ra của bạn ở một nơi an toàn. Bây giờ bạn sẽ thêm chúng vào tệp cấu hình `/etc/kibana/kibana.yml` của Kibana.

Mở tệp bằng `nano` hoặc trình chỉnh sửa ưa thích của bạn:
```command
sudo nano /etc/kibana/kibana.yml
```

Đi tới cuối tệp bằng phím tắt `nano` `CTRL + v` cho đến khi bạn đến cuối tệp. Dán ba dòng `xpack` mà bạn đã sao chép vào cuối tệp:
```nginx
[label /etc/kibana/kibana.yml]
. . .

# Specifies locale to be used for all localizable strings, dates and number formats.
# Supported languages are the following: English - en , by default , Chinese - zh-CN .
#i18n.locale: "en"

<^>xpack.encryptedSavedObjects.encryptionKey: 66fbd85ceb3cba51c0e939fb2526f585<^>
<^>xpack.reporting.encryptionKey: 9358f4bc7189ae0ade1b8deeec7f38ef<^>
<^>xpack.security.encryptionKey: 8f847a594e4a813c4187fa93c884e92b<^>
```

Giữ tệp mở và chuyển sang phần tiếp theo, nơi bạn sẽ thiết lập cấu hình cài đặt mạng của Kibana.

### Cấu hình mạng Kibana

Để thiết lập cấu hình mạng của Kibana để nó khả dụng trên địa chỉ IP riêng của máy chủ Elasticsearch của bạn, hãy tìm dòng `#server.host: "localhost"` được nhận xét trong `/etc/kibana/kibana.yml`. Dòng ở gần đầu tệp. Thêm một dòng mới sau dòng với địa chỉ IP riêng của máy chủ của bạn, như được đánh dấu bên dưới:
```nginx
[label /etc/kibana/kibana.yml]
# Kibana is served by a back end server. This setting specifies the port to use.
#server.port: 5601

# Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.
# The default is 'localhost', which usually means remote machines will not be able to connect.
# To allow connections from remote users, set this parameter to a non-loopback address.
#server.host: "localhost"
<^>server.host: "your_private_ip"<^>
```

Thay thế IP riêng của bạn thay cho địa chỉ `<^>your_private_ip<^>`.

Lưu và đóng tệp khi bạn chỉnh sửa xong. Nếu bạn đang sử dụng `nano`, bạn có thể làm như vậy bằng `CTRL + X`, sau đó `Y` và `ENTER` để xác nhận.

Tiếp theo, bạn sẽ cần thiết lập cấu hình username và password  mà Kibana sử dụng để kết nối với Elasticsearch.

### Thiết lập cấu hình thông tin đăng nhập Kibana

Có hai cách để đặt username và password mà Kibana sử dụng để xác thực với Elasticsearch. Đầu tiên là chỉnh sửa tệp cấu hình `/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 keystore của Kibana, đây là một tệp được xáo trộn mà Kibana có thể sử dụng để lưu trữ bí mật.

Chúng ta sẽ sử dụng phương pháp keystore trong hướng dẫn này vì nó tránh chỉnh sửa trực tiếp tệp cấu hình của Kibana.

<$>[note]
Thay vào đó, nếu bạn muốn chỉnh sửa tệp, các cài đặt để thiết lập cấu hình trong đó là `elasticsearch.username` và `elasticsearch.password`.

Nếu bạn chọn chỉnh sửa tệp cấu hình, hãy bỏ qua các bước còn lại trong phần này.
<$>

Để thêm bảo mật cho keystore bằng tiện ích `kibana-keystore`, trước tiên hãy chuyển `cd` vào thư mục `/usr/share/kibana/bin`. Tiếp theo, chạy lệnh sau để đặt username cho Kibana:

```command
sudo ./kibana-keystore add elasticsearch.username
```

Bạn sẽ nhận được một lời nhắc như sau:
```nginx
[label Username Entry]
Enter value for elasticsearch.username: <^>*************<^>
```

Nhập `kibana_system` khi được nhắc, bằng cách sao chép và dán hoặc nhập username cẩn thận. Mỗi ký tự bạn nhập sẽ được che bằng ký tự `*`. Nhấn `ENTER` hoặc `RETURN` khi bạn nhập xong username.

Bây giờ lặp lại lệnh tương tự cho password. Đảm bảo sao chép mật khẩu cho `kibana_system` user mà bạn đã tạo trong phần trước của hướng dẫn này. Để tham khảo, trong hướng dẫn này, mật khẩu ví dụ là `1HLVxfqZMd7aFQS6Uabl`.

Chạy lệnh sau để đặt mật khẩu:
```command
sudo ./kibana-keystore add elasticsearch.password
```

Khi được nhắc, hãy dán mật khẩu để tránh bất kỳ lỗi phiên âm nào:
```nginx
[label Password Entry]
Enter value for elasticsearch.password: ********************
```

### Khởi động Kibana

Bây giờ bạn đã thiết lập cấu hình mạng và cài đặt bảo mật `xpack` cho Kibana, cũng như thêm thông tin đăng nhập vào kho khóa, bạn cần khởi động nó để các thay đổi có hiệu lực.

Chạy lệnh `systemctl` dưới đây để khởi động lại Kibana:
```command
sudo systemctl start kibana.service
```

Khi Kibana khởi động, bạn có thể tiếp tục đến phần tiếp theo của hướng dẫn này, nơi bạn sẽ thiết lập cấu hình Filebeat trên máy chủ Suricata của mình để gửi nhật ký của nó đến Elasticsearch.

## Bước 4: Cài đặt Filebeat

Bây giờ các quy trình Elasticsearch và Kibana của bạn đã được thiết lậph cấu hình với cài đặt mạng và xác thực chính xác, bước tiếp theo là cài đặt và thiết lập Filebeat trên máy chủ Suricata của bạn.

Để bắt đầu cài đặt Filebeat, hãy thêm Elastic GPG key vào máy chủ Suricata của bạn bằng lệnh sau:
```command
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
```

Tiếp theo, thêm danh sách nguồn đàn hồi vào thư mục `sources.list.d`, nơi `apt` sẽ tìm kiếm các nguồn mới:
```command
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
```

Bây giờ, hãy cập nhật chỉ mục gói của máy chủ và cài đặt gói Filebeat:
```command
sudo apt update
sudo apt install filebeat
```

Tiếp theo, bạn sẽ cần thiết lập cấu hình Filebeat để kết nối với cả Elasticsearch và Kibana. Mở tệp cấu hình `/etc/filebeat/filebeat.yml` bằng `nano` hoặc trình chỉnh sửa ưa thích của bạn:
```command
sudo nano /etc/filebeat/filebeat.yml
```

Tìm phần `Kibana` của tệp xung quanh dòng 100. Thêm một dòng sau dòng được nhận xét `#host: "localhost: 5601"` trỏ đến địa chỉ IP riêng và cổng của cá thể Kibana của bạn:
```nginx
[label /etc/filebeat/filebeat.yml]
. . .
# Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
# This requires a Kibana endpoint configuration.
setup.kibana:

  # Kibana Host
  # Scheme and port can be left out and will be set to the default (http and 5601)
  # In case you specify and additional path, the scheme is required: http://localhost:5601/path
  # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
  #host: "localhost:5601"
  <^>host: "your_private_ip:5601"<^>

. . .
```

Thay đổi này sẽ đảm bảo rằng Filebeat có thể kết nối với Kibana để tạo các chỉ số SIEM, trang tổng quan và đường ống xử lý khác nhau trong Elasticsearch để xử lý nhật ký Suricata của bạn.

Tiếp theo, tìm phần `Elasticsearch Output` của tệp xung quanh dòng 130 và chỉnh sửa cài đặt `hosts`, `username` và `password` để khớp với các giá trị cho máy chủ Elasticsearch của bạn:
```custom_prefix()
output.elasticsearch:
  # Array of hosts to connect to.
  <^>hosts: ["your_private_ip:9200"]<^>

  # Protocol - either `http` (default) or `https`.
  #protocol: "https"

  # Authentication credentials - either API key or username/password.
  #api_key: "id:api_key"
  <^>username: "elastic"<^>
  <^>password: "6kNbsxQGYZ2EQJiqJpgl"<^>

. . .
```

Thay thế địa chỉ IP riêng của máy chủ Elasticsearch của bạn trên dòng `hosts` thay cho giá trị `your_private_ip`. Bỏ ghi chú trường `username` và đặt nó cho `elastic` user. Thay đổi trường `password` từ `changeme` thành mật khẩu cho `elastic` user mà bạn đã tạo trong phần Thiết lập cấu hình Mật khẩu Elasticsearch của hướng dẫn này.

Lưu và đóng tệp khi bạn chỉnh sửa xong. Nếu bạn đang sử dụng `nano`, bạn có thể làm như vậy bằng `CTRL + X`, sau đó `Y` và `ENTER` để xác nhận.

Tiếp theo, kích hoạt mô-đun Suricata tích hợp sẵn của Filebeats bằng lệnh sau:
```command
sudo filebeat modules enable suricata
```

Bây giờ Filebeat đã được thiết lập cấu hình để kết nối với Elasticsearch và Kibana, với mô-đun Suricata được kích hoạt, bước tiếp theo là tải bảng điều khiển (dashboards) và đường ống (pipelines) SIEM vào Elasticsearch.

Chạy lệnh `filebeat setup`. Có thể mất vài phút để tải mọi thứ:
```command
sudo filebeat setup
```

Khi lệnh kết thúc, bạn sẽ nhận được đầu ra như sau:
```
[secondary_label Output]
Overwriting ILM policy is disabled. Set `setup.ilm.overwrite: true` for enabling.

Index setup finished.
Loading dashboards (Kibana must be running and reachable)
Loaded dashboards
Setting up ML using setup --machine-learning is going to be removed in 8.0.0. Please use the ML app instead.
See more: https://www.elastic.co/guide/en/machine-learning/current/index.html
It is not possible to load ML jobs into an Elasticsearch 8.0.0 or newer using the Beat.
Loaded machine learning job configurations
Loaded Ingest pipelines
```

Nếu không có lỗi, hãy sử dụng lệnh `systemctl` để khởi động Filebeat. Nó sẽ bắt đầu gửi các sự kiện từ nhật ký `eve.json` của Suricata tới Elasticsearch khi nó đang chạy.
```command
sudo systemctl start filebeat.service
```

Bây giờ bạn đã thiết lập cấu hình Filebeat, Kibana và Elasticsearch để xử lý nhật ký Suricata của mình, 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á SIEM dashboards.

## Bước 5: Điều hướng SIEM dashboards của Kibana

Kibana là thành phần đồ họa của Elastic stack. Bạn sẽ sử dụng Kibana với trình duyệt của mình để khám phá dữ liệu cảnh báo và sự kiện của Suricata. Vì bạn đã thiết lập cấu hình Kibana để chỉ khả dụng qua địa chỉ IP riêng của máy chủ Elasticsearch, bạn sẽ cần sử dụng SSH tunnel để kết nối với Kibana.

### Kết nối với Kibana bằng SSH

SSH có một tùy chọn `-L`cho phép bạn chuyển tiếp lưu lượng mạng trên một cổng cục bộ qua kết nối của nó với địa chỉ IP từ xa và cổng trên máy chủ. Bạn sẽ sử dụng tùy chọn này để chuyển tiếp lưu lượng truy cập từ trình duyệt sang phiên bản Kibana của bạn.

Trên Linux, macOS và các phiên bản cập nhật của Windows 10 trở lên, bạn có thể sử dụng ứng dụng khách SSH tích hợp sẵn để tạo đường hầm. Bạn sẽ sử dụng lệnh này mỗi khi muốn kết nối với Kibana. Bạn có thể đóng kết nối này bất kỳ lúc nào và sau đó chạy lại lệnh SSH để thiết lập lại đường hầm.

Chạy lệnh sau trong một thiết bị đầu cuối trên máy tính để bàn hoặc máy tính xách tay cục bộ của bạn để tạo đường hầm SSH tới Kibana:
```command
ssh -L 5601:<^>your_private_ip:5601<^> sammy@<^>203.0.113.5<^> -N
```

Các đối số khác nhau cho SSH là:
* Cờ `-L` chuyển tiếp lưu lượng truy cập đến hệ thống cục bộ của bạn trên cổng `5601` đến máy chủ từ xa.
* Phần `<^>your_private_ip: 5601<^>` của lệnh chỉ định dịch vụ trên máy chủ Elasticsearch của bạn nơi lưu lượng truy cập của bạn sẽ được chuyển tiếp đến. Trong trường hợp này, dịch vụ đó là Kibana. Đảm bảo thay thế địa chỉ IP riêng của máy chủ Elasticsearch của bạn thay cho `<^>your_private_ip<^>`.
* Địa chỉ `<^>203.11.0.5<^>` là địa chỉ IP công cộng mà bạn sử dụng để kết nối và quản trị máy chủ của mình. Thay thế địa chỉ IP công cộng của máy chủ Elasticsearch của bạn vào vị trí của nó.
* Cờ `-N` hướng dẫn SSH **không** chạy một lệnh giống như một trình bao tương tác `/bin/bash`, và thay vào đó, chỉ giữ kết nối mở. Nó thường được sử dụng khi chuyển tiếp các cổng như trong ví dụ này.

Nếu bạn muốn đóng đường hầm bất kỳ lúc nào, hãy nhấn `CTRL + C`.

Trên Windows, thiết bị đầu cuối của bạn sẽ giống như ảnh chụp màn hình sau:

<$>[note]
Lưu ý: Bạn có thể được nhắc nhập mật khẩu nếu bạn không sử dụng SSH key. Nhập hoặc dán nó vào lời nhắc và nhấn `ENTER` hoặc `RETURN`.
<$>

![description image](https://media.cloudfly.vn/posts/cach-tao-SIEM-voi-Suricata-va-Elastic-Stack-tren-Ubuntu-20.04-2.png)

Trên macOS và Linux, thiết bị đầu cuối của bạn sẽ tương tự như ảnh chụp màn hình sau:

![description image](https://media.cloudfly.vn/posts/cach-tao-SIEM-voi-Suricata-va-Elastic-Stack-tren-Ubuntu-20.04-3.png)

Khi bạn đã kết nối với máy chủ Elasticsearch của mình qua SSH với cổng chuyển tiếp tại chỗ, hãy mở trình duyệt của bạn và truy cập http://127.0.0.1:5601. Bạn sẽ được chuyển hướng đến trang đăng nhập của Kibana:

![description image](https://media.cloudfly.vn/posts/cach-tao-SIEM-voi-Suricata-va-Elastic-Stack-tren-Ubuntu-20.04-4.png)

Nếu trình duyệt của bạn không thể kết nối với Kibana, bạn sẽ nhận được một thông báo như sau trong thiết bị đầu cuối của mình:

```
[secondary_label Output]
channel 3: open failed: connect failed: No route to host
```

Lỗi này cho biết rằng đường hầm SSH của bạn không thể kết nối với dịch vụ Kibana trên máy chủ của bạn. Đảm bảo rằng bạn đã chỉ định địa chỉ IP riêng 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 của bạn bằng cách sử dụng `elastic` cho Username và password mà bạn đã sao chép trước đó trong hướng dẫn này cho user.

### Duyệt Kibana SIEM Dashboards

Sau khi đăng nhập vào Kibana, bạn có thể khám phá Suricata dashboards mà Filebeat đã thiết lập cấu hình cho bạn.

Trong trường tìm kiếm ở đầu trang Kibana Welcome, hãy nhập cụm từ tìm kiếm `type:dashboard suricata`. Tìm kiếm này sẽ trả về hai kết quả: trang Suricata Events và Suricata Alerts dashboards theo ảnh chụp màn hình sau:

![description image](https://media.cloudfly.vn/posts/cach-tao-SIEM-voi-Suricata-va-Elastic-Stack-tren-Ubuntu-20.04-5.png)

Nhấp vào kết quả `[Filebeat Suricata] Events Overview` để truy cập Kibana dashboard hiển thị tổng quan về tất cả các sự kiện Suricata đã ghi:

![description image](https://media.cloudfly.vn/posts/cach-tao-SIEM-voi-Suricata-va-Elastic-Stack-tren-Ubuntu-20.04-6.png)

Để truy cập trang Suricata Alerts dashboard, hãy lặp lại tìm kiếm hoặc nhấp vào liên kết `Alerts` có trong Events dashboard. Trang của bạn sẽ giống như ảnh chụp màn hình sau:

![description image](https://media.cloudfly.vn/posts/cach-tao-SIEM-voi-Suricata-va-Elastic-Stack-tren-Ubuntu-20.04-7.png)

Nếu bạn muốn kiểm tra các sự kiện và cảnh báo mà mỗi dashboard hiển thị, hãy cuộn xuống cuối trang, nơi bạn sẽ tìm thấy một bảng liệt kê từng sự kiện và cảnh báo. Bạn có thể mở rộng từng mục nhập để xem mục nhập nhật ký ban đầu từ Suricata và kiểm tra chi tiết các trường khác nhau như IP nguồn và đích cho 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 có một bộ Security dashboards được tích hợp sẵn mà bạn có thể truy cập bằng cách sử dụng menu ở bên trái của cửa sổ trình duyệt. Điều hướng đến Network dashboard để 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 của bạn. Trang tổng quan của bạn sẽ giống như ảnh chụp màn hình sau:

![description image](https://media.cloudfly.vn/posts/cach-tao-SIEM-voi-Suricata-va-Elastic-Stack-tren-Ubuntu-20.04-8.png)

Bạn có thể cuộn xuống cuối trang Network dashboard để 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 được chỉ định của bạn. 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 Kibana timeline, sau đó bạn 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.

## Kết luận

Trong hướng dẫn này, bạn đã cài đặt và thiết lập cấu hình Elasticsearch và Kibana trên một máy chủ độc lập. Bạn đã thiết lập cấu hình cả hai công cụ để khả dụng trên một địa chỉ IP riêng. Bạn cũng đã thiết lập cấu hình cài đặt xác thực của Elasticsearch và Kibana bằng mô-đun bảo mật `xpack` đi kèm với mỗi công cụ.

Sau khi hoàn thành các bước cấu hình Elasticsearch và Kibana, bạn cũng đã cài đặt và thiết lập cấu hình Filebeat trên máy chủ Suricata của mình. Bạn đã sử dụng Filebeat để điền trang tổng quan của Kibana và bắt đầu gửi nhật ký Suricata tới Elasticsearch.

Cuối cùng, bạn đã tạo một đường hầm SSH đến máy chủ Elasticsearch của mình và đăng nhập vào Kibana. Bạn đã tìm thấy các trang Suricata Events và Alerts dashboards mới, cũng như trang Network dashboard.
