Trong bài hướng dẫn này, Vietnix sẽ hướng dẫn cách tạo rules cùng Timelines bằng ứng dụng SIEM của Kibana, cũng như tùy chỉnh để tạo cảnh báo trên bảng điều khiển SIEM cũng như cách tạo và quản lý cases bằng các công cụ phân tích timeline của Kibana. Sau khi đọc hết bài hướng dẫn này, bạn sẽ có thể kiểm soát một hệ thống SIEM để theo dõi và điều tra các sự kiện bảo mật trên mạng của riêng mình.
Điều kiện tiên quyết để tạo Rules cùng Timelines bằng ứng dụng SIEM của Kibana
Trước khi bước vào bài hướng dẫn này, bạn cần phải đáp ứng được các yêu cầu sau đây để có thể thực hiện được theo hướng dẫn:
- Một máy chủ (Ubuntu 20.04, Debian 11 hoặc Rocky Linux 8) với ít nhất 4GB RAM và 2 CPU và tài khoản người dùng non-root trên máy chủ. Với cấu hình này bạn có thể tham khảo các gói VPS Giá Rẻ cho sinh viên 4, VPS BASIC 4, VPS PREMIUM 4, VPS NVME 4 của Vietnix đều có cấu hình tương đương.
- Đã cài đặt và chạy Suricata trên máy chủ.
- Cần một máy chủ chạy Elastic Stack đã được định cấu hình để Filebeat có thể gửi nhật ký từ máy chủ Suricata của bạn đến Elaticsearch.
- Đã có thể đăng nhập vào Kibana trên máy chủ Elasticsearch và có các sự kiện trong các bảng điều khiển Suricata.
Khi bạn đã đáp ứng đầy đủ các điều kiện tiên quyết ở trên, hãy tiến hành mở SSH tunnel đến máy chủ Kibana của bạn và đăng nhập vào bằng trình duyệt web. Sau đó, bắt đầu theo dõi các bước hướng dẫn bên dưới nhé.
Bước 1: Kích hoạt khóa API trong Elaticsearch
Để tạo ra các rules, cảnh báo và timeline trong Kibana, trước hết bạn cần kích hoạt một thiết lập mô-đun bảo mật xpack
.
Mở tệp /etc/elasticsearch/elasticsearch.yml
bằng trình soạn thảo như nano
:
sudo nano /etc/elasticsearch/elasticsearch.yml
Sau đó, thêm dòng lệnh xpack.security.authc.api_key.enabled: true
vào cuối tệp như bên dưới:
. . .
discovery.type: single-node
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true
Lưu và đóng tệp khi bạn đã hoàn tất chỉnh sửa. Nếu bạn đang sử dụng nano
, bạn có thể thực hiện điều này bằng cách nhấn tổ hợp phím CTRL + X
, sau đó Y
và ENTER
để xác nhận.
Tiến hành khởi động lại Elasticsearch để cài đặt vừa thiết lập ở bên trên có hiệu lực bằng lệnh:
sudo systemctl restart elasticsearch.service
Bây giờ bạn đã sẵn sàng để cấu hình các rules, kiểm tra cảnh báo và tạo timeline và các case trong Kibana.
Bước 2: Thêm Rules vào Kibana
Để sử dụng tính năng SIEM của Kibana với dữ liệu sự kiện Suricata, bạn cần tạo ra các rules để cảnh báo về các sự kiện sắp xảy ra. Đầu tiên, truy cập vào Rules Dashboard trên trang ứng dụng bảo mật của Kibana để tạo hoặc nhập các rules.
Trong bài hướng dẫn này, bạn sẽ biếtc cách sử dụng các chữ ký để phát hiện lưu lượng được điều hướng đến một máy chủ trên các cổng sai lệch (lưu lượng SSH, HTTP và TLS) như bên dưới đây:
alert ssh any any -> 203.0.113.5 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000000;)
alert ssh any any -> 2001:DB8::1/32 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000001;)
alert http any any -> 203.0.113.5 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000002;)
alert http any any -> 2001:DB8::1/32 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000003;)
alert tls any any -> 203.0.113.5 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000004;)
alert tls any any -> 2001:DB8::1/32 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000005;)
Nếu bạn tạo các chữ ký hoặc bộ rules riêng của mình, hãy chắc chắn rằng bạn có thể tạo ra các cảnh báo và có thể truy cập vào các sự kiện liên quan trong bảng điều khiển Suricata mặc định ở trong Kibana.
Tiếp theo, truy cập trang Rules trong ứng dụng Kibana’s Security theo liên kết:
http://localhost:5601/app/security/rules/
Sau đó nhấp vào nút Create New Rule ở góc trên bên phải của trang. Tích chọn vào thẻ Custom Query nếu thẻ này chưa được chọn. Sau đó tìm và nhập vào Custom Query đoạn mã sau:
rule.id: "1000000" or rule.id :"1000001"
Đảm bảo rằng giá trị rule.id
của bạn khớp với giá trị sid
của Suricata dành cho các cuộc tấn công mà bạn muốn được cảnh báo.
Thay đổi mục Query Quick Preview thành Last Month và sau đó nhấp vào Preview Results để xem kết quả. Giả sử bạn có các sự kiện phù hợp trong nhật ký Suricata của mình, trang sẽ được cập nhật ngay tại chỗ và hiển thị một biểu đồ thể hiện các cảnh báo trong tháng trước. Trang của bạn sẽ gần giống như ảnh dưới đây:
Sau đó, nhấn vào Continue để tiến hành thêm tên vào trường Rule Name, điều này là bắt buộc cho mỗi rule. Trong hướng dẫn này, chúng ta sẽ sử dụng mô tả tin nhắn từ rule Suricata SSH TRAFFIC on non-SSH port
. Chúng ta cũng cần thêm mô tả cho rule này và sử dụng Check for SSH connection attempts on non-standard ports
.
Bạn cũng có thể chọn vào phần Advanced Settings và thêm thông tin chi tiết về rules. Ví dụ, bạn có thể thêm một lời giải thích về cách xử lý cảnh báo được tạo ra bởi rule hoặc liên kết đến các bài báo của các nhà nghiên cứu bảo mật về các loại hình thức tấn công.
Khi bạn đã hoàn thành việc đó, hãy nhấp vào Continue để tiếp tục đến bước tiếp theo. Giữ nguyên cài đặt mặc định của phần Schedule rule, bạn chỉ việc bấm Next.
Cuối cùng, ở phần Rule Actions, nhấp chọn Create & Activate rule để tạo và kích hoạt rule. Trang của bạn sẽ được chuyển hướng tới trang giống như dưới đây:
Từ đó, nếu bạn muốn tạo thêm những rule Suricata khác mà bạn muốn nhận cảnh báo, hãy lặp lại các bước trên và thay thế sid
ở phần custom query rule.id
của Kibana.
Sau khi đã tạo xong các rules mà bạn muốn, hãy sẵn sàng để chuyển đến bước tiếp theo. Bạn sẽ được học cách xem xét các cảnh báo và tạo một hoặc nhiều case để quản lý chúng.
Bước 3: Tạo timeline để theo dõi các cảnh báo liên quan đến lưu lượng SSH
Sau khi bạn đã cấu hình một hoặc nhiều luật để tạo ra cảnh báo trong ứng dụng SIEM của Kibana, bạn sẽ cần một cách để nhóm chúng lại và quản lý các cảnh báo một cách hiệu quả hơn. Đầu tiên, hãy truy cập bảng điều khiển cảnh báo của Kibana thông qua liên kết:
http://127.0.0.1:5601/app/security/alerts
Để đảm bảo rằng hệ thống cảnh báo của bạn hoạt động đúng, bạn cần tạo ra một số lưu lượng mạng không hợp lệ phù hợp với chữ ký Suricata hoặc các chữ ký mà bạn đang sử dụng. Ví dụ, bạn có thể kích hoạt một luật bảo mật Suricata với sid:1000000
bằng cách thực hiện một lệnh như sau từ máy tính cá nhân của bạn:
ssh -p 80 your_server_ip
Lệnh này sẽ thử kết nối đến máy chủ của bạn bằng SSH trên cổng 80
thay vì cổng mặc định 22
. Việc này sẽ gây ra một số lưu lượng không hợp lệ và kích hoạt một cảnh báo. Tuy nhiên, có thể mất vài phút để cảnh báo xuất hiện trên Kibana, vì nó phải được xử lý bởi Elasticsearch và luật mà bạn đã tạo trong Kibana.
Tiếp theo, bạn sẽ thêm trường community_id
vào danh sách bảng cảnh báo được hiển thị ở cuối trang. Trường này được tạo ra bởi Suricata và dùng để đại diện cho các địa chỉ IP và cổng duy nhất được chứa trong luồng mạng. Nhấp vào nút Fields và nhập network.community_id
vào hộp thoại, sau đó đánh dấu vào ô bên cạnh mục này:
Sau đó, nhấp nút Close để đóng hộp thoại và mục bạn mới nhập sẽ được thêm vào bảng cảnh báo. Tiếp theo, hãy di chuột qua bất kỳ cảnh báo nào có cùng giá trị community_id
và nhấp vào biểu tượng Add to timeline investigation. Thao tác này đảm bảo rằng tất cả các cảnh báo dùng chung community_id
mà Suricata đã thêm vào sự kiện sẽ được thêm vào timeline để tiếp tục điều tra.
Tiếp đó, nhấp vào Untitled Timeline ở dưới cùng bên trái của trình duyệt. Liên kết này sẽ đưa bạn đến một trang hiển thị các cảnh báo với trường community_id
của Suricata mà bạn muốn điều tra.
Trang timeline này cho bạn thấy thêm chi tiết về các gói tin riêng lẻ liên quan đến cảnh báo hoặc luồng mạng. Bạn có thể sử dụng timeline để có thể kiểm soát và nâng cấp các ý tưởng để xác định luồng mạng khả nghi, nơi luồng mạng đó bắt đầu và sẽ kéo dài bao lâu.
Nhấp vào nút All Data Sources ở bên phải của trang và chọn nút Dectection Alerts, sau đó nhấp vào Save. Tùy chọn này sẽ giới hạn timeline để chỉ hiển thị các cảnh báo mà Kibana tạo ra. Nếu không chọn tùy chọn này thì các cảnh báo của Suricata cũng sẽ được hiển thị trong timeline.
Ngoài ra, để lưu timeline của bạn, nhấp vào biểu tượng bút chì ở góc trái bên trên của trang như hình bên dưới đây. Hình bên dưới là nơi bạn có thể tìm thấy biểu tượng bút chì và nút All data sources:
Bạn cũng có thể thêm văn bản vào trường mô tả nếu có thông tin bổ sung mà bạn muốn thêm vào timeline. Sau khi hoàn thành việc chỉnh sửa tên và mô tả của timeline, nhấp vào nút Save ở góc dưới bên phải để lưu lại. Từ đó, lặp lại các bước trên để tạo các timeline cho các cảnh báo khác mà bạn muốn xem xét kỹ hơn sau này.
Trong bước tiếp theo, bạn sẽ sử dụng chế độ xem timeline của mình để gán cảnh báo cho ứng dụng Cases của Kibana trong bộ công cụ SIEM.
Bước 4: Tạo và quản lý các cases trong SIEM
Trong bước trước, bạn đã tạo một timeline để nhóm các cảnh báo và gói tin cùng nhau dựa trên trường community_id
của Suricata. Trong bước cuối này, bạn sẽ tạo một hồ sơ để theo dõi và quản lý các cảnh báo trong timeline của bạn.
Để tạo một case mới từ timeline của bạn, đảm bảo rằng bạn đang ở trang timeline trên trình duyệt của mình. Sau đó nhấp vào nút Attach To Case ở góc trên bên phải của trang timeline, sau đó nhấp vào nút Attach To New Case từ danh sách vừa xuất hiện.
Bạn sẽ được chuyển hướng đến trang mà bạn có thể nhập thông tin về sự cố mà bạn đang điều tra. Trong ảnh chụp màn hình sau đây, các case là cảnh báo lưu lượng SSH trên một cổng không phải SSH (SSH Traffic on a non-SSH port):
Điền nội dung vào phần Description để mô tả case này, sau đó điền tên case vào trường Name. Trong ví dụ này, case của chúng ta tên là SSH TRAFFIC on non-SSH port from 203.0.113.5
và chọn vào các thẻ liên quan.
Trong hệ thống SIEM, có rất nhiều sự kiện để điều tra, việc đặt tên theo một kế hoạch sẽ giúp bạn dễ dàng theo dõi các case, timeline và cảnh báo, bởi vì tên của case sẽ tương ứng với cảnh báo Kibana với mục chữ ký Suricata.
Cuộn xuống cuối trang và nhấp vào nút Create Case. Trình duyệt của bạn sẽ hiển thị các case đã được lưu. Sau đó, bạn có thể thêm bình luận và thông tin bổ sung theo định dạng Markdown, cũng như chỉnh sửa case từ trang này.
Tiếp theo, nhấp vào liên kết trong Description để chuyển đến case timeline mà bạn đã thêm ở bước trước.
Đối với mỗi cảnh báo mà bạn muốn thêm trong case, nhấp vào biểu tượng More Actions và chọn Add To Existing Case.
Nhấp vào tên case trong cửa sổ vừa hiện lên để thêm cảnh báo vào case. Hãy chắc chắn chọn case tương ứng với timeline và các cảnh báo mà bạn đang điều tra. Lặp lại để thêm từng cảnh báo trong danh sách vào case hiện có.
Bây giờ hãy truy cập lại ứng dụng Cases trong Kibana bằng cách sử dụng menu điều hướng ở phía bên trái của trang hoặc dùng liên kết:
http://localhost:5601/app/security/cases
Nhấp vào case của bạn và lưu ý là các cảnh báo mà bạn đã thêm được liệt kê trong case details:
Ở đây bạn có thể cuộn xuống cuối trang và thêm bất kỳ thông tin bổ sung nào mà bạn muốn. Ví dụ, bất kỳ bước nào mà bạn đã thực hiện để điều tra cảnh báo hoặc thêm các cảnh báo, thay đổi cấu hình cho Suricata như một quy tắc mới hoặc chỉnh sửa lại, chuyển tiếp cho một thành viên khác trong nhóm hoặc bất cứ điều gì khác liên quan đến các case.
Khi bạn đã quen với việc tạo các case cho các loại cảnh báo khác nhau mà bạn muốn theo dõi, bây giờ bạn có thể sử dụng các công cụ SIEM của Kibana để tổ chức và điều phối việc điều tra bất kỳ cảnh báo nào mà bạn quan tâm.
Lời kết
Trên đây là những bước hướng dẫn tạo Rules, Timelines và các Cases từ sự kiện Suricata bằng ứng dụng SIEM của Kibana. Ngoài ra, bạn cũng có thể thử EveBox, một công cụ cung cấp tất cả dữ liệu sự kiện Suricata và chức năng SIEM trên một trang duy nhất. Nếu thấy bài viết hữu ích, hãy bình luận và chia sẻ cho Vietnix nhé.