Xây dựng thử nghiệm trong việc pháp hiện xâm nhập mạng dựa trên

Một phần của tài liệu Phát hiện xâm nhập, các dang tấn công, mã độc, sử dụng kỹ thuật khai phá dữ liệu (Trang 55 - 68)

thuật toán K-Means.

 Mô tả bài toán

Với mục tiêu của luận văn là cài đặt thuật toán K-Means để phân lớp để pháp hiện các phần tử dị biệt trong các kết nối, tác giả tiến hành xây dựng một chƣơng trình ứng dụng nhằm phân loại những kết nối thông thƣờng và các kết nối bất thƣờng dựa trên thuật toán K-Means. Chƣơng trình ứng dụng sẽ cài đặt thuật toán K-means để thực hiện phân loại các kết nối, mỗi kết nối là một chuỗi các gói tin TCP bắt đầu và kết thúc tại một số thời gian đƣợc xác định rõ ràng, giữa những luồng dữ liệu đến và đi từ một địa chỉ IP nguồn đến một địa chỉ IP đích theo một số giao thức đƣợc xác định rõ. Mỗi kết nối đƣợc dán nhãn hoặc là bình thƣờng, hoặc là một tấn công, với chính xác một loại tấn công cụ thể. Mỗi bản ghi kết nối bao gồm

Dữ liệu đầu vào là một phần của tập dữ liệu chuẩn lấy từ nguồn dữ liệu của cuộc thi phát hiện xâm nhập KDD 1999. Chƣơng trình sẽ sử dụng thuật toán K-Means để phân tập dữ liệu này thành 23 nhóm, bình thƣờng và di biệt, đánh dấu đâu là phần tử bình thƣờng đâu là phần tử di biệt, tính toán trọng tâm tƣơng ứng đối với mỗi nhóm theo các thuộc tính và thực hiện lƣu các giá trị tính toán này ra file nếu muốn.

 Mô tả dữ liệu đầu vào

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 494.021 bản ghi với 42 thuộc tính. Bỏ 3 thuộc tính kiểu chuỗi và 1 thuộc tính thứ 42 là thuộc tính phân lớp. Còn lại 38 thuộc tính kiểu số để tính bằng khoảng cách EuclideanDistance.

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:

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

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

Bảng 3.3: 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) Continuous: liện tục, discrete: rời rạc.

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.4: 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

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

Bảng 3.5: Các thuộc tính nội dung a. 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.8 để mở file dữ liệu sau đó chọn phƣơng thức để giảm số instance nhƣ hình sau:

Hình 3.8: 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

RemovePercentage. 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.8 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 vectơ. 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.8 ta vẫn có thể chỉnh sửa đƣợc nội dung file nếu cần.

Hình 3.9: 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.10: 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 “,”

 Cài đặt thuật toán K-Means và thử nghiệm trong phân cụm phần tử dị biệt a. Các chức năng của chƣơng trình Lƣu đồ thực hiện chƣơng trình

Hình 3.11: Giao diện chọn bộ dữ liệu

Cho phép nhập dữ liệu từ tệp có cấu trúc nhƣ trong mô tả. Để nhập dữ liệu, ngƣời dùng nhấn vào nút “Open file...”, sau đó tìm đến tệp dữ liệu có cấu trúc lƣu trữ trên máy tính có đuôi dạng *.arff. Sau khi chọn tệp, dữ liệu sẽ đƣợc lấy thông tin cần thiết về các thuộc tính và thực hiện đƣa vào cơ sở dữ liệu và hiển thị lên ở nhóm “Chi tiết dữ liệu” để phục vụ cho việc thực hiện các thuật toán tiếp theo đƣợc dễ dàng hơn

+ Chi tiết dữ liệu

Nhóm chi tiết dữ liệu: hiển thị thông tin về các bản ghi kết nối trong file dữ liệu đầu vào, số dòng là thứ tự bản ghi, mỗi cột là một thuộc tính và chi tiết về nội dung của dữ liệu trong các bản ghi.

Hình 3.12: Hiển thị chi tiết dữ liệu đầu vào.

Cho phép ngƣời dùng nhập các tham số điều khiển cho thuật toán K-Means bao gồm: số cụm cần phân. Theo phân tích thì việc phân cụm phát hiện các phần tử dị biệt thì ta chọn số cụm cần phân là 23. Chƣơng trình cho phép thực hiện hàm khoảng cách theo Euclid. Sau khi lựa chọn đầy đủ các tham số, ngƣời dùng nhấn nút “SimpleK-Means” để chƣơng trình xử lý tính toán

Hình 3.14: Hiệu chỉnh tham số phân cụm

Do số lƣợng bản ghi khá lớn nên việc thực hiện hết khoảng 1h.45 trên máy tính có cấu hình CPU @ 2,00 GHZ bộ nhớ Ram 2 GB cho bộ dữ liệu có 494.021 bản ghi kết nối. Thuật toán K-Means xử lý chính bằng phần mền Weka 3.8, đƣợc download tại địa chỉ.

Hình 3.15: Dữ liệu đầu vào Weka 3.8 của 10% KDD cup99 với 42 thuộc tính Ta bỏ 3 thuộc tính đầu không phải kiểu số, 1 thuộc tính cuối kiểu phân lớp. nhƣ vậy còn 38 thuộc tính còn lại.

Sau đây là chạy chƣơng trình thuật toán K-Means xử lý chính bằng phần mền Weka 3.8 với bộ dự liệu 10% KDD cup99 là 494.021 và 38 thuộc tính. Tổng cộng dữ liệu KDD cup99 đầy đủ sấp sỉ 5.000.000 bản nghi kết nối.

Hình 3.17: Kết quả đánh giá phân cụm thuật toán K-Means trên Waka -3-8

Một phần của tài liệu Phát hiện xâm nhập, các dang tấn công, mã độc, sử dụng kỹ thuật khai phá dữ liệu (Trang 55 - 68)

Tải bản đầy đủ (PDF)

(95 trang)