
Trong tài liệu này, nhóm thực hiện đề xuất và thử nghiệm bài toán phát hiện bất thường dựa trên tần suất log, áp dụng mô hình học máy chuỗi thời gian (timeseries) để học được quy luật log của từng thiết bị, từ đó phát hiện ra bất thường nếu thiết bị có số lượng log vượt quá ngưỡng an toàn dự đoán.
Bài toán phát hiện bất thường dựa trên chuỗi thời gian
Phát hiện bất thường sử dụng chuỗi thời gian là quá trình theo dõi và phân tích dữ liệu thời gian để xác định sự xuất hiện của các biểu hiện không bình thường trong chuỗi thời gian bằng cách so sánh dữ liệu thực tế với các mô hình dự đoán hoặc các mẫu thông thường đã biết.
Theo dõi và phát hiện tần suất log thiết bị tăng đột biến so với bình thường hoặc so với dự đoán vào một khoảng thời gian cụ thể có thể hỗ trợ phát hiện các hoạt động xâm nhập mạng hoặc sự lây nhiễm mã độc trong hệ thống.
Quy trình triển khai bài toán phát hiện bất thường dựa trên mô hình chuỗi thời gian bao gồm:
Thu thập dữ liệu: Các dữ liệu logs như sự kiện hệ thống, lưu lượng mạng, các chỉ số về hiệu suất,...
Tiền xử lý dữ liệu: Làm sạch và chuẩn hóa bằng cách loại bỏ dữ liệu nhiễu, xử lý dữ liệu thiếu, chuyển đổi dữ liệu thành định dạng thích hợp cho việc phân tích chuỗi thời gian.
Xây dựng mô hình thời gian: Sử dụng mô hình thống kê như ARIMA (AutoRegressive Integrated Moving Average), hoặc một mô hình học máy như LSTM (Long Short-Term Memory) để dự đoán giá trị tiêu biểu trong chuỗi thời gian dựa trên dữ liệu lịch sử.
Xây dựng dự đoán: Mô hình thời gian được sử dụng để dự đoán chuỗi thời gian dự kiến.
Phát hiện bất thường: Bất kỳ sự khác biệt lớn nào giữa dự đoán và dữ liệu thực tế có thể cho thấy sự xuất hiện của bất thường.
Báo cáo và hành động: Cảnh báo bất thường cho người quản trị hệ thống để thực hiện các biện pháp ngăn chặn kịp thời.
Dữ liệu giám sát hệ thống của Bộ Tài nguyên và Môi trường
Bộ TN&MT triển khai thu thập dữ liệu giám sát thiết bị về ElasticSearch. Hiện tại, có 11 nhóm dữ liệu từ 41 thiết bị đang được thu thập. Các nhóm dữ liệu có số lượng logs nhiều nhất gồm:
Với bài toán phát hiện bất thường dựa trên chuỗi thời gian, dữ liệu cần sử dụng là số lượng log của từng thiết bị theo thời gian, bao gồm log bảo mật, log ứng dụng, log dung lượng mạng,… Với tính chất này, nhóm dữ liệu phù hợp là nhóm dữ liệu system.
Nhóm dữ liệu system được lập chỉ mục trong ElasticSearch có dạng “.ds-*-system.*-*-YYYY. MM.DD-00000*” chia thành các nhóm chính sau:
Logs/metrics: Logs về hoạt động đăng nhập, tiến trình, hoặc về chỉ số cpu, ram,… của thiết bị.
Security/core/…: Logs về loại hoạt động gì, ví dụ security là log về an ninh của thiết bị như đăng nhập, đăng xuất,…
Ngày tháng, số: Thể hiện ngày tháng, số thứ tự của index đó.
Sau khi xử lý dữ liệu logs system được kết quả sau:
Từ bảng thống kê trên, có thể thấy dữ liệu log system đổ về là rất lớn, cần nhiều nguồn lực để tiến hành phân tích. Trong phạm vi của nghiên cứu này, nhóm thực hiện lựa chọn loại log có nhiều bản ghi nhất - log security để tiến hành phân tích, triển khai thử nghiệm bài toán phát hiện bất thường sử dụng chuỗi thời gian.
Dữ liệu system.security được thu thập từ ngày 26/06/2023 trên 23 thiết bị. Biểu đồ số lượng log từng thiết bị theo thời gian: Dữ liệu system.security được thu thập từ ngày 26/06/2023 trên 23 thiết bị. Biểu đồ số lượng log từng thiết bị theo thời gian cho thấy tần suất log system.security của các thiết bị có sự khác biệt lớn, chu kỳ tần suất của từng thiết bị cũng khác biệt. Những bất thường này cần được phát hiện sớm để tìm nguyên nhân và giải pháp khắc phục kịp thời.
Từ thống kê trên có thể thấy, tần suất log system.security của các thiết bị có sự khác biệt lớn, chu kỳ tần suất của từng thiết bị cũng khác biệt. Những bất thường này cần được phát hiện sớm để tìm nguyên nhân và giải pháp khắc phục kịp thời.
Luồng tổng hợp và tiền xử lý dữ liệu
Nhóm thực hiện xây dựng luồng tổng hợp dữ liệu gồm 2 node như sau:
Wait_for_data: Đợi 10 giây để đảm bảo dữ liệu đã tồn tại ở ElasticSearch.
ETL_so_luong_log_thiet_bi_1: Tạo câu truy vấn và lấy dữ liệu từ ElasticSearch gồm thời gian tạo ra log, thiết bị log tạo ra, loại log, số lượng log. Sau đó chuyển dữ liệu về dạng bảng, thêm thông tin IP của thiết bị bằng cách truy vấn bảng du_lieu_chuan.danh_muc_thiet_bi. Lưu dữ liệu đã xử lý vào bảng du_lieu_goc.so_luong_log_thiet_bi.
Cấu trúc bảng dữ liệu đầu ra:
Xử lý dữ liệu trước khi đưa vào mô hình huấn luyện
Với bài toán chuỗi thời gian, dữ liệu cần được chuẩn hóa thành dạng bảng với 2 trường dữ liệu là:
Mô hình
Một số mô hình chuỗi thời gian được sử dụng phổ biến hiện nay gồm tự hồi quy tích hợp trung bình trượt (ARIMA), tự hồi quy tích hợp trung bình trượt với biến ngoại sinh (ARIMAX), Prophet.
Với bài toán chuỗi thời gian, một số độ đo có thể sử dụng bao gồm:
Độ đo RMSE (Root Mean Square Error) là một thước đo độ chính xác của một mô hình dự báo. RMSE được tính bằng cách lấy căn bậc hai của trung bình bình phương sai số giữa các giá trị dự đoán và giá trị thực tế.
Độ đo MAPE (Mean Absolute Percentage Error) là một thước đo độ chính xác của một mô hình dự báo. MAPE được tính bằng cách lấy trung bình tuyệt đối của tỷ lệ phần trăm sai số giữa các giá trị dự đoán và giá trị thực tế.
Thực nghiệm
Nhóm thực hiện chọn lựa thiết bị DR-EX2019-MB2 với IP 10.151.128.32 là máy chủ dự phòng thư điện tử sử dụng hệ điều hành Windows. Loại log được theo dõi là log system.security.
Tổng hợp dữ liệu
Để tiến hành tổng hợp dữ liệu, đầu tiên, nhóm thực hiện kiểm tra tần suất dữ liệu theo hai chu kỳ là 1 giờ và 1 ngày.
Hình dưới biểu diễn tần suất log thiết bị theo chu kỳ 1 giờ:
Biểu diễn tần suất log theo chu kỳ ngày:
Đặc tính của dữ liệu tần suất là càng chia nhỏ chu kỳ dữ liệu thì mức độ biến động sẽ càng tăng cao. Nhóm thực hiện sử dụng chu kỳ giờ để giúp mô hình học được chu kỳ làm việc của thiết bị trong ngày, đồng thời cho phép phát hiện các bất thường nhanh hơn. Dữ liệu sau khi tổng hợp theo chu kỳ giờ như sau:
Chia tập dữ liệu
Nhóm thực hiện sử dụng 80% dữ liệu huấn luyện và 20% dữ liệu kiểm thử.
Lựa chọn mô hình
Nhóm thực hiện sử dụng 2 mô hình là ARIMAX và Prophet, tự động tối ưu tham số. Độ đo là RMSE và MAPE (nhỏ hơn là tốt hơn).
Kết quả
Tiến hành huấn luyện mô hình sử dụng 2 thuật toán trên, sau đó sử dụng mô hình dự đoán số lượng log theo khoảng thời gian và dùng độ đo RMSE và MAPE để đánh giá.
Kết quả dự đoán của mô hình có dạng như sau:
Từ bảng dự đoán trên, thực hiện tính toán kết quả từng mô hình trên tập huấn luyện và kiểm thử:
Từ bảng kết quả trên cho thấy, Prophet cho kết quả tốt hơn khi độ lệch dự đoán nhỏ hơn so với ARIMAX. Nhóm thực hiện khuyến nghị nên sử dụng Prophet cho bài toán phát hiện bất thường sử dụng chuỗi thời gian.
Hình dưới là biểu đồ dữ liệu log thực tế và dự đoán của mô hình Prophet:
Danh sách một số điểm bất thường:
Kết quả trên chỉ ra các bất thường về tần suất log trên thiết bị DR-EX2019-MB2. Các cảnh báo bất thường sẽ cung cấp những thông tin cụ thể về tên thiết bị, khoảng thời gian cho người quản trị hệ thống phục vụ điều tra chuyên sâu hơn.
Như vậy, ứng dụng học máy trong phân tích logs có thể nhanh chóng tìm ra các thời điểm bất thường trong hệ thống, từ đó giúp người quản trị thu hẹp được phạm vi điều tra để tìm nguyên nhân và cách khắc phục. Sự kết hợp giữa giải pháp mã mở ELK và thành phần phân tích logs ứng dụng học máy đã giúp nâng cao công tác giám sát và cảnh báo an toàn thông tin cho ngành TN&MTvới chi phí triển khai thấp, khả năng mở rộng linh hoạt, đáp ứng được các yêu cầu về giám sát an toàn thông tin theo cấp độ.
BÙI CÔNG THỊNH, NGUYỄN VĂN HIỆU, LÊ HUY TOÀN
Cục Chuyển đổi số và Thông tin dữ liệu tài nguyên môi trường
Nguồn: Tạp chí Tài nguyên và Môi trường số 21 (Kỳ 1 tháng 10) năm 2021