Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Trang Chủ Hướng Dẫn Đồ Án Phân tích file log hệ thống để phát hiện bất thường
Hướng Dẫn Đồ ÁnLập Trình AI

Phân tích file log hệ thống để phát hiện bất thường

Chia sẻ
Chia sẻ

Phân tích log hệ thống là bước nền tảng trong giám sát an ninh và vận hành hệ thống. Log ghi lại mọi hoạt động như đăng nhập, truy cập dịch vụ, lỗi hệ thống hoặc hành vi tấn công. Việc phát hiện bất thường trong log giúp kịp thời xử lý sự cố và ngăn chặn các nguy cơ bảo mật.

Trong bài viết này, bạn sẽ học cách xử lý và phân tích file log thực tế với Python. Dataset sử dụng là dữ liệu log mô phỏng hành vi mạng — phù hợp cho việc thử nghiệm phát hiện bất thường, tải từ Kaggle. Bài viết sẽ hướng dẫn bạn cách tải dataset, tổ chức thư mục, đọc dữ liệu, lọc cảnh báo và phát hiện bất thường bằng mô hình Isolation Forest.

Tải và tổ chức dữ liệu log từ Kaggle

Tải dữ liệu từ Kaggle

  1. Truy cập trang: https://www.kaggle.com/datasets/fcwebdev/synthetic-cybersecurity-logs-for-anomaly-detection
  2. Đăng nhập tài khoản
  3. Nhấn nút Download All → bạn sẽ nhận được file nén achive.zip
  4. Giải nén file đó, bên trong bạn sẽ thấy tệp advanced_cybersecurity_data.csv

Tổ chức thư mục

Đề xuất tổ chức như sau:

log-analysis/
├── data/
│   └── log.csv
├── scripts/
│   └── analyze_log.py

Đặt file log.csv vào thư mục data/. File script phân tích để riêng trong scripts/.

Đọc và xem sơ bộ dữ liệu

import pandas as pd

df = pd.read_csv('../data/advanced_cybersecurity_data.csv')
print(df.head())
print(df.columns)

Các cột sẽ là:

  • Timestamp (thời gian yêu cầu)

  • IP_Address

  • Request_Type (GET, POST, DELETE…)

  • Status_Code (200, 404, 500…)

  • Anomaly_Flag (0: bình thường, 1: bất thường – nhãn có sẵn)

  • User_Agent

  • Session_ID

  • Location

Chuyển timestamp sang datetime và đặt làm index:

df['Timestamp'] = pd.to_datetime(df['Timestamp'])
df = df.set_index('Timestamp')

Thống kê hoạt động hệ thống theo thời gian

df['Request_Type'].resample('1H').count().plot(title='Số lượng request mỗi giờ', figsize=(12,4))

Bạn có thể xem tần suất các Status_Code hoặc IP_Address xuất hiện nhiều nhất:

print(df['Status_Code'].value_counts())
print(df['IP_Address'].value_counts().head())

Trực quan hóa phân bố bất thường theo thời gian

import matplotlib.pyplot as plt

df['Anomaly_Flag'] = df['Anomaly_Flag'].astype(int)
anomaly_per_hour = df['Anomaly_Flag'].resample('1H').sum()
normal_per_hour = df['Anomaly_Flag'].resample('1H').count() - anomaly_per_hour

plt.figure(figsize=(12,5))
plt.plot(anomaly_per_hour, label='Bất thường', color='red')
plt.plot(normal_per_hour, label='Bình thường', color='blue')
plt.legend()
plt.title('Bất thường vs Bình thường theo giờ')
plt.show()

Tạo đặc trưng để huấn luyện mô hình phát hiện bất thường

Anomaly_Flag đã có, bạn có thể thử mô hình tự học như Isolation Forest bằng cách bỏ cột đó.

from sklearn.ensemble import IsolationForest
from sklearn.preprocessing import LabelEncoder

# Encode một số cột dạng text
df_encoded = df.copy()
for col in ['Request_Type', 'Status_Code', 'User_Agent', 'Location']:
    df_encoded[col] = LabelEncoder().fit_transform(df_encoded[col].astype(str))

features = df_encoded[['Request_Type', 'Status_Code', 'Session_ID', 'User_Agent', 'Location']]
model = IsolationForest(contamination=0.01, random_state=42)
df['Predicted_Anomaly'] = model.fit_predict(features)

Kết quả: -1 là bất thường theo mô hình.

So sánh mô hình với Anomaly_Flag để đánh giá sơ bộ:

from sklearn.metrics import classification_report

print(classification_report(df['Anomaly_Flag'], df['Predicted_Anomaly'] == -1))

Xem chi tiết các log bất thường

df[df['Predicted_Anomaly'] == -1][['IP_Address', 'Request_Type', 'Status_Code', 'User_Agent']].head(10)

Bạn có thể nhóm theo IP để xem IP nào có nhiều hoạt động đáng ngờ:

suspicious_ip = df[df['Predicted_Anomaly'] == -1]['IP_Address'].value_counts()
print(suspicious_ip.head())

Kết luận

Phân tích log hệ thống là một kỹ năng thiết yếu trong an ninh mạng và vận hành hệ thống. Qua bài viết này, bạn đã được hướng dẫn cách tải và tổ chức dataset thực tế từ Kaggle, xử lý dữ liệu log với các trường như thời gian, IP, mã trạng thái và loại yêu cầu HTTP, sau đó áp dụng các kỹ thuật thống kê và mô hình học máy như Isolation Forest để phát hiện bất thường.

Dù dữ liệu được mô phỏng, nó phản ánh sát thực tế các kịch bản bảo mật thường gặp. Việc làm chủ quy trình từ tiền xử lý đến phân tích bất thường sẽ giúp bạn dễ dàng mở rộng sang các dự án thực tế, xây dựng hệ thống cảnh báo hoặc tích hợp vào dashboard giám sát. Đây là nền tảng quan trọng cho bất kỳ ai làm việc trong lĩnh vực DevSecOps, data science hoặc SOC (Security Operations Center).

Tham Gia Nhóm – Hỗ Trợ Lập Trình

Hỗ Trợ Đồ Án – ThueDoAn.vn

Liên quan
Hướng Dẫn Đồ Án

Checklist 10 bước kiểm tra cuối cùng trước khi nhấn nút nộp đồ án

Thời điểm chuẩn bị nhấn nút nộp đồ án luôn mang lại...

Hướng Dẫn Đồ Án

Tuyệt chiêu đối phó với những giảng viên hướng dẫn ‘khó tính’ nhất

Giai đoạn làm đồ án tốt nghiệp luôn đi kèm với vô...

Hướng Dẫn Đồ Án

Tại sao việc quản lý Source Code bằng Git lại quan trọng hơn bạn nghĩ?

Trong thế giới lập trình hiện đại, mã nguồn chính là linh...

Hướng Dẫn Đồ Án

Những chức năng ‘thừa’ khiến bạn tốn thời gian mà không được cộng điểm

Làm đồ án tốt nghiệp là một cuộc đua thực thụ với...

Hướng Dẫn Đồ Án

Cách xử lý khi đề tài bị trùng lặp ý tưởng với các khóa trước quá nhiều

Lựa chọn đề tài đồ án luôn là bước khởi đầu đầy...

Hướng Dẫn Đồ Án

Làm sao để giải trình với giảng viên khi code bị nghi ngờ là đi chép?

Trong quá trình thực hiện đồ án, việc tham khảo mã nguồn...

Hướng Dẫn Đồ Án

Cảnh báo: Những nguồn share code ‘rác’ trên mạng cần tuyệt đối tránh

Trong quá trình làm đồ án, việc tìm kiếm sự hỗ trợ...

Hướng Dẫn Đồ Án

Sai lầm khi chọn công nghệ quá khó so với năng lực thực tế của bản thân

Chọn đề tài và công nghệ cho đồ án luôn là bước...

Liên Hệ
Liên hệ để được tư vấn & hỗ trợ đồ án CNTT nhé bạn!