Kiểm soát truy cập bằng hệ thống phát hiện xâm trái phép IDS

Một phần của tài liệu luận văn: một số phương pháp kiểm soát truy cập hệ thống thông tin và ứng dụng (Trang 57)

3.2.3.1. Giới thiệu

Snort là phần mềm IDS mã nguồn mở có khả năng phát hiện khi xảy ra xập nhập trái phép bằng tập luật được người quản trị cấu hình. Các packet trước khi được gửi đến máy tính đích sẽ được Snort kiểm tra, thẩm định. Snort có thể phát hiện nhiều loại xâm nhập như: buffer overflows, stealth port scans, CGI attacks, SMB probes, OS fingerprinting attempts…

Snort sử dụng các luật được lưu trữ trong các file text, có thể được chỉnh sửa bởi người quản trị. Các luật được nhóm thành các kiểu. Các luật thuộc về mỗi loại được lưu trong các file khác nhau. File cấu hình chính của Snort là snort.conf. Snort đọc những luật này vào lúc khởi tạo và xây dựng cấu trúc dữ liệu để cung cấp các luật để bắt giữ dữ liệu [16].

Hình 3.15. Cấu trúc tập luật của Snort

Diễn giải:

Tất cả các Luật của Snort về logic đều gồm 2 phần: Phần header và phần Option.

• Phần Header chứa thông tin về hành động mà luật đó sẽ thực hiện khi phát hiện ra có xâm nhập nằm trong gói tin và nó cũng chứa các tiêu chuẩn để áp dụng luật với gói tin đó.

• Phần Option chứa một thông điệp cảnh báo và các thông tin về các phần của gói tin dùng để tạo nên cảnh báo. Phần Option chứa các tiêu chuẩn phụ thêm để đối sánh luật với gói tin. Một luật có thể phát hiện được một hay nhiều hoạt động thăm dò hay tấn công. Các luật thông minh có khả năng áp dụng cho nhiều dấu hiệu xâm nhập. Dưới đây là cấu trúc chung của phần Header của một luật Snort:

3.2.3.2. Các bước chuẩn bị cài đặt

Một số yêu cầu trước khi cài đặt:

+ Phần mềm Snort: Hệ thống phát hiện xâm nhập

+ Phần mêm Wincap: Hệ thống cho phép bắt các gói tin và phân tích mạng. + Snort_rules: Tập luật mẫu

Tiến hành triển khai hệ thống trên Win ảo với VMware Workstation, mô hình gồm có 2 máy. Máy Server 2003 được cài đặt hệ thống Snort và máy Client (hệ điều hành tùy ý) – có vai trò tấn công máy Server, card mạng của VMware ở 2 máy ở chế chộ VNet4, địa chỉ IP được cấp phát như sau:

Máy Server: IP: 10.0.0.2/ Subnet Mask: 255.0.0.0/ Default getway: 10.0.0.1 Máy Client: IP: 10.0.0.3/ Subnet Mask: 255.0.0.0/ Default getway: 10.0.0.1

3.2.3.3. Cài đặt và cấu hình

1/. Cài đặt phần mềm: WinPcap v4.1.2

WinPcap v4.1.2 và lần lượt thực hiện Next → Next → I Agree → Install →

Finish.

2/. Cài đặt phần mềm: IDS - Snort

Nháy đúp chuột vào file Snort_2_9_5_Installer để cài đặt. Lần lượt thực

hiện I Agree → Next → Next → Next → Close → OK.

Giải nén file snortrules-snapshot-CURRENT.tar và copy tất cả nội dung

trong đó vào thư mục cài đặt Snort: C:\Snort, chọn Yes to All để thay thế các tệp cũ.

Bảng 3.2. Những nội dung cần thay đổi trong tệp snort.conf

Cụm từ cần thay thế Thay thế bằng cụm từ

Var HOME_NET any Var HOME_NET 192.168.1.1/24

Var EXTERNAL_NET any Var EXTERNAL_NET

!$HOME_NET

Var RULE_PATH ../rules Var RULE_PATH C:\snort\rules Var SO_RULE_PATH ../rules # Var SO_RULE_PATH ../rules Var PREPROC_RULE_PATH ../rules Var PREPROC_RULE_PATH

C:\snort\rules

Var WHITE_LIST_PATH ../rules Var WHITE_LIST_PATH (adsbygoogle = window.adsbygoogle || []).push({});

C:\snort\rules

Var BLACK_LIST_PATH ../rules Var BLACK _LIST_PATH

C:\snort\rules

#config logdir: config logdir: c:\Snort\log

dynamicpreprocessor directory /usr/local/lib/snort_dynamicpreprocessor / dynamicpreprocessor directory C::\Snort\lib\snort_dynamicpreprocess or dynamicengine /usr/local/lib/snort_dynamicengine/libsf _engine.so dynamicengine C:\Snort\lib\snort_dynamicengine\sf_e ngine.dll preprocessor normalize_ip4

preprocessor normalize_tcp: ips ecn stream

preprocessor normalize_icmp4 preprocessor normalize_ip6 preprocessor normalize_icmp6

# preprocessor normalize_ip4

# preprocessor normalize_tcp: ips ecn stream

# preprocessor normalize_icmp4 # preprocessor normalize_ip6 # preprocessor normalize_icmp6

3/. Tạo tập luật

Tạo tệp C:\snort\rules\test.rules có nội dung sau [15]:

alert tcp any any -> 10.0.0.0/24 any (msg:”Co nguoi dang truy cap trai phep vao he thong”;SID:1597538)

alert icmp any any -> 10.0.0.0/24 any (msg:”Co nguoi dang ping trai phep vao he thong”;SID:8521468)

Cấu hình cho hệ thống phát hiện những truy cập trái phép bằng lệnh snort –i1 –l c:\snort\log -c c:\Snort\etc\snort.conf -A full

3.2.3.4. Kết quả

1/. Tiến hành thủ truy cập

Tại máy Client truy cập vào máy Server bằng ping, http, ftp.

Hình 3.17. Cảnh báo được hiển thị trong file log

2/. Một số tập luật cảnh báo khác

+ Tạo luật để cảnh báo khi Ping với kích thước lớn:

alert icmp $HOME_NET any -> any any (msg: “Co cuoc tan cong DOS –

Ping voi kich thuoc lon”; dsize: >50; sid: 2;)

Tại máy Client ta tiến hành ping với kích thước lớn bằng lệnh ping -l 1000 -f 10.0.0.2 –t

Kết quả như sau:

Hình 3.18. Cảnh báo khi xảy ra Ping kích thước lớn

+ Tạo luật để biết một máy nào trong mạng truy cập vào website bất kỳ:

alert tcp any any -> any any (content: “địa chỉ website”; msg: “Ban moi truy cap vào website ...”; sid: 100000; rev: 1;)

KẾT LUẬN 1/. Kết luận

Vấn đề kiểm soát truy cập hệ thống thông tin hiện nay rất quan trọng trong quá việc trao đổi thông tin qua mạng toàn cầu. Nó giúp đảm bảo trao đổi thông tin được an toàn và tin cậy. (adsbygoogle = window.adsbygoogle || []).push({});

Hệ thống kiểm soát truy cập giúp cho các nhà quản trị mạng có thể kiểm soát được tài liệu chia sẻ, kiểm soát được người dùng sẽ truy cập vào hệ thống, ngoài ra còn phát hiện và ngăn chặn được các cuộc truy cập trái phép

Với công nghệ VPN, thì dữ liệu chia sẻ được kiểm soát chặt chẽ hơn, tạo ra được “hành lang” an toàn cho quá trình vận chuyển thông tin qua lại giữa các máy tính có kết nối mạng toàn cầu.

Trong giới hạn cho phép, luận văn đã trình bày được 2 phương pháp kiểm soát truy cập hệ thông thông tin:

+ Kiểm soát truy cập trực tiếp

+ Kiểm soát truy cập tự động: Tường lửa, Hệ thống phát hiện và ngăn chặn truy cập trái phép, hệ thống mạng riêng ảo.

Với mỗi phương pháp đều có điểm mạnh và yếu riêng, không phương pháp nào là hoàn hảo nhất, để đạt hiệu quả cao nhất trong vấn đề kiểm soát truy cập thì cần có sự kết hợp các phương pháp với nhau. Nhằm tận dụng tối đa nhưng ưu điểm của mỗi phương pháp và các phương pháp hỗ trợ cho nhau những điểm yếu.

2/. Kết quả đạt được

Luận văn có hai kết quả chính:

a/. Nghiên cứu tài liệu để trình bày các vấn đề

+ Kiểm soát truy cập trực tiếp: Dùng mật khẩu, định danh, xác thực...

+ Kiểm soát truy cập tự động: Tường lửa, mạng riêng ảo, Phát hiện và năng chặn truy cập bất hợp pháp.

b/. Thử nghiệm kết hợp các phương pháp kiểm soát truy cập trong trường THPT Nguyễn Trãi – Thái Bình:

- Cài đặt chương trình xác thực người dùng bằng chữ ký số. - Cài đặt chương trình phát hiện – cảnh báo truy cập trái phép.

- Cấu hình tường lửa để kiểm soát truy cập giữa mạng công cộng và mạng nội bộ.

- Cấu hình mạng riêng ảo 2 loại mạng riêng ảo Client to Site để người dùng có thể kết nối vào mạng nội bộ từ xa.

TÀI LIỆU THAM KHẢO

[1]. Phan Đình Diệu (2004), Lý thuyết mật mã và an toàn thông tin - NXB ĐHQG Hà Nội.

[2]. Trịnh Nhật Tiến (2008), Giáo trình an toàn dữ liệu - NXB ĐHQG Hà Nội. Một số trang web

[3]. http://antoanthongtin.vn – Ban cơ yếu chính phủ. [4]. http://www.dinte.vn – Cục công nghệ thông tin. [5]. http://www.pcworld.com.vn – Thế giới vi tính. Tài liệu tiếng anh:

[6]. VPN SECURITY (2008) - The Government of the Hong Kong Special Administrative Region.

[7]. Inline Intrusion Prevention (2012) - White Paper.

[8]. Inline Intrusion Prevention (2002) – Bullet by Dinsh Sequeira.

[9]. Using IPS and IDS together for Defense in Depth – (2004) - Ted Holland Một số trang web nước ngoài:

[10].http://msdn.microsoft.com/ - Website of coropan Miscrosoft [11]. http://technet.microsoft.com/ - Website of coropan Miscrosoft [12].http://www.windowsecurity.com/ - Website security of Miscrosoft [13].https://www.academia.edu/ - Website education

[15]. https://labs.snort.org/snort/2956/snort.conf – Home page of Snort [16]. https://www.snort.org/documents - Document page of Snort [17]. http://support.microsoft.com/ Website support online of Microsoft

PHỤ LỤC

Phụ lục 2: Modul tạo mật khẩu đạt mức an toàn:

Public Function RandomString(ByVal size As Integer) As String

Dim numberStr As String() = "0,1,2,3,4,5,6,7,8,9".Split(",") Dim CharStr As String() =

"a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,u,v,r,s,t,x,y,z,w,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P ,Q,U,V,R,S,T,X,Y,Z,W".Split(",") (adsbygoogle = window.adsbygoogle || []).push({});

Dim specailStr As String() = "_,-,@,.,!,#,$,%,^,&,*,<,>,:".Split(",") Dim num, chr, spec As Integer

num = 0 chr = 0 spec = 0

Dim rand As New Random()

While (num + chr + spec <> size) Or (chr * num * spec = 0) rand = New Random()

num = rand.Next(1, numberStr.Length) If num >= size Then Continue While chr = rand.Next(1, size - num) spec = size - (num + chr) If spec < 0 Then spec = 0 End While

'Get random number

Dim passArray(0 To size - 1) As String Dim i As Integer For i = 0 To passArray.Length - 1 passArray(i) = "" Next Dim r As Integer = -1 For i = 1 To num

rand = New Random()

r = rand.Next(0, numberStr.Length - 1)

While r < 0 Or ExistInArray(numberStr(r), passArray)

r = rand.Next(0, numberStr.Length - 1) 'Lay ky tu so ngau nhien tren mang so

End While

'Chen vao mang ky tu mat khau

Dim n As Integer = RandomNumberInArray(passArray) passArray(n) = numberStr(r)

Next

'Return num.ToString() & "-" & chr.ToString() & "-" & spec.ToString() Dim result As String = ""

'

'Get random char For i = 1 To chr

rand = New Random()

r = rand.Next(0, CharStr.Length - 1)

While r < 0 Or ExistInArray(CharStr(r), passArray) r = rand.Next(0, CharStr.Length - 1)

End While

Dim n As Integer = RandomNumberInArray(passArray) passArray(n) = CharStr(r)

Next

'Get random special char For i = 1 To spec

rand = New Random()

r = rand.Next(0, specailStr.Length - 1)

While r < 0 Or ExistInArray(specailStr(r), passArray) r = rand.Next(0, specailStr.Length - 1)

End While

passArray(n) = specailStr(r) Next (adsbygoogle = window.adsbygoogle || []).push({});

For i = 0 To passArray.Length - 1 result &= passArray(i)

Next

Return result End Function

Phụ lục 3: Modul ký số và xác thực chữ ký1

Modul ký số :

public string SignDigital(string plantextfile, string Privatekeyfile) {

//Ma hoa bam MD5

RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); string RSA_Privatekey;

MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();

byte[] md5mess = md5.ComputeHash(Encoding.UTF8.GetBytes(plantextfile)); string aftermd5 = BitConverter.ToString(md5mess);

// Doc khoa private

StreamReader sr2 = new StreamReader(Privatekeyfile); RSA_Privatekey = sr2.ReadToEnd();

sr2.Close();

// Cat de lay duoc khoa public cua RSA

string tempSign = RSA_Privatekey.Substring(0, RSA_Privatekey.IndexOf("</BitStrength>") + 14);

RSA_Privatekey = RSA_Privatekey.Replace(tempSign, ""); // Lay do dai khoa

int dodaikhoarsa = Convert.ToInt32(tempSign.Replace("<BitStrength>", "").Replace("</BitStrength>", ""));

// Đưa khóa công khai vào.

RSA.FromXmlString(RSA_Privatekey); // Ma hoa

int keysize = dodaikhoarsa / 8;

byte[] encr = Encoding.UTF8.GetBytes(aftermd5); int maxlength = keysize - 42;

int dataLength = encr.Length; int khoi = dataLength / maxlength; StringBuilder sb = new StringBuilder(); for (int i = 0; i <= khoi; i++)

{

byte[] template = new byte[(dataLength - maxlength * i > maxlength) ? maxlength : dataLength - maxlength * i];

Buffer.BlockCopy(encr, maxlength * i, template, 0, template.Length); byte[] damahoabyte = RSA.Encrypt(template, false);

Array.Reverse(damahoabyte);

sb.Append(Convert.ToBase64String(damahoabyte)); }

tempSign = sb.ToString(); //Chữ ký thu được return tempSign;

}

Modul xác thực chữ ký số. (adsbygoogle = window.adsbygoogle || []).push({});

1

public bool VerifyDigitalSign(string plantext, string DigitalSign, string publickey) {

RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); public string RSApubkey;

string template = ""; //Ma hoa bam MD5

MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] mess = md5.ComputeHash(Encoding.UTF8.GetBytes(plantext)); string HashMd5 = BitConverter.ToString(mess);

string RSApublickey = publickey;// sr3.ReadToEnd(); string tam = RSApublickey.Substring(0,

RSApublickey.IndexOf("</BitStrength>") + 14);

RSApublickey = RSApublickey.Replace(tam, "");

RSA.FromXmlString(RSApublickey);

int lengthKeyRSA = Convert.ToInt32(tam.Replace("<BitStrength>", "").Replace("</BitStrength>", ""));

// Ký lên bản rõ try

{

int BlockSize = ((lengthKeyRSA / 8) % 3 != 0) ? (((lengthKeyRSA / 8) / 3) * 4) + 4 : ((lengthKeyRSA / 8) / 3) * 4;

tam = DigitalSign;

int khoi = tam.Length / BlockSize; ArrayList ar = new ArrayList(); for (int i = 0; i < khoi; i++) { byte[] dagiaimabyte = Convert.FromBase64String(tam.Substring(BlockSize * i, BlockSize)); Array.Reverse(dagiaimabyte); ar.AddRange(RSA.Decrypt(dagiaimabyte, false)); } template = Encoding.UTF8.GetString(ar.ToArray(Type.GetType("System.Byte")) as byte[]); } catch { return false; } if (HashMd5 == template) { return true;//Chữ ký hợp lệ } else {

return false; //Chữ ký không hợp lệ }

Một phần của tài liệu luận văn: một số phương pháp kiểm soát truy cập hệ thống thông tin và ứng dụng (Trang 57)