Đồ án Mạng Máy Tính - HK251 Trường Đại học Bách Khoa - ĐHQG TP.HCM
Dự án xây dựng một hệ thống phát hiện xâm nhập (IDS) lai ghép sử dụng kỹ thuật Học sâu (Deep Learning). Hệ thống áp dụng chiến thuật Feature Splitting (Tách đặc trưng) trên bộ dữ liệu chuẩn CIC-IDS2017 để giả lập kiến trúc Đa đầu vào (Multi-Input) từ một nguồn dữ liệu duy nhất:
- ⏱️ Input A (Temporal): Các đặc trưng liên quan đến thời gian, chuỗi (Flow Duration, IAT...) -> Xử lý bởi mạng LSTM để nắm bắt quy luật thời gian.
- 📊 Input B (Statistical): Các đặc trưng thống kê (Packet count, Flags...) -> Xử lý bởi mạng DNN để phân tích cường độ lưu lượng.
Mục tiêu: Phát hiện và phân loại chính xác 15 loại tấn công mạng (DDoS, PortScan, Botnet...) và đưa ra cảnh báo sớm kèm mức độ rủi ro.
Multi-Input_IDS/
│
├── data/
│ ├── raw/ # Chứa file CIC-IDS2017.csv (sau khi gộp)
│ └── processed/ # Chứa file .npy sau khi tiền xử lý (để train nhanh)
│
├── saved_models/ # Nơi lưu model.h5 và các scaler (.pkl)
│
├── src/ # Source code chính
│ ├── __init__.py # Đánh dấu package
│ ├── utils.py # Cấu hình chung (Tên cột, Đường dẫn)
│ ├── preprocess.py # Code làm sạch, chuẩn hóa & tách đặc trưng
│ ├── model.py # Kiến trúc mạng lai LSTM + DNN
│ ├── train.py # Script huấn luyện mô hình
│ ├── demo_attack.py # Demo tấn công giả lập (Visual Demo)
│ ├── evaluate_mass.py # Script đánh giá diện rộng (Batch Testing)
│ └── alert_system.py # Hệ thống cảnh báo & Dự đoán thời gian thực
│
├── setup_data.py # Script gộp các file CSV con thành file tổng
├── requirements.txt # Danh sách thư viện phụ thuộc
└── README.md # Tài liệu hướng dẫn
Để tránh xung đột thư viện, vui lòng sử dụng môi trường ảo (venv).
Mở Terminal tại thư mục gốc dự án và chạy:
python -m venv venv.\venv\Scripts\activatesource venv/bin/activatepip install -r requirements.txtTải xuống: Truy cập Dataset CIC-IDS2017 hoặc Kaggle, tải file MachineLearningCSV.zip.
Giải nén: Copy toàn bộ các file CSV đã giải nén vào đường dẫn data/raw/MachineLearningCVE/.
Gộp file: Chạy script sau để tự động gộp 8 file con thành 1 file tổng:
python setup_data.py✅ Kiểm tra: Thư mục data/raw/ có file CIC-IDS2017.csv (~2-3GB) là thành công.
Lưu ý: Luôn chạy lệnh từ thư mục gốc dự án để tránh lỗi import.
Làm sạch dữ liệu (xóa NaN/Inf), mã hóa nhãn, tách đặc trưng và chuẩn hóa.
python -m src.preprocessXây dựng mô hình Hybrid và huấn luyện. Model sẽ được lưu vào saved_models/hybrid_model.h5.
python -m src.trainChạy kiểm thử trên tập dữ liệu lớn (ví dụ: 500,000 mẫu) để lấy chỉ số chính xác thực tế.
python -m src.evaluate_massGiả lập các cuộc tấn công cụ thể để xem hệ thống cảnh báo "bắt trộm" như thế nào.
python -m src.demo_attackDựa trên kết quả kiểm thử với 500,000 mẫu dữ liệu thực tế:
Độ chính xác tổng thể (Accuracy): ~94%
Khả năng phát hiện (Recall):
✅ DDoS / PortScan / DoS: Đạt 99% - 100%. Mô hình hoạt động cực tốt với các tấn công lưu lượng lớn.