Hình 3 .8 Kết nối từ VPN client tới VPN server
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
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.
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 1: Các bảng Si
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(",")
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)
passArray(n) = specailStr(r) Next
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ý1Modul ký số : 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ố.
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ệ }