Suricata là một công cụ giám sát mạng kiểm tra và xử lý mọi gói lưu lượng internet chảy qua máy chủ của bạn. Công cụ này có thể tạo sự kiện nhật ký, kích hoạt cảnh báo và loại bỏ lưu lượng khi phát hiện bất kỳ hoạt động đáng ngờ nào.
Bạn có thể cài đặt Suricata trên một máy duy nhất để giám sát lưu lượng của máy hoặc triển khai trên máy chủ cổng để quét tất cả lưu lượng đến và đi từ các máy chủ khác được kết nối với máy đó. Bạn có thể kết hợp Suricata với Elasticsearch, Kibana và Filebeat để tạo công cụ Quản lý sự kiện và thông tin bảo mật (SIEM).
Trong hướng dẫn này, bạn sẽ cài đặt Suricata IDS cùng với ElasticStack trên máy chủ Debian 12. Các thành phần khác nhau của ngăn xếp là:
Chúng tôi sẽ cài đặt Suricata và Elastic stack trên các máy chủ khác nhau cho hướng dẫn của mình.
[*]
Đảm bảo mọi thứ được cập nhật trên cả hai máy chủ.
Dịch vụ Suricata được tự động bật và khởi động. Trước khi tiếp tục, hãy dừng dịch vụ Suricata vì chúng ta cần cấu hình dịch vụ này trước.
Mở tệp
Xác định vị trí dòng
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Bây giờ, các sự kiện của bạn sẽ mang một ID như
Kiểm tra tên thiết bị của giao diện mạng bằng lệnh sau.
Bạn sẽ nhận được đầu ra như sau.
Biến
Bây giờ bạn đã biết tên thiết bị của mình, hãy mở tệp cấu hình.
Tìm dòng
Nếu bạn muốn thêm các giao diện bổ sung, bạn có thể thực hiện bằng cách thêm chúng vào cuối Phần
Để thêm giao diện mới, hãy chèn giao diện đó ngay phía trên phần
Chúng tôi đã thêm một giao diện mới
Tìm dòng
Để thêm giao diện mới giống như trước, hãy chèn giao diện đó ngay phía trên phần
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Phần
Bạn có thể liệt kê danh sách nhà cung cấp mặc định bằng cách sử dụng lệnh sau.
Ví dụ, nếu bạn muốn bao gồm bộ quy tắc
Chạy lại lệnh
Cờ
Kiểm tra trạng thái của quá trình.
Bạn sẽ thấy đầu ra sau nếu mọi thứ hoạt động bình thường.
Quá trình này có thể mất vài phút để hoàn tất việc phân tích tất cả các quy tắc. Do đó, kiểm tra trạng thái ở trên không phải là dấu hiệu đầy đủ cho thấy Suricata đã sẵn sàng hay chưa. Bạn có thể theo dõi tệp nhật ký bằng lệnh sau.
Nếu bạn thấy dòng sau trong tệp nhật ký, điều đó có nghĩa là Suricata đang chạy và sẵn sàng theo dõi lưu lượng mạng. Thoát khỏi lệnh
Bạn sẽ nhận được phản hồi sau.
Lệnh trên giả vờ trả về đầu ra của Lệnh
Nếu yêu cầu của bạn sử dụng IPv6, bạn sẽ thấy đầu ra sau.
Nếu yêu cầu của bạn sử dụng IPv4, bạn sẽ thấy đầu ra sau đầu ra.
Suricata cũng ghi nhật ký sự kiện vào tệp
Tạo kho lưu trữ cho gói Elasticsearch bằng cách tạo tệp
Cập nhật kho lưu trữ của hệ thống danh sách.
Cài đặt Elasticsearch và Kibana.
Bạn sẽ nhận được kết quả sau trên Elasticsearch cài đặt.
Chúng tôi sẽ sử dụng thông tin này sau.
Xác định địa chỉ IP riêng của máy chủ của bạn bằng lệnh sau.
Ghi lại IP riêng của máy chủ của bạn (
Theo mặc định, Elasticsearch chỉ chấp nhận các kết nối cục bộ. Chúng ta cần thay đổi nó để Kibana có thể truy cập nó qua địa chỉ IP riêng tư.
Tìm dòng
Điều này sẽ đảm bảo rằng Elastic vẫn có thể chấp nhận các kết nối cục bộ trong khi vẫn khả dụng với Kibana qua địa chỉ IP riêng tư.
Bước tiếp theo là bật một số bảo mật các tính năng và đảm bảo rằng Elastic được cấu hình để chạy trên một nút duy nhất. Nếu bạn định sử dụng nhiều nút tìm kiếm Elastic, hãy bỏ qua cả hai thay đổi bên dưới và lưu tệp.
Để thực hiện việc đó, hãy thêm dòng sau vào cuối tệp.
Ngoài ra, hãy bình luận dòng sau bằng cách thêm dấu thăng (#) vào trước dòng đó.
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Đảm bảo bạn chọn tên giao diện trong lệnh đầu tiên giống như tên bạn nhận được từ bước 7.
Kích hoạt dịch vụ Elasticsearch.
Bây giờ bạn đã cấu hình Elasticsearch, đã đến lúc bắt đầu dịch vụ.
Kiểm tra trạng thái của dịch vụ.
Chạy lệnh sau để đặt lại mật khẩu Elasticsearch. Chọn một mật khẩu mạnh.
Bây giờ, chúng ta hãy kiểm tra xem Elasticsearch có phản hồi các truy vấn không.
Điều này xác nhận rằng Elasticsearch hoạt động đầy đủ và chạy trơn tru.
Bước đầu tiên trong quá trình cấu hình Kibana là bật chức năng bảo mật
Cờ
Sao chép kết quả. Mở tệp cấu hình Kibana tại
Dán mã từ lệnh trước đó vào cuối tập tin.
Sao chép tệp chứng chỉ CA
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Kiểm tra trạng thái để xem có đang chạy.
Tạo kho lưu trữ elastic.
Cập nhật danh sách kho lưu trữ hệ thống.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Cài đặt Filebeat.
Trước khi cấu hình Filebeat, chúng ta cần sao chép tệp
Filebeat lưu trữ cấu hình của nó trong tệp
Điều đầu tiên bạn cần làm là kết nối nó với bảng điều khiển của Kibana. Tìm dòng
Tiếp theo, tìm phần Elasticsearch Output của tệp và chỉnh sửa các giá trị của
Thêm dòng sau vào cuối file.
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc. Có thêm một bước nữa để đảm bảo Filebeat kết nối với Elasticsearch. Chúng ta cần truyền thông tin SSL của Elasticsearch cho Filebeat để nó có thể kết nối.
Kiểm tra kết nối từ Filebeat đến máy chủ Elasticsearch. Bạn sẽ được yêu cầu nhập mật khẩu Elasticsearch.
Bạn sẽ nhận được kết quả đầu ra sau.
Tiếp theo, kích hoạt mô-đun Suricata tích hợp của Filebeat.
Mở Tệp
Chỉnh sửa tệp như hiển thị bên dưới. Bạn cần thay đổi giá trị của biến
Sau khi hoàn tất, hãy lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Bước cuối cùng trong quá trình định cấu hình Filebeat là tải bảng điều khiển và đường ống SIEM vào Elasticsearch sử dụng lệnh
Có thể mất vài phút để lệnh hoàn tất. Sau khi hoàn tất, bạn sẽ nhận được kết quả sau.
Khởi động dịch vụ Filebeat.
Kiểm tra trạng thái của service.
Tùy chọn khác là cài đặt Nginx trên máy chủ Suricata của bạn và sử dụng nó như một proxy ngược để truy cập máy chủ Elasticsearch thông qua địa chỉ IP riêng của nó. Chúng ta sẽ thảo luận về cả hai cách. Bạn có thể chọn một trong hai cách dựa trên yêu cầu của mình.
Chạy lệnh sau trong terminal của máy tính để tạo SSH Tunnel.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22523%22%3E%3C/svg%3E
Bạn sẽ cần phải giữ lệnh chạy trong thời gian bạn cần truy cập Kibana. Nhấn Ctrl + C trong thiết bị đầu cuối của bạn để đóng đường hầm.
Nhập khóa ký của Nginx.
Thêm kho lưu trữ cho phiên bản ổn định của Nginx.
Cập nhật hệ thống kho lưu trữ.
Cài đặt Nginx.
Xác minh cài đặt. Vì chúng ta đang sử dụng Debian, nên
Khởi động Nginx server.
Debian 12 không đi kèm với Snapd đã cài đặt. Cài đặt gói Snapd.
Chạy các lệnh sau để đảm bảo phiên bản Snapd của bạn được cập nhật.
Cài đặt Certbot.
Sử dụng lệnh sau để đảm bảo lệnh Certbot có thể chạy được bằng cách tạo liên kết tượng trưng đến
Xác nhận cài đặt Certbot.
Tạo chứng chỉ SSL cho tên miền
Lệnh trên sẽ tải xuống chứng chỉ vào
Tạo chứng chỉ nhóm Diffie-Hellman.
Để kiểm tra xem việc gia hạn SSL có hoạt động tốt không, hãy chạy thử quá trình.
Nếu bạn không thấy lỗi nào, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.
Dán mã sau vào đó. Thay thế địa chỉ IP bằng địa chỉ IP riêng của máy chủ Elasticsearch của bạn.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Mở tệp
Thêm dòng sau vào trước dòng
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Xác minh cấu hình.
Khởi động lại dịch vụ Nginx.
Bảng điều khiển Kibana của bạn có thể truy cập được thông qua URL
Mở cấu hình Kibana tập tin.
Tìm dòng được chú thích
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Khởi động lại dịch vụ Kibana.
Chờ vài phút và tải URL
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22523%22%3E%3C/svg%3E
Nhấp vào nút Cấu hình Elastic để tiếp tục. Tiếp theo, bạn sẽ được yêu cầu nhập mã xác minh.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22523%22%3E%3C/svg%3E
Quay lại thiết bị đầu cuối Elasticsearch và chạy lệnh sau để tạo mã. Nhập mã này vào trang và nhấp vào nút Xác minh để tiếp tục.
Tiếp theo, đợi quá trình thiết lập Elastic hoàn tất. Sẽ mất vài phút.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22523%22%3E%3C/svg%3E
Tiếp theo, bạn sẽ được chuyển hướng đến màn hình đăng nhập.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22503%22%20height=%22602%22%3E%3C/svg%3E
Đăng nhập bằng tên người dùng
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22538%22%3E%3C/svg%3E
Loại
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22283%22%3E%3C/svg%3E
Nhấp vào kết quả đầu tiên ([Filebeat Suricata] Tổng quan về cảnh báo), và bạn sẽ nhận được màn hình tương tự như sau. Theo mặc định, nó chỉ hiển thị các mục nhập trong 15 phút gần nhất, nhưng chúng tôi đang hiển thị nó trong khoảng thời gian dài hơn để hiển thị nhiều dữ liệu hơn cho hướng dẫn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22593%22%3E%3C/svg%3E
Nhấp vào nút Sự kiện để xem tất cả các sự kiện đã ghi nhật ký.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22593%22%3E%3C/svg%3E
Khi cuộn xuống các trang sự kiện và cảnh báo, bạn có thể xác định từng sự kiện và cảnh báo theo loại giao thức, cổng nguồn và đích, và địa chỉ IP của nguồn. Bạn cũng có thể xem các quốc gia mà lưu lượng truy cập bắt nguồn.
Bạn có thể sử dụng Kibana và Filebeat để truy cập và tạo các loại bảng điều khiển khác. Một trong những bảng điều khiển tích hợp hữu ích mà bạn có thể sử dụng ngay là bảng điều khiển Bảo mật. Nhấp vào Bảo mật >> Khám phá menu từ menu hamburger bên trái.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22234%22%20height=%22602%22%3E%3C/svg%3E
Trên trang tiếp theo, chọn tùy chọn Mạng để mở bảng điều khiển liên quan.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22516%22%3E%3C/svg%3E
Nhấp vào Tùy chọn Mạng sẽ đưa bạn đến màn hình sau.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22538%22%3E%3C/svg%3E
Bạn có thể thêm nhiều bảng điều khiển như Nginx bằng cách bật và cấu hình các mô-đun Filebeat tích hợp.
Bạn có thể cài đặt Suricata trên một máy duy nhất để giám sát lưu lượng của máy hoặc triển khai trên máy chủ cổng để quét tất cả lưu lượng đến và đi từ các máy chủ khác được kết nối với máy đó. Bạn có thể kết hợp Suricata với Elasticsearch, Kibana và Filebeat để tạo công cụ Quản lý sự kiện và thông tin bảo mật (SIEM).
Trong hướng dẫn này, bạn sẽ cài đặt Suricata IDS cùng với ElasticStack trên máy chủ Debian 12. Các thành phần khác nhau của ngăn xếp là:
- Elasticsearch để lưu trữ, lập chỉ mục, liên kết và tìm kiếm các sự kiện bảo mật từ máy chủ.
- Kibana để hiển thị các bản ghi đượ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 để tìm các sự kiện đáng ngờ và loại bỏ các gói không hợp lệ.
Chúng tôi sẽ cài đặt Suricata và Elastic stack trên các máy chủ khác nhau cho hướng dẫn của mình.
Điều kiện tiên quyết
-
Các máy chủ lưu trữ Elastic Stack và Suricata phải có tối thiểu 4GB RAM và 2 lõi CPU.
-
Các máy chủ phải có thể giao tiếp với nhau bằng địa chỉ IP riêng.
-
Các máy chủ phải chạy Debian 12 với người dùng sudo không phải root.
-
Nếu bạn muốn truy cập bảng điều khiển Kibana từ mọi nơi, hãy thiết lập một tên miền (kibana.example.com
) trỏ đến máy chủ nơi Elasticsearch sẽ đã cài đặt.
-
Cài đặt các gói cần thiết trên cả hai máy chủ. Một số trong số chúng có thể đã được cài đặt.
Mã:
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring unzip -y
Đảm bảo mọi thứ được cập nhật trên cả hai máy chủ.
Mã:
$ sudo apt update
PHẦN 1
Bước 1 - Cài đặt Suricata
Suricata có sẵn trong kho lưu trữ chính thức của Debian. Cài đặt bằng lệnh sau.
Mã:
$ sudo apt install suricata
Mã:
$ sudo systemctl stop suricata
Bước 2 - Cấu hình Suricata
Suricata lưu trữ cấu hình của mình trong tệp/etc/suricata/suricata.yaml
. Chế độ mặc định của Suricata là Chế độ IDS (Hệ thống phát hiện xâm nhập), trong đó lưu lượng chỉ được ghi lại chứ không dừng lại. Nếu bạn mới sử dụng Suricata, bạn nên giữ nguyên chế độ. Sau khi đã định cấu hình và tìm hiểu thêm, bạn có thể bật chế độ IPS (Hệ thống phòng ngừa xâm nhập).Bật ID cộng đồng
Trường ID cộng đồng giúp dễ dàng liên kết dữ liệu giữa các bản ghi do các công cụ giám sát khác nhau tạo ra. Vì chúng ta sẽ sử dụng Suricata với Elasticsearch, việc bật Community ID có thể hữu ích.Mở tệp
/etc/suricata/suricata.yaml
để chỉnh sửa.
Mã:
$ sudo nano /etc/suricata/suricata.yaml
# Community Flow ID
và đặt giá trị của biến community-id
để true
.
Mã:
. . . # Community Flow ID # Adds a 'community_id' field to EVE records. These are meant to give # records a predictable flow ID that can be used to match records to # output of other tools such as Zeek (Bro). # # Takes a 'seed' that needs to be same across sensors and tools # to make the id less predictable. # enable/disable the community id feature. community-id: true
. . .
Bây giờ, các sự kiện của bạn sẽ mang một ID như
1:S+3BA2UmrHK0Pk+u3XH78GAFTtQ=
mà bạn có thể sử dụng để khớp các tập dữ liệu trên nhiều công cụ giám sát khác nhau.Chọn Giao diện Mạng
Tệp cấu hình Suricata mặc định sẽ kiểm tra lưu lượng truy cập trên giao diện thiết bị/mạngeth0
. Nếu máy chủ của bạn sử dụng giao diện mạng khác, bạn sẽ cần cập nhật giao diện đó trong cấu hình.Kiểm tra tên thiết bị của giao diện mạng bằng lệnh sau.
Mã:
$ ip -p -j route show default
Mã:
[ { "dst": "default", "gateway": "159.223.208.1", "dev": "eth0", "protocol": "static", "flags": [ ] } ]
dev
tham chiếu đến thiết bị mạng. Trong đầu ra của chúng tôi, nó hiển thị eth0
là thiết bị mạng. Đầu ra của bạn có thể khác nhau tùy thuộc vào hệ thống của bạn.Bây giờ bạn đã biết tên thiết bị của mình, hãy mở tệp cấu hình.
Mã:
$ sudo nano /etc/suricata/suricata.yaml
af-packet:
xung quanh dòng số 580. Bên dưới, hãy đặt giá trị của biến interface
vào tên thiết bị cho hệ thống của bạn.
Mã:
# Linux high speed capture support
af-packet: - interface: eth0 # Number of receive threads. "auto" uses the number of cores #threads: auto # Default clusterid. AF_PACKET will load balance packets based on flow. cluster-id: 99
. . .
af-packet
ở khoảng dòng 650.Để thêm giao diện mới, hãy chèn giao diện đó ngay phía trên phần
- interface: default
như minh họa bên dưới.
Mã:
# For eBPF and XDP setup including bypass, filter and load balancing, please # see doc/userguide/capture-hardware/ebpf-xdp.rst for more info. - interface: enp0s1 cluster-id: 98
... - interface: default #threads: auto #use-mmap: no #tpacket-v3: yes
enp0s1
và một giá trị duy nhất cho Biến cluster-id
trong ví dụ của chúng tôi. Bạn cần bao gồm một ID cụm duy nhất với mọi giao diện bạn thêm vào.Tìm dòng
pcap:
và bên dưới dòng đó, đặt giá trị của biến interface
thành tên thiết bị của bạn hệ thống.
Mã:
# Cross platform libpcap capture support
pcap: - interface: eth0 # On Linux, pcap will try to use mmap'ed capture and will use "buffer-size" # as total memory used by the ring. So set this to something bigger # than 1% of your bandwidth.
- interface: default
như minh họa bên dưới.
Mã:
- interface: enp0s1
# Put default values here - interface: default #checksum-checks: auto
Bước 3 - Cấu hình Quy tắc Suricata
Theo mặc định, Suricata chỉ sử dụng một tập hợp quy tắc giới hạn để phát hiện lưu lượng mạng. Bạn có thể thêm nhiều bộ quy tắc hơn từ các nhà cung cấp bên ngoài bằng cách sử dụng công cụ có tên làsuricata-update
. Chạy lệnh sau để bao gồm các quy tắc bổ sung.
Mã:
$ sudo suricata-update -o /etc/suricata/rules
4/10/2023 -- 14:12:05 - -- Using data-directory /var/lib/suricata.
4/10/2023 -- 14:12:05 - -- Using Suricata configuration /etc/suricata/suricata.yaml
4/10/2023 -- 14:12:05 - -- Using /etc/suricata/rules for Suricata provided rules.
.....
4/10/2023 -- 14:12:05 - -- No sources configured, will use Emerging Threats Open
4/10/2023 -- 14:12:05 - -- Fetching https://rules.emergingthreats.net/open/suricata-6.0.10/emerging.rules.tar.gz. 100% - 4073339/4073339
.....
4/10/2023 -- 14:12:09 - -- Writing rules to /etc/suricata/rules/suricata.rules: total: 45058; enabled: 35175; added: 45058; removed 0; modified: 0
4/10/2023 -- 14:12:10 - -- Writing /etc/suricata/rules/classification.config
4/10/2023 -- 14:12:10 - -- Testing with suricata -T.
4/10/2023 -- 14:12:33 - -- Done.
-o /etc/suricata/rules
của lệnh hướng dẫn công cụ cập nhật lưu các quy tắc vào /etc/suricata/rules
thư mục. Tham số này rất quan trọng nếu không bạn sẽ nhận được lỗi sau trong quá trình xác thực.
Mã:
- [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /etc/suricata/rules/suricata.rules
Thêm Nhà cung cấp Bộ quy tắc
Bạn có thể mở rộng các quy tắc của Suricata bằng cách thêm nhiều nhà cung cấp hơn. Nó có thể lấy các quy tắc từ nhiều nhà cung cấp miễn phí và thương mại.Bạn có thể liệt kê danh sách nhà cung cấp mặc định bằng cách sử dụng lệnh sau.
Mã:
$ sudo suricata-update list-sources
tgreen/hunting
, bạn có thể bật nó bằng lệnh sau lệnh.
Mã:
$ sudo suricata-update enable-source tgreen/hunting
4/10/2023 -- 14:24:26 - -- Using data-directory /var/lib/suricata.
4/10/2023 -- 14:24:26 - -- Using Suricata configuration /etc/suricata/suricata.yaml
4/10/2023 -- 14:24:26 - -- Using /etc/suricata/rules for Suricata provided rules.
4/10/2023 -- 14:24:26 - -- Found Suricata version 6.0.10 at /usr/bin/suricata.
4/10/2023 -- 14:24:26 - -- Creating directory /var/lib/suricata/update/sources
4/10/2023 -- 14:24:26 - -- Enabling default source et/open
4/10/2023 -- 14:24:26 - -- Source tgreen/hunting enabled
suricata-update
để tải xuống và cập nhật các quy tắc mới. Theo mặc định, Suricata có thể xử lý mọi thay đổi quy tắc mà không cần khởi động lại.Bước 4 - Xác thực cấu hình Suricata
Suricata đi kèm với một công cụ xác thực để kiểm tra tệp cấu hình và các quy tắc xem có lỗi không. Chạy lệnh sau để chạy công cụ xác thực.
Mã:
$ sudo suricata -T -c /etc/suricata/suricata.yaml -v
4/10/2023 -- 14:24:43 - - Running suricata under test mode
4/10/2023 -- 14:24:43 - - This is Suricata version 6.0.10 RELEASE running in SYSTEM mode
4/10/2023 -- 14:24:43 - - CPUs/cores online: 2
4/10/2023 -- 14:24:43 - - fast output device (regular) initialized: fast.log
4/10/2023 -- 14:24:43 - - eve-log output device (regular) initialized: eve.json
4/10/2023 -- 14:24:43 - - stats output device (regular) initialized: stats.log
4/10/2023 -- 14:24:53 - - 1 rule files processed. 35175 rules successfully loaded, 0 rules failed
4/10/2023 -- 14:24:53 - - Threshold config parsed: 0 rule(s) found
4/10/2023 -- 14:24:54 - - 35178 signatures processed. 1255 are IP-only rules, 5282 are inspecting packet payload, 28436 inspect application layer, 108 are decoder event only
4/10/2023 -- 14:25:07 - - Configuration provided was successfully loaded. Exiting.
4/10/2023 -- 14:25:07 - - cleaning up signature grouping structure... complete
-T
hướng dẫn Suricata chạy ở chế độ thử nghiệm, Cờ -c
cấu hình vị trí của tệp cấu hình và cờ -v
in ra đầu ra chi tiết của lệnh. Tùy thuộc vào cấu hình hệ thống của bạn và số lượng quy tắc được thêm vào, lệnh có thể mất vài phút để hoàn tất.Bước 5 - Chạy Suricata
Bây giờ Suricata đã được cấu hình và thiết lập, đã đến lúc chạy ứng dụng.
Mã:
$ sudo systemctl start suricata
Mã:
$ sudo systemctl status suricata
Mã:
? suricata.service - Suricata IDS/IDP daemon Loaded: loaded (/lib/systemd/system/suricata.service; enabled; preset: enabled) Active: active (running) since Wed 2023-10-04 14:25:49 UTC; 6s ago Docs: man:suricata(8) man:suricatasc(8) https://suricata-ids.org/docs/ Process: 1283 ExecStart=/usr/bin/suricata -D --af-packet -c /etc/suricata/suricata.yaml --pidfile /run/suricata.pid (code=exited, status=0/SUCCESS) Main PID: 1284 (Suricata-Main) Tasks: 1 (limit: 4652) Memory: 211.7M CPU: 6.132s CGroup: /system.slice/suricata.service ??1284 /usr/bin/suricata -D --af-packet -c /etc/suricata/suricata.yaml --pidfile /run/suricata.pid
Oct 04 14:25:49 suricata systemd[1]: Starting suricata.service - Suricata IDS/IDP daemon...
Oct 04 14:25:49 suricata suricata[1283]: 4/10/2023 -- 14:25:49 - - This is Suricata version 6.0.10 RELEASE running in SYSTEM mode
Oct 04 14:25:49 suricata systemd[1]: Started suricata.service - Suricata IDS/IDP daemon.
Mã:
$ sudo tail -f /var/log/suricata/suricata.log
tail
bằng cách nhấn CTRL+C
chìa khóa.
Mã:
4/10/2023 -- 14:26:12 - - All AFP capture threads are running.
Bước 6 - Kiểm tra Quy tắc Suricata
Chúng tôi sẽ kiểm tra xem Suricata có phát hiện bất kỳ lưu lượng đáng ngờ nào không. Hướng dẫn của Suricata khuyến nghị kiểm tra số quy tắc ET Open 2100498 bằng lệnh sau.
Mã:
$ curl http://testmynids.org/uid/index.html
Mã:
uid=0(root) gid=0(root) groups=0(root)
id
có thể chạy trên hệ thống bị xâm phạm. Để kiểm tra xem Suricata có phát hiện ra lưu lượng truy cập hay không, bạn cần kiểm tra tệp nhật ký bằng số quy tắc đã chỉ định.
Mã:
$ grep 2100498 /var/log/suricata/fast.log
Mã:
10/04/2023-14:26:37.511168 [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 2600:9000:23d0:a200:0018:30b3:e400:93a1:80 -> 2a03:b0c0:0002:00d0:0000:0000:0e1f:c001:53568
Mã:
10/04/2023-14:26:37.511168 [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 108.158.221.5:80 -> 95.179.185.42:36364
/var/log/suricata/eve.log
bằng định dạng JSON. Để đọc và diễn giải các quy tắc đó, bạn cần cài đặt jq
nằm ngoài phạm vi của hướng dẫn này.PHẦN 2
Chúng ta đã hoàn thành phần một của hướng dẫn, trong đó chúng ta đã cài đặt Suricata và thử nghiệm nó. Phần tiếp theo liên quan đến việc cài đặt ngăn xếp ELK và thiết lập nó để trực quan hóa Suricata và các bản ghi của nó. Phần hai của hướng dẫn được cho là sẽ được thực hiện trên máy chủ thứ hai trừ khi có chỉ định khác.Bước 7 - Cài đặt Elasticsearch
Bước đầu tiên trong quá trình cài đặt Elasticsearch bao gồm việc thêm khóa Elastic GPG vào máy chủ của bạn.
Mã:
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
/etc/apt/sources.list.d/elastic-7.x.list
.
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
Mã:
$ sudo apt update
Mã:
$ sudo apt install elasticsearch
Mã:
--------------------------- Security autoconfiguration information ------------------------------
Authentication and authorization are enabled.
TLS for the transport and HTTP layers is enabled and configured.
The generated password for the elastic built-in superuser is : IuRTjJr+=NqIClxZwKBn
If this node should join an existing cluster, you can reconfigure this with
'/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token '
after creating an enrollment token on your existing cluster.
You can complete the following actions at any time:
Reset the password of the elastic built-in superuser with
'/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic'.
Generate an enrollment token for Kibana instances with '/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana'.
Generate an enrollment token for Elasticsearch nodes with
'/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node'.
-------------------------------------------------------------------------------------------------
Xác định địa chỉ IP riêng của máy chủ của bạn bằng lệnh sau.
Mã:
$ ip -brief address show
lo UNKNOWN 127.0.0.1/8 ::1/128
eth0 UP 159.223.220.228/20 10.18.0.5/16 2a03:b0c0:2:d0::e0e:c001/64 fe80::841e:feff:fee4:e653/64
eth1 UP 10.133.0.2/16 fe80::d865:d5ff:fe29:b50f/64
10.133.0.2
trong trường hợp này). Chúng tôi sẽ gọi nó là your_private_IP
. Địa chỉ IP công khai của máy chủ (159.223.220.228
) sẽ được gọi là your_public_IP
trong phần hướng dẫn còn lại. Ngoài ra, hãy lưu ý tên giao diện mạng của máy chủ của bạn, eth1
.Bước 8 - Cấu hình Elasticsearch
Elasticsearch lưu trữ cấu hình của nó trong tệp/etc/elasticsearch/elasticsearch.yml
. Mở tệp để chỉnh sửa.
Mã:
$ sudo nano /etc/elasticsearch/elasticsearch.yml
Tìm dòng
#network.host: 192.168.0.1
và thêm dòng sau ngay bên dưới dòng đó, như hiển thị bên dưới.
Mã:
# 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:
Bước tiếp theo là bật một số bảo mật các tính năng và đảm bảo rằng Elastic được cấu hình để chạy trên một nút duy nhất. Nếu bạn định sử dụng nhiều nút tìm kiếm Elastic, hãy bỏ qua cả hai thay đổi bên dưới và lưu tệp.
Để thực hiện việc đó, hãy thêm dòng sau vào cuối tệp.
Mã:
. . .
discovery.type: single-node
Mã:
#cluster.initial_master_nodes: ["kibana"]
Cấu hình Tường lửa
Thêm các quy tắc tường lửa phù hợp cho Elasticsearch để có thể truy cập qua mạng riêng.
Mã:
$ sudo ufw allow in on eth1
$ sudo ufw allow out on eth1
Khởi động Elasticsearch
Tải lại dịch vụ daemon.
Mã:
$ sudo systemctl daemon-reload
Mã:
$ sudo systemctl enable elasticsearch
Mã:
$ sudo systemctl start elasticsearch
Mã:
$ sudo systemctl status elasticsearch
? elasticsearch.service - Elasticsearch Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; preset: enabled) Active: active (running) since Wed 2023-10-04 14:30:55 UTC; 8s ago Docs: https://www.elastic.co Main PID: 1731 (java) Tasks: 71 (limit: 4652) Memory: 2.3G CPU: 44.355s CGroup: /system.slice/elasticsearch.service
Tạo mật khẩu Elasticsearch
Sau khi bật cài đặt bảo mật của Elasticsearch, bước tiếp theo là tạo mật khẩu cho siêu người dùng Elasticsearch. Mật khẩu mặc định đã được cung cấp trong quá trình cài đặt mà bạn có thể sử dụng nhưng bạn nên sửa đổi nó.Chạy lệnh sau để đặt lại mật khẩu Elasticsearch. Chọn một mật khẩu mạnh.
Mã:
$ sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic -i
This tool will reset the password of the [elastic] user.
You will be prompted to enter the password.
Please confirm that you would like to continue [y/N]y
Enter password for [elastic]:
Re-enter password for [elastic]:
Password for the [elastic] user successfully reset.
Mã:
$ sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic https://localhost:9200
Enter host password for user 'elastic':
{ "name" : "kibana", "cluster_name" : "elasticsearch", "cluster_uuid" : "KGYx4poLSxKhPyOlYrMq1g", "version" : { "number" : "8.10.2", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "6d20dd8ce62365be9b1aca96427de4622e970e9e", "build_date" : "2023-09-19T08:16:24.564900370Z", "build_snapshot" : false, "lucene_version" : "9.7.0", "minimum_wire_compatibility_version" : "7.17.0", "minimum_index_compatibility_version" : "7.0.0" }, "tagline" : "You Know, for Search"
}
Bước 9 - Cài đặt và cấu hình Kibana
Cài đặt Kibana.
Mã:
$ sudo apt install kibana
xpack
bằng cách tạo khóa bí mật. Kibana sử dụng các khóa bí mật này để lưu trữ dữ liệu trong Elasticsearch. Tiện ích tạo khóa bí mật có thể được truy cập từ thư mục /usr/share/kibana/bin
.
Mã:
$ sudo /usr/share/kibana/bin/kibana-encryption-keys generate -q --force
-q
sẽ chặn các lệnh hướng dẫn và cờ --force
sẽ đảm bảo các bí mật mới được tạo ra. Bạn sẽ nhận được kết quả như sau.
Mã:
xpack.encryptedSavedObjects.encryptionKey: 248eb61d444215a6e710f6d1d53cd803
xpack.reporting.encryptionKey: aecd17bf4f82953739a9e2a9fcad1891
xpack.security.encryptionKey: 2d733ae5f8ed5f15efd75c6d08373f36
/etc/kibana/kibana.yml
để chỉnh sửa.
Mã:
$ sudo nano /etc/kibana/kibana.yml
Mã:
. . .
# Maximum number of documents loaded by each shard to generate autocomplete suggestions.
# This value must be a whole number greater than zero. Defaults to 100_000
#unifiedSearch.autocomplete.valueSuggestions.terminateAfter: 100000
xpack.encryptedSavedObjects.encryptionKey: 3ff21c6daf52ab73e932576c2e981711
xpack.reporting.encryptionKey: edf9c3863ae339bfbd48c713efebcfe9
xpack.security.encryptionKey: 7841fd0c4097987a16c215d9429daec1
/etc/elasticsearch/certs/http_ca.crt
vào /etc/kibana
thư mục.
Mã:
$ sudo cp /etc/elasticsearch/certs/http_ca.crt /etc/kibana/
Cấu hình máy chủ Kibana
Cần cấu hình Kibana để có thể truy cập được trên địa chỉ IP riêng của máy chủ. Tìm dòng#server.host: "localhost"
trong tệp và thêm dòng sau ngay bên dưới dòng đó như minh họa.
Mã:
# 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"
Tắt Telemetry
Theo mặc định, Kibana sẽ gửi dữ liệu trở lại máy chủ của họ. Điều này có thể ảnh hưởng đến hiệu suất và cũng là rủi ro về quyền riêng tư. Do đó, bạn nên tắt Telemetry. Thêm mã sau vào cuối tệp để tắt Telemetry. Cài đặt đầu tiên tắt Telemetry và cài đặt thứ hai không cho phép ghi đè cài đặt đầu tiên từ phần Cài đặt nâng cao trong Kibana.
Mã:
telemetry.optIn: false
telemetry.allowChangingOptInStatus: false
Cấu hình SSL
Tìm biếnelasticsearch.ssl.certificateAuthorities
và bỏ chú thích và thay đổi giá trị của nó như hiển thị bên dưới.
Mã:
elasticsearch.ssl.certificateAuthorities: [ "/etc/kibana/http_ca.crt" ]
Cấu hình Kibana Access
Bước tiếp theo là tạo mã thông báo đăng ký mà chúng ta sẽ sử dụng sau này để đăng nhập vào trang web Kibana giao diện.
Mã:
$ sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
eyJ2ZXIiOiI4LjEwLjIiLCJhZHIiOlsiMTU5LjIyMy4yMjAuMjI4OjkyMDAiXSwiZmdyIjoiOGMyYTcyYmUwMDg5NTJlOGMxMWUwNDgzYjE2OTcwOTMxZWZlNzYyMDAwNzhhOGMwNTNmNWU0NGJiY2U4NzcwMSIsImtleSI6IlQ5eE0tNG9CUWZDaGdaakUwbFAzOk9QTU5uWVRnUWppU3lvU0huOUoyMHcifQ==
Khởi động Kibana
Bây giờ bạn đã cấu hình quyền truy cập an toàn và mạng cho Kibana, hãy khởi động và kích hoạt quy trình.
Mã:
$ sudo systemctl enable kibana --now
Mã:
$ sudo systemctl status kibana
? kibana.service - Kibana Loaded: loaded (/lib/systemd/system/kibana.service; enabled; preset: enabled) Active: active (running) since Wed 2023-10-04 15:27:28 UTC; 9s ago Docs: https://www.elastic.co Main PID: 2686 (node) Tasks: 11 (limit: 4652) Memory: 241.5M CPU: 9.902s CGroup: /system.slice/kibana.service ??2686 /usr/share/kibana/bin/../node/bin/node /usr/share/kibana/bin/../src/cli/dist
Oct 04 15:27:28 kibana systemd[1]: Started kibana.service - Kibana.
Bước 10 - Cài đặt và cấu hình Filebeat
Điều quan trọng cần lưu ý là chúng ta sẽ cài đặt Filebeat trên máy chủ Suricata. Vì vậy, hãy chuyển lại và thêm khóa Elastic GPG để bắt đầu.
Mã:
$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
Mã:
$ sudo apt update
Cài đặt Filebeat.
Mã:
$ sudo apt install filebeat
http_ca.crt
từ máy chủ Elasticsearch sang máy chủ Filebeat. Chạy lệnh sau trên máy chủ Filebeat.
Mã:
$ scp username@your_public_ip:/etc/elasticsearch/certs/http_ca.crt /etc/filebeat
/etc/filebeat/filebeat.yml
. Mở nó để chỉnh sửa.
Mã:
$ sudo nano /etc/filebeat/filebeat.yml
#host: "localhost:5601"
trong phần Kibana và thêm các dòng sau ngay bên dưới như minh họa.
Mã:
. . .
# 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" protocol: "http" ssl.enabled: true ssl.certificate_authorities: ["/etc/filebeat/http_ca.crt"]
. . .
hosts
, protocol
, username
, và password
như hiển thị bên dưới. Đối với tên người dùng, hãy chọn elastic
làm giá trị và đối với mật khẩu, hãy sử dụng giá trị được tạo ở bước 8 của hướng dẫn này.
Mã:
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: "bd1YJfhSa8RC8SMvTIwg" ssl.certificate_authorities: ["/etc/filebeat/http_ca.crt"] ssl.verification_mode: full
. . .
Mã:
setup.ilm.overwrite: true
Kiểm tra kết nối từ Filebeat đến máy chủ Elasticsearch. Bạn sẽ được yêu cầu nhập mật khẩu Elasticsearch.
Mã:
$ curl -v --cacert /etc/filebeat/http_ca.crt https://your_private_ip:9200 -u elastic
Mã:
Enter host password for user 'elastic':
* Trying 10.133.0.2:9200...
* Connected to 10.133.0.2 (10.133.0.2) port 9200 (#0)
* ALPN: offers h2,http/1.1
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* CAfile: /etc/filebeat/http_ca.crt
* CApath: /etc/ssl/certs
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN: server did not agree on a protocol. Uses default.
* Server certificate:
* subject: CN=kibana
* start date: Oct 4 14:28:33 2023 GMT
* expire date: Oct 3 14:28:33 2025 GMT
* subjectAltName: host "10.133.0.2" matched cert's IP address!
* issuer: CN=Elasticsearch security auto-configuration HTTP CA
* SSL certificate verify ok.
* using HTTP/1.x
* Server auth using Basic with user 'elastic'
> GET / HTTP/1.1
> Host: 10.133.0.2:9200
> Authorization: Basic ZWxhc3RpYzpsaWZlc3Vja3M2NjIwMDI=
> User-Agent: curl/7.88.1
> Accept: */*
>
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
< HTTP/1.1 200 OK
< X-elastic-product: Elasticsearch
< content-type: application/json
< content-length: 530
<
{ "name" : "kibana", "cluster_name" : "elasticsearch", "cluster_uuid" : "KGYx4poLSxKhPyOlYrMq1g", "version" : { "number" : "8.10.2", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "6d20dd8ce62365be9b1aca96427de4622e970e9e", "build_date" : "2023-09-19T08:16:24.564900370Z", "build_snapshot" : false, "lucene_version" : "9.7.0", "minimum_wire_compatibility_version" : "7.17.0", "minimum_index_compatibility_version" : "7.0.0" }, "tagline" : "You Know, for Search"
}
* Connection #0 to host 10.133.0.2 left intact
Mã:
$ sudo filebeat modules enable suricata
/etc/filebeat/modules.d/suricata.yml
để chỉnh sửa.
Mã:
$ sudo nano /etc/filebeat/modules.d/suricata.yml
enabled
thành true
. Ngoài ra, hãy bỏ chú thích cho biến var.paths
và đặt giá trị của biến như hiển thị.
Mã:
# Module: suricata
# Docs: https://www.elastic.co/guide/en/beats/filebeat/8.10/filebeat-module-suricata.html
- module: suricata # All logs eve: enabled: true # Set custom paths for the log files. If left empty, # Filebeat will choose the paths depending on your OS. var.paths: ["/var/log/suricata/eve.json"]
Bước cuối cùng trong quá trình định cấu hình Filebeat là tải bảng điều khiển và đường ống SIEM vào Elasticsearch sử dụng lệnh
filebeat setup
.
Mã:
$ sudo filebeat setup
Mã:
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
Loaded Ingest pipelines
Mã:
$ sudo systemctl start filebeat
Mã:
$ sudo systemctl status filebeat
Bước 11 - Truy cập Bảng điều khiển Kibana
Vì KIbana được cấu hình để chỉ truy cập Elasticsearch thông qua địa chỉ IP riêng của nó, nên bạn có hai tùy chọn để truy cập vào nó. Phương pháp đầu tiên là sử dụng Đường hầm SSH đến máy chủ tìm kiếm Elastic từ PC của bạn. Điều này sẽ chuyển tiếp cổng 5601 từ PC của bạn đến địa chỉ IP riêng của máy chủ và bạn sẽ có thể truy cập Kibana từ PC của mình tạihttp://localhost:5601
. Nhưng phương pháp này có nghĩa là bạn sẽ không thể truy cập nó từ bất kỳ nơi nào khác.Tùy chọn khác là cài đặt Nginx trên máy chủ Suricata của bạn và sử dụng nó như một proxy ngược để truy cập máy chủ Elasticsearch thông qua địa chỉ IP riêng của nó. Chúng ta sẽ thảo luận về cả hai cách. Bạn có thể chọn một trong hai cách dựa trên yêu cầu của mình.
Sử dụng SSH Local Tunnel
Nếu bạn đang sử dụng Windows 10 hoặc Windows 11, bạn có thể chạy SSH LocalTunnel từ Windows Powershell của mình. Trên Linux hoặc macOS, bạn có thể sử dụng terminal. Bạn có thể sẽ cần cấu hình quyền truy cập SSH nếu bạn chưa cấu hình.Chạy lệnh sau trong terminal của máy tính để tạo SSH Tunnel.
Mã:
$ ssh -L 5601:your_private_IP:5601 navjot@your_public_IP -N
- Cờ
-L
đề cập đến Đường hầm SSH cục bộ, chuyển tiếp lưu lượng từ cổng PC của bạn đến máy chủ. - Cờ
private_IP:5601
là địa chỉ IP mà lưu lượng của bạn được chuyển tiếp đến trên máy chủ. Trong trường hợp này, hãy thay thế nó bằng địa chỉ IP riêng của máy chủ Elasticsearch của bạn. - Cờ
your_public_IP
là địa chỉ IP công khai của máy chủ Elasticsearch, được sử dụng để mở kết nối SSH. - Cờ
-N
yêu cầu OpenSSH không thực thi bất kỳ lệnh nào mà giữ kết nối hoạt động miễn là đường hầm chạy.
http://localhost:5601
trên trình duyệt của PC. Bạn sẽ nhận được màn hình sau.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22523%22%3E%3C/svg%3E
Bạn sẽ cần phải giữ lệnh chạy trong thời gian bạn cần truy cập Kibana. Nhấn Ctrl + C trong thiết bị đầu cuối của bạn để đóng đường hầm.
Sử dụng Nginx Reverse-proxy
Phương pháp này phù hợp nhất nếu bạn muốn truy cập bảng điều khiển từ bất kỳ đâu trên thế giới.Cấu hình Tường lửa
Trước khi tiến hành tiếp, bạn cần mở các cổng HTTP và HTTPS trong tường lửa.
Mã:
$ sudo ufw allow http
$ sudo ufw allow https
Cài đặt Nginx
Debian 12 đi kèm với phiên bản Nginx cũ hơn. Để cài đặt phiên bản mới nhất, bạn cần tải xuống kho lưu trữ Nginx chính thức.Nhập khóa ký của Nginx.
Mã:
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Mã:
$ sudo apt update
Mã:
$ sudo apt install nginx
sudo
trong lệnh là cần thiết.
Mã:
$ sudo nginx -v
nginx version: nginx/1.24.0
Mã:
$ sudo systemctl start nginx
Cài đặt và cấu hình SSL
Bước đầu tiên là cài đặt Chứng chỉ SSL Let's Encrypt. Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL. Bạn có thể cài đặt Certbot bằng kho lưu trữ của Debian hoặc tải phiên bản mới nhất bằng công cụ Snapd. Chúng ta sẽ sử dụng phiên bản Snapd.Debian 12 không đi kèm với Snapd đã cài đặt. Cài đặt gói Snapd.
Mã:
$ sudo apt install snapd
Mã:
$ sudo snap install core && sudo snap refresh core
Mã:
$ sudo snap install --classic certbot
/usr/bin
thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Mã:
$ certbot --version
certbot 2.7.0
kibana.example.com
.
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d kibana.example.com
/etc/letsencrypt/live/kibana.example.com
thư mục trên máy chủ của bạn.Tạo chứng chỉ nhóm Diffie-Hellman.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Mã:
$ sudo certbot renew --dry-run
Cấu hình Nginx
Tạo và mở tệp cấu hình Nginx cho Kibana.
Mã:
$ sudo nano /etc/nginx/conf.d/kibana.conf
Mã:
server { listen 80; listen [::]:80; server_name kibana.example.com; return 301 https://$host$request_uri;
}
server { server_name kibana.example.com; charset utf-8; listen 443 ssl http2; listen [::]:443 ssl http2; access_log /var/log/nginx/kibana.access.log; error_log /var/log/nginx/kibana.error.log; ssl_certificate /etc/letsencrypt/live/kibana.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/kibana.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/kibana.example.com/chain.pem; ssl_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; resolver 8.8.8.8; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; location / { proxy_pass http://your_private_IP:5601; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
}
Mở tệp
/etc/nginx/nginx.conf
để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf;
.
Mã:
server_names_hash_bucket_size 64;
Xác minh cấu hình.
Mã:
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Mã:
$ sudo systemctl restart nginx
https://kibana.example.com
từ bất kỳ nơi nào bạn muốn.Bước 12 - Quản lý Bảng điều khiển Kibana
Trước khi tiếp tục quản lý bảng điều khiển, bạn cần thêm trường URL cơ sở vào cấu hình Kibana.Mở cấu hình Kibana tập tin.
Mã:
$ sudo nano /etc/kibana/kibana.yml
#server.publicBaseUrl: ""
và thay đổi như sau bằng cách xóa dấu thăng ở phía trước nó.
Mã:
server.publicBaseUrl: "https://kibana.example.com"
Khởi động lại dịch vụ Kibana.
Mã:
$ sudo systemctl restart kibana
https://kibana.example.com
trong trình duyệt của bạn. Bạn sẽ nhận được trường mã thông báo đăng ký. Điền mã thông báo đăng ký mà bạn đã tạo ở bước 9.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22523%22%3E%3C/svg%3E
Nhấp vào nút Cấu hình Elastic để tiếp tục. Tiếp theo, bạn sẽ được yêu cầu nhập mã xác minh.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22523%22%3E%3C/svg%3E
Quay lại thiết bị đầu cuối Elasticsearch và chạy lệnh sau để tạo mã. Nhập mã này vào trang và nhấp vào nút Xác minh để tiếp tục.
Mã:
$ sudo /usr/local/share/kibana/bin/kibana-verification-code
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22523%22%3E%3C/svg%3E
Tiếp theo, bạn sẽ được chuyển hướng đến màn hình đăng nhập.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22503%22%20height=%22602%22%3E%3C/svg%3E
Đăng nhập bằng tên người dùng
elastic
và mật khẩu bạn đã tạo trước đó, bạn sẽ nhận được màn hình sau.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22538%22%3E%3C/svg%3E
Loại
type:data suricata
trong hộp tìm kiếm ở trên cùng để tìm thông tin của Suricata.data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22283%22%3E%3C/svg%3E
Nhấp vào kết quả đầu tiên ([Filebeat Suricata] Tổng quan về cảnh báo), và bạn sẽ nhận được màn hình tương tự như sau. Theo mặc định, nó chỉ hiển thị các mục nhập trong 15 phút gần nhất, nhưng chúng tôi đang hiển thị nó trong khoảng thời gian dài hơn để hiển thị nhiều dữ liệu hơn cho hướng dẫn.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22593%22%3E%3C/svg%3E
Nhấp vào nút Sự kiện để xem tất cả các sự kiện đã ghi nhật ký.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22593%22%3E%3C/svg%3E
Khi cuộn xuống các trang sự kiện và cảnh báo, bạn có thể xác định từng sự kiện và cảnh báo theo loại giao thức, cổng nguồn và đích, và địa chỉ IP của nguồn. Bạn cũng có thể xem các quốc gia mà lưu lượng truy cập bắt nguồn.
Bạn có thể sử dụng Kibana và Filebeat để truy cập và tạo các loại bảng điều khiển khác. Một trong những bảng điều khiển tích hợp hữu ích mà bạn có thể sử dụng ngay là bảng điều khiển Bảo mật. Nhấp vào Bảo mật >> Khám phá menu từ menu hamburger bên trái.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22234%22%20height=%22602%22%3E%3C/svg%3E
Trên trang tiếp theo, chọn tùy chọn Mạng để mở bảng điều khiển liên quan.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22516%22%3E%3C/svg%3E
Nhấp vào Tùy chọn Mạng sẽ đưa bạn đến màn hình sau.
data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22538%22%3E%3C/svg%3E
Bạn có thể thêm nhiều bảng điều khiển như Nginx bằng cách bật và cấu hình các mô-đun Filebeat tích hợp.