Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh cuộc cách mạng công nghiệp 4.0, sự phát triển của mạng Internet đi kèm nhu cầu trao đổi dữ liệu ngày càng lớn và đa dạng. Cùng với sự phát triển về tốc độ và dịch vụ, an toàn thông tin trở thành yếu tố cốt lõi đối với các nhà cung cấp dịch vụ và người sử dụng, đặc biệt trong các lĩnh vực có yêu cầu bảo mật cao như quân sự, tài chính - ngân hàng. Hệ thống mạng máy tính thường xuyên là mục tiêu của các cuộc tấn công và xâm nhập trái phép nhằm phá vỡ tính an toàn của thông tin.
Mặc dù các hệ thống máy tính đều có cơ chế tự bảo vệ, các biện pháp truyền thống (như tường lửa, mã hóa, mạng riêng ảo VPN) không còn đủ khả năng ngăn chặn những cuộc tấn công ngày càng tinh vi. Các hệ thống phát hiện xâm nhập mạng (Intrusion Detection System - IDS) hiện hữu bộc lộ nhược điểm về tính linh hoạt, khả năng mở rộng thấp và khó xử lý khối lượng dữ liệu khổng lồ. Trước thực tế đó, hướng tiếp cận ứng dụng học máy kết hợp với các nền tảng xử lý dữ liệu lớn phân tán như Apache Spark mở ra giải pháp giải quyết bài toán phát hiện xâm nhập với hiệu năng cao.
Nhiệm vụ nghiên cứu của khóa luận được xác định cụ thể qua 5 nội dung:
- Tìm hiểu tổng quan về phát hiện xâm nhập mạng.
- Tìm hiểu tổng quan về Apache Spark cho phân tích dữ liệu lớn.
- Tìm hiểu tổng quan các thuật toán học máy mà Apache Spark hỗ trợ.
- Tìm hiểu về các tập dữ liệu mạng phổ biến được sử dụng cho bài toán phát hiện xâm nhập mạng.
- Đánh giá và so sánh một số thuật toán học máy cho bài toán phát hiện xâm nhập mạng.
- Đối tượng nghiên cứu: Các kỹ thuật phát hiện xâm nhập mạng (đặc biệt là phát hiện bất thường - Anomaly-based IDS), nền tảng tính toán phân tán Apache Spark (thư viện Spark MLlib), và các mô hình học máy phân loại.
- Phạm vi dữ liệu: Bộ dữ liệu chuẩn NSL-KDD (được tối ưu hóa từ bộ dữ liệu KDD99 nhằm loại bỏ các bản ghi trùng lặp).
- Phạm vi thời gian và không gian: Đề tài thực hiện từ tháng 03/2019 đến tháng 07/2019 tại Bộ môn Hệ thống thông tin, Khoa Công nghệ Thông tin, Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh.
Cơ sở lý thuyết và phương pháp
Khóa luận xây dựng trên nền tảng lý thuyết an toàn mạng và hệ thống phân tích dữ liệu lớn phân tán:
- Khái niệm và phân loại an toàn mạng: Tiếp cận định nghĩa xâm nhập mạng theo Kendall (1999), xác định 4 nhóm hình thức tấn công phổ biến gồm Từ chối dịch vụ (Denial of Service - DoS), Thăm dò (Probe), Chiếm quyền quản trị (User to Root - U2R), và Điều khiển từ xa (Remote to Local - R2L). Khảo sát các kỹ thuật phòng thủ truyền thống (Firewall, Mã hóa dữ liệu, VPN) và phân loại hệ thống IDS theo nguồn thu thập dữ liệu (NIDS trên mạng, HIDS trên máy trạm chủ) cũng như phương pháp phân tích (dựa trên dấu hiệu - Misuse-based, dựa trên bất thường - Anomaly-based, và dạng kết hợp - Hybrid). Nghiên cứu tập trung vào kỹ thuật Anomaly-based IDS.
- Khung kiến trúc Apache Spark: Mô hình tính toán phân tán với kiến trúc Master-Worker gồm Driver Process, Cluster Manager (Standalone, YARN, Mesos) và các Executor Process. Quản lý luồng thực thi thông qua SparkSession, cấu trúc dữ liệu DataFrame phân chia thành các Partition bất biến (immutable), tối ưu hóa tính toán qua đồ thị có hướng không chu trình (DAG), cơ chế lượng giá trễ (Lazy Evaluation) phân biệt giữa Transformations (Narrow/Wide dependencies) và Actions. Khai thác gói thư viện học máy MLlib (
org.ml và org.mllib).
Phương pháp nghiên cứu thực nghiệm được triển khai theo quy trình:
- Nguồn dữ liệu: Sử dụng bộ dữ liệu chuẩn NSL-KDD gồm 125.973 bản ghi huấn luyện và 22.544 bản ghi kiểm tra, khắc phục hiện tượng dư thừa dữ liệu của KDD99 (vốn có 78% bản ghi trùng lặp ở tập train và 75% ở tập test).
- Tiền xử lý dữ liệu: Mã hóa One-hot encoding cho các thuộc tính định danh (nominal/categorical) gồm
protocol_type, service, flag từ 3 cột thành 84 cột nhị phân; chuẩn hóa nhãn kết nối theo 2 kịch bản phân loại: Nhị phân (Normal: 0, Attack: 1) và Đa lớp (Normal: 0, Probe: 1, DoS: 2, U2R: 3, R2L: 4).
- Lựa chọn thuộc tính: Ứng dụng phương pháp Tỷ lệ thuộc tính (Attribute Ratio - AR) dựa trên Tỷ lệ lớp (Class Ratio - CR) để sàng lọc các thuộc tính có giá trị phân biệt cao ($AR \ge 1$), loại bỏ các thuộc tính nhiễu ($AR < 1$).
- Đánh giá và tối ưu mô hình: Sử dụng phương pháp tìm kiếm lưới (Grid Search) kết hợp kiểm định chéo K-lần (K-fold Cross-Validation với $K=5$) để tinh chỉnh siêu tham số (Hyperparameter Tuning) trên 4 thuật toán: Rừng ngẫu nhiên (Random Forest), Mạng nơ-ron (Neural Network), Hồi quy Logistic (Logistic Regression) và Máy vector hỗ trợ (Support Vector Machine - SVM). Hiệu năng được đo lường qua ma trận nhầm lẫn (Confusion Matrix) và độ chính xác (Accuracy).
Nội dung chính theo từng chương
Chương 1: Tổng quan đề tài
Chương 1 thiết lập bài toán nghiên cứu trong bối cảnh bùng nổ dữ liệu và các nguy cơ mất an toàn thông tin trong thời kỳ cách mạng công nghiệp 4.0. Tác giả phân tích tính cấp thiết của việc xây dựng hệ thống phát hiện xâm nhập có khả năng xử lý lượng dữ liệu lớn và linh hoạt mở rộng. Từ đó, chương đề ra 5 nhiệm vụ trọng tâm từ tìm hiểu lý thuyết IDS, kiến trúc Spark, các giải thuật học máy của MLlib, khảo sát bộ dữ liệu mạng đến thực nghiệm so sánh. Chương cũng khái quát bố cục toàn bộ khóa luận gồm 4 chương chính.
Chương 2: Tổng quan về phát hiện xâm nhập mạng
Chương 2 hệ thống hóa cơ sở lý thuyết về an toàn mạng và hệ thống phát hiện xâm nhập:
- Trình bày định nghĩa xâm nhập mạng theo Kendall (1999) và phân tích bản chất 4 kiểu tấn công chính: DoS (kèm các biến thể DDoS, DRDoS, Smurf, ngập SYN, lụt UDP), Probe (Sniffing, Ping Sweep, Ports Scanning), U2R (tràn bộ đệm), R2L (tấn công từ điển brute-force, FTP Write).
- Đánh giá vai trò của các giải pháp phòng chống xâm nhập truyền thống gồm tường lửa (phần cứng/phần mềm), mã hóa dữ liệu và mạng riêng ảo VPN (đường ống VPN Tunnel).
- Phân tích chức năng hệ thống IDS (Giám sát - Cảnh báo - Bảo vệ, phân biệt tấn công nội bộ/bên ngoài) và phân loại hệ thống theo kiến trúc:
- NIDS: Giám sát lưu lượng trên toàn mạng thông qua các cảm biến (sensor) thời gian thực.
- HIDS: Cài đặt trực tiếp trên máy chủ để theo dõi log và tiến trình nội bộ, có nhược điểm làm suy giảm hiệu năng trạm chủ.
- Phân loại phân tích: Phân biệt cơ chế dựa trên dấu hiệu (Misuse-based - độ chính xác cao với mẫu đã biết nhưng không phát hiện được mẫu mới) và cơ chế dựa trên bất thường (Anomaly-based - chia làm pha huấn luyện xây dựng hồ sơ chuẩn và pha phát hiện so khớp sai lệch). Tác giả lựa chọn hướng tiếp cận Anomaly-based kết hợp học máy.
Chương 3: Tổng quan về Spark trong phân tích dữ liệu lớn
Chương 3 trình bày chi tiết nền tảng tính toán phân tán Apache Spark:
- Khái quát kiến trúc phân tán gồm Spark Cluster, Worker Node, Driver Process điều khiển ứng dụng qua SparkSession, và các Executor Process thực thi tính toán.
- Trình bày cấu trúc dữ liệu cốt lõi DataFrame với đặc tính bất biến (immutable), cơ chế phân mảnh dữ liệu (partitioning) tự động trên các node.
- Phân tích cơ chế biến đổi dữ liệu Transformations chia thành hai dạng phụ thuộc: Narrow dependencies (mỗi partition đầu vào sinh ra một partition đầu ra) và Wide dependencies (xáo trộn dữ liệu - shuffle giữa các partition của cluster). Giải thích nguyên lý Lazy Evaluation kết hợp với Actions để xây dựng và kích hoạt kế hoạch thực thi đồ thị DAG và chuyển thành Physical Execution Plan.
- Khảo sát hệ sinh thái Apache Spark và đi sâu vào thư viện Spark MLlib (gồm hai gói
org.ml cho DataFrame và org.mllib cho RDD). Chi tiết hóa quy trình 6 bước thực hiện học máy trong Spark: Thu thập dữ liệu $\rightarrow$ Tiền xử lý $\rightarrow$ Chuyển đổi thuộc tính $\rightarrow$ Chia tập huấn luyện/kiểm tra $\rightarrow$ Đánh giá/so sánh mô hình $\rightarrow$ Ứng dụng dự đoán. Tổng hợp các nhóm thuật toán MLlib hỗ trợ (Học có giám sát: phân loại nhị phân/đa lớp/đa nhãn, hồi quy; Gợi ý; Học không có giám sát: K-means, Bisecting K-means, GMM, LDA; Phân tích đồ thị GraphX; Deep Learning).
Chương 4: Kết quả ứng dụng một số thuật toán vào phát hiện xâm nhập mạng
Chương 4 tập trung vào quy trình thực nghiệm và đánh giá mô hình:
- Phân tích bộ dữ liệu chuẩn KDD99 với 41 thuộc tính kết nối và chỉ ra hạn chế về các bản ghi trùng lặp (78% tập train và 75% tập test). Giới thiệu bộ dữ liệu cải tiến NSL-KDD giải quyết vấn đề dư thừa, bao gồm 125.973 bản ghi huấn luyện và 22.544 bản ghi kiểm tra.
- Thống kê tỷ lệ phân bố các lớp tấn công trong tập huấn luyện NSL-KDD: Normal (67.343 bản ghi - 53,46%), DoS (45.927 bản ghi - 36,46%), Probe (11.656 bản ghi - 9,25%), R2L (995 bản ghi - 0,79%), U2R (52 bản ghi - 0,04%).
- Thiết lập tiêu chí đánh giá thông qua Ma trận nhầm lẫn (Confusion Matrix: TP, FP, TN, FN) và độ đo Accuracy. Trình bày các kỹ thuật kiểm định mô hình: Hold-out Validation, K-fold Cross-Validation, Bootstrap và Jackknife; các phương pháp tối ưu siêu tham số: Grid Search và Random Search.
- Thực hiện tiền xử lý: Mã hóa One-hot encoding 3 trường danh mục thành 84 thuộc tính nhị phân; chuyển đổi nhãn thành 2 dạng (nhị phân 0-1 và đa lớp 0-4).
- Lựa chọn thuộc tính bằng chỉ số $AR(i) = \max(CR(j))$, trong đó CR tính theo trung bình cộng (numeric) hoặc tỷ lệ tần số xuất hiện giữa các lớp (binary). Dựa trên ngưỡng lọc $AR \ge 1$, tác giả loại bỏ 5 thuộc tính có $AR < 1$: thuộc tính số 22 (
is_guest_login), 7 (land), 15 (su_attempted), 21 (is_host_login), 20 (num_outbound_cmds).
- Thiết lập không gian siêu tham số và thực hiện Grid Search kết hợp 5-fold Cross-Validation trên 4 thuật toán: Random Forest, Neural Network, Logistic Regression và SVM.
Kết quả và đóng góp
Kết quả xử lý và thiết lập thực nghiệm
Khóa luận đã chuẩn hóa toàn diện quy trình phân tích dữ liệu lớn trên nền tảng Spark cho bộ dữ liệu NSL-KDD, đạt được các kết quả cấu hình thực nghiệm cụ thể:
| Thuộc tính bị loại bỏ (AR < 1) |
Tên thuộc tính |
Kiểu dữ liệu |
Ý nghĩa thuộc tính |
| Thuộc tính số 7 |
land |
Binary |
Bằng 1 nếu kết nối cùng host/port nguồn và đích; 0 nếu ngược lại |
| Thuộc tính số 15 |
su_attempted |
Binary |
Bằng 1 nếu cố gắng thực hiện lệnh "su root"; 0 nếu ngược lại |
| Thuộc tính số 20 |
num_outbound_cmds |
Numeric |
Số lượng lệnh outbound trong một phiên FTP |
| Thuộc tính số 21 |
is_host_login |
Binary |
Bằng 1 nếu đăng nhập thuộc danh sách máy chủ đã biết; 0 nếu ngược lại |
| Thuộc tính số 22 |
is_guest_login |
Binary |
Bằng 1 nếu đăng nhập bằng tài khoản khách; 0 nếu ngược lại |
Không gian siêu tham số được xây dựng và kiểm định qua 5-fold Cross-Validation trên Spark MLlib:
| Thuật toán |
Tên tham số tinh chỉnh |
Danh sách giá trị siêu tham số thử nghiệm |
| Random Forest |
numTrees (Số lượng cây) |
100, 400, 500, 600, 800, 1000 |
| Neural Network |
Hidden nodes (Số node ẩn) |
20, 30, 40, 50, 60 |
| Logistic Regression |
Threshold (Ngưỡng phân loại) |
0.8 (cùng các mức ngưỡng lân cận) |
| Support Vector Machine |
C (Hệ số phạt điều chuẩn) |
0.4, 0.5, 1.0, 2.0, 3.0 |
Đóng góp của đề tài
- Chuẩn hóa quy trình tiền xử lý phân tán: Thiết lập thành công quy trình kết hợp One-hot encoding biến đổi dữ liệu phân loại thành 84 chiều kết hợp kỹ thuật lọc giảm chiều dữ liệu dựa trên chỉ số Attribute Ratio (AR), giúp loại bỏ các thuộc tính không mang tính phân biệt cao trước khi đưa vào mô hình học máy.
- Triển khai thực nghiệm trên nền tảng dữ liệu lớn: Ứng dụng thành công Spark MLlib để phân tán hóa quá trình tối ưu siêu tham số Grid Search và kiểm định chéo 5-fold cho bài toán phát hiện xâm nhập mạng, giải quyết bài toán tiêu tốn tài nguyên và thời gian tính toán khi huấn luyện trên tập dữ liệu quy mô lớn.
Hạn chế và hướng nghiên cứu tiếp
- Hạn chế: Quá trình thực nghiệm của đề tài chỉ tập trung xử lý dữ liệu ở dạng lô tĩnh (batch processing) trên bộ dữ liệu chuẩn offline (NSL-KDD), chưa triển khai thử nghiệm trên luồng dữ liệu mạng thời gian thực (real-time stream) phát sinh từ các gói tin thực tế.
- Hướng nghiên cứu tiếp:
- Mở rộng ứng dụng công nghệ Spark Streaming để thu thập, tiền xử lý và phát hiện bất thường trực tiếp trên luồng lưu lượng mạng trực tiếp.
- Tích hợp và thử nghiệm các mô hình học sâu (Deep Learning) phân tán trên cụm máy chủ Spark nhằm nâng cao tỷ lệ phát hiện các kiểu tấn công có tần suất xuất hiện cực thấp như U2R và R2L.
Giá trị tham khảo
Tài liệu khóa luận mang lại giá trị tham khảo chuyên môn cho sinh viên và các nhà nghiên cứu thuộc các ngành:
- Công nghệ thông tin và Hệ thống thông tin: Cung cấp hướng dẫn chi tiết về cách xây dựng đường ống xử lý dữ liệu học máy phân tán trên Apache Spark (sử dụng DataFrame, SparkSession, Spark MLlib).
- An toàn thông tin và Mạng máy tính: Cung cấp tài liệu tham khảo có hệ thống về cấu trúc 41 thuộc tính mạng trong bộ dữ liệu KDD99/NSL-KDD, cơ chế hoạt động của 4 nhóm tấn công (DoS, Probe, U2R, R2L) và phương pháp đánh giá hệ thống Anomaly IDS bằng Confusion Matrix.
- Kỹ thuật dữ liệu (Data Engineering / Data Science): Phần tính toán chỉ số Attribute Ratio (AR) để lựa chọn thuộc tính và quy trình thiết lập Grid Search 5-fold là mẫu tham khảo trực quan cho các bài toán phân loại dữ liệu dạng bảng.
Câu hỏi thường gặp
1. Tại sao khóa luận lựa chọn bộ dữ liệu NSL-KDD thay vì sử dụng trực tiếp KDD99?
Trả lời: Dựa trên các nghiên cứu thống kê, bộ dữ liệu gốc KDD99 chứa lượng bản ghi dư thừa rất lớn (78% trong tập huấn luyện và 75% trong tập kiểm tra). Sự trùng lặp này làm sai lệch kết quả đánh giá của các thuật toán học máy, khiến mô hình thiên vị các mẫu xuất hiện thường xuyên và giảm hiệu quả phát hiện các cuộc tấn công hiếm như U2R. Bộ dữ liệu NSL-KDD đã loại bỏ toàn bộ bản ghi trùng lặp, duy trì 125.973 bản ghi huấn luyện và 22.544 bản ghi kiểm tra, tạo điều kiện đánh giá khách quan và nhất quán.
2. Kỹ thuật One-hot encoding được tác giả áp dụng như thế nào trong bước tiền xử lý?
Trả lời: Trong 41 thuộc tính của NSL-KDD, có 3 thuộc tính ở dạng phi số (categorical/nominal) gồm thuộc tính số 2 (protocol_type), số 3 (service) và số 4 (flag). Tác giả đã dùng One-hot encoding chuyển đổi 3 cột này thành 84 cột nhị phân mới (tương ứng tổng số giá trị phân loại), gán giá trị 1 cho thuộc tính đối tượng sở hữu và 0 cho thuộc tính không sở hữu, giúp mô hình hội tụ nhanh mà không tạo ra thứ tự giả tạo giữa các giá trị.
3. Phương pháp Attribute Ratio (AR) loại bỏ những thuộc tính nào và dựa trên nguyên tắc gì?
Trả lời: Chỉ số AR của một thuộc tính $i$ được xác định theo giá trị cực đại của Tỷ lệ lớp: $AR(i) = \max(CR(j))$. Tác giả thiết lập ngưỡng lọc $AR \ge 1$, giữ lại các thuộc tính có tính phân biệt giữa các lớp và loại bỏ 5 thuộc tính có $AR < 1$ gồm: thuộc tính số 7 (land), 15 (su_attempted), 20 (num_outbound_cmds), 21 (is_host_login) và 22 (is_guest_login).
4. Khóa luận thực hiện tối ưu hóa siêu tham số cho những thuật toán học máy nào trên Spark?
Trả lời: Nhóm tác giả thực hiện kỹ thuật Grid Search kết hợp 5-fold Cross-Validation trên 4 thuật toán: Rừng ngẫu nhiên - Random Forest (khảo sát tham số numTrees với các giá trị 100, 400, 500, 600, 800, 1000), Mạng nơ-ron - Neural Network (khảo sát số lượng hidden nodes với 20, 30, 40, 50, 60), Hồi quy Logistic - Logistic Regression (khảo sát ngưỡng threshold 0.8), và Máy vector hỗ trợ - Support Vector Machine (khảo sát hệ số C với 0.4, 0.5, 1, 2, 3).
5. Nhãn kết nối mạng được chuyển đổi thành những dạng nào trước khi đưa vào huấn luyện?
Trả lời: Cột nhãn (thuộc tính thứ 42) được biến đổi thành 2 kịch bản phân loại: (1) Nhãn nhị phân gồm 2 lớp: Normal (đánh chỉ số 0) và Attack (tất cả các loại tấn công gán chỉ số 1); (2) Nhãn đa lớp gồm 5 nhóm tấn công chính: Normal (chỉ số 0), Probe (chỉ số 1), DoS (chỉ số 2), U2R (chỉ số 3) và R2L (chỉ số 4).
Kết luận
Khóa luận tốt nghiệp của sinh viên Trần Quang Minh và Hồ Văn Phong đã giải quyết bài toán phát hiện xâm nhập mạng dựa trên hướng tiếp cận phát hiện bất thường kết hợp công nghệ xử lý dữ liệu lớn Apache Spark. Bằng việc chuẩn hóa dữ liệu trên tập NSL-KDD, mã hóa One-hot encoding và sàng lọc thuộc tính qua chỉ số Attribute Ratio, đề tài đã xây dựng thành công quy trình đánh giá tối ưu siêu tham số phân tán qua 5-fold Cross-Validation cho 4 thuật toán học máy đại diện. Công trình cung cấp tài liệu tham khảo có giá trị kỹ thuật cao về mặt phương pháp luận tiền xử lý và triển khai giải thuật phân loại an toàn thông tin trên nền tảng Spark MLlib.