Dữ liệu đầu vào của bài toán là một phần nhỏ trong khoảng 4 gigabyte nén dữ liệu nhị phân TCP dump lấy từ bảy tuần lưu lượng mạng. Dữ liệu ban đầu này sau đó đã được xử lý vào khoảng 5.000.000 bản ghi kết nối được sử dụng trong cuộc thi phát hiện xâm nhập KDD 1999. Trong chương trình cài đặt này tác giả chủ yếu tập trung vào việc vận dụng thuật toán K-means để phân lớp, phát hiện các phần tử bình thường và phần tử dị biệt nên các khối thực hiện việc scan đường truyền và thu thập các gói kết nối không được thực hiện mà sẽ sử dụng khoản 50.000 bản ghi trong bộ dữ liệu KDD 1999 để thực hiện.
Bộ dữ liệu đầu vào của chương trình gồm chính xác 49402 bản ghi với 42 thuộc tính được chia làm ba nhóm như bảng 3.1, 3.2. và 3.3, mỗi bản ghi là một tập các giá trị của 42 thuộc tính trên:
3.2.1 Mô tả các thuộc tính trong file dữ liệu đầu vào
Mỗi bản ghi kết nối có 42 thuộc tính, chi tiết các thuộc tính như mô tả ở các bảng sau:
Bảng 3.1: Các thuộc tính cơ bản (nhóm này chứa tất cả các thuộc tính có được từ một kết nối TCP / IP)
Thuộc tính Mô Tả Kiểu
duration Độ dài (số giây) của kết nối. continuous
protocol_type Kiểu giao thức kết nối, e.g. tcp, udp, etc. discrete service Kiểu dịch vụ mạng ở thiết bị cuối, e.g., http,
telnet, etc.
discrete
src_bytes Số byte dữ liệu truyền từ nguồn tới đích continuous dst_bytes Số byte dữ liệu truyền từ đích tới nguồn continuous
flag Trạng thái cờ lỗi của kết nối discrete
land 1 nếu kết nối là từ hoặc tới cùng một host/port;
0 Nếu ngược lại
discrete
wrong_fragment Số khung tin bị lỗi continuous
urgent Số gói tin khẩn cấp continuous
Continuous: liện tục, discrete: rời rạc.
Bảng 3.2: Các thuộc tính lưu thông (nhóm này bao gồm các thuộc tính mà nó được tính toán với khoảng thời gian một cửa sổ)
Thuộc tính Mô Tả Kiểu
count Số kết nối tới 1 host hiện tại và trong khoản thời gian 2 s trước
continuous
Thuộc tính "cùng máy chủ”.
serror_rate % các lỗi kết nối "SYN" continuous rerror_rate % các lỗi kết nối "REJ" continuous same_srv_rate % các kết nối có cùng 1 dịch vụ continuous diff_srv_rate % các kết nối có khác dịch vụ continuous srv_count Số kết nối tới có cùng loại dịch vụ ở thời
điểm hiện tại và trong khoản thời gian 2 s trước đó.
continuous
Thuộc tính “cùng dịch vụ”:
srv_serror_rate % các lỗi kết nối "SYN" continuous
srv_rerror_rate % các lỗi kết nối "REJ" continuous srv_diff_host_rate % các kết nối tới các host khác nhau. continuous
Bảng 3.2: Các thuộc tính nội dung
Thuộc tính Mô Tả Kiểu
hot Số hiệu của "hot" continuous
num_failed_logins Số lần cố gắng thực hiện đăng nhập nhưng không thành công.
continuous
logged_in 1 Nếu thực hiện đăng nhập thành công; 0 nếu ngược lại
discrete
num_compromised Số tác động gây thiệt hại continuous root_shell 1 nếu dành được quyền cao nhất rôt; 0 trong
các trường hợp khác.
discrete
su_attempted 1 nếu cố gắng thực thi lệnh "su root"; 0 trong các trường hợp khác.
discrete
num_root Số truy cập có quyền "root" continuous
num_file_creations Số file được tạo ra continuous
num_shells Số shells được thực hiện. continuous
num_access_files Số hành động điều khiển việc truy cập file continuous num_outbound_cmd
s
Số lệnh thực thi lệnh truyền nhận file ra bên ngoài chẳng hạn như FPT.
continuous
is_hot_login 1 nếu đăng nhập từ danh sách "hot"; 0 nếu đăng nhập từ chỗ khác.
discrete
is_guest_login 1 nếu đăng nhập với quyền là khách; 0 nếu đăng nhậpvới quyền khác.
discrete
3.2.2 Giảm số lượng bản ghi trong dữ liệu đầu vào:
Do dữ liệu đầu vào trong file có đuôi *.arff với 5 triệu bản ghi nên việc thực thi thuật toán K-means trên bộ dữ liệu đầy đủ đòi hỏi phải có cấu hình máy tốt, thuật toán phải tối ưu để rút gọn thời gian thực thi. Những điều kiện này tương đối khó khăn với một người lập trình bình thường nên tác giả thực hiện giảm số lượng
bản ghi đầu vào bằng cách dùng phần mềm Weka 3 để mở file dữ liệu sau đó chọn phương thức để giảm số instance như hình sau:
Hình 3.1: Giảm số bản ghi cho file đầu vào của chương trình
Sau khi thực hiện việc lọc ta save as dữ liệu sang một file khác để làm đầu vào cho chương trình. Tùy từng tiêu chí lọc mà số lượng các bản ghi kết nối sẽ giảm số lượng nào đó.
Với mục đích giảm số lượng bản ghi trong file đầu vào để chương trình thực hiện khả thi hơn về mặt thời gian nên trong luận văn sử dụng lọc RemovePercentaga. Với phương pháp lọc này ta chỉ cần cung cấp số % muốn loại bỏ thì Weka 3 sẽ giúp ta giữ lại ngẫu nhiên số bản ghi tương ứng với thiết lập của ta từ file dữ liệu gốc.
Khi đó dữ liệu dạng đầu vào của chương trình sẽ nằm trong file *.arff có dạng vecto được mô tả như trong hình 3.2. Các thuộc tính như đã được mô tả trong phần trên. Mỗi bản ghi kết nối được thể hiện trên một hàng với các giá trị của các thuộc tính tương ứng… thể hiện các tính chất của một kết nối. Khi đó, nếu ở trong Weka 3 ta vẫn có thể chỉnh sửa được nội dung file nếu cần.
Hình 3.2: Xem và chỉnh sửa cho file đầu vào của chương trình nếu cần.
Dữ liệu đầu vào của bài toán là tập các bản ghi dữ liệu chưa được phân lớp.
Với mỗi bản ghi dữ liệu sẽ chứa giá trị của các thuộc miền rời rạc.
Hình 3.3: Dữ liệu của chương trình mở bằng Notepad.
Cấu trúc dữ liệu của tệp đầu vào có thể mô tả lại như sau:
• Đầu tiên là các thông tin về phiên bản, tác giả, ngày khởi tạo, ý nghĩa, các thông tin về file dữ liệu
• Tiếp theo là n dòng thông tin các thuộc tính có dạng @ thuộc tính với n là số thuộc tính.
• Mỗi dòng tương ứng với giá trị của một đối tượng trong luận văn này thì mỗi dòng thể hiện dữ liệu của một bản ghi kết nối.
• Các giá trị của mỗi thuộc tính cách nhau bởi một dấu “,”
3.3 Cài đặt thuật toán K-Means và thử nghiệm trong phân cụm phần tử dị biệt