Mô tả các thuộc tính trong file dữ liệu đầu vào

Một phần của tài liệu Phát hiện xâm nhập dựa trên thuật toán KMeans (Trang 54)

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

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

49

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

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

50

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_cmds 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:

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

51

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.

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

52

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ố

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

53

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 3.3.1 Giới thiệu về môi trƣờng cài đặt 3.3.1 Giới thiệu về môi trƣờng cài đặt

Chương trình được viết bằng ngôn ngữ C#.Net trong bộ Visual Studio 2010 sử dụng phiên bản .Net Framework 4.0. Các thuộc tính của dữ liệu đầu vào được lưu thành các trường dữ liệu của chương trình, lưu trữ trong hệ quản trị cơ sở dữ liệu Sql Server 2008 R2.

Thuật toán K-mean là thuật toán kinh điển đã được cài đặt và sử dụng rộng rãi. Trong bài ta sử dụng thư viện thuật toán K-Means ứng dụng cho bài toán phát hiện cụm di biệt. các thư viện sử dụng có tên IKVM.OpenJDK.Core.dll, IKVM.OpenJDK.Util.dll, IKVM.OpenJDK.Text.dll, IKVM.Runtime.JNI.dll, WekaSharp.dll.

3.3.2 Các chức năng của chƣơng trình Lƣu đồ thực hiện chƣơng trình

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

54

a. Đọc file dữ liệu đầu vào

Cho phép nhập dữ liệu từ tệp có cấu trúc như trong mô tả ở mục 3.2. Trước khi nhập dữ liệu cho chương trình, người dùng có thể chỉnh sửa trên giao diệ phần mềm Weka 3. Để nhập dữ liệu, người dùng nhấn vào nút “Chọn...”, 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

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

b. 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.

Do số lượng bản ghi trong dữ liệu đầu thường khá lớn nên việc hiển thị chi tiết dữ liệu chỉ được thực hiện với một số lượng nhỏ để tránh ảnh hưởng tới tốc độ thực thi. Mặc định dữ liệu hiển thị được đặt từ 1 tới 100, Nếu muốn xem chi tiết của các bản ghi ta đánh số vào textbox dữ liệu từ và đến rồi nhấn hiển thị để xem:

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

55

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

Sau khi đã chọn được file dữ liệu đầu vào ta click vào button “Thực hiện K- Means” để chuyển sang form thực hiện thuật toán phân cụm các bản ghi thông thường và dị biệt.

c. Tham số phân cụm K-Means

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 ở chương 2 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à 2. 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 “Thực hiện K-Means” để chương trình xử lý tính toán.

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

56

Hình 3.7: Form thực hiện thuật toán K-Means.

Do số lượng bản ghi khá lớn nên việc thực hiện hết khoảng 3 phút trên máy tính có cấu hình CPU Celeron D 1,6GHZ bộ nhớ Ram 1GB cho bộ dữ liệu có 49402 bản ghi kết nối. Và khoảng 20 phút cho bộ dữ liệu có 49402 bản ghi (1/10) bộ dữ liệu KDD đầy đủ.

Sau khi thực hiện xong thuật toán các thông tin về chi tiết phân cụm từng bản ghi sẽ được hiển thị trong bảng bên trái. Ta có thể chọn chi tiết phân cụm từ bản ghi x đến y và chọn hiển thị để xem chi tiết trong khoảng đó.

Thông tin về số lần lặp, tổng bình phương lỗi do khai căn khi tính khoảng cách Euclid trong các cụm sẽ được hiển thị trong “Kết quả phân cụm K-Means” ở phía trên bên phải của form. Các giá trị bị mất đó sẽ được thay thế bằng giá trị trung bình khi tính lại trọng tâm cho cụm

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

57

Hình 3.8: Kết quả thực hiện thuật toán K-Means.

Bảng phân cụm sẽ cho ta thông tin chi tiết về các trọng tâm của thuộc tính trong mỗi cụm, số bản ghi trong mỗi cụm. Từ đó ta có thể nhận thấy các thông tin trong cụm 1 thể hiện nhiều biểu hiện của cụm các bản ghi dị biệt, có thể lấy ví dụ như: đăng nhập không thành công (login giá trị =0), Số giây của mỗi kết nối duration rất ngắn, số kết nối tới 1 host ở thời điểm hiện tại và trong khoản thời gian 2 s trước cùng với 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 đó là rất lớn (biểu hiện cho các cuộc tấn công)...v.v. Còn các phần tử được đánh dấu là 0 là các bản ghi kết nối bình thường. Việc nhận biết cụm bình thường và dị biệt phụ thuộc vào giá trị các thuộc tính chứ không phải vào con số 0 hay 1 do thuật toán K-Means không có khả năng nhận biết cụm có giá trị thuộc tính bao nhiêu thì thuộc về dạng nào.

Ở cuối bảng phân cụm là thông số về tỉ lệ % của các bản ghi thuộc cụm bình thường hay dị biệt và cụ thể số bản ghi trong mỗi cụm:

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

58

Hình 3.9: Số bản ghi kết nối thuộc về mỗi cụm.

Ảnh dưới đây cho ta thấy kết quả khi thực hiện thuật toán K-Means trên bộ dữ liệu lớn hơn 49402 bản ghi bằng 1/10 bộ dữ liệu KDD cup. Kết quả cho thấy cụm dữ liệu được đánh số là 0 mới là cụm chứa các bản ghi kết nối thông thường còn cụm dữ liệu được đánh số là 1 là cụm các bản ghi kết nối dị biệt.

Hình 3.10: Kết quả thực hiện thuật toán K-Means với bộ dữ liệu có 494020 bản ghi

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

59

Ngoài ra chương trình cho phép lưu các kết quả ra định dạng file text ta nhấn vào “Lưu kết quả ra file”, chọn đường dẫn, tên file và save.

3.4. Nhận xét, đánh giá chƣơng trình thử nghiệm

Chương trình cài đặt dựa trên thuật toán K-Meana, sử dụng hai hàm khoảng cách phổ biến là khoảng cách Euclid. Cho phép người dùng tùy chọn số cụm, Khoảng cách tối đa seed là một thông số ảnh hưởng tới số lần lặp để ra được kết quả cuối cùng. Kết quả thu được là các phần tử được phân theo các cụm được đánh số từ 1 đến số cụm . Nhược điểm của chương trình là kết quả hiển thị chưa trực quan.

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

60

KẾT LUẬN VÀ HƢỚNG NGHIÊN CỨU KẾT LUẬN

Trong bản luận văn này tôi đã tìm hiểu, nghiên cứu một số vấn đề sau: - Luận văn trình bày lý thuyết cơ bản tấn công mạng và các kiểu tấn công, về phân cụm dữ liệu, và thuật toán K-Means trong phân cụm dữ liệu dựa vào cụm trung tâm để ứng dụng vào phân cụm các phần tự dị biệt trong kết nối.

- Giới thiệu về cấu trúc, thuộc tính của bộ dữ liệu KDD Cup 1999 và phương pháp giảm số bản ghi trong bộ dữ liệu đầu vào.

- Luận văn cài đặt thuật toán phân cụm K-means để minh họa cho việc phân loại các kết nối thông thường và dị biệt. Tuy nhiên chương trình có nhiều hạn chế như kết quả hiển thị chưa trực quan và định dạng tệp hỗ trợ đầu vào chỉ là tệp *.arff.

HƢỚNG NGHIÊN CỨU

Trong tương lai đề tài phát triển theo hướng nghiên cứu phần thu thập được trực tiếp các bản ghi kết nối từ mạng, thực hiện phân loại nó và có các modul phát hiện được đâu là kết nối thông thường, đâu là các kết nối dị biệt từ đó cảnh báo các kết nối không an toàn khi lượng các bản ghi kết nối thuộc nhóm dị biệt xuất hiện nhiều.

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

61

TÀI LIỆU THAM KHẢO Tiếng việt:

[1] Vũ Lan Phương, “Nghiên cứu và cài đặt một số giải thuật phân cụm phân lớp”, 2006 (Đại học Bách khoa Hà Nội)

[2] Hoàng Thị Toàn (2012), Nghiên cứu cơ sở dữ liệu KDD 99 và ứng dụng

cho bảo mật mạng, Đề tài nghiên cứu khoa học.

Tiếng Anh:

[3] Han J. and Kamber M, Data Mining: Concepts and Techniques 3rd Edition, Morgan Kaufman, Academic Press. 2011.

[4] Tapas Kanungo, An Efficient K-Means Clustering Algorithm: Analysis

and Implementation, 2002..

[5] Andrew Moore: “K-means and Hierarchical Clustering– TutorialSlides”,http://www2.cs.cmu.edu/~awm/tutorials/kmeans.html

[6] IATAC , Intrusion Detection Systems - The Information Assurance

Technology Analysis Center - Sixth Edition September 25, 2009 [7] Gerhard M¨unz, Sa Li, Georg Carle, Wilhelm Schickard, Traffic

Anomaly Detection Using K-Means Clustering, University of Tuebingen, Germany,

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

62

PHẦN PHỤ LỤC

Xử lý trên giao diện người dùng phần thuật toán K-Means

using System.Configuration; using System; using weka; using WekaSharp; using weka.core; using weka.clusterers; using weka.core.matrix; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; namespace GSSL {

public partial class frmMain : Form

{

public string sFilePath;

public int[] assignments;

public frmMain()

{

InitializeComponent(); }

private void btnThucHien_Click(object sender,

EventArgs e)

{

int

numberOfClusters=Convert.ToInt16(txtNumCluster.Text);

Scripting.FileSystemObject MyFile = new

Scripting.FileSystemObject(); string sFileName; Scripting.TextStream msgStream; string sContents; string strR="";

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

63

Instances insts = new Instances(new

java.io.BufferedReader(new java.io.FileReader(sFilePath)));

weka.filters.unsupervised.attribute.StringToNominal filter =

new weka.filters.unsupervised.attribute.StringToNominal();

filter.setAttributeRange("first"); filter.setInputFormat(insts);

weka.filters.Filter.useFilter(insts, filter);

SimpleKMeans kmeans = new SimpleKMeans();

kmeans.setSeed(Convert.ToInt16(txtSeed.Text));

// This is the important parameter to set

kmeans.setPreserveInstancesOrder(true);

kmeans.setNumClusters(numberOfClusters); kmeans.buildClusterer(insts);

ClusterEvaluation eval = new ClusterEvaluation();

eval.setClusterer(kmeans);

eval.evaluateClusterer(new Instances(insts));

kmeans.getClusterCentroids();

sContents= eval.clusterResultsToString(); sFileName = @"D:\DE TAI THAC

SI\BoCai\Manguon\IDS\KDDCupOutPut.txt"; msgStream =

MyFile.CreateTextFile(sFileName,true,true);

msgStream.Write(sContents); msgStream.Close(); sContents = ""; //msgStream = MyFile.OpenTextFile(sFileName,Scripting.IOMode.ForReading,fal se,Scripting.Tristate.TristateTrue ); int i=0; string[] words;

words = File.ReadAllLines(sFileName,

Encoding.Default);

for (i = 0; i < words.Length; i++)

{ //i = i + 1; string t = words[i].Trim(); t.Replace(" ", " "); t.Replace(" ", " "); t.Replace(" ", " "); t.Replace(" ", " "); t.Replace(" ", " "); t.Replace(" ", " "); string[] strlv = t.Split(' ');

Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/

64

t = t.Replace("Attribute", "Thuộc tính");

t = t.Replace("Number of iteration", "Số lần lặp"); t = t.Replace("Missing values globally replaced with

mean/mode", "Toàn bộ giá trị bị mất thay thế bằng trung

bình/mode");

t = t.Replace("Full Data", "Dữ liệu đầy đủ");

t = t.Replace("Cluster centroids", "Trọng tâm cụm");t = t.Replace("Cluster", "Cụm ");

t = t.Replace("Within cluster sum of squared errors", "Tổng

bình phương lỗi trong cụm");

t = t.Replace("Clustered Instances", "Các cụm đã phân");

if (i == 11)

{

Một phần của tài liệu Phát hiện xâm nhập dựa trên thuật toán KMeans (Trang 54)

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

(73 trang)