BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH
KHOA CÔNG NGHỆ THÔNG TIN
ĐỒ ÁN CHUYÊN NGHÀNH
XÂY DỰNG ỨNG DỤNG SNORT TRONG HỆ
THỐNG IDS TRÊN MÃ NGUỒN
Giảng viên hướng dẫn: ThS. VƯƠNG XUÂN CHÍ
Sinh viên thực hiện:
NGUYỄN BẢO ANH
MSSV:
1800003565
Chuyên ngành:
Kỹ thuật máy tính
Mơn học:
Đồ án chun nghành KTMT
Khóa:
2018
Tp.HCM, tháng …. năm 2021
Trường Đại học Nguyễn Tất Thành
Khoa Công Nghệ Thơng Tin
1
CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
1
NHIỆM VỤ ĐỒ ÁN CHUYÊN NGHÀNH
2
(Sinh viên phải đóng tờ này vào báo cáo
3
Họ và tên: Nguyễn Bảo Anh…………………………..…...MSSV: 1800003565……………
4
Chuyên ngành: Mạng Máy tính và Truyền thơng……….. Lớp: 18DTH3A………………..
5
Email:
6
Tên đề tài: Xây dựng ứng dụng Snort trong hệ thống IDS trên mã nguồn mở……………
7
Gíao viên hướng dẫn: Vương Xuân Chí
8
9
10
SĐT: 0767995019……………...
Thời gian thực hiện:
/
/2021 đến
/
/2021
Nhiệm vụ/nội dung (mô tả chi tiết nội dung, yêu cầu, phương pháp… ) :
MÔ TẢ ĐỀ TÀI:
11
Hệ thống phát hiện xâm nhập (IDS) là hệ thống có nhiệm vụ theo dõi, phát hiện và có thể
12
ngăn cản sự xâm nhập, cũng như các hành vi khai thác trái phép tài nguyên của hệ thống
13
được bảo vệ mà có thể dẫn đến việc làm tổn hại đến tính bảo mật, tính tồn vẹn và tính
14
sẵn sàng của hệ thống.
15
NỘI DUNG VÀ PHƯƠNG PHÁP:
16
- Tìm hiểu hệ thống IDS và IPS
17
- Triển khai Snort trong hệ thống IDS
18
- Xây dựng (mô phỏng) một ứng dụng Snort trong hệ thống IDS (Intrusion Detection
19
System) trên hệ điều hành Linux
20
YÊU CẦU:
21
Có kiến thức về mạng, đọc hiểu tài liệu tiếng Anh. Kỹ năng trình bày văn bản trên máy
22
tính tốt Có tác phong làm việc chăm chỉ, tinh thần trách nhiệm cao
23
Nội dung và yêu cầu đã được thông qua Bộ môn.
24
TP.HCM, ngày 20 tháng 6 năm 2021
TRƯỞNG BỘ MÔN
GIÁO VIÊN HƯỚNG DẪN
(Ký và ghi rõ họ tên)
(Ký và ghi rõ họ tên)
25
26
27
28
29
2
TS. Nguyễn Kim Quốc
ThS. Vương Xuân Chí
LỜI CẢM ƠN
30
Để có được Bài báo cáo này, Em xin bày tỏ lịng kính trọng và biết ơn sâu sắc tới
31
Thầy ThS.Vương Xuân Chí, người đã cố gắng nhắc nhở, chỉ dạy tận tình và động
32
hướng dẫn về mẫu chuẩn báo cáo và bài tập đồ án để chúng em thực hiện Đồ án
33
chuyên nghành KTMT.
34
35
Em xin chân thành cảm ơn các thầy cô giáo trong khoa Khoa Học Công Nghệ
36
trường Đại Học Nguyễn Tất Thành đã tận tình giảng dạy, truyền đạt cho chúng em
37
những kiến thức quý báu trong suốt thời gian qua.
38
39
Trong khoảng gian thực hiện đồ án, những điều sai và thiếu kinh nghiệm vì kiến
40
thức cịn rất hạn hẹp. Cho nên bài tập đồ án sẽ khơng tránh khỏi những sơ sót đáng
41
tiếc. Em xin cảm ơn thầy đã đọc hết bài tập đồ án của chúng em và mong thầy góp ý
42
nhận xét để chúng em hoàn thành đề tài này.
43
44
45
46
47
Họ và tên sinh viên
48
Nguyễn Bảo Anh
49
50
51
52
53
LỜI MỞ ĐẦU
54
Trong bối cảnh tiến trình hội nhập, vấn đề an ninh mạng và bảo mật dữ liệu đang
55
trở nên rất được quan tâm không chỉ ở Việt Nam mà trên toàn thế giới. Khi cơ sở hạ
3
56
tầng và các công nghệ mạng đã đáp ứng tốt các yêu cầu về băng thông, chất lượng
57
dịch vụ, đồng thời thực trạng tấn công trên mạng đang ngày một gia tăng thì vấn đề
58
bảo mật càng được chú trọng hơn bao giờ hết. Không chỉ các nhà cung cấp dịch vụ
59
Internet, các cơ quan chính phủ mà các doanh nghiệp, tổ chức cũng có ý thức hơn về
60
an tồn thông tin.
61
62
Triển khai một hệ thống thông tin và xây dựng được cơ chế bảo vệ chặt chẽ, an
toàn, là góp phần duy trì tính bền vững cho hệ thống thơng tin của doanh nghiệp đó.
63
Chúng ta đều hiểu rằng an tồn thơng tin là tài sản vơ giá đối với một doanh
64
nghiệp, không chỉ thuần tuý về mặt vật chất mà đây còn là giá trị về mặt chữ tín, nhất
65
là đối với những tổ chức thường xuyên hoạt động trên mảng thương mại điện tử, dịch
66
vụ, ngân hàng….Chính vì vậy, tất cả những hệ thống này cần được trang bị những
67
cơng cụ phịng chống đủ mạnh để có thể đối phó khi có những tấn cơng vào hệ thống
68
mạng. Am hiểu các cách thức tấn công cũng như những phương pháp phòng vệ khi
69
triển khai và xây dựng một hệ thống mạng là điều cần thiết đối với một người quản
70
trị, và đó là lý do để chúng tôi thực hiện đồ án “ Xây dựng ứng dụng Snort trong hệ
71
thống IDS trên mã nguồn mở ” này.
72
73
74
75
76
77
78
79
80
4
PHẦN NHẬN XÉT + CHẤM ĐIỂM CỦA GIẢNG VIÊN
.................................................................................................................
.................................................................................................................
.................................................................................................................
91
.................................................................................................................
.................................................................................................................
.................................................................................................................
.................................................................................................................
.................................................................................................................
.................................................................................................................
.................................................................................................................
.................................................................................................................
.................................................................................................................
.................................................................................................................
.................................................................................................................
92
Điểm giáo viên hướng dẫn:
93
.................................................................................................................
94
Điểm giảng viên chấm vòng 2:
81
82
83
84
85
86
87
88
89
90
95
96
97
.................................................................................................................
.................................................................................................................
.................................................................................................................
98
Giảng viên chấm vòng 2
TPHCM, Ngày …… tháng …… năm
Giáo viên hướng dẫn
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
5
MỤC LỤC
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
6
DANH MỤC CÁC BẢNG BIỂU
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
7
DANH MỤC CÁC HÌNH ẢNH
191
DANH MỤC CÁC TỪ VIẾT TẮT
192
193
194
195
8
IDS
Intrusion Detection System
IPS
Intrusion Prention System
HIDS
Host Intrusion Detection System
NIDS
Network Intrusion Detection
FTP
File Transfer Protocol
TCP
Transport Control Protocol
IP
Internet Protocol
VPN
Virtual Private Network
DNZ
Domain Name System
9
196
197
CHƯƠNG 1: TỔNG QUAN VỀ IDS/IPS
1.1 GIỚI THIỆU VỀ IDS/IPS
198
- Hệ thống phát hiện xâm nhập – IDS(Intrusion Detection System) là một hệ
199
thống có nhiệm vụ giám sát các luồng dữ liệu traffic đang lưu thơng trên mạng, có
200
khả năng phát hiện những hành động khả nghi, những xâm nhập trái phép cũng như
201
khai thác bất hợp pháp nguồn tài nguyên của hệ thống mà từ đó có thể dẫn đến xâm
202
hại tính tồn ổn định, tồn vẹn và sẵn sàng của hệ thống.
203
- IDS có thể phân biệt được những cuộc tấn cơng xuất phát từ bên ngồi hay từ
204
chính bên trong hệ thống bằng cách dựa vào một database dấu hiệu đặc biệt về những
205
cuộc tấn công (smurf attack, buffer overflow, packet sniffers….). Khi một hệ thống
206
IDS có khả năng ngăn chặn các cuộc tấn thì nó được gọi là hệ thống phòng chống
207
xâm nhập – IPS (Intrusion Prevention System).
208
Sự khác nhau giữa IDS và IPS:
209
- Có thể nhận thấy sự khác biệt giữa hai khái niệm ngay ở tên gọi: “phát hiện”
210
và “ngăn chặn”. Các hệ thống IDS được thiết kế với mục đích chủ yếu là phát hiện và
211
cảnh báo các nguy cơ xâm nhập đối với mạng máy tính nó đang bảo vệ trong khi đó,
212
một hệ thống IPS ngồi khả năng phát hiện cịn có thể tự hành động chống lại các
213
nguy cơ theo các quy định được người quản trị thiết lập sẵn.
214
1.2 KHÁI NIỆM VỀ HỆ THỐNG PHÁT HIỆN XÂM NHẬP
215
1.2.1 Phát hiện xâm nhập là gì ?
216
- Phát hiện xâm nhập là một tập hợp các kỹ thuật và phương pháp được sử dụng để
217
phát hiện những hành vi đáng ngờ ở cấp độ mạng và máy chủ. Hệ thống phát hiện
218
xâm nhập có hai loại cơ bản: phát hiện xâm nhập dựa trên dấu hiệu signature và phát
219
hiện sự bất thường.
220
a) Phát hiện dựa trên dấu hiệu (signature)
221
- Phương pháp này có hiệu quả với những dấu hiệu đã biết trước, như virus máy
222
tính, có thể được phát hiện bằng `cách sử dụng phần mềm để tìm các gói dữ liệu có
223
liên quan đến sự xâm nhập trong các giao thức Internet. Dựa trên một tập hợp các dấu
224
hiệu và các quy tắc, hệ thống phát hiện xâm nhập có thể tìm thấy và ghi log lại các
225
hoạt động đáng ngờ và tạo ra các cảnh báo. Tuy nhiên phương pháp này hầu như
10
11
9
12
226
khơng có tác dụng với những cuộc tấn cơng mới, quy mô phức tạp, sử dụng các kỹ
227
thuật lẩn tránh (evation technique)… do chưa có được thơng tin về cuộc tấn công.
228
b) Phát hiện sự bất thường
229
- Phương pháp này thiết lập và ghi nhận trạng thái hoạt động ổn định của hệ thống,
230
sau đó so sánh với trạng thái đang hoạt động hiện hành để kiểm tra sự chênh lệch.
231
Khi nhận ra sự khác biệt lớn trong hệ thống thì có khả năng đã xảy ra một cuộc tấn
232
cơng. Phát hiện xâm nhập dựa trên sự bất thường thường phụ thuộc vào các gói tin
233
hiện diện trong phần tiêu đề giao thức. Trong một số trường hợp các phương pháp
234
này cho kết quả tốt hơn so với IDS dựa trên signature. Thông thường một hệ thống
235
phát hiện xâm nhập thu thập dữ liệu từ mạng và áp dụng luật của nó với dữ liệu để
236
phát hiện bất thường trong đó. Snort là một IDS chủ yếu dựa trên các luật lệ, và
237
những plug-in hiện nay để phát hiện bất thường trong tiêu đề giao thức.
238
Q trình phát hiện có thể được mô tả bởi 3 yếu tố cơ bản nền tảng sau:
239
Thu thập thông tin (information source):
Kiểm tra các gói tin trên mạng.
Sự phân tích (Analysis): Phân tích các gói tin đã thu thập để nhận biết hành
240
241
242
động nào là tấn công.
243
244
Cảnh báo (response): hành động cảnh báo cho sự tấn cơng được phân tích ở
trên.
245
- Snort sử dụng các quy tắc được lưu trữ trong các tập tin văn bản có thể sửa đổi.
246
Nội quy được nhóm lại trong các chuyên mục và được lưu trữ trong các tập tin riêng
247
biệt. Những tập tin này sau đó được tập hợp trong một tập tin cấu hình chính gọi là
248
snort.conf. Snort đọc những quy định này trong thời gian khởi động và xây dựng cấu
249
trúc dữ liệu nội bộ hoặc dây chuyền để áp dụng những quy tắc này capture dữ liệu.
250
Tìm và sử lý dấu hiệu theo các luật là một việc khó khăn vì việc xử lý yêu cầu phải
251
capture và phân tích dữ liệu trong một thời gian. Snort đi kèm với một tập hợp phong
252
phú của các tiền quy tắc xác định để phát hiện hoạt động xâm nhập, bạn cũng có thể
253
tự thêm hoặc loại bỏ các quy tắc tùy thuộc vào mục đích cảnh báo của hệ thống.
254
255
256
13
14
10
15
257
258
259
1.3. CẤU TRÚC CỦA HỆ THỐNG
Hình 1.IDS/IPS
1 IDS và IPS
260
Các thành phần cơ bản
261
262
-
Sensor/Agent: Giám sát và phân tích các hoạt động.
Management Server: Là thiết bị trung tâm dùng thu nhận các thông tin từ
263
Sensor/Agent và quản lý chúng, management server thường là các máy trạm trọng
264
265
266
267
một hệ thông.
Database server: Dùng lưu trữ các thông tin từ Sensor/Agent hay
Management Server.
Console: Là chương trình cung cấp giao diện có thể cài đăt trên một máy tính bình
-
thường dùng để phục vụ cho tác vụ quản trị, hoặc để giám sát, phân tích.
268
269
1.4. PHẤN LOẠI IDS/IPS
270
Các hệ thống IDS được chia thành 2 loại sau:
- Host-based IDS (HIDS): Sử dụng dữ liệu kiểm tra trên một hoặc vài máy đơn để
271
272
phát hiện xâm nhập.
- Network-based IDS (NIDS): Sử dụng dữ liệu trên tồn bộ lưu thơng mạng, cùng
273
274
với dữ liệu kiểm tra từ cá bộ cảm biến và một vài máy trạm để phát hiện xâm nhập.
275
1.4.1. Network based IDS – NIDS
276
277
-
NIDS thường bao gồm có hai thành phần logic:
Bộ cảm biến – Sensor: đặt tại một đoạn mạng , kiểm soát các cuộc lưu thơng nghi
-
ngờ trên đoan mạng đó.
Trạm quản lý: nhận các tín hiệu cảnh báo từ bộ cảm biến và thông báo cho một
-
điều hành viên.
Một NIDS truyền thống với hai bộ cảm biến trên các đoạn mạng khác nhau cùng
278
279
280
281
282
283
giao tiếp với một mạng kiểm soát.
1.5. GIỚI THIỆU VỀ HỆ THỐNG SNORT
284
- Snort được phát triển năm 1998 bởi Sourcefire và CTO Martin Roesch, là 1 phần
285
mềm miễn phí mã nguồn mở có khả năng phát hiện và phòng chống xâm nhập trái
286
phép vào hệ thống mạng có khả năng phân tích thời gian thực lưu lượng mạng, và ghi
287
log gói tin trên nền mạng IP. Ban đầu được gọi cơng nghệ phát hiện và phịng chống
288
xâm nhập hạng nhẹ, Snort đã dần phát triển và trở thành tiêu chuẩn trong việc phát
289
hiện và phòng chống xâm nhập.
16
17
11
18
290
- Snort thực hiện việc tìm kiếm và phân tích nội dung các giao thức của các traffic
291
lưu thông trên mạng, từ đó có thể phát hiện ra các kiểu thăm dị và tấn cơng như
292
buffer overflow, stealth ports scanning….Các thông tin thu thập sẽ được ghi log lại và
293
cảnh báo đến console của người quản trị trong thời gian thực.
294
Snort có thể sử dụng với một số cơ chế:
295
296
- Sniffer mode: là chế độ cho phép bạn có thể theo dõi và đọc các luồng dữ liệu ra
vào hệ thống mạng được hiển thị trên màn hình điều khiển.
297
- Packet Logger mode: cho phép ghi các logs dữ liệu vào đĩa lưu trữ.
298
- Network Intrusion Detection System (NIDS) mode: là cơ chế được cấu hình phức
299
tạp nhất, cho phép Snort phân tích các luồng dữ liệu, trong đó kiểm sốt cho (hay
300
khơng) cho phép các dữ liệu ra vào hệ thống mạng dựa vào các bộ qui tắc được định
301
nghĩa bởi người quản trị, đồng thời thực hiện một vài hành động dựa vào những gì
302
mà Snort nhìn thấy.
303
1.6. CÁC THÀNH PHẦN CỦA SNORT
304
- Snort bao gồm nhiều thành phần. Mỗi phần có một chức năng riêng biệt nhưng
305
làm việc cùng nhau để góp phần đưa ra các nhận định giúp phát hiện các cuộc tấn
306
công cụ thể và tạo ra output theo một định dạng cần thiết từ hệ thống. Một IDS dựa
307
trên Snort bao gồm các thành phần chính sau đây:
308
•
309
•
310
•
311
•
312
•
313
Module giải mã gói tin (Packet Decoder)
Module tiền xử lý (Preprocessors)
Module phát hiện (Detection Engine)
Module log và cảnh báo (Logging and Alerting System)
Module xuất thông tin (Output Module)
a) Module giải mã (Packet Decoder)
314
- Module giải mã lấy các gói dữ liệu từ các giao diện mạng khác nhau và chuẩn bị
315
cho việc các gói tin sẽ được xử lý trước khi được gửi đến module phát hiện. Các giao
316
diện có thể là Ethernet, SLIP, PPP….
317
318
319
b) Module tiền xử lý (Preprocessors)
320
- Module tiền xử lý là những thành phần được sử dụng với Snort để sắp xếp hoặc
321
sửa đổi các gói dữ liệu trước khi module phát hiện kiểm tra xem gói tin đã được xử
19
20
12
21
322
dụng bởi kẻ xâm nhập hay không. Module tiền xử lý là phần rất quan trọng trong IDS
323
để chuẩn bị các gói dữ liệu cho việc phân tích dựa vào các luật trong module phát
324
hiện. Hacker sử dụng các kỹ thuật khác nhau để đánh lừa IDS bằng nhiều cách. Ví
325
dụ: bạn có thể đã tạo ra một quy tắc để tìm một chuỗi ký tự "scripts/iisadmin" trong
326
gói
327
HTTP. Nếu bạn đang kết hợp chuỗi này chính xác, bạn có thể dễ dàng bị lừa bởi một
328
hacker khi đã làm thay đổi chút ít các chuỗi này.
329
"scripts/./iisadmin"
330
"scripts/examples/../iisadmin"
331
"scripts\iisadmin"
332
"scripts/.\iisadmin"
333
c) Module phát hiện (Detection Engine)
334
- Một vấn đề rất quan trọng trong module phát hiện là thời gian thực thi, xử lý các
335
gói tin. Tùy thuộc vào hệ thống của bạn mạnh như thế nào mà sẽ tốn những khoảng
336
thời gian khác nhau để xử lý, vì một IDS thường nhận được rất nhiều gói tin, tương
337
ứng với việc cũng có rất nhiều các luật được thực thi. Nếu lưu lượng cần xử lý trên
338
mạng là quá lớn khi Snort đang hoạt động trong chế độ NIDS, bạn có thể mất một vài
339
gói tin hoặc thời gian đáp ứng khơng chính xác. Khả năng xử lý của module phát hiện
340
phụ thuộc vào các yếu tố sau:
341
342
343
344
Số lượng các luật
Sức mạnh của hệ thống máy mà Snort đang chạy
Tốc độ của bus hệ thống
Lưu lượng trên mạng
345
- Khi xây dựng một hệ thống phát hiện xâm nhập, bạn phải lưu ý tất cả các yếu tố
346
này để hệ thống có thể hoạt động hiệu quả. Lưu ý là module phát hiện có thể phân
347
tích các gói tin và áp dụng các luật đối với các phần khác nhau của một gói tin. Đó là:
348
349
350
351
352
IP header của gói tin
Header của lớp vận chuyển, bao gồm TCP, UDP…Nó cũng có thể làm việc
Trên header ICMP
Header của lớp ứng dụng như header của DNS, FTP, SNMP hay SMTP…
- Tải trọng của gói: Điều này có nghĩa bạn có thể tạo ra các luật sử dụng module
353
phát hiện để tìm kiếm một chuỗi nằm trong dữ liệu của một gói tin.
354
d) Module ghi và cảnh báo (Logging and Alerting System)
22
23
13
24
355
- Tùy thuộc việc module phát hiện có nhận dạng được xâm nhập hay khơng mà
356
một gói tin có thể được ghi log hay đưa ra một cảnh báo. Các file log được lưu dưới
357
các định dạng đơn giản như tcpdump hoặc một vài dạng khác, tất cả được lưu trữ
358
trong folder mặc định /var/log/snort. Bạn có thể sử dụng tùy chọn –l trong command
359
line để thay đổi vị trí tạo ra các log file và cảnh báo.
360
e) Module Output (Output Module)
361
- Module đầu ra có thể hoạt động theo nhiều cách phụ thuộc vào việc muốn lưu
362
các kết quả được tạo ra bằng module ghi và cảnh báo như thế nào. Tùy theo việc cấu
363
hình hệ thống mà nó có thể thực hiện các cơng việc như là:
364
365
366
367
368
369
370
371
372
Ghi log file vào thư mục mặc định /var/log/snort/alerts hoặc một nơi khác.
Gửi các cảnh báo SNMP.
Gửi thông tin tới syslog.
Đăng nhập vào một cơ sở dữ liệu như MySQL hoặc Oracle.
Tạo ra các output XML.
Cấu hình lại Router, firewall.
Gửi các thơng điệp Server Message Block (SMB) tới các máy tính
Windows.
373
374
375
376
377
378
379
Bảng 1. 1 Snort
380
381
382
383
1.7. CÁC CHẾ ĐỘ HOẠT ĐỘNG CỦA SNORT
384
1.7.1. Sniffer Mode
385
- Đây là một tính năng cơ bản dễ dàng sử dụng nhưng rất hiệu quả trong việc
386
giám sát các luồng dữ liệu đang lưu thơng trên hệ thống. Nó có khả năng tạo ra một
387
bảng tóm tắt về các traffic trên mạng sau khi capture các gói tin, từ đó giúp người
25
26
14
27
388
quản trị có cái nhìn tổng quan về hệ thống. Nếu bạn chỉ quan tâm đến thơng tin của
389
những gói tin TCP/IP packet headers, hãy bắt đầu với khóa -v:
390
./snort –v
391
1.7.2. Packet Logger Mode
- Nếu bạn muốn ghi lại các gói dữ liệu vào đĩa, bạn cần phải chỉ định một thư
392
393
mục log và thêm khóa –l, Snort sẽ tự động biết để đi vào chế độ packet logger:
./snort -dev -l file./log
394
395
1.7.3. Network Intrusion Detection System Mode gồm:
- Kích hoạt hệ thống phát hiện xâm nhập mạng (NIDS) để bạn khơng phải ghi lại
396
397
tất cả gói đơn lẻ được gửi xuống bằng lệnh:
398
./snort -d -h 192.168.1.0/24 -l file./log -c snort.conf
399
a) NIDS Mode Output Options.
400
- Có một số cách để cấu hình đầu ra output của Snort ở chế độ NIDS. Mặc định
401
log sẽ được ghi theo định dạng ASCII và được đặt trong cơ chế cảnh báo toàn phần.
402
Cơ chế cảnh báo tồn phần sẽ hiển thị thơng điệp cảnh báo cùng với tồn bộ các
403
packet headers. Ngồi ra cịn có các cơ chế cảnh báo bằng việc thực thi các dòng lệnh
404
cũng như việc log các dữ liệu.
405
- Cơ chế cảnh báo của Snort khá phức tạp với bảy chế độ hoạt động theo các dịng
406
lệnh, đó là: full, fast, socket, syslog, console, cmg, và none. Sáu trong số các chế độ
407
này thực hiện với khóa –A tại dịng lệnh.
408
b) Understanding Standard Alert Output.
409
Khi Snort tạo ra một thông điệp cảnh báo, nó thường dựa vào cấu trúc giống
410
như sau:
411
[**] [116:56:1] (snort_decoder): T/TCP phát hiện [**]
412
1.7.4. Inline Mode:
413
414
-
415
Inline Mode là một nhánh cơ chế hoạt động của Snort.
Có ba loại quy tắc có thể sử dụng khi chạy Snort với Snort Inline: Drop, Reject,
Sdrop.
416
a) Snort Inline Rule Application Order .
417
Trong các phiên bản gốc, trình tự ưu tiên của các hành động trong Snort là:
418
Activation->dynamic->drop->sdrop->reject->alert->pass->log.
28
29
15
30
419
Trong inline-mode, trình tự ưu tiên này được thay đổi như sau:
420
Activation->dynamic->pass-> drop-> sdrop-> reject-> alert-> log.
421
b) Cài đặt Snort Inline .
422
Để cài đặt Snort Inline, sử dụng lệnh sau đây:
423
# ./configure --enable-inline
424
# make
425
# make install
426
c) Chạy Snort Inline .
427
- Trước tiên, bạn cần đảm bảo rằng các module ip queue đã được tải. Sau đó, bạn
428
cần gửi lưu lượng truy cập để Snort Inline sử dụng các hàng đợi đối tượng.
429
Ví dụ: iptables -A OUTPUT -p tcp --dport 80 -j QUEUE
430
d) Pcaps
431
- Thay vì lắng nghe Snort trên giao diện, bạn có thể capture một gói tin để đọc.
432
Snort sẽ đọc và phân tích các gói tin và điều này có thể hữu ích cho việc kiểm tra và
433
phát hiện những lỗi trên hệ thống Snort.
434
435
436
437
438
439
440
441
Hình 1. 2 Inline Mode
442
443
e) Đối số dòng lệnh.
444
445
446
447
448
449
31
32
16
33
450
451
452
453
454
455
456
457
Bảng 1. 2 Snort
458
459
460
461
462
463
464
465
466
467
468
469
470
471
Hình 1. 3 Network
472
CHƯƠNG 2. CẤU HÌNH SNORT VÀ RULE SNORT
473
2.1 CÁC BIẾN TRONG SNORT
474
a) Includes
475
Từ khóa include cho phép định nghĩa một file tập hợp các luật được chỉ định trong
476
Snort command line. Chức năng hoạt động của nó cũng gần giống như khóa #include
477
trong ngơn ngữ lập trình C, như đọc các tên biến, tên tập tin và bổ sung nội dung tại
34
35
17
36
478
một số vị trí được quy định trong tập tin. Tập tin include sẽ thay các giá trị biến bằng
479
một biến số được xác định:
include <include file path/name>
480
481
b) Variables
482
Ba loại biến có thể được xác định trong Snort:
483
484
485
486
-
Var, portvar, ipvar .
Đây là các biến thay thế đơn giản được thiết lập với các biến ipvar, var, hoặc từ
khoá portvar .
2.1.1. Biến IP và Lists IP
487
- Địa chỉ IP có thể được quy định một cách riêng biệt, hoặc trong một danh sách
488
như một block CIDR, hoặc tổng hợp của cả ba phần. Nếu hệ thống hỗ trợ Ipv6, các
489
biến IP cần được sử dụng bằng biến “ipvar” thay vì “var” như thông thường. IPs,
490
danh sách IP, và block CIDR được phủ định bằng kí hiệu '!'.
491
2.1.2. Biến port và List Port
492
- Danh sách port hỗ trợ việc khai báo và quản lý phạm vi các port. Biến, phạm vi và
493
danh sách port bị phủ nhận bằng kí hiệu “!”. “any” được sử dụng để chỉ tất cả các
494
port, nhưng “!any” thì khơng được dùng. Phạm vi của port có giới hạn từ 0 đến
495
65535. Danh sách các port phải được đặt trong dấu ngoặc vuông, và khi muốn định
496
nghĩa phạm vi của các port nằm trong giới hạn nào, ta phải dùng dấu “:”.
497
498
499
500
501
502
503
504
Hình 1. 4 IP and Port
2.2. CẤU HÌNH TIỀN XỬ LÝ
505
- Module tiền xử lý được xây dựng để thực hiện nhiều nhiệm vụ. Nó bình thường
506
hố traffic cho các services, để chắc chắn rằng dữ liệu trong các packet qua nó là tốt
507
nhất để module phát hiện tiếp tục xử lý. Chức năng khác của module tiền xử lý là tự
508
phịng thủ bằng cách dự đốn những dấu hiệu tấn công qua việc so sánh các packet.
37
38
18
39
509
510
- Tiến trình tiền xử lý được nạp và cấu hình bằng cách sử dụng các khố xử lý. Các
định dạng của chỉ thị tiền xử lý trong tập tin quy tắc Snort là:
511
preprocessor <name>: <options>
512
preprocessor minfrag: 128
513
2.2.1. Frag3
514
a) Cấu hình Frag 3
515
Có ít nhất hai chỉ thị tiền xử lý cần thiết để kích hoạt frag3: Global Configuration và
516
Engine Configuration.
517
Global Configuration
518
519
520
521
•
Tên cơ chế tiền xử lý: frag3_global
Engine Configuration
•
Tên cơ chế tiền xử lý: frag3_engine
b) Cấu hình đề nghị
522
preprocessor frag3_global: prealloc_nodes 8192
523
preprocessor frag3_engine: policy linux, bind_to 192.168.1.0/24
524
preprocessor frag3_engine: policy first, bind_to [10.1.47.0/24,172.16.8.0/24]
525
preprocessor frag3_engine: policy last, detect_anomalies
526
527
528
529
530
531
532
533
534
535
Hình 1. 5 Frag
2.2.2. Stream5
536
- Tiền xử lý stream5 là một module của snort, có khả năng theo dõi các traffic TCP
537
và UDP đang lưu thơng trên mạng bằng cách sử dụng các khố rule “flow” và
538
“flowbits”.
539
40
41
a) Stream API
19
42
540
- Stream5 hỗ trợ Stream API, là một chuẩn giao thức tiền xử lý tự động được cấu
541
hình để sắp xếp các hành vi theo yêu cầu của giao thức lớp ứng dụng, xác định các
542
phiên có thể được bỏ qua (do dữ liệu truyền lớn, vv) và cập nhập các thông tin nhận
543
dạng về phiên (giao thức ứng dụng, direction, vv) mà sau này có thể được sử dụng
544
bởi các rule.
b) Stream5 Global Configuration
545
- Cấu hình này map hai network segments trong hai OS policy khác nhau, một cho
546
547
windows và một cho linux, với các traffic đi đến policy mặc định của Solaris.
548
2.2.3. sfPortscan
549
Cấu hình sfPortscan
550
Việc sử dụng tiền xử lý stream5 được yêu cầu cho sfPortscan để xác định
551
những kết nối không được đảm bảo như ICMP hay UDP.
552
Các thơng số bạn có thể sử dụng để cấu hình các module portscan là:
553
a) Proto
554
Các tùy chọn có sẵn:
555
556
b) Scan type <scan type>
557
Các tùy chọn có sẵn:
558
TCP, UDP, IGMP, ip proto, all .
portscan, portsweep, decoy portscan, distributed portscan
559
c) Sense level <level>
560
Có sẵn các tùy chọn:
561
562
“low” ,“medium” ,“high”
d) Watch ip <ip1|ip2/cidr[:[port|port2-port3]]>
563
- Xác định những địa chỉ IP, mạng lưới, và các port cụ thể trên các máy để theo dõi.
564
Danh sách này là một danh sách bằng dấu phẩy của địa chỉ IP, địa chỉ IP bằng cách sử
565
dụng ký hiệu CIDR. Tùy chọn, port được quy định sau các địa chỉ IP/CIDR sử dụng
566
một khơng gian và có thể là một port hoặc một dải ký hiệu bằng dấu gạch ngang. Các
567
địa chỉ IP hoặc mạng lưới không thuộc phạm vi này sẽ được bỏ qua nếu tùy chọn này
568
được sử dụng
569
e) Ignore scanners <ip1|ip2/cidr[:[port|port2-port3]]>
570
Bỏ qua các nguồn quét cảnh báo.
43
44
20
45
571
f) Ignore scanned <ip1|ip2/cidr[:[port|port2-port3]]>
572
Bỏ qua các điểm đến của quét cảnh báo.
573
g) Logfile <file>
574
- Tùy chọn này sẽ xuất port được scan đến các tập tin được chỉ định. Nếu tập tin
575
không chứa một dấu gạch chéo đầu hàng, tập tin này sẽ được đặt trong thư mục cấu
576
hình Snort.
577
h) Include midstream
578
- Tuỳ chọn này sẽ bao gồm các đặc điểm của Stream5. Điều này có thể dẫn đến các
579
cảnh báo giả, đặc biệt là việc load những dữ liệu nặng có thể làm drop các gói, đó là
580
lý do lựa chọn này được tắt theo mặc định.
i) Detect ack scans
581
582
- Tuỳ chọn này sẽ bao gồm các đặc điểm được tổng hợp lại giữa các dòng module
583
cần thiết để phát hiện quét các gói ACK. Tuy nhiên, điều này có thể dẫn đến các cảnh
584
báo giả, đặc biệt là việc load những dữ liệu nặng có thể làm drop các gói, đó là lý do
585
lựa chọn này được tắt theo mặc định.
586
2.2.4. Rpc_decode
587
- RPC’s traffic có thể phân chia ra nhiều packet và mã hoá theo nhiều kiểu khác
588
nhau. Rpc_decode preprocessor sẽ bình thường hóa các gói này vào một record duy
589
nhất không bị phân mảnh (packet buffer). Nếu stream5 được kích hoạt, nó sẽ chỉ xử
590
lý
591
trên các traffic của máy client. Mặc đinh nó sẽ hoạt động trên port 111và 32771.
592
Cấu trúc: preprocessor rpc_decode: [ alert_fragments ]
593
594
595
596
597
2.2.5. Performance Monitor
598
- Yếu tố then chốt của module tiền xử lý là quản lý thời gian thực và hiệu suất xử
599
lý tối đa. Bất cứ khi nào module tiền xử lý hoạt động, nó cũng kích hoạt một chế độ
600
output, như in ra các số liệu thống kê lên màn hình console hoặc xuất ra một file dữ
46
47
21
48
601
liệu thống kê với tên chỉ định. Theo mặc định, số liệu thống kê thời gian thực của
602
Snort sẽ được xử lý.
603
2.2.6. HTTP Inspect
604
- HTTP Inspect là một bộ bộ giải mã HTTP chung cho các user ứng dụng, nó sẽ giải
605
mã các buffer, tìm và bình thường hóa cái trường HTTP. HTTP Inspect hoạt động trên
606
cả client request và server respone.
607
608
609
610
611
612
613
Hình 1. 6 HTTP
614
615
a) Global Configuration
616
Cấu trúc
617
preprocessor http_inspect: global \
618
iis_unicode_map <map_filename> \
619
codemap <integer> \
620
[detect_anomalous_servers] \
621
[proxy_alert]
622
b) Server Configuration
623
Có 2 kiểu cấu hình chính là: “default” và “by IP address”:
624
c) Server Configuration Options
625
profile <all|apache|iis >
626
ports { [<….>]}
627
no_alerts
628
2.2.7. FTP/Telnet Preprocessor
629
- FTP/Telnet là một cải tiến cho các bộ giải mã Telnet, cung cấp khả năng kiểm tra
630
trạng thái stateful trên các luồng dữ liệu FTP và Telnet. Chức năng của FTP/Telnet
631
Preprocessor là giải mã các luồng data, xác định các lệnh FTP, hồi đáp các tín hiệu,
49
50
22
51
632
thốt khoải Telnet và bình thường hóa các trường. FTP/Telnet hoạt động trên cả client
633
request và server response.
634
2.2.8. SSH
635
- Tiền xử lý SSH có khả năng phát hiện những khai thác sau: Gobbles, Challenge,
636
Response Buffer Overflow, CRC 32, Secure CRT, và Protocol Mismatch exploit. Để
637
phát hiện các dấu hiệu tấn công, các tiền xử lý SSH đếm số byte truyền đến server.
638
Nếu số byte vượt quá giới hạn cho phép được xác định trước của các gói
639
tin, cảnh báo được tạo ra. Theo mặc định, tất cả các cảnh báo đều được bật và tiến
640
trình tiền xử lý sẽ kiểm tra các traffic trên port 22.
641
2.2.9. DNS
642
- Tiến trình tiền xử lý giải mã các respone DNS và có thể phát hiện các khai thác
643
sau: DNS Client RDataOverflow, Obsolete Record Types, và Experimental Record
644
Types. DNS tìm kiếm các respone DNS trên các traffic UDP và TCP sau đó kích hoạt
645
tiến trình tiền xử lý để giải mã TCP. Theo mặc định, tất cả cảnh báo sẽ bị tắt và tiến
646
trình tiền xử lý sẽ kiểm tra trên port 53.
647
2.2.10. ARP Spoof Preprocessor
648
- Arpspoof được thiết kế cho tiến trình tiền xử lý để giải mã các gói ARP và phát
649
hiện các cuộc tấn công ARP, các request ARP và các u cầu mapping IP khơng đồng
650
nhất.
651
2.3. CẤU HÌNH LUẬT GIẢI MÃ VÀ TIỀN XỬ LÝ
652
- Decoder và Preprocessor Rules dùng để tắt hay kích hoạt việc sử dụng các luật
653
cho những tiến trình giải mã và tiền xử lý. Ví dụ nếu cấu hình disable_decode_alerts
654
trong file Snort.conf, tiến trình giải mã sẽ bị disable cho dù xuất hiện những tình
655
huống tương ứng với các luật.
656
- Lưu ý rằng tùy chọn enable_decode_drops sẽ được ưu tiên hơn các tùy chọn khác
657
khi hệ thống đang hoạt động ở chế độ Snort Inline
658
2.4. CẤU HÌNH MODULE OUTPUT
659
- Snort có thể output vào các file log hoặc output ra console, nhiều administrator
660
thích dùng các phần mềm của hãng thứ 3 (third party ) để tăng thêm chức năng giám
661
sát của Snort, các phần mềm data database đều có thể dùng được, lưu ý trước khi cài
662
đặt Snort muốn dùng database nào thì cần chỉ rõ khi cài đặt ví dùng dùng MySQL,
52
53
23
54
663
khi
664
biên dịch source thêm vào –mysql.
665
Ví dụ: ./configure – mysql
666
2.4.1. Alert_syslog
667
a) Cấu trúc
668
alert_syslog: <facility> <options>
669
output alert_syslog: [host=],] <facility>
670
<options>
671
output alert_syslog: 10.1.1.1:514, <facility> <options>
672
b) Các khóa trong syslog
673
Facilities
674
Priorities
675
Options
676
2.4.2. Alert_fast
677
- Các cảnh báo trong Snort sẽ được in ra một cách nhanh nhất đến một tập tin được
678
xác định. Đây là một phương pháp cảnh báo nhanh hơn phương pháp cảnh báo đầy
679
đủ vì nó khơng cần in ra tất cả các packet header trong file output
680
Cấu trúc : alert_fast: <output filename>
output alert_fast: alert.fast
681
682
683
2.4.3. Alert_full
- Cảnh báo sẽ được in ra với đầy đủ các packet header. Mặc định thông tin sẽ được
684
lưu trong /var/log/snort hoặc một thư mục được xác định. Snort sẽ tạo ra các thư
685
Cấu trúc :alert_full: <output filename>
686
output alert_full: alert.full
687
688
689
2.4.4. Alert_unixsock
690
- Thiết lập một UNIX domain socket và gửi cảnh báo với nó. Ngồi các chương
691
trình/tiến trình có thể nghe ở trên socket ta cịn nhận được những cảnh báo và gói dữ
692
liệu trong thời gian thực. Đây là hiện một giao diện thử nghiệm.
693
Cấu trúc
55
56
24
57
694
alert_unixsock
695
output alert_unixsock
696
2.4.5. Log_tcpdump
697
- Chức năng này sẽ ghi các bản log ở định dạng tcmdump. Do có rất nhiều cơng cụ
698
có thể đọc được định dạng này nên nó rất hữu ích cho việc tổng hợp và phân tích
699
thơng tin với số lượng lớn. Đối số của log_tcpdump là đầu ra tên của tập tin.
700
Cấu trúc
701
log_tcpdump: <output filename>
702
output log_tcpdump: snort.log
703
2.4.6. Database
704
- Database là nơi chứa tất cả các thông tin lưu trữ của Snort như các cảnh báo, các
705
host liên quan, các log packet gây ra các cảnh báo,….Snort sử dụng các đối số để
706
quản lý database và giúp cho các admin có thể quản lý thơng tin một cách có hiệu quả
707
hơn.
708
Cấu trúc của câu lệnh output ra database
709
database: <log | alert>, <database type>,
710
2.5 RULE SNORT
711
2.5.1 Giới thiệu
712
- Sử dụng Snort rule khá đơn giản và linh hoạt nhưng nó chứa đựng một sức mạnh
713
khơng nhỏ. Một số nguyên tắc cần phải biết và nhớ để phát huy hết sức mạnh của rule
714
trong Snort.
715
- Các phiên bản trước đây, hầu hết các rule điều viết 1 dòng nhưng từ phiên bản 1.8
716
trở lên, một rule ta có thể viết nhiều dòng (bằng cách sử dụng “\” để xuống dịng).
717
Snort rules có 2 phần: rule header và rule options.
718
Rule header gồm có:
719
Actions, Protocol, IP address, Port ,Hướng, IP address ,Port
720
Rule options: gồm có tên cảnh báo và thơng tin chứa trong gói dữ liệu cần kiểm tra.
58
59
25