Hướng dẫn cài đặt phần mềm Suricata trên AlmaLinux 8

  • Tuesday 27/06/2023

Hướng dẫn cài đặt phần mềm Suricata trên AlmaLinux 8

Suricata là công cụ phát hiện mối đe dọa nguồn mở độc lập tốt nhất. Nó kết hợp Phát hiện xâm nhập (IDS), Phòng chống xâm nhập (IPS), Giám sát an ninh mạng (NSM) và xử lý PCAP.

Intrusion Detection Systems  (IDS) và Intrusion Prevention Systems (IPS) đều tạo nên các phần của cơ sở hạ tầng mạng. IDS phân tích lưu lượng mạng để tìm chữ ký khớp với các cuộc tấn công đã biết trong khi IPS phân tích các gói và cũng có khả năng ngăn chặn gói tin được phân phối tùy thuộc vào cuộc tấn công được phát hiện. Suricata hoạt động bằng cách xác định, ngăn chặn và đánh giá các cuộc tấn công tinh vi nhất.

Suricata có các tính năng chính sau:

  • Cung cấp khả năng phát hiện chữ ký đa luồng.
  • Hỗ trợ băm và trích xuất tệp
  • Cung cấp nhiều hỗ trợ hơn cho các giao thức lớp ứng dụng.
  • Hỗ trợ ngôn ngữ La Scripting có thể được sử dụng để sửa đổi đầu ra và tạo logic chữ ký phức tạp và chi tiết
  • Hỗ trợ công cụ TCP / IP
  • Có danh tiếng IP được sử dụng để tải một lượng lớn dữ liệu, hỗ trợ tải trực tiếp, v.v.
  • Với khả năng tuyệt vời để ghi nhật ký ở định dạng YAML và JSON, nó có thể dễ dàng tích hợp với các công cụ khác như Elasticsearch / Logstash, Kibana, Splunk e.t.c để xử lý nhật ký.

Cài Đặt Suricata

Quý Khách có thể tham khảo hướng dẫn SSH tới VPS/Server tại link: https://kb.pavietnam.vn/ssh-toi-server-linux-bang-putty.html

yum  install epel-release -y

yum install suricata -y

Suricata

Cấu hình Suricata

Suricata được cài đặt từ repository OISF sẽ đi kèm file cấu hình bao gồm nhiều trường hợp sử dụng khác nhau. Theo mặc định cho Suricata là chế độ IDS, vì vậy khi chúng ta sử dụng Suricata cần cấu hình và tích hợp Suricata vào môi trường và biết rõ về các loại lưu lượng mà nó sẽ cảnh báo, chúng ta có thể chọn bật chế độ IPS.

Tuy nhiên, cấu hình mặc định vẫn có một vài cài đặt mà chúng ta để có thể cần thay đổi tùy thuộc vào môi trường và nhu cầu.

Kích hoạt Community ID

Suricata có thể bao gồm Community ID trong đầu ra JSON để giúp dễ dàng khớp các bản ghi sự kiện riêng lẻ với các bản ghi trong tập dữ liệu được tạo bởi các công cụ khác.

Nếu chúng ta định sử dụng Suricata với các công cụ khác như Zeek hoặc Elasticsearch , thêm Community ID ngay bây giờ là một ý tưởng hay.

Để bật tùy chọn Community ID, hãy mở /etc/suricata/suricata.yaml bằng trình chỉnh sửa ưa thích của chúng ta:

vi /etc/suricata/suricata.yaml

Tìm đến dòng 120 # Community Flow ID. Theo mặc định thì giá trị Community ID sẽ được tắt có giá trị là false như vậy để bật giá trị Community ID chúng ta sẽ tiến hành chuyển false thành true như sau:

Xác định Network Interface sẽ sử dụng

Chúng ta có thể cần ghi đè Network Interface mặc định hoặc các Interface mà chúng ta muốn Suricata kiểm tra lưu lượng truy cập. File cấu hình đi kèm với gói OISF Suricata mặc định kiểm tra lưu lượng trên thiết bị được gọi eth0. Nếu hệ thống của chúng ta sử dụng giao diện mạng mặc định khác hoặc nếu chúng ta muốn kiểm tra lưu lượng truy cập trên nhiều giao diện, thì chúng ta sẽ cần thay đổi giá trị này.

Để xác định tên thiết bị của Network Interface mặc định, chúng ta có thể sử dụng lệnh như sau:

ip -p -j route show default

Trong đó các tuỳ chọn có ý nghĩa như sau:

  • -p: định dạng đầu ra để dễ đọc hơn.
  • -j: in đầu ra dưới dạng JSON.

Chúng ta sẽ nhận được đầu ra như sau:

Từ kết quả chúng ta có được thông tin từ dòng dev cho biết thiết bị mặc định. Trong đầu ra ví dụ này, thì Network Interface sẽ là eth0

Bây giờ chúng ta có thể chỉnh sửa cấu hình của Suricata và xác minh hoặc thay đổi tên Network Interface bằng cách mở file cấu hình /etc/suricata/suricata.yaml sử dụng trình chỉnh sửa ưa thích của bạn:

vi /etc/suricata/suricata.yaml
Thực hiện tìm đến dòng dòng có nội dung af-packet: ở dòng thứ 580. Bên dưới dòng đó là Interface mặc định mà Suricata sẽ sử dụng để kiểm tra lưu lượng. Chỉnh sửa dòng này để phù hợp với Interface của chúng ta như đã thực hiện kiểm tra ở trên:
Nếu như chúng ta cần kiểm tra thêm lưu lượng truy cập trên các Interface bổ sung, chúng ta có thể thêm nhiều – interface: eth… hơn. Ví dụ: để thêm một Interface được đặt tên ens4, chúng ta sẽ tìm đến cuối phần af-packet: đến dòng 650. Để thêm Interface mới, cần thực hiện chèn nó vào trước -interface: default như ở ví dụ sau:
Cần đảm bảo rằng chọn một cluster-id có giá trị duy nhất cho mỗi Interface.

Cấu hình Live Rule Reloading

Suricata hỗ trợ Live Rule Reloading, có nghĩa là chúng ta có thể thêm, xóa và chỉnh sửa quy tắc mà không cần khởi động lại tiến trình Suricata đang chạy. Để bật tùy chọn Live Rule Reloading, hãy thực hiện di chuyển xuống cuối file cấu hình /etc/suricata/suricata.yaml và thêm các dòng sau:

detect-engine:

- rule-reload: true

Với cài đặt này, chúng ta sẽ có thể gửi SIGUSR2 tín hiệu hệ thống đến quá trình đang chạy và Suricata sẽ tải lại mọi quy tắc đã thay đổi vào bộ nhớ.

Một lệnh như sau sẽ thông báo cho quá trình Suricata tải lại các bộ quy tắc của nó mà không cần khởi động lại quá trình:

kill -usr2 $(pidof suricata)

Trong đó $(pidof suricata) của lệnh tìm ID tiến trình của Suricata đang chạy. Phần đầu kill -usr2 của lệnh sử dụng kill tiện ích để gửi SIGUSR2 tín hiệu đến ID tiến trình.

Cập nhật Suricata Rulesets

Theo mặc định, Suricata bao gồm một bộ quy tắc phát hiện giới hạn (trong thư mục /etc/suricata/rules), vì vậy việc bật Suricata vào thời điểm này sẽ chỉ phát hiện một lượng hạn chế lưu lượng truy cập không hợp lệ.

Suricata bao gồm một công cụ được gọi là suricata-update có thể lấy các bộ quy tắc từ các nhà cung cấp bên ngoài. Chạy nó như sau để tải xuống bộ quy tắc cập nhật cho máy chủ Suricata:

suricata-update

Các dòng được đánh dấu cho biết đã tìm nạp quy tắc mới bởi suricata-update và lưu chúng vào file cấu hình của Suricata. Nó cũng cho biết số lượng quy tắc đã được xử lý, trong ví dụ này, 43346 đã được thêm vào và 34518 đã được kích hoạt.

Thêm nhà cung cấp Ruleset

Công cụ suricata-update này có thể tìm nạp các Ruleset từ nhiều nhà cung cấp bộ quy tắc miễn phí và thương mại. Một số bộ quy tắc như bộ ET Open mà chúng ta đã thêm là miễn phí, trong khi những bộ khác yêu cầu đăng ký trả phí.

Chúng ta có thể liệt kê nhóm nhà cung cấp Ruleset mặc định bằng cách sử dụng lệnh sau:

suricata-update list-sources

Ví dụ: Nếu chúng ta muốn thêm nhà cung cấp Ruleset tgreen/huntingquy, chúng ta có thể bật bộ Ruleset này bằng cách sử dụng lệnh sau:

suricata-update enable-source tgreen/hunting

Xác thực cấu hình của Suricata

Bây giờ chúng ta đã chỉnh sửa file cấu hình của Suricata để bao gồm Community ID, network interface và bật live rule reloading, chúng ta nên kiểm tra cấu hình.

Suricata có chế độ kiểm tra tích hợp sẽ kiểm tra file cấu hình và mọi quy tắc bao gồm về tính hợp lệ. Thực thi lệnh sau:

suricata -T -c /etc/suricata/suricata.yaml -v

Trong đó:

  • -T: Chạy Suricata ở chế độ thử nghiệm.
  • -v: Sẽ in một số thông tin bổ sung.
  • -c: Cho Suricata biết nơi tìm tệp cấu hình của nó.

Quá trình kiểm tra có thể mất một chút thời gian tùy thuộc vào lượng CPU đã phân bổ cho Suricata và số lượng quy tắc đã thêm.

Với bộ quy tắc ET Open mặc định, chúng ta sẽ nhận được đầu ra như sau:

Khởi động Suricata

systemctl start suricata.service

systemctl status suricata.service

Như với lệnh chế độ kiểm tra, Suricata sẽ mất một hoặc hai phút để tải và phân tích cú pháp tất cả các quy tắc. Chúng ta có thể sử dụng lệnh tail để theo dõi một thông báo cụ thể trong nhật ký của Suricata cho biết nó đã hoàn tất khởi động:

tail -f /var/log/suricata/suricata.log

Chúng ta sẽ nhận được một số dòng đầu ra. Tiếp tục đợi đầu ra cho đến khi nhận được một dòng như sau:

Thử nghiệm Suricata Rules

Thử nghiệm dựa theo Quickstart

Bộ quy tắc ET Open mà chúng ta đã tải xuống chứa hơn 30000 quy tắc. Việc kiểm tra xem Suricata có đang phát hiện lưu lượng truy cập đáng ngờ với cấu hình mà chúng ta đã tạo hay không.

Thực thi lệnh sau tạo một yêu cầu HTTP, yêu cầu này sẽ trả về phản hồi phù hợp với quy tắc cảnh báo của Suricata:

curl http://testmynids.org/uid/index.html

Lệnh curl sẽ xuất ra một phản hồi như sau:

uid=0(root) gid=0(root) groups=0(root)

Dữ liệu phản hồi ví dụ này được thiết kế để kích hoạt cảnh báo, bằng cách trả lại kết quả đầu ra của một lệnh như id vậy có thể chạy trên hệ thống từ xa bị xâm nhập thông qua web shell.

Bây giờ chúng ta có thể kiểm tra nhật ký của Suricata để có cảnh báo tương ứng. Có hai nhật ký được bật với cấu hình Suricata mặc định. Đầu tiên là trong /var/log/suricata/fast.log và /var/log/suricata/eve.json.

Đầu tiên chúng ta sẽ tiến hành check log tại file /var/log/suricata/fast.log để kiểm tra xem sau khi thực thi lệnh curl thì log Suricata sẽ tiến hành ghi những gì, chúng ta chạy lệnh:

grep 2100498 /var/log/suricata/fast.log

Chúng ta sẽ nhận thấy dòng thông báo như sau có chứa thông tin ATTACK_RESPONSE kết quả đầy đủ như sau:

Tiếp theo chúng ta có thể kiểm tra log ghi tại file /var/log/suricata/eve.json . Với file /var/log/suricata/eve.json chúng ta cần sử dụng JSON để tiến hành phân tích file log này.

Suricata khuyến nghị sử dụng tiện ích jq để đọc và lọc các mục nhập trong file này. Cài đặt jq nếu jq không có nó trên hệ thống của chúng ta bằng lệnh sau:

yum install jq -y

Sau khi cài đặt jq thành công, chúng ta có thể lọc các eve.json bằng cách tìm kiếm ID 2100498 như lệnh sau:

jq ‘select(.alert .signature_id==2100498)’ /var/log/suricata/eve.json

Lệnh kiểm tra từng mục và in bất kỳ mục nhập nào có đối tượng, với signature_id khớp với giá trị 2100498 mà chúng ta đang tìm kiếm. Đầu ra sẽ giống như sau:

Thử nghiệm Rule ICMP

Chúng ta sẽ tiến hành thử nghiệm Rule ICMP của Suricata như sau:

Thực hiện ping đến VPS hoặc Server đã thiết lập Suricata, trong ví dụ này chúng ta sẽ tiến hành ping đến IP 45.117.171.146.

Quay trở lại VPS hoặc Server đã cài đặt và cấu hình Suricata chúng ta thực hiện check log realtime tại file /var/log/suricata/fast.log bằng lệnh bên dưới:

Trong đó IP 112.213.91.149 là IP đang tiến hành ping đến server đã cài Suricata là 45.117.171.146

Như vậy qua 2 thử nghiệm trên chúng ta nhận thấy Suricata đã kiểm tra thành công lưu lượng mạng, khớp với quy tắc phát hiện và tạo ra một cảnh báo để phân tích hoặc ghi nhật ký tiếp theo.

========================================

P.A Việt Nam cung cấp đa dạng các cấu hình Máy Chủ Ảo và Máy Chủ Riêng
Cloud Server
Cloud Server Pro
Máy Chủ Riêng

Tham khảo các ưu đãi: https://www.pavietnam.vn/vn/tin-khuyen-mai/ 

5/5 - (2 bình chọn)