TỔNG QUAN
Nhận diện dấu hiệu
Trong kỹ thuật phát hiện bất thường dựa trên nhận diện dấu hiệu, các đặc điểm bình thường của hệ thống được xác định trước, cùng với những đặc điểm của các kiểu tấn công phổ biến để phục vụ cho việc so sánh và phát hiện bất thường sau này Sự bất thường có thể xảy ra khi một hoạt động bình thường diễn ra vào thời điểm không bình thường, chẳng hạn như việc người dùng truy cập vào hệ thống mạng vào lúc 3 giờ sáng khi không có ai làm việc Bên cạnh đó, sự gia tăng bất thường của dữ liệu, như kích thước tệp tin ghi nhật ký lớn hơn so với dung lượng đã ghi nhận trong những khoảng thời gian khác, có thể là dấu hiệu cho thấy hệ thống đang bị quá tải Ngoài ra, việc nhận thấy nhiều gói tin được gửi liên tiếp từ cùng một địa chỉ nguồn tới nhiều cổng khác nhau cũng có thể chỉ ra rằng hệ thống đang bị tấn công theo kiểu dò cổng.
Kỹ thuật phát hiện bất thường dựa trên dấu hiệu rất hiệu quả trong việc nhận diện các kiểu tấn công đã biết và các chính sách kiểm soát truy cập hiện có Tuy nhiên, một hạn chế lớn của phương pháp này là khả năng không phát hiện được các cuộc tấn công mới với những dấu hiệu chưa được biết đến.
Phát hiện bất thường
3.2.1 Bằng số liệu thống kê
Phương pháp này tập trung vào việc thu thập, lưu trữ và thống kê dữ liệu bình thường lẫn bất thường, từ đó định kỳ tính toán ngưỡng bất thường để đưa ra cảnh báo khi vượt quá ngưỡng Ưu điểm nổi bật của phương pháp là không cần phải có dấu hiệu trước cho các cuộc tấn công mới, mà chỉ dựa vào số lượng dữ liệu bất thường vượt ngưỡng để cảnh báo Tuy nhiên, việc xác định ngưỡng bình thường và bất thường vẫn là một thách thức.
3.2.2 Theo cách tiếp cận học máy
Phương pháp này sử dụng dữ liệu huấn luyện được gán nhãn là bình thường hoặc bất thường để xây dựng mô hình phân loại thông qua các kỹ thuật học máy Khi có dữ liệu mới, chúng sẽ được kiểm tra để xác định xem chúng thuộc lớp bình thường hay bất thường, từ đó cung cấp cảnh báo kịp thời.
Phương pháp này có những ưu điểm như:
• Có khả năng thay đổi chiến lược để đáp ứng được nhiều trường hợp khác nhau (cả đã biết và chưa biết)
Sử dụng dữ liệu mới để cập nhật và bổ sung vào tập dữ liệu huấn luyện giúp nâng cao hiệu quả của mô hình phân lớp ban đầu.
Bên cạnh đó, phương pháp này cũng còn một số nhược điểm như
• Chất lượng của mô hình phân lớp phụ thuộc tập dữ liệu huấn luyện, dữ liệu kiểm tra và các đặc trưng được lựa chọn
• Tỉ lệ báo động giả (sai số) cao với phương pháp học máy phi giám sát.
Luận văn này tập trung vào việc phát hiện bất thường trong mạng thông qua phương pháp học máy Trong chương tiếp theo, chúng ta sẽ khám phá thuật toán Support Vector Machine (SVM), một trong những thuật toán học máy phổ biến và có nhiều ứng dụng hiện nay.
THUẬT TOÁN HỌC MÁY SUPPORT VECTOR MACHINE (SVM)
Giới thiệu
Phân lớp và dự đoán là hai bài toán cơ bản với nhiều ứng dụng trong các lĩnh vực khác nhau Nhiều phương pháp như mạng nơ-ron nhân tạo và học thống kê đã được nghiên cứu và áp dụng cho các bài toán này Trong chương này, chúng ta sẽ tập trung vào thuật toán Support Vector Machines (SVM), một trong những thuật toán học máy hiệu quả nhất hiện nay.
Thuật toán SVM, phát triển bởi Vapnik và Chervonenkis vào năm 1995, là công cụ mạnh mẽ cho các bài toán phân lớp phi tuyến Phương pháp này dựa trên nguyên lý Cực tiểu hóa Rủi ro có Cấu trúc (SRM), được coi là một trong những phương pháp phân lớp tinh vi nhất hiện nay.
Ý tưởng của SVM
Trong một bài toán phân loại, thuật toán tìm kiếm siêu phẳng f tối ưu trong không gian vector để phân chia các tài liệu thành hai lớp khác nhau, lớp + và lớp - Chất lượng của siêu phẳng được đánh giá qua khoảng cách, hay còn gọi là biên, giữa điểm dữ liệu gần nhất của mỗi lớp và siêu phẳng Biên càng lớn thì siêu phẳng càng chính xác, dẫn đến khả năng phân loại tốt hơn.
Mục đích của thuật toán SVM là tìm được khoảng cách biên lớn nhất,điều này được minh họa trong hình 2.1 dưới đây. x l x l w b x l w b x l w b
Hình 2.1 Siêu phẳng f phân chia dữ liệu học thành 2 lớp + và – với khoảng cách biên lớn nhất Các điểm gần f nhất (điểm được khoanh tròn) là các Support Vector.
Nội dung của SVM
SVM là một bài toán tối ưu nhằm tìm ra không gian F và siêu phẳng quyết định f trên F, với mục tiêu giảm thiểu sai số phân loại đến mức thấp nhất.
Cho tập mẫu { (x1, y1), (x2, y2 ), , (xt , yt
) } với x ∈R i n thuộc vào hai lớp nhãn: y i ∈{−1, 1} là nhãn lớp tương ứng của các ( −1 biểu thị lớp II). biểu thị lớp I, 1
Ta có, phương trình siêu phẳng chứa véc tơ trong không gian: Đặt
Như vậy, f (x l ) biểu diễn sự phân lớp của vào hai lớp như đã nêu.
1 nế u lớp II Khi đó để có siêu phẳng f ta sẽ phải giải bài toán sau:
Tì m mi n v ớ i thỏa mãn điều kiện sau: y
Bài toán SVM có thể được giải quyết bằng cách áp dụng kỹ thuật nhân tử Lagrange để chuyển đổi thành dạng đẳng thức Một điểm đặc biệt của SVM là mặt phẳng quyết định chỉ phụ thuộc vào một số điểm dữ liệu nhất định.
Vector và nó có khoảng cách đến mặt phẳng quyết định là
Cho dù các điểm khác bị xóa đi thì thuật toán vẫn cho kết quả giống như ban đầu Đây chính là điểm nổi bật của thuật toán
SVM so với các phương pháp khác vì tất cả các dữ liệu trong tập huấn luyện đều được dùng đ ể t ố i ư u h ó a k ế t q u ả
Tó m lại, tro ng trư ờn g hợ p nhị phân phân tách tuyến tính, việc phân lớp được thực hiện qua hàm quyết định f
+ b ) , hàm này thu được bằng việc thay đổi véc tơ chuẩn w, đây là véc tơ để cực đại hóa miền đặc trưng y = 1 w 2
Việc mở rộng SVM để phân loại đa lớp đang thu hút sự chú ý trong nghiên cứu hiện nay Một trong những phương pháp hiệu quả là xây dựng và kết hợp nhiều bộ phân lớp nhị phân SVM Cụ thể, trong quá trình huấn luyện, bài toán phân m lớp có thể được chuyển đổi thành bài toán 2 * m lớp, trong đó hàm quyết định sẽ được thiết lập cho từng cặp lớp nhằm tối ưu hóa khả năng tổng quát hóa.
2.3.2 Bài toán phân 2 lớp với SVM
Bài toán đặt ra là xác định hàm phân lớp nhằm phân loại các mẫu dữ liệu mới Cụ thể, với một mẫu dữ liệu mới x t, cần xác định xem x t thuộc lớp +1 hay lớp -1.
Nếu dữ liệu phân chia tuyến tính, hàm quyết định được xác định: f (x) = w t x + b (2.1) với w là véc tơ n chiều và b là véc tơ vô hướng.
Siêu phẳng phân tách thỏa mãn: y i (w t x i + b) ≥ 1 với i = 1, 2, , l (2.2)
Siêu phẳng phân chia tối ưu là siêu phẳng chia hai lớp với với khoảng cách giữa hai lớp là lớn nhất.
Hình 2.2 Minh họa cho bài toán phân hai lớp
Siêu phẳng tối ưu có thể xác định được bằng việc giải bài toán tối ưu bậc hai sau:
Khi số lượng thuộc tính trong các mẫu dữ liệu lớn, chúng ta có thể tối ưu hóa phép tính bằng cách áp dụng điều kiện Kuhn-Tucker, tương đương với phương pháp Lagrange cho bài toán (2.3).
2 i i i i với α = (α 1 , , α M ) là nhân tử Lagrange.
Phương trình kép trên trở thành: cực đại L(w, b, α)
Vi phân từng phần của (2.4) lần lượt với w và b ta được:
Từ (2.4), (2.5), và (2.6) ta có bài toán tối ưu sau:
S ố l ư ợ n g b i ế n t r o n g b à i t oán tối ưu trên chính là số mẫu trong tập dữ liệu huấn luyện.
Giả sử ta tìm được cặp nghiệm tối ưu là , Theo lý thuyết Karush-
Tucker chỉ ra rằng điều kiện xảy ra đẳng thức (2.2) với mỗi cặp huấn luyện vào – ra ( , ) chỉ xảy ra khi * khác 0, trong đó mẫu huấn luyện chính là một support vector Bằng cách giải (2.7) với α = (α 1 , , α M ), chúng ta có thể xác định các support vector của lớp I và lớp II Siêu phẳng tối ưu được xác định từ các support vector này, bao gồm cả lớp I và lớp II, và được tính bởi b *.
1 và s 2 lần lượt là các support vector của lớp I và lớp II.
Khi các mẫu huấn luyện không thể phân chia tuyến tính, ta thêm một biến phụ không âm ξ i vào phương trình (2.2) và cộng thêm vào hàm (2.5), trong đó tổng các biến phụ được nhân với tham số C Điều này tương đương với việc cộng biên trên của C và α Dù trong trường hợp nào, hàm ra quyết định vẫn giữ nguyên và được tính toán như nhau.
Mỗi mẫu dữ liệu ban đầu sẽ được phân lớp thông qua thuật toán SVM Ví dụ dưới đây sẽ minh họa cách thức hoạt động của thuật toán SVM trong bài toán phân lớp.
Xét trong không gian 2 chiều (n = 2), các điểm của tập mẫu được cho như hình 2.3: α i f (x) =∑ α y x x
Để xác định hàm phân lớp bằng thuật toán SVM, chúng ta cần tìm hai siêu phẳng song song, tạo ra khoảng cách tối đa giữa chúng nhằm phân tách hai lớp dữ liệu Khoảng cách này được thể hiện bằng khoảng cách y giữa hai siêu phẳng, trong đó hàm phân tách tương ứng với phương trình siêu phẳng nằm giữa hai siêu phẳng đó.
Hình 2.3 minh họa trường hợp có thể tìm thấy siêu phẳng phân tách, với dữ liệu được gọi là phân tách tuyến tính Ngược lại, hình 2.4 thể hiện trường hợp dữ liệu không thể phân tách tuyến tính.
Hình 2.4 Bài toán SVM trong trường hợp dữ liệu mẫu không phân tách tuyến tính
Ta thấy rằng trong hình 2.4 ở trên có những mẫu mặc dù có nhãn +1, nhưng lại bị “rơi” vào phía các mẫu có nhãn −1 và ngược lại.
Thuật toán SVM sử dụng phép ánh xạ dữ liệu mẫu vào không gian đặc trưng có số chiều lớn hơn, giúp phân tách tuyến tính các mẫu trong không gian này Trong không gian đặc trưng, SVM tìm khoảng cách cực đại giữa hai siêu phẳng song song để phân tách dữ liệu hiệu quả.
Các điểm mà nằm trên hai siêu phẳng phân tách được gọi là các Support Vector Các điểm này sẽ quyết định đến hàm phân tách dữ liệu.
Để tối ưu hóa quá trình tính toán, dữ liệu mẫu được ánh xạ vào không gian đặc trưng thông qua các hàm nhân, giúp tăng tốc độ tính toán và đảm bảo tính phân tách tuyến tính của dữ liệu.
Tùy vào từng trường hợp cụ thể của dữ liệu mẫu ta có các biến thể của SVM như C-SVC và bài toán SVM nhiều lớp.
2.3.3 Phân nhiều lớp với SVM Để phân nhiều lớp thì kỹ thuật SVM nguyên thủy sẽ chia không gian dữ liệu thành 2 phần và quá trình này lại lặp lại nhiều lần Khi đó hàm quyết định phân dữ liệu vào lớp thứ I của tập n 2-lớp sẽ là: f i (x) = w t x + b
Những phân tử x là support vector sẽ thỏa mãn điều kiện:
Bài toán phân nhiều lớp với phương pháp SVM có thể thực hiện tương tự như bài toán hai lớp Một trong những chiến lược hiệu quả là phương pháp “một-đối-một” (one-against-one), cho phép xử lý các lớp phân loại một cách linh hoạt và chính xác.
Giả sử bài toán cần phân loại có k lớp (k ≥ 2 ), chiến lược “một-đối- một” sẽ tiến hành k(k − 1)
2 lần phân lớp nhị phân sử dụng thuật toán SVM.
Mỗi lớp sẽ tiến hành phân tách với k − 1 lớp còn lại để xác định k − 1 hàm phân tách dựa vào bài toán phân hai lớp bằng thuật toán SVM.
2.3.4 Các bước chính của thuật toán SVM
Thuật toán SVM yêu cầu dữ liệu phải được biểu diễn dưới dạng các véc tơ số thực Do đó, nếu dữ liệu đầu vào không phải là số, cần phải chuyển đổi chúng thành dạng số để phù hợp với yêu cầu của SVM.
Các thư viện, phần mềm hỗ trợ phân lớp dữ liệu theo thuật toán SVM
LibSVM là một thư viện đơn giản và hiệu quả, hỗ trợ phân lớp SVM, được sử dụng rộng rãi trong nhiều nghiên cứu Để sử dụng LibSVM, tập dữ liệu đầu vào cần được định dạng đúng cách Các thư viện và phần mềm khác như SVM Light, SVMTorch, HeroSVM và Weka cũng hỗ trợ công tác nghiên cứu trong lĩnh vực này.
::…
::…
• Label: Giá trị đích của tập huấn luyện (nhãn của tập huấn luyện) Đối với việc phân lớp, nó là một số nguyên để xác định một lớp.
• Index: Là một số nguyên, bắt đầu từ 1 Index có giá trị từ 1 đến n – với n là số lượng các đặc trưng của tập huấn luyện
Giá trị (Value) là một số thực, phản ánh giá trị của đặc trưng tương ứng Khi một đặc trưng có giá trị bằng 0, chúng ta có thể loại bỏ đặc trưng đó nhằm giảm kích thước tệp dữ liệu.
LibSVM hỗ trợ nhiều thuật toán phân lớp SVM như C_SVC, NU_SVC, ONE_CLASS, EPSILON_SVR và NU_SVR, cùng với các hàm nhân đã đề cập Nó cung cấp các hàm để huấn luyện và dự đoán, cho phép tạo ra mô hình từ quá trình huấn luyện để phân lớp dữ liệu mới Trong luận văn này, LibSVM được áp dụng để thực hiện phân lớp dữ liệu bằng thuật toán SVM.
MÔ HÌNH PHÁT HIỆN BẤT THƯỜNG MẠNG SỬ DỤNG THUẬT TOÁN HỌC MÁY SVM
Thu thập dữ liệu
Để thực hiện huấn luyện và phát hiện bất thường, cần thu thập dữ liệu từ mạng bằng cách bắt các gói tin Đối với quá trình huấn luyện, số lượng dữ liệu phải đủ lớn để nâng cao độ tin cậy của mô hình phân lớp Trong luận văn này, bộ dữ liệu huấn luyện được lấy từ MIT Lincoln Laboratory, bao gồm các gói tin theo chuẩn tcpdump, được sử dụng trong dự án đánh giá phát hiện xâm nhập của DARPA.
Bảng 3.1: Các bộ dữ liệu năm 1999 của dự án DARPA intrusion detection evaluation
1 Dữ liệu không bị tấn công
2 Chứa dữ liệu bị tấn công
3 Dữ liệu không bị tấn công
Trong đó, dữ liệu bị tấn công trong tuần 2 được mô tả như trong bảng 3.2 sau
Bảng 3.2: Bảng mô tả các kiểu tấn công đã được triển khai trong tuần 2 của bộ dữ liệu năm 1999 trong dự án DARPA intrusion detection evaluation 1
ID Ngày Giờ Đích Hệ số Tên kiểu tấn công
1 03/08/1999 08:01:01 hume.eyrie.af.mil 1 NTinfoscan
2 03/08/1999 08:50:15 zeno.eyrie.af.mil 1 pod
3 03/08/1999 09:39:16 marx.eyrie.af.mil 1 back
4 03/08/1999 12:09:18 pascal.eyrie.af.mil 1 httptunnel
5 03/08/1999 15:57:15 pascal.eyrie.af.mil 1 land
6 03/08/1999 17:27:13 marx.eyrie.af.mil 1 secret
7 03/08/1999 19:09:17 pascal.eyrie.af.mil 1 ps attack
8 03/09/1999 08:44:17 marx.eyrie.af.mil 1 portsweep
9 03/09/1999 09:43:51 pascal.eyrie.af.mil 1 eject
10 03/09/1999 10:06:43 marx.eyrie.af.mil 1 back
1 Nguồn http://www.ll.mit.edu/mission/communications/cyber/CSTcorpora/ideval/docs/detections_1999.html
11 03/09/1999 10:54:19 zeno.eyrie.af.mil 1 loadmodule
12 03/09/1999 11:49:13 pascal.eyrie.af.mil 1 secret
13 03/09/1999 14:25:16 pascal.eyrie.af.mil 1 mailbomb
15 03/09/1999 16:11:15 marx.eyrie.af.mil 1 phf
16 03/09/1999 18:06:17 pascal.eyrie.af.mil 1 httptunnel
17 03/10/1999 12:02:13 marx.eyrie.af.mil 1 satan
18 03/10/1999 13:44:18 pascal.eyrie.af.mil 1 mailbomb
19 03/10/1999 15:25:18 marx.eyrie.af.mil 1 perl (Failed)
21 03/10/1999 23:23:00 pascal.eyrie.af.mil 1 eject (console)
22 03/10/1999 23:56:14 hume.eyrie.af.mil 1 crashiis
23 03/11/1999 08:04:17 hume.eyrie.af.mil 1 crashiis
24 03/11/1999 09:33:17 marx.eyrie.af.mil 1 satan
25 03/11/1999 10:50:11 marx.eyrie.af.mil 1 portsweep
26 03/11/1999 11:04:16 pigeon.eyrie.af.mil 1 neptune
27 03/11/1999 12:57:13 marx.eyrie.af.mil 1 secret
28 03/11/1999 14:25:17 marx.eyrie.af.mil 1 perl
29 03/11/1999 15:47:15 pascal.eyrie.af.mil 1 land
31 03/11/1999 19:16:18 pascal.eyrie.af.mil 1 ftp-write
32 03/12/1999 08:07:17 marx.eyrie.af.mil 1 phf
33 03/12/1999 08:10:40 marx.eyrie.af.mil 1 perl (console)
34 03/12/1999 08:16:46 pascal.eyrie.af.mil 1 ps (console)
35 03/12/1999 09:18:15 duck.eyrie.af.mil 1 pod
36 03/12/1999 11:20:15 marx.eyrie.af.mil 1 neptune
37 03/12/1999 12:40:12 hume.eyrie.af.mil 1 crashiis
38 03/12/1999 13:12:17 zeno.eyrie.af.mil 1 loadmodule
39 03/12/1999 14:06:17 marx.eyrie.af.mil 1 perl (Failed)
40 03/12/1999 14:24:18 pascal.eyrie.af.mil 1 ps
41 03/12/1999 15:24:16 pascal.eyrie.af.mil 1 eject
42 03/12/1999 17:13:10 pascal.eyrie.af.mil 1 portsweep
43 03/12/1999 17:43:18 pascal.eyrie.af.mil 1 ftp-write
Dựa trên thông tin trong bảng, chúng ta có thể xác định các gói tin bị tấn công từ bộ dữ liệu tuần 2 để phục vụ cho nghiên cứu này.
Bóc tách Header các gói tin
TCP/IP là bộ giao thức truyền thông phổ biến mà các mạng máy tính đang sử dụng
Mô hình TCP/IP gồm 4 tầng như hình 3.3
Hình 3.3: Mô hình TCP/IP [8]
Tầng Giao Diện Mạng (Network Interface and Hardware Layer): Tầng Giao
Diện Mạng đóng vai trò quan trọng trong việc truyền tải và nhận dữ liệu qua các phương tiện truyền dẫn Tầng này bao gồm các thiết bị phần cứng như card mạng và cáp mạng, đảm bảo sự kết nối ổn định và hiệu quả.
Tầng Liên Mạng (Inter Network Layer): Nằm bên trên tầng giao diện mạng.
Tầng này có chức năng gán địa chỉ, đóng gói và định tuyến (Route) dữ liệu.
Tầng Giao Vận (Transport Layer) có vai trò thiết lập phiên truyền thông giữa các máy tính và quy định phương thức truyền dữ liệu Hai giao thức chính trong tầng này là TCP (Transmission Control Protocol) và UDP (User Datagram Protocol), mỗi giao thức có những đặc điểm và ứng dụng riêng biệt trong việc quản lý lưu lượng dữ liệu.
Giao thức UDP (User Datagram Protocol) là một phương thức truyền thông không kết nối, do đó không đảm bảo độ tin cậy trong việc truyền dữ liệu Các ứng dụng sử dụng UDP thường chỉ gửi các gói dữ liệu nhỏ, và mức độ tin cậy của dữ liệu sẽ phụ thuộc vào từng ứng dụng cụ thể.
TCP (Transmission Control Protocol) là giao thức cung cấp kênh truyền thông hướng kết nối, đảm bảo việc truyền dữ liệu một cách tin cậy Giao thức này thường truyền các gói tin có kích thước lớn và yêu cầu bên nhận xác nhận các gói tin đã nhận.
Tầng ứng dụng là lớp cuối cùng trong mô hình mạng, bao gồm nhiều giao thức thiết yếu cho các ứng dụng người dùng Nó đóng vai trò quan trọng trong việc định dạng và trao đổi thông tin giữa người dùng, đảm bảo sự tương tác hiệu quả và mượt mà trong các ứng dụng.
Dữ liệu được truyền từ tầng Application xuống các tầng dưới, và đến tầng Network Interface and Hardware Layer sẽ được gửi đi Trong quá trình truyền, mỗi tầng tự động thêm Header của mình vào gói dữ liệu.
Hình 3.3: Cấu trúc gói tin [8] Ý nghĩa của từng phần được mô tả như trong bảng sau
Bảng 3.3: Ý nghĩa các thành phần trong một gói tin
2 48 bits Destination Address địa chỉ đích
3 48 bits Source Address địa chỉ nguồn
4 16 bits Type/Length kiểu của gói tin hoặc độ dài
6 32 bits Frame Check Sequence(CRC)
Khi gói tin được gửi qua các tầng, phần dữ liệu sẽ được bổ sung thêm các header, và khi nhận gói tin, các header này sẽ được tách ra.
Hình 3.4: Quá trình thêm header cho dữ liệu truyền qua các tầng của mạng
Trong đó, IP Header gồm các thông tin sau:
Bảng 3.4: IP Header Ý nghĩa các trường trong IP header được mô tả như sau:
Phiên bản IP đang được sử dụng là IPv4 (0100) Nếu trường này không khớp với phiên bản IP của thiết bị nhận, thiết bị sẽ từ chối và loại bỏ các gói tin Nhờ vào số phiên bản, Router có khả năng xác định các thông tin còn lại trong IP Datagram.
Chiều dài của header trong giao thức IP được xác định bằng số từ, với mỗi từ có kích thước 32 bit (tương đương 4 byte) Trường IP Header Length chiếm 4 bit, cho phép tối đa 16 từ, tương đương 64 byte (16 x 4 byte) Thông thường, chiều dài của header là 20 byte, đây là kích thước của tất cả các thông tin trong header.
DSCP và ECN (Type Of Service, 8 bit) xác định các tham số dịch vụ, giúp mạng nhận biết loại dịch vụ mà gói tin yêu cầu, bao gồm ưu tiên, thời gian trễ, băng thông và độ tin cậy.
Chiều dài tổng cộng của IP Datagram được chỉ định bằng 16 bit, tương đương với 65536 byte hay 64 Kb, bao gồm cả dữ liệu và phần header Do đó, chiều dài tối đa của một IP Datagram là 64 Kb.
Mã số nhận dạng (16 bit) của một IP Datagram giúp bên nhận ghép lại các mảnh của IP Datagram Mỗi IP Datagram được chia thành các mảnh, và tất cả các mảnh thuộc cùng một IP Datagram sẽ có mã số nhận dạng giống nhau.
Cờ (3 bit) trong gói IP Datagram gồm: Bit 0 không được sử dụng, Bit 1 cho biết liệu gói có bị phân mảnh hay không, và Bit 2 chỉ ra nếu gói đã bị phân mảnh thì mảnh này có phải là mảnh cuối cùng hay không.
• Fragment Ofset (13 bit): Báo bên nhận vị trí offset của các mảnh so với gói
IP datagram gốc để có thể ghép lại thành IP datagram gốc.
Thời gian sống (TTL) 8 bit xác định số bước nhảy mà một gói tin có thể thực hiện Giá trị TTL sẽ giảm 1 mỗi khi gói tin đi qua một router Nếu TTL đạt đến 0 khi gói tin đến router, gói này sẽ bị loại bỏ Giải pháp này giúp ngăn chặn tình trạng gói tin lặp vòng vô hạn trên mạng.
Giao thức (8 bit) xác định giao thức của tầng Transport nhận dữ liệu sau khi xử lý IP diagram tại tầng Network, hoặc giao thức gửi segment xuống tầng Network để đóng gói thành IP Diagram Mỗi giao thức được chỉ định một mã riêng, chẳng hạn như 06 cho TCP, 17 cho UDP và 01 cho ICMP.
• Header Checksum (16 bit): Hỗ trợ cho Router phát hiện lỗi bit trong khi nhận
IP datagram Giúp bảo đảm sự toàn vẹn của IP Header.
• Source IP Address (32 bit): Chỉ ra địa chỉ của thiết bị truyền IP diagram.
• Destination IP Address (32 bit): Chỉ ra địa chỉ IP của thiết bị sẽ nhận IP diagram
• Options (nếu IHL > 5): Không cố định, chứa các thông tin tùy chọn
TCP Header gồm các thông tin sau:
Bảng 3.5: TCP Header Ý nghĩa các trường trong TCP Header được mô tả như sau:
• Source Port (16 bits): Số hiệu cổng TCP của trạm nguồn.
• Destination Port (16 bit): Số hiệu cổng TCP của trạm đích.
Tạo dữ liệu đầu vào cho quá trình huấn luyện
Trong bước này, chúng ta sẽ tạo tệp dữ liệu đầu vào theo định dạng của thư viện LibSVM bằng cách nhân giá trị các trường trong header của mỗi gói tin với trọng số như trong Bảng 3.6 và gán nhãn cho dữ liệu Kết quả sẽ là một tệp dữ liệu có khuôn dạng như hình minh hoạ dưới đây.
Hình 3.6: Một phần tệp dữ liệu theo khuôn dạng đầu vào LibSVM
Sau khi tạo được các tệp dữ liệu đầu vào như trên, ta chia dữ liệu thành 2 phần:
- Dữ liệu huấn luyện: gồm dữ liệu từ thứ 2 đến thứ 5 của mỗi tuần (chiếm xấp xỉ 80%)
- Dữ liệu kiểm tra: gồm dữ liệu ngày thứ 6 của mỗi tuần (chiếm xấp xỉ 20%)
Dựng mô hình phân lớp
Sử dụng dữ liệu đầu vào đã tạo, chúng ta xây dựng mô hình phân lớp bằng thư viện LibSVM với hàm nhân RBF Sau khi hoàn thành quá trình huấn luyện, chúng ta thu được một tệp mô hình có định dạng (*.model).
Kiểm tra chéo và điều chỉnh tham số
Sau khi nhận được tệp mô hình từ bước 3.4, chúng ta tiến hành kiểm tra kết quả phân lớp bằng cách sử dụng dữ liệu kiểm tra đã được chia ở bước 3.3 Mỗi bước thực nghiệm sẽ điều chỉnh các tham số của mô hình, đồng thời ghi nhận kết quả để đánh giá hiệu quả.
Ghi nhận mô hình
Mô hình với các tham số đạt kết quả kiểm tra tối ưu sẽ được lưu trữ và áp dụng để phát hiện các bất thường trong mạng trong thời gian thực.
THỰC NGHIỆM VÀ KẾT QUẢ
Định dạng dữ liệu đầu vào
Sau khi tách các header, chúng ta sẽ định dạng dữ liệu đầu vào theo chuẩn của LibSVM Hình 4.2 dưới đây minh họa một phần nội dung của tệp header.
Hình 4.2: Một phần nội dung tệp header của dữ liệu ngày thứ 2, tuần thứ 1
Dựa trên các tệp dữ liệu từ MIT Lincoln Lab, chúng tôi phân loại gói tin thành hai loại: Không bị tấn công (gán nhãn 1) và Bị tấn công (gán nhãn -1) Sau đó, chúng tôi thực hiện các phép tính theo trọng số được mô tả trong bảng 3.5 Kết quả thu được sẽ tạo ra tệp dữ liệu đầu vào phù hợp với định dạng của LibSVM, như minh họa trong hình 4.3.
Hình 4.3: Tệp dữ liệu phục vụ huấn luyện
Theo thông tin đã cho trong bảng 3.3, dữ liệu tuần 2 có 2285 mẫu bị tấn công thuộc
33 kiểu tấn công Số mẫu này được chia làm 2 phần:
• 1142 mẫu đầu dành cho việc huấn luyện
• 1143 mẫu sau dành cho việc kiểm tra
Mẫu không bị tấn công: chọn ngẫu nhiên
• 1250 mẫu dành cho việc huấn luyện
• 1250 mẫu dành cho việc kiểm tra
Các tham số C và γ được sử dụng theo mặc định trong LibSVM để huấn luyện mô hình Sau đó, dữ liệu huấn luyện cùng với các tham số này sẽ được đưa vào quy trình huấn luyện.
Huấn luyện, tạo mô hình
Trong quá trình huấn luyện, giao diện chương trình hiển thị kết quả, bao gồm tệp văn bản chứa các tham số của mô hình và các véc tơ hỗ trợ được lưu trữ, như minh họa trong hình 4.5.
Tệp mô hình trong hình 4.5 chứa các thông số quan trọng như svm_type, chỉ ra thuật toán SVM được sử dụng; kernel_type, xác định hàm nhân; gamma, đại diện cho thông số γ; nr_class, số lượng lớp; total_sv, tổng số support vector; rho, giá trị biến bù; label, các nhãn dữ liệu; và nr_sv, số lượng support vector ở mỗi lớp.
SV: dưới dòng này là các support vector dược giữ lại
Kiểm tra mô hình và điều chỉnh tham số
Ở bước này, ta dùng các bộ dữ liệu của phần 1 để kiểm tra khả năng phân lớp của mô hình đã được tạo ra ở bước 4.3:
Hình 4.5: Giao diện chương trình khi đang chạy bước dự đoán (prediction) với dữ liệu kiểm tra
Mô hình được trình bày trong hình 4.4 được tạo ra sau khi chạy thử với tham số C=1 (mặc định của LibSVM nếu không được thiết lập) và γ=0.0416666666666667 (được tính toán tự động bởi LibSVM) Kết quả của quá trình chạy thử với dữ liệu kiểm tra đã được ghi lại trong bảng 4.3.
Tệp kiểm tra Số mẫu Dự đoán đúng số mẫu (tỉ lệ)
Dự đoán sai số mẫu (tỉ lệ)
Tỉ lệ dự đoán đúng 61,97 %
Bảng 4.1: Kết quả dự đoán trên tệp dữ liệu kiểm tra