i
Tp. Hồ Chí Minh, ngày … tháng … năm 2013
NHIỆM VỤ ỐT NGHIỆP
Họ và tên sinh viên:...........................................
ii
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
.........................................................................................
iii
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
........................................................................................
1
LỜI CẢM ƠN
Sau nhiều tháng tìm hiểu, nghiên cứu và cài đặt, đề tài “Tìm hiểu và xây dựng hệ
thống phòng chống và phát hi...
2
TÓM TẮT
Xây dựng hệ thống phòng chống và phát hiện xâm nhập là một giải pháp nhằm
nâng cao tính bảo mật của hệ thống. Xâ...
3
ABSTRACT
For enchanced security of system, we implement a intrusion detection system and
intrusion prevention system for...
4
MỤC LỤC
DANH MỤC HÌNH VẼ ..................................................................................................
5
2.3.4. Thành phần cảnh báo/logging........................................................................23
2.4. Các ch...
6
4.2.3. Non-Payload ....................................................................................................5...
7
DANH MỤC HÌNH VẼ
Hình 1.1: OSSEC được triển khai trên các Server. .....................................................9...
8
Hình 4.6: Giá trị Code của ICMP Header ..................................................................56
Hình 4.7: Th...
9
DANH MỤC TỪ VIẾT TẮT
CNSS Committee on National Security Systems
IDS Intrusion Detection System
IPS Intrusion Prevention...
10
PHẦN I
ĐẶT VẤN ĐỀ
1
Tính cấp thiết của đề tài.
Xã hội ngày càng phát triển, Internet trở thành một phần không thể thiếu đối với
từng cá nhân...
2
Đối tượng nghiên cứu.
Đối tượng nghiên cứu của đề tài là hệ thống phát hiện xâm nhập nói chung. Hệ
thống phát hiện xâm n...
3
PHẦN II
GIẢI QUYẾT VẤN ĐỀ
4
Nội dung
Các nội dung chính trong phần này bao gồm: hệ thống phát hiện xâm nhập, Snort,
SnortSam, cấu trúc và cách viết ...
5
CHƯƠNG 1
HỆ THỐNG PHÁT HIỆN XÂM NHẬP (IDS)
1.1. Giới thiệu
Kỹ thuật phát hiện xâm nhập không phải là một kỹ thuật mới. V...
6
Theo định nghĩa trong tài liệu CNSSI-4009 của Ủy ban An ninh Quốc gia của Hoa
Kỳ thì “intrusion” nghĩa là “hành động tru...
7
trị), “bảo vệ” (dùng các thiết lập mặc định và cấu hình từ người quản trị mà có
những hành động chống lại sự xâm nhập)
I...
8
 Bị hạn chế bởi switch. Trên các mạng chuyển mạch hiện đại, các switch
được sử dụng nhiều để chia mạng lớn thành các se...
9
các trên các máy chủ xung yếu của tổ chức, các server trong vùng DMZ (do là mục
tiêu tấn công chính).
HIDS cũng thường t...
10
■ Chiếm tài nguyên hệ thống: Do cài đặt trên máy cần bảo vệ nên nó sẽ sử
dụng tài nguyên của hệ thống như RAM, CPU, Har...
11
■ Một IDS được xây dựng dựa tên kỹ thuật phát hiện bất thường có thể phát
hiện ra các hành vi “không bình thường” và do...
12
■ Phát hiện xâm nhập dựa trên quá trình tự học: Quá trình này gồm 2 bước,
bước 1 sau khi hệ thống được thiết lập thì ch...
13
Ưu điểm:
■ Ít báo sai và đặc biệt là rất hiệu quả đối với các hình thức xâm nhập đã
được biết đến.
■ Nhanh chóng và đán...
14
“port giám sát” trên switch (span port, port monitoring), khi dữ liệu đi qua switch
nó sẽ gửi một bản sao tới các IDS.
...
15
CHƯƠNG 2
GIỚI THIỆU VỀ SNORT/SNORTSAM
2.1. Snort là gì?
Snort là một hệ thống phòng chống và phát hiện xâm nhập dựa trê...
16
2.2.1. Yêu cầu phần cứng
Rất khó để đưa ra một yêu cầu chung nhất cho phần cứng đề cài đặt Snort vì điều
này còn phụ th...
17
Nếu hệ thống mạng lớn, số lượng cảm biến (sensor) nhiều nên cân nhắc việc tăng
RAM cho hệ thống để hệ thống không bị la...
18
Ở chế độ NIDS, sau khi các gói tin đi vào và vượt qua packet sniffer, dữ liệu sẽ
được gửi thông qua bất kỳ preprocessor...
19
Preprocessors, detection engine và alert system đều là các plug-ins. Điều này giúp
cho cho việc chỉnh sửa hệ thống theo...
20
Bất kể là lớp liên kết nào đang được sử dụng, tất cả các bộ giải mã sẽ đều làm việc
theo một kiểu chung. Đối với trường...
21
Preprocessors là plug-in cho phép phân tích cú pháp dữ liệu theo những cách khác
nhau. Nếu chạy Snort mà không có bất c...
22
khớp với dữ liệu trong gói tin, nó sẽ được gửi tới hệ thống cảnh báo, nếu không nó
sẽ bị bỏ qua như hình phía dưới.
Để ...
23
2.3.4. Thành phần cảnh báo/logging
Cuối cùng sau khi các luật đã phù hợp với dữ liệu, chúng sẽ được chuyển tới thành
ph...
24
 BASE: http://sourceforge.net/projects/secureideas/ Basic Analysis and
Security Engine là một plug-in phân tích và tru...
25
Tùy chọn này sẽ cho phép hiển thị cả phần dữ liệu và tiêu đề của gói tin. Nếu muốn
hiển thị nhiều hơn các thông tin khá...
26
$/snort -dev -l ./log -h 192.168.1.0/24 -c snort.conf
Tham số -c được sử dụng để chỉ định tập tin cấu hình của snort. M...
27
 Linux IPchains
 Linux IPtables
 Linux EBtables
 WatchGuard Firebox firewalls
 8signs firewalls trên Windows
 MS ...
28
đã được định nghĩa trước trong tập tin cấu hình. Thuật toán mã hóa SnortSam đang
sử dụng là Twofish.
Đối với tập tin cấ...
29
 defautlkey: Thiết lập khóa mặc định được sử dụng cho tất cả các cảm biến.
 port: Thiết lập port lắng nghe từ các cảm...
30
CHƯƠNG 3
PREPROCESSORS VÀ OUTPUT PLUG-INS
3.1. Preprocessors
Như trong chương phía trên, chúng ta đã có những hiểu biết...
31
Hình 3.1: Quá trình tiền xử lý.
3.1.1. Frag3
32
Trong tiền xử lý frag3 có một khái niệm mới được đưa ra đó là “target-based”. Ý
tưởng của thuật ngữ này như sau: Một ID...
33
- disabled:
Cấu hình động cơ:
 Tên tiền xử lý: frag3_engine
 Các tùy chọn (cách nhau bởi khoảng trắng)
- timeout <sec...
34
Platform Type Platform Type
AIX 2 BSD Linux 2.4 (RedHat
7.1-7.3)
Linux
AIX 4.3 8.9.3 BSD MacOS First
Cisco IOS Last Ope...
35
3.1.2. Stream5
Tiền xử lý Stream5 cũng là một mô-đun tái hợp TCP dựa trên mục tiêu. Nó có khả
năng theo dõi các phiên c...
36
max_ip <num sessions>
Số phiên IP tôi đa được đồng thời theo dõi. Mặc định
là "16384", tối đa là "1048576", tối thiểu l...
37
“0” (không giới hạn) và tối đa là "1073725440"
(65535 dịch trái 14). Tùy chọn này được sử dụng
để chống DoS.
require_3w...
38
protocol
<client|server|both>
<all|service name(s)>
Chỉ định danh sách các dịch vụ ở client, server
hoặc cả hai phía tr...
39
Ví dụ 1:
preprocessor stream5_global: max_tcp 8192, track_tcp yes,
track_udp yes, track_icmp no
preprocessor stream5_tc...
40
http://www.abc/foobarxyz.php
Ngoài ra Attacker còn có thể sử dụng vô số các kỹ thuật mã hóa dựa trên mã hex
với uft-8. ...
41
các cảnh báo và các tập tin log sẽ được ghi vào thư mục /var/log/snort hoặc
bất kỳ thư mục nào mà người quản trị cấu hì...
42
CHƯƠNG 4
LUẬT TRONG SNORT
Giới thiệu
“Luật” trong Snort ta có thể hiểu một cách đơn giản nó giống như các quy tắc và
lu...
43
phần header và options. Phần header bao gồm: rule action, protocol, địa chỉ ip
nguồn, địa chỉ ip đích, subnetmask, port...
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam
Upcoming SlideShare
Loading in …5
×

[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam

6,358 views

Published on

Khóa luận 2008 - Khoa Đào Tạo Chất Lượng Cao - ĐH Sư Phạm Kỹ Thuật TP - HCM

Published in: Technology
  • Be the first to comment

[Khóa luận tốt nghiệp] - Tìm hiểu và triển khai Snort/SnortSam

  1. 1. i Tp. Hồ Chí Minh, ngày … tháng … năm 2013 NHIỆM VỤ ỐT NGHIỆP Họ và tên sinh viên:.................................................MSSV:...................................... Chuyên ngành: ........................................................Lớp: ......................................... Giáo viên hướng dẫn: ................................................................................................ Ngày giao đề tài:....................................Ngày nộp đề tài:........................................ 1. Tên đề tài: ............................................................................................................................................... ............................................................................................................................................... 2. Các số liệu, tài liệuban đầu ............................................................................................................................................... ............................................................................................................................................... 3. Nội dung thuyết minh và tính toán ............................................................................................................................................... ............................................................................................................................................... ............................................................................................................................................... ............................................................................................................................................... ............................................................................................................................................... 4. Sản phẩm ............................................................................................................................................... ............................................................................................................................................... Trường Đại Học Sư Phạm Kỹ Thuật Tp.HCM Khoa Đào Tạo Chất Lượng Cao -----***---- Cộng Hòa Xã Hội Chủ Nghĩa Việt Nam Độc lập – Tự do – Hạnh phúc ----***---- Trưởng ngành Giáo viên hướng dẫn
  2. 2. ii NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. Giáo viên hướng dẫn
  3. 3. iii NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. .................................................................................................................................................. Giáo viên phản biện
  4. 4. 1 LỜI CẢM ƠN Sau nhiều tháng tìm hiểu, nghiên cứu và cài đặt, đề tài “Tìm hiểu và xây dựng hệ thống phòng chống và phát hiện xâm nhập sử dụng Snort/Snortsam” về cơ bản đã hoàn thành. Trong thời gian thực hiện đề tài em đã nhận được nhiều sự giúp đỡ từ bạn bè, các anh chị và thầy cô. Em xin chân thành gửi lời cảm ơn đến sự giúp đỡ, sự động viên và ủng hộ tinh thần của gia đình và bè bạn để hoàn thành đề tài này. Em cũng xin chân thành cảm ơn quý thầy cô tại trường Đại học Sư Phạm Kỹ Thuật Tp. Hồ Chí Minh, và Khoa Đào tạo Chất lượng cao đã tạo điều kiện cho em được nghiên cứu và học tập. Đặc biệt em xin chân thành cảm ơn thầy Nguyễn Đăng Quang đã luôn nhiệt tình nhắc nhở, đốc thúc em làm việc chăm chỉ, thầy chỉ bảo và gửi em nhiều bài báo cáo để em có thể tham khảo và hoàn thành đề tài. Thầy đã có những góp ý về cả nội dung và trình bày để em có thể hoàn thành bài báo cáo một cách tốt nhất Mặc dù đã rất cố gắng để hoàn thành đề tài một cách tốt nhất, nhưng chắc chắn đề tài sẽ vẫn còn tồn tại những thiếu sót. Em luôn mong mỏi nhận được các góp ý, các thảo luận về các vấn đề này. Sinh viên thực hiện Nguyễn Văn Quang
  5. 5. 2 TÓM TẮT Xây dựng hệ thống phòng chống và phát hiện xâm nhập là một giải pháp nhằm nâng cao tính bảo mật của hệ thống. Xây dựng hệ thống phát hiện xâm nhập không nhằm mục đích thay thế hệ thống tường lửa mà chỉ giúp bổ sung, thu thập thật nhiều thông tin cho quá trình ngăn chặn các cuộc tấn công. Ngoài các khái niệm, kỹ thuật phát hiện hiện xâm nhập của một hệ thống phát hiện xâm nhập. Khóa luận còn tìm hiểu về một hệ thống phát hiện xâm nhập dựa trên mạng là Snort và một mô-đun SnortSam kết hợp với iptables nhằm mục đích ngăn chặn tấn công. Mục tiêu chính của khóa luận là hiểu rõ nhất về cấu trúc của tập luật Snort. Hình thành tư duy phân tích hệ thống thay vì triển khai hệ thống. Từ đó xây dựng ra các tập luật cho những tình huống cụ thể của từng hệ thống. Nội dung chính của khóa luận có thể chia thành 3 phần chính: Phần 1: Bao gồm các nội dung chính về hệ thống phát hiện xâm nhập, mô hình, kỹ thuật phát hiện… Phần 2: Chi tiết kỹ thuật về hệ thống phát hiện xâm nhập mạng Snort/SnortSam. Kiến trúc của hệ thống Snort, cấu trúc luật của Snort. Phần 3: Phân tích một vài dạng tấn công, phân tích các luật tương ứng. Demo hệ thống. Từ khóa: phát hiện xâm nhập, hệ thống phát hiện xâm nhập, phát hiện dựa trên sự bất thường, phát hiện dựa trên mẫu, Snort, SnortSam, SYN Flood, Apache Killer…
  6. 6. 3 ABSTRACT For enchanced security of system, we implement a intrusion detection system and intrusion prevention system for our system. Deploy IDS/IPS don’t replace firewall system so supplenment and collectedmany infomations for prevention attacks. Graduation thesis is researched about define, intrusion detection technology of intrusion detection system (IDS). It still is researched about Snort, SnortSam with iptables for prevention attacks. Main objectives of graduation thesis is system administrator have knowledge about rule syntax, analytics system. Build own Snort rule for him system. Content of graduation thesis include three main part: Part 1: Intrusion detection, network diagram, intrusion detection technology. Part 2: Snort/SnortSam, Snort architecture, Snort rule syntax. Part3: Analytics a few attacks, analytics a few rules for attack and demo. Keywords: intrusion detection, intrusion detection system, anomaly based intrusion detection, misuse/signature based intrusion detection, Snort, SnortSam, SYN Flood, Apache Killer.
  7. 7. 4 MỤC LỤC DANH MỤC HÌNH VẼ .....................................................................................................7 DANH MỤC TỪ VIẾT TẮT ............................................................................................9 PHẦN I: ĐẶT VẤN ĐỀ...................................................................................................10 PHẦN II: GIẢI QUYẾT VẤN ĐỀ ...................................................................................3 CHƯƠNG 1: HỆ THỐNG PHÁT HIỆN XÂM NHẬP (IDS) ......................................5 1.1. Giới thiệu ..................................................................................................................5 1.2. Hệ thống phát hiện xâm nhập là gì? ......................................................................5 1.2.1. Network-based IDS...........................................................................................7 1.2.2. Host-based IDS..................................................................................................8 1.3. Các kỹ thuật phát hiện xâm nhập........................................................................10 1.3.1. Anomaly Based Intrusion Detection.............................................................10 1.3.2. Misuse/Signature Based Intrusion Detection...............................................12 1.4. Đặt IDS trong hệ thống mạng...............................................................................13 CHƯƠNG 2: GIỚI THIỆU VỀ SNORT/SNORTSAM...............................................15 2.1. Snort là gì? ..............................................................................................................15 2.2. Triển khai hệ thống Snort .....................................................................................15 2.2.1. Yêu cầu phần cứng..........................................................................................16 2.2.2. Hệ điều hành và các gói phần mềm khác.....................................................17 2.3. Đặc điểm của Snort................................................................................................17 2.3.1. Packet Sniffer (Decoder)................................................................................19 2.3.2. Preprocessors...................................................................................................20 2.3.3. Detection Engine .............................................................................................21
  8. 8. 5 2.3.4. Thành phần cảnh báo/logging........................................................................23 2.4. Các chế độ hoạt động của Snort...........................................................................24 2.4.1 Chế độ sniffer và chế độ log ...........................................................................24 2.4.2 Chế độ NIDS.....................................................................................................25 2.5. Giới thiệu về SnortSam .........................................................................................26 2.5.1. Snort Output Plug-in.......................................................................................27 2.5.2. Blocking Agent................................................................................................28 CHƯƠNG 3: PREPROCESSORS VÀ OUTPUT PLUG-INS....................................30 3.1. Preprocessors..........................................................................................................30 3.1.1. Frag3 .................................................................................................................31 3.1.2. Stream5 .............................................................................................................35 3.1.4. HTTP Inspect...................................................................................................39 3.2. Output......................................................................................................................40 CHƯƠNG 4: LUẬT TRONG SNORT ..........................................................................42 4.1. Rule Header ............................................................................................................43 4.1.1. Rule Action ......................................................................................................43 4.1.2. Protocol.............................................................................................................44 4.1.3. IP Address........................................................................................................44 4.1.4. Port....................................................................................................................44 4.1.5. Điều hướng.......................................................................................................45 4.1.6. Activate/Dynamic rule....................................................................................45 4.2. Rule Options ...........................................................................................................46 4.2.1. General..............................................................................................................46 4.2.2. Payload .............................................................................................................48
  9. 9. 6 4.2.3. Non-Payload ....................................................................................................51 4.2.3. Post-detection ..................................................................................................57 CHƯƠNG 5: PHÂN TÍCH MỘT SỐ LUẬT TRONG SNORT.................................61 5.1. Khảo sát luật scan ..................................................................................................61 5.2 Win.Trojan.Ibabyfa.dldr.........................................................................................64 5.3. TCP-SYN Flood.....................................................................................................65 5.4 Apache Killer (CVE-2011-3192)..........................................................................67 CHƯƠNG 6: CÀI ĐẶT VÀ CẤU HÌNH SNORT.......................................................71 6.1 Sơ đồ hệ thống.........................................................................................................71 6.2. Cài đặt Snort và SnortSam....................................................................................72 6.3. Thử nghiệm các kiểu tấn công .............................................................................83 KẾT QUẢ ĐẠT ĐƯỢC...................................................................................................86 PHẦN KẾT LUẬN...........................................................................................................88 TÀI LIỆU THAM KHẢO................................................................................................91
  10. 10. 7 DANH MỤC HÌNH VẼ Hình 1.1: OSSEC được triển khai trên các Server. .....................................................9 Hình 1.2: Các mẫu khác thường. .................................................................................10 Hình 1.3: Phân tích chuyển trạng thái.........................................................................12 Hình 1.4: Các vị trí đặt IDS trong hệ thống mạng. ...................................................14 Hình 2.1: Kiến trúc của Snort. .....................................................................................18 Hình 2.2: Các gói tin đi vào Sniffer............................................................................19 Hình 2.3: Giải mã gói tin..............................................................................................20 Hình 2.4: Quá trình xử lí ở Preprocessors..................................................................21 Hình 2.5: Gói tin được xử lý ở Detection Engine bằng các luật. ............................22 Hình 2.6: Thành phần cảnh báo và logging. ..............................................................24 Hình 3.1: Quá trình tiền xử lý......................................................................................31 Hình 3.2: Phân loại các hệ điều hành..........................................................................34 Hình 3.3: Ý nghĩa các tham số cấu hình toàn cục. ....................................................36 Hình 3.4: Ý nghĩa các tham số cấu hình TCP............................................................38 Hình 3.5: Ý nghĩa các tham số cấu hình UDP. ..........................................................38 Hình 3.6: Ý nghĩa các tham số cấu hình ICMP. ........................................................38 Hình 3.7: Ý nghĩa các tham số cấu hình IP................................................................38 Hình 4.1: Cấu trúc luật trong Snort.............................................................................43 Hình 4.2: Bảng reference..............................................................................................47 Hình 4.3: Bảng ipopts. ..................................................................................................52 Hình 4.4: Bảng flag .......................................................................................................53 Hình 4.5: Bảng Type của ICMP Header.....................................................................55
  11. 11. 8 Hình 4.6: Giá trị Code của ICMP Header ..................................................................56 Hình 4.7: Tham số của từ khóa detection_filter........................................................59 Hình 5.1: Giao thức bắt tay ba bước. ..........................................................................66 Hình 5.2: SYN Flood ....................................................................................................66 Hình 5.3: HTTP Request bình thường........................................................................68 Hình 5.4: HTTP Request tạo bởi Apache Killer........................................................68 Hình 6.1: Mô hình triển khai trong thực tế với một vùng DMZ. ............................71 Hình 6.2: Mô hình thực nghiệm. .................................................................................71 Hình 6.2: Bảng danh sách các máy trong hệ thống mạng. .......................................71 Hình 6.3: Mô hình xử lý của Snort, MySQL, Base...................................................72
  12. 12. 9 DANH MỤC TỪ VIẾT TẮT CNSS Committee on National Security Systems IDS Intrusion Detection System IPS Intrusion Prevention System NIDS Netword-base IDS HIDS Host-based IDS ICMP Internet Control Message Protocol IP Internet Protocol TCP Transmission Control Protocol UDP User Datagram Protocol DoS Denial-of-Service DDoS Distributed Denial-of-Service GNU/GPL GNU General Public License ACID Analysis Console for Intrusion Databases BASE Basic Analysis and Security Engine ISP Internet Service Provider FDDI Fiber Distributed Data Interface ACL Access Control List HTTP Hypertext Transfer Protocol
  13. 13. 10 PHẦN I ĐẶT VẤN ĐỀ
  14. 14. 1 Tính cấp thiết của đề tài. Xã hội ngày càng phát triển, Internet trở thành một phần không thể thiếu đối với từng cá nhân, doanh nghiệp, các tổ chức, trường học cũng như chính phủ. Internet du nhập vào Việt Nam được hơn 15 năm, đã trở thành công cụ, phương thức giúp cho các doanh nghiệp tiếp cận với khách hàng, cung cấp dịch vụ, quản lý dữ liệu của tổ chức một cách hiệu quả và nhanh chóng. Cùng với sự phát triển theo chiều hướng tốt, các cuộc tấn công và xâm nhập mạng của những kẻ xấu cũng phát triển theo. Không chỉ trên thế giới mà ở Việt Nam vấn đề “an toàn thông tin” đã và đang trở thành vấn đề nóng bỏng. Sự đa dạng và phức tạp trong các loại hình tấn công đã gây ra nhiều khó khăn cho việc ngăn chặn và phòng chống. Thương mại điện tử ở Việt Nam càng phát triển thì càng trở thành mục tiêu của nhiều attacker hơn. Thương mại điện tử đã trở thành mục tiêu có nhiều giá trị thu lợi hơn, hấp dẫn các attacker bỏ nhiều công sức hơn trong việc xâm nhập và phá hoại. Một hệ thống phòng chống và phát hiện xâm nhập sẽ giúp người quản trị có thể luôn luôn theo dõi và thu thập nhiều thông tin đáng giá cho quá trình chống lại các hình thức tấn công và xâm nhập đó. Mục tiêunghiên cứu. Nghiên cứu chung về hệ thống phát hiện xâm nhập, các đặc điểm, kiến trúc của một hệ thống phát hiện xâm nhập, đặc biệt là các kỹ thuật phát hiện xâm nhập đang được áp dụng. Nghiên cứu về hệ thống phát hiện xâm nhập Snort, cách cài đặt, cấu hình, triển khai trong hệ thống mạng. Phân tích các dấu hiệu của các hình thức tấn công, hình thành nên các luật tương ứng với đặc điểm của các dạng tấn công và xâm nhập đó Nghiên cứu, triển khai SnortSam như một add-on của Snort nhằm chặn các cuộc xâm nhập được chỉ định.
  15. 15. 2 Đối tượng nghiên cứu. Đối tượng nghiên cứu của đề tài là hệ thống phát hiện xâm nhập nói chung. Hệ thống phát hiện xâm nhập Snort, add-ons của Snort là SnortSam. Nghiên cứu và hình thành các tập luật đối với các dạng tấn công, xâm nhập cụ thể. Phương pháp nghiên cứu. Nghiên cứu về lý thuyết phát hiện xâm nhập thông qua các tài liệu các bài báo cáo. Nghiên cứu lý thuyết về Snort thông qua tài liệu từ trang chủ của Snort, tài liệu hướng dẫn cho người sử dụng từ Sourcefire và các nguồn tài liệu khác. Nghiên cứu về SnortSam thông qua tài liệu và hướng dẫn sử dụng từ trang chủ của SnortSam. Triển khai hệ thống trên máy ảo Virtualbox, xây dựng hệ thống mạng đơn giản mô tả một hệ thống mạng nhỏ trong thực tế. Triển khai các dịch vụ như trong mô hình mạng cỡ nhỏ. Tìm hiểu về các phương thức xâm nhập, tấn công và khai thác lỗ hổng, công cụ và cách thức thực hiện. Triển khai tấn công, xâm nhập, khai thác lỗ hổng. Sau đó đọc log, phân tích gói tin bắt được, chuyển hóa thành các luật nhằm phát hiện và ngăn chặn.
  16. 16. 3 PHẦN II GIẢI QUYẾT VẤN ĐỀ
  17. 17. 4 Nội dung Các nội dung chính trong phần này bao gồm: hệ thống phát hiện xâm nhập, Snort, SnortSam, cấu trúc và cách viết các luật trong Snort. Cài đặt triển khai Snort trong hệ thống mạng, demo tấn công và phát hiện. Chương 1, “Hệ thống phát hiện xâm nhập (IDS)”, tổng quan về hệ thống phát hiện xâm nhập, kỹ thuật phát hiện xâm nhập, phân loại các hệ thống phá hiện xâm nhập. Đặt hệ thống IDS trên hệ thống mạng như thế nào. Chương 2, “Giới thiệu về Snort/SnortSam”. Chương 3, “Preprocessors và Output Plug-ins”, tiền xử lý trong Snort và phần output. Chương 4, “Luật trong Snort”, cấu trúc của một luật trong Snort. Chương 5, “Phân tích một số luật trong Snort”, trình bày một số dạng tấn công và tập luật kèm theo. Chương 5, “Cài đặt và cấu hình Snort/SnortSam”. Chương 6, “Demo phát hiện xâm nhập và phòng chống dựa trên Snort/SnortSam”.
  18. 18. 5 CHƯƠNG 1 HỆ THỐNG PHÁT HIỆN XÂM NHẬP (IDS) 1.1. Giới thiệu Kỹ thuật phát hiện xâm nhập không phải là một kỹ thuật mới. Vì nó đã được áp dụng nhiều trong các lĩnh vực khác nhau chứ không chỉ riêng lĩnh vực an toàn thông tin của mạng máy tính. Ví dụ đơn giản nhất mà có thể thấy về kỹ thuật phát hiện xâm nhập đó là hệ thống cảnh báo bằng chuông trên ô tô con. Nguyên lý hoạt động rất đơn giản, hệ thống được bật nên và nếu có ai đó chạm vào chiếc ô tô thì còi sẽ hú để cảnh báo rằng có kẻ đang xâm nhập. Tương tự như các hệ thống tường lửa, hệ thống phát hiện xâm nhập được xây dựng để bảo vệ các tài nguyên của hệ thống mạng trước những attacker không mong muốn. Vậy tại sao lại cần một IDS trong khi đã có một hệ thống tường lửa rồi? Như trong đề tài “Tìm hiểu về Firewall và triển khai trên ClearOS” ta đã biết rằng giống như trong thế giới thực tường lửa được dựng lên giống như con người xây tường, thuê vệ sĩ, mua khóa cửa để ngăn cản kẻ trộm xâm nhập vào hệ thống của mình. Tuy nhiên dù có bảo vệ như thế nào cũng không đảm bảo rằng chúng ta có thể biết hết các phương pháp mà kẻ trộm có thể tấn công được. Vì vậy ngoài hệ thống ngăn chặn kẻ xâm nhập ra (tường lửa) còn có thể triển khai các hệ thống cảnh báo như chuông báo động, camera quan sát, hệ thống cảnh báo... Tương tự như vậy trong hệ thống mạng, không ai có thể chắc chắn rằng các phần cứng và các chế độ bảo vệ khác có thể chặn được hết các cuộc tấn công cũng như biết được hết các phương pháp của attacker. Chính vì vậy mà cần xây dựng một hệ thống IDS để phát hiện các dấu hiệu bất thường, cảnh báo khi có biểu hiện bất thường và giám sát các hoạt động ra vào hệ thống để phân tích và ngăn chặn kịp thời (Monitor and Logging). 1.2. Hệ thống phát hiện xâm nhập là gì?
  19. 19. 6 Theo định nghĩa trong tài liệu CNSSI-4009 của Ủy ban An ninh Quốc gia của Hoa Kỳ thì “intrusion” nghĩa là “hành động truy cập trái phép bằng cách vượt qua cơ chế bảo mật của hệ thống”. “Computer Intrusion” là hành động cố tình truy cập vào một máy tính mặc dù không có sự cho phép hoặc tìm cách vượt qua quyền truy cập (đã có) để có thêm quyền truy cập vào các tài nguyên khác và thu thập thông tin. “Intrusion Detection” là quá trình theo dõi các sự kiện xảy ra trong một hệ thống máy tính hoặc trong một hệ thống mạng. Sau đó phân tích các dấu hiệu của các sự cố có thể xảy ra. Các sự cố đó có thể là hành động vi phạm các chính sách bảo mật hoặc các tiêu chuẩn về an ninh của hệ thống hoặc cũng có thể là các mối đe dọa đến hệ thống của doanh nghiệp. Nguyên nhân xảy ra các sự cố này có thể là do các phần mềm độc hại như virus, worm, trojan, spyware... cũng có thể là hành động cố ý xâm nhập từ Internet hoặc vượt quá quyền truy cập thông thường. Tuy vậy cũng có những nguyên nhân khách quan ví dụ như người sử dụng gõ nhầm địa chỉ của một máy tính và cố gắng truy cập vào một hệ thống mà mình không được phép. Intrusion Detection Systems (IDS) có thể là một thiết bị phần cứng (các thiết bị phát hiện xâm nhập của Cisco (Cisco IDSM-2 hoặc Cisco IPS 4200 Series Sensors)) hoặc cũng có thể là một ứng dụng phần mềm giúp giám sát máy tính, hệ thống mạng trước các hành động đe dọa đến hệ thống hoặc vi phạm chính sách an ninh và báo cáo lại cho người quản trị hệ thống. Một hệ thống phát hiện xâm nhập cài đặt trên hệ thống mạng giống như một hệ thống cảnh báo chống trộm (burglar alarm) trong một ngôi nhà. Một số hệ thống phát hiện xâm nhập còn kiêm luôn cả chức năng ngăn chặn các mối đe dọa đó tuy nhiên điều đó có thể không cần thiết và cũng không phải là chức năng chính của của một hệ thống giám sát. Một hệ thống phát hiện xâm nhập cơ bản sẽ “xác định” các mối nguy hại, “ghi” lại thông tin về chúng và sau đó “báo cáo” lại các thông tin đó. Nói ngắn gọn về chức năng của một hệ thống phát hiện xâm nhập đó là “giám sát” (lưu lượng mạng), “cảnh báo” (báo cáo tình trạng mạng cho hệ thống và người quản
  20. 20. 7 trị), “bảo vệ” (dùng các thiết lập mặc định và cấu hình từ người quản trị mà có những hành động chống lại sự xâm nhập) IDS có thể được phân loại theo chức năng thành 2 loại là Network-based IDS và Host-based IDS. Mỗi loại có một cách tiếp cận riêng biệt để theo dõi và bảo vệ dữ liệu và mỗi loại cũng có những ưu nhược điểm riêng. 1.2.1. Network-based IDS Hệ thống phát hiện xâm nhập dựa trên mạng hoạt động như một thiết bị độc lập trên mạng. Nó thường được đặt ở các segment mạng hoặc các điểm kết nối giữa các vùng mạng khác nhau. Nhờ đó nó có thể giám sát lưu lượng mạng từ nhiều host khác nhau trong vùng mạng đó. NIDS có thể là một thiết bị phần cứng hoặc phần mềm. Về cấu trúc thì NIDS thường bao gồm một tập hợp các cảm biến (sensors) được đặt ở các điểm khác nhau trong hệ thống mạng. Các cảm biến này sẽ thực hiện giám sát lưu lượng mạng, thực hiện phân tích cục bộ lưu lượng mạng đó và báo cáo về cho trung tâm quản lý (Center Management Console). Một số NIDS: Snort, Suricata, các NIDS của Cisco, Juniper... Ưu điểm của NIDS:  Quản lý được cả một network segment (gồm nhiều host). Chi phí thấp vì có thể giám sát cả một hệ thống mạng lớn với chỉ vài thiết bị (mạng được thiết kế tốt).  “Trong suốt” đối với cả người dùng và các attacker.  Cài đặt và bảo trì đơn giản, không ảnh hưởng tới mạng. Nhược điểm của NIDS:  NIDS có thể gặp khó khăn trong việc xử lý tất cả các gói tin trên một mạng có kích thước lớn và mật độ lưu thông cao. Điều này dẫn đến NIDS có thể sẽ không thể phát hiện ra một cuộc tấn công khi mạng đang ở trạng thái over-whelming (quá tải).
  21. 21. 8  Bị hạn chế bởi switch. Trên các mạng chuyển mạch hiện đại, các switch được sử dụng nhiều để chia mạng lớn thành các segment nhỏ để dễ quản lý. Vì thế dẫn đến NIDS không thể thu thập được thông tin trong toàn hệ thống mạng. Do chỉ kiểm tra trên segment mà nó kết nối trực tiếp nên nó không thể phát hiện tấn công trên một segment khác. Vấn đề này dẫn đến việc doanh nghiệp phải mua một số lượng lớn cảm biến nếu muốn bao phủ toàn hệ thống mạng của họ, làm tăng chi phí.  NIDS không thể phân tích được các thông tin đã bị mã hóa (SSL, SSH...).  Một số hệ thống NIDS có thể gặp khó khăn với dạng tấn công phân mảnh gói dự liệu (fragmenting packets).  NIDS không thể phân biệt được một cuộc tấn công thành công hay thất bại. Nó chỉ có thể phân biệt được có một cuộc tấn công đã được khởi xướng. Điều này nghĩa là để biết được cuộc tấn công đó thành công hay thất bại người quản trị phải điều tra các máy chủ và xác định nó có bị xâm nhập hay không? 1.2.2. Host-based IDS Hệ thống phát hiện xâm nhập dựa trên máy chủ hoạt động trên một máy trạm đơn. HIDS sẽ sử dụng các tài nguyên của máy chủ đó để theo dõi lưu lượng truy cập và phát hiện các cuộc tấn công nếu có. Bằng cách này HIDS có thể theo dõi được tất cả các hoạt động trên host đó như tập tin log và những lưu lượng mạng ra vào host đó. Ngoài ra nó còn theo dõi hệ điều hành, lịch sử sổ sách, các thông điệp báo lỗi của máy chủ. Không phải hầu hết các cuộc tấn công đều thông qua hệ thống mạng, nên không phải lúc nào NIDS cũng có thể phát hiện được cuộc tấn công trên một host. Ví dụ, kẻ tấn công có quyền physical access, từ đó có thể xâm nhập vào host đó mà không cần tạo ra bất cứ network traffic nào. Một ưu điểm của HIDS so với NIDS đó là nó có thể ngăn chặn các cuộc tấn công phân mảnh (Fragmentation Attacks). Bởi vậy nên HIDS thường được cài đặt trên
  22. 22. 9 các trên các máy chủ xung yếu của tổ chức, các server trong vùng DMZ (do là mục tiêu tấn công chính). HIDS cũng thường theo dõi những gì thay đổi trên hệ thống như các thuộc tính của hệ thống tập tin, các thuộc tính (kích thước, vị trí, quyền…) của tập tin, phát hiện tập tin mới được tạo ra hay xóa đi. Một số HIDS: Symantec ESM, OSSEC, Tripwire ... Hình 1.1: OSSEC được triển khai trên các Server. Ưu điểm của HIDS: ■ Phát hiện các cuộc tấn công nên các máy chủ mà NIDS không thể phát hiện ra. ■ Có thể giám sát các luồng traffic đã bị mã hóa. ■ Không bị ảnh hưởng bởi các thiết bị chuyển mạch (switch). Nhược điểm của HIDS: ■ Khó quản lý hơn do phải cài lên tất cả các host cần bảo vệ nên việc cấu hình, quản lý, cập nhật là một khối lượng lớn công việc cần thực hiện. ■ NIDS không thể phát hiện việc quét mạng (network scan bằng nmap) do chỉ giám sát trên host mà nó được cài đặt. ■ Có thể bị vô hiệu hóa bởi tấn công từ chối dịch vụ (DoS).
  23. 23. 10 ■ Chiếm tài nguyên hệ thống: Do cài đặt trên máy cần bảo vệ nên nó sẽ sử dụng tài nguyên của hệ thống như RAM, CPU, Hard Disk dẫn đến có thể làm giảm hiệu suất của việc giám sát. ■ HIDS sẽ “chết” khi hệ điều hành của host đó bị “chết”. 1.3. Các kỹ thuật phát hiện xâm nhập Ở phần này sẽ tìm hiểu về những kỹ thuật được sử dụng trên IDS để phát hiện ra các cuộc xâm nhập. Về cơ bản có 2 kỹ thuật được sử dụng để phát hiện sự xâm nhập đó là:  Phát hiện sự bất thường (Anomaly Based ID)  Phát hiện sự lạm dụng/dấu hiệu (Misuse/Signature Based ID). 1.3.1. Anomaly Based Intrusion Detection Đầu tiên, “dị thường” (anomaly) còn được biết đến như sự sai khác, sự riêng biệt với những mẫu có sẵn trong dữ liệu hoặc không phù hợp với những khái niệm, hành vi thông thường của hệ thống. Hình dưới là một ví dụ về sự khác thường của O1, O2, O3 về cả hành vi và cấu tạo so với N1 và N2. Hình 1.2: Các mẫu khác thường. Kỹ thuật phát hiện dựa trên sự bất thường được thiết kế nhằm phát hiện các “mẫu hành vi” (patterns of behavior) khác xa với những hành vi thông thường sau đó gắn cờ là có thể xâm nhập đối với những hành vi này. Ưu điểm:
  24. 24. 11 ■ Một IDS được xây dựng dựa tên kỹ thuật phát hiện bất thường có thể phát hiện ra các hành vi “không bình thường” và do đó nó có thể phát hiện ra triệu chứng của các cuộc tấn công mà không cần biết chi tiết, cụ thể về loại tấn công đó. Nói đơn giản là nó có thể phát hiện ra các cuộc tấn công chưa từng được biết đến. ■ Phát hiện sự bất thường có thể được sử dụng để cung cấp các thông tin, mà các thông tin này có thể được xây dựng các dấu hiệu (signature) sử dụng trong kỹ thuật misuse detector. Nhược điểm: ■ Phương pháp tiếp cận sự bất thường thường tạo ra một số lượng lớn các báo động sai do không thể đoán được hành vi của người sử dụng và hệ thống mạng. ■ Phương pháp tiếp cận sự bất thường yêu cầu phải thường xuyên được “đào tạo” từ các bản ghi của hệ thống nhằm biết được đâu là các hành vi bình thường. Phát hiện xâm nhập dựa trên sự bất thường rất hữu hiệu trong việc phát hiện các cuộc tấn công như: ■ Lạm dụng giao thức và cổng dịch vụ. ■ Tấn công từ chối dịch vụ. ■ Buffer Overflow. Các biện pháp và kỹ thuật được sử dụng trong phát hiện bất thường bao gồm: ■ Phát hiện giao thức bất thường (Protocol Anomaly Detection). Giao thức bất thường nghĩa là những trường hợp vi phạm các định dạng, các tiêu chuẩn các hành vi đã được quy định thành chuẩn Internet từ trước đó. Ví dụ: Kích thước gói tin ICMP tối đa là 65,535 bytes attacker cố tình gửi một gói tin có kích thước lớn hơn kích thước tiêu chuẩn đó nhằm gây ra lỗi tràn bộ đệm.
  25. 25. 12 ■ Phát hiện xâm nhập dựa trên quá trình tự học: Quá trình này gồm 2 bước, bước 1 sau khi hệ thống được thiết lập thì cho hệ thống chạy tự do và tạo hồ sơ về các hoạt động mạng với trạng thái bình thường. Sau thời gian khởi tạo, hệ thống sẽ đi vào quá trình làm việc, hệ thống sẽ tiến hành theo dõi và phát hiện các hoạt động bất thường dựa trên việc so sánh trạng thái hiện tại với trạng thái hồ sơ được tạo. ■ Phát hiện xâm nhập dựa trên sự thống kê bất thường (Statistical Anomaly Based Intrusion Detection). Kỹ thuật này nhấn mạnh việc đo đếm các hoạt động bình thường trên mạng. Ví dụ đăng nhập quá số lần quy định, số tiến trình hoạt động quá mức trên CPU, số lượng gói tin được gửi quá mức… 1.3.2. Misuse/Signature Based Intrusion Detection Bằng cách so sánh dấu hiệu của các đối tượng đang quan sát với dấu hiệu của các hình thức xâm nhập đã biết trước. Hai kỹ thuật được sử dụng trong phương phát phát hiện xâm nhập dựa trên dấu hiệu là: ■ Expression matching (biểu thức phù hợp). ■ State transition analysis (phân tích chuyển trạng thái). Hình 1.3: Phân tích chuyển trạng thái.
  26. 26. 13 Ưu điểm: ■ Ít báo sai và đặc biệt là rất hiệu quả đối với các hình thức xâm nhập đã được biết đến. ■ Nhanh chóng và đáng tin cậy trong việc xác định công cụ và kỹ thuật tấn công. Từ đó người quản trị hệ thống có thể nhanh chóng đưa ra các biện pháp xử lý kịp thời. Nhược điểm: ■ Để hiệu quả trong việc phát hiện xâm nhập thì phương pháp này phải thường xuyên cập nhật dấu hiệu của các hình thức xâm nhập mới. ■ Các dấu hiệu dùng để phát hiện nếu không được thiết kế chặt chẽ thì có thể sẽ không thể phát hiện ra các cuộc tấn công “biến thể”. 1.4. Đặt IDS trong hệ thống mạng Vấn đề cần quan tâm khi sử dụng IDS đó là đặt nó ở đâu trong hệ thống mạng sao cho các cảm biến được đặt có thể nhìn thấy tất cả các lưu lượng di chuyển trên hệ thống mạng. Để biết nên đặt các cảm biến ở đâu có thể trả lời một vài câu hỏi như sau:  Các tài nguyên cần bảo vệ là gì?  Hệ thống mạng được thiết kế như thế nào, đồ hình mạng thiết kế theo kiểu bus, vòng hay kiểu sao hay kiểu kết hợp…?  Muốn đặt cảm biến trước tường lửa (lọc trước) hay sau tường lửa (không lọc)?  Hệ thống mạng sử dụng thiết bị gì hub, switch?  Router định tuyến đặt như thế nào trong hệ thống mạng? Tóm lại, nên đặt cảm biến ở nơi nào mà nó có thể thấy được lượng traffic càng nhiều càng tốt. Đó có thể là vị trí kết nối giữa các segment với nhau. Một điểm lưu ý là các IDS trong mô hình dưới được gắn vào các hub để đảm bảo không bỏ sót bất cứ lưu lượng mạng nào. Tuy nhiên có thể gắn các IDS này vào
  27. 27. 14 “port giám sát” trên switch (span port, port monitoring), khi dữ liệu đi qua switch nó sẽ gửi một bản sao tới các IDS. Hình 1.4: Các vị trí đặt IDS trong hệ thống mạng.
  28. 28. 15 CHƯƠNG 2 GIỚI THIỆU VỀ SNORT/SNORTSAM 2.1. Snort là gì? Snort là một hệ thống phòng chống và phát hiện xâm nhập dựa trên mạng (IPS/IDS) nguồn mở được phát triển bởi Sourcefire. Kết hợp việc kiểm tra dấu hiệu, giao thức và dấu hiệu bất thường, Snort đã được triển khai rộng khắp trên toàn thế giới. Với hàng triệu lượt download và hơn 400.000 lượt người dùng đăng ký, Snort đã trở thành tiêu chuẩn của hệ thống phòng chống và phát hiện xâm nhập. Chức năng chính của Snort đó là packet sniffing, packet logging và network-based intrusion detection. Tại sao Snort lại trở nên phổ biến như vậy.  Dễ dàng cấu hình: Snort làm việc như thế nào, tập tin cấu hình ở đâu, các luật như thế nào người quản trị đều có thể biết và cấu hình theo ý mình được. Kể cả việc tạo ra các luật mới.  Snort là phần mềm mã nguồn mở: Snort được phát hành dưới giấy phép GNU/GPL điều này có nghĩa là bất cứ ai cũng có thể sử dụng Snort một cách miễn phí dù đó là doanh nghiệp hay người dùng cá nhân. Ngoài ra vì là phần mềm mã nguồn mở nên Snort có một cộng đồng người sử dụng lớn, sẵn sàng hỗ trợ nếu có bất cứ thắc mắc gì.  Chạy trên nhiều nền tảng khác nhau: Không chỉ chạy trên các hệ điều hành nguồn mở như GNU/Linux mà Snort còn có thể chạy được trên các nền tảng thương mại như Microsoft Windows, Solaris, HP-UX...  Snort thường xuyên được cập nhật: Các luật của Snort thường xuyên được bổ sung và cập nhật các hình thức xâm nhập mới. Người sử dụng có thể dễ dàng tải về từ http://www.snort.org. 2.2. Triển khai hệ thống Snort
  29. 29. 16 2.2.1. Yêu cầu phần cứng Rất khó để đưa ra một yêu cầu chung nhất cho phần cứng đề cài đặt Snort vì điều này còn phụ thuộc vào nhiều yếu tố khác nhau. Hai yếu tố cần quan tâm đến việc lựa chọn phần cứng cho hệ thống Snort đó là lưu lượng traffic trên hệ thống và yêu cầu xử lí, lưu trữ đối với hệ thống Snort. Yêu cầu phần cứng của hệ thống đối với một doanh nghiệp lớn như các ISP sẽ khác rất nhiều so với một mạng small home. Để xác định phần cứng để cài đặt Snort cho hệ thống có thể trả lời một vài câu hỏi sau để xác định được điều đó:  Hệ thống mạng là mạng small home, small bussiness, large enterprise hay là một ISP.  Lưu lượng traffic thông thường trong hệ thống là bao nhiêu?  Lưu lượng traffic giữa hệ thống internal và mạng Internet bên ngoài là khoảng bao nhiêu? Và ngược lại?  Nơi lưu trữ các cảnh báo (alerts) của Snort là ở đâu?  Thời gian lưu trữ các cảnh báo này là bao lâu?  Có muốn lưu trữ các gói tin liên quan đến các cảnh báo này hay không? Tuy Snort không có bất kỳ yêu cầu phần cứng đặc biệt nào tuy nhiên nếu phần cứng mạnh thì sẽ một số lợi điểm. Vì Snort là một hệ thống phát hiện xâm nhập dựa trên mạng nên nếu có một đĩa cứng có dung lượng lưu trữ lớn và tốc độ quay nhanh thì hệ thống Snort sẽ hoạt động một cách trơn tru hơn. Ví dụ đối với một mạng doanh nghiệp có thể chia phân vùng /var với dung lượng là 100 GB. Ngoài ra nếu có yêu cầu cao thì có thể sử dụng RAID để lưu trữ. Bạn sẽ cần một card mạng (NIC) có tốc độ cao để việc sniffer các gói tin trở nên dễ dàng hơn. Ví dụ nếu tốc độ card mạng dưới 100Mb/s thì nên sử dụng một card mạng ở tốc độ 100Mb/s. Nếu tốc độ card mạng quá thấp thì Snort có thể “bỏ lỡ” một vài gói tin và dẫn đến thông tin thu thập bị sai khác. Ngoài ra nên có thêm một card mạng khác kết nối tới người quản trị thông qua giao thức SSH hoặc qua Web Interface, tránh việc sử dụng chung với card mạng sniffer gói tin.
  30. 30. 17 Nếu hệ thống mạng lớn, số lượng cảm biến (sensor) nhiều nên cân nhắc việc tăng RAM cho hệ thống để hệ thống không bị lag khi xử lí qua nhiều thông tin gửi về. 2.2.2. Hệ điều hành và các gói phần mềm khác Snort có thể chạy trên nhiều nền tảng hệ điều hành khác nhau. Snort có thể chạy trên các nền tảng x86 như GNU/Linux, FreeBSD, OpenBSD, NetBSD và Windows. Ngoài ra nó còn hỗ trợ cả kiến trúc Sparc với các nền tảng hệ điều hành như: Solaris, MacOS-X, HP-UX... Ngoài hệ điều hành, nếu có ý định compile Snort từ source code thì cần đảm bảo các phần mềm sau đã được cài đặt trên hệ thống.  autoconf và automake.  gcc.  lex và yacc hoặc GNU flex và bison.  libpcap. Hầu hết các phần mềm này đều có thể download tại http://www.gnu.org/ và libpcap có thể download tại http://www.tcpdump.org Ngoài ra nếu có ý định cài các Snort add-on hoặc các công cụ quản lý ví dụ như một add-on phổ biến đó Analysis Console for Intrusion Detection (ACID) Web interface thì cần cài đặt thêm Apache Web Server (nên sử dụng giao thức SSL để bảo mật), PHP và cơ sở dữ liệu để lưu trữ các cảnh báo thì cần cài MySQL hoặc PostgreSQL. Một vài add-on phổ biến:  ACID.  Oinkmaster.  SnortSnarf.  SnortReport.  Snorby. Nếu quản trị từ xa thông qua giao thức SSH thì cần cấu hình SSH. 2.3. Đặc điểm của Snort
  31. 31. 18 Ở chế độ NIDS, sau khi các gói tin đi vào và vượt qua packet sniffer, dữ liệu sẽ được gửi thông qua bất kỳ preprocessor nào được cấu hình trong snort.conf . Dữ liệu tiếp tục đi qua detection engine, kiểm tra xem có phù hợp với các luật trong tập tin snort.conf hay không? Các gói phù hợp sẽ được gửi đến thành phần cảnh báo và ghi lại (alert and logging) vượt qua bất kỳ output plug-in đã được chọn, sau đó nó sẽ được ghi lại (log) hoặc cảnh báo tùy theo cấu hình. Kiến trúc của Snort gồm 4 phần cơ bản sau:  The Sniffer (Packet Decoder).  The Preprocessors.  The Detection Engine.  The Output. Hình dưới đây cung cấp một cái nhìn dễ hiểu về kiến trúc và quy trình xử lý của Snort. Tưởng tượng nó như một máy phân loại đồng xu. Hình 2.1: Kiến trúc của Snort.  Tiền xu được đưa vào (packet được đưa vào từ trục mạng chính)  Tiền xu được gửi thông qua một cái máng để xác định xem nó có phải là xu hay không và có giữ nó lại hay không (preprocessors)  Tiếp đến tiền xu được sắp xếp theo loại. Ví dụ phân loại theo giá trị của đồng xu (DetectionEngine).  Cuối cùng nhiệm vụ của người quản trị là xác định xem làm gì với nó (ghi lại và lưu vào cơ sở dữ liệu).
  32. 32. 19 Preprocessors, detection engine và alert system đều là các plug-ins. Điều này giúp cho cho việc chỉnh sửa hệ thống theo mong muốn của người quản trị một cách dễ dàng. 2.3.1. Packet Sniffer (Decoder) Packet Sniffer là một thiết bị phần cứng hoặc phần mềm được đặt vào trong mạng. Chức năng của nó tương tự như việc nghe lén trên điện thoại di động, nhưng thay vì hoạt động trên mạng điện thoại nó nghe lén trên mạng dữ liệu. Bởi vì trong mô hình mạng có nhiều giao thức cao cấp như TCP, UDP, ICMP... nên công việc của packet sniffer là nó phải phân tích các giao thức đó thành thông tin mà con người có thể đọc và hiểu được. Packet Sniffer có thể được sử dụng với các mục đích như:  Phân tích mạng và troubleshooting.  Performance network and bechmarking.  Nghe lén mật khẩu clear-text và những dữ liệu khác. Mã hóa lưu lượng mạng có thể tránh được việc sniffer các gói tin. Tùy vào mục đích mà packet sniffer có thể sử dụng cho mục đích tốt hoặc xấu. Hình 2.2: Các gói tin đi vào Sniffer. Khi Snort đã nhận các gói tin từ quá trình sniffer nó sẽ đi vào quá trình giải mã. Chính xác thì nơi mà gói tin đi vào bộ giải mã phụ thuộc vào lớp liên kết mà trước đó đọc được. Snort hỗ trợ một số lớp liên kết từ pcap: Ethernet, 802.11, Token ring, FDDI, Cisco HDLC, SLIP, PPP và OpenBSD’s PF. Ở trên lớp liên kết Snort hỗ trợ giải mã các giao thức khác nhau, bao gồm IP, ICMP, TCP, UDP (chi tiết trong mã nguồn src/decode.c)
  33. 33. 20 Bất kể là lớp liên kết nào đang được sử dụng, tất cả các bộ giải mã sẽ đều làm việc theo một kiểu chung. Đối với trường hợp các lớp cụ thể, con trỏ trong cấu trúc của gói tin sẽ được thiết lập trỏ tới một phần khác của gói tin. Dựa vào các thông tin đã giải mã được, nó sẽ gọi các lớp cao hơn và giải mã cho đến khi không còn bộ giải mã nào nữa. Hầu hết các mạng hiện nay triển khai Snort là mạng Ethernet nên sẽ xét thử một ví dụ giải mã một gói tin trong mạng này. Đầu tiên khi gói tin đi vào nó sẽ phải đi qua chức năng DecodeEthPkt. Sau đó, overlaying cấu trúc Ethernet lên đầu của phần dữ liệu, địa chỉ MAC nguồn và đích và loại tầng tiếp theo (ether_type) sẽ được biết. Dựa trên giá trị ether_type, bộ giiar mã tiếp theo sẽ được gọi. Giả sử giá trị của ether_type là 2048 (ETHERNET_TYPE_IP) thì tầng tiếp theo là tầng IP và nên gọi bộ giải mã DecodeIP và tiếp tục đến khi không còn bộ giải mã nào. DecodeIPv6 IPv6 DecodeEthPkt Ethernet DecodeIP IP DecodeARP ARP DecodeIPX IPX DecodeIPOptions IP Options DecodeTCP TCP DecodeUDP DecodeICMP DecodeVLAN 802.1Q DecodePPPoEPkt PPP Over Ethernet DecodeTCPOptions TCP Options DecodeIPOnly Embedded IP Hình 2.3: Giải mã gói tin. 2.3.2. Preprocessors
  34. 34. 21 Preprocessors là plug-in cho phép phân tích cú pháp dữ liệu theo những cách khác nhau. Nếu chạy Snort mà không có bất cứ cấu hình nào về preprocessors trong tập tin cấu hình sẽ chỉ thấy từng gói dữ liệu riêng rẽ trên mạng. Điều này có thể làm IDS bỏ qua một số cuộc tấn công, vì nhiều loại hình tấn công hiện đại cố tình phân mảnh dữ liệu hoặc có tình đặt phần độc hại lên một gói tin và phần còn lại lên gói tin khác (kỹ thuật lẩn trốn). Dữ liệu sẽ được đưa vào Preprocessors sau khi đi qua bộ giải mã gói tin (packet decoder). Snort cung cấp một loạt các Preprocessors ví dụ như: Frag3 (một module chống phân mảnh gói tin IP), sfPortscan (module được thiết kế chống lại các cuộc trinh sát, như scan port, xác định dịch vụ, scan OS), Stream5 (module tái gộp các gói tin ở tầng TCP) Ở thời điểm hiện tại Snort có 10 preprocesstor được mô tả trong hướng dẫn của Snort tại địa chỉ (http://manual.snort.org/node17.html). Hình 2.4: Quá trình xử lí ở Preprocessors. 2.3.3. DetectionEngine Đầu vào là các gói tin đã được sắp xếp ở quá trình preprocessors. Detection engine là một phần của hệ thống phát hiện xâm nhập dựa trên dấu hiệu. Detection engine sẽ lấy dữ liệu từ preprocessors và kiểm tra chúng thông qua các luật. Nếu các luật đó
  35. 35. 22 khớp với dữ liệu trong gói tin, nó sẽ được gửi tới hệ thống cảnh báo, nếu không nó sẽ bị bỏ qua như hình phía dưới. Để dễ hình dung có thể hiểu ví dụ về việc phân loại đồng xu. Thông thường có các đồng xu: 1 xu, 2 xu, 5 xu. Nếu xuất hiện tiền giấy 10 xu thì nó sẽ bi bỏ đi. Các luật có thể được chia thành 2 phần:  Phần Hearder: gồm các hành động (log hay alert), loại giao thức (TCP, UDP, ICMP...), địa chỉ IP nguồn, địa chỉ IP đích và port.  Phần Options: là phần nội dung của gói tin được tạo ra để phù hợp với luật. Luật là phần quan trọng mà bất cứ ai tìm hiểu về Snort cần phải nắm rõ. Các luật trong Snort có một cú pháp cụ thể. Cú pháp này có thể liên quan đến giao thức, nội dung, chiều dài, hearder và một vài thông số khác. Một khi hiểu được cấu trúc các luật trong Snort, người quản trị có thể dễ dàng tinh chỉnh và tối ưu hóa chức năng phát hiện xâm nhập của Snort. Từ đó có thể định nghĩa các luật phù hợp với từng môi trường và hệ thống mạng. Hình 2.5: Gói tin được xử lý ở Detection Engine bằng các luật.
  36. 36. 23 2.3.4. Thành phần cảnh báo/logging Cuối cùng sau khi các luật đã phù hợp với dữ liệu, chúng sẽ được chuyển tới thành phần cảnh báo và ghi lại (alert and loggin component). Cơ chế log sẽ lưu trữ các gói tin đã kích hoạt các luật còn cơ chế cảnh báo sẽ thông báo các phân tích bị thất bại. Giống như Preprocessors, chức năng này được cấu hình trong tập tin snort.conf, có thể chỉ định cảnh báo và ghi lại trong tập tin cấu hình nếu muốn kích hoạt. Dữ liệu là giá trị cảnh báo, nhưng có thể chọn nhiều cách để gửi các cảnh báo này cũng như chỉ định nơi ghi lại các gói tin. Có thể gửi cảnh báo thông qua SMB (Server Message Block) pop-up tới máy trạm Windows, ghi chúng dưới dạng logfile, gửi qua mạng thông qua UNIX socket hoặc thông qua giao thức SNMP. Cảnh báo cũng có thể lưu trữ dưới dạng cơ sở dữ liệu SQL như MySQL hoặc PostgerSQL. Thậm chí một vài hệ thống của các hãng thứ 3 có thể gửi cảnh báo thông qua SMS tới điện thoại di động. Có rất nhiều các add-on giúp người quản trị nhận các cảnh báo cũng như phân tích các dữ liệu một cách trực quan.  The Analysis Console for Intrusion Detection (ACID): được biết như một add-on phân tích cú pháp log dựa trên PHP, search engine và là một front-end phân tích log của Snort. http://www.andrew.cmu.edu/user/rdanyliw/snort/  SGUIL (Snort GUI for Lamerz) là một công cụ phân tích tuyệt với khác.  Oinkmaster: là một Pert script giúp cập nhật các luật của Snort và comment nếu không muốn sau mỗi lần cập nhật.  IDS PolicyManager là một giao diện quản lý dành cho Windows XP.  SnortSnarf: Là một chương trình viết bằng Pert giúp tạo và cung cấp các bản báo cáo log gần đây một cách tổng hợp dưới dạng HTML.  Swatch: http://swatch.sourceforge.net là một công cụ giám sát syslog theo thời gian thực và gửi cảnh báo bằng email.
  37. 37. 24  BASE: http://sourceforge.net/projects/secureideas/ Basic Analysis and Security Engine là một plug-in phân tích và truy vấn các cảnh báo của Snort rất đáng giá. Hình 2.6: Thành phần cảnh báo và logging. 2.4. Các chế độ hoạt động của Snort 2.4.1 Chế độ sniffer và chế độ log Để chạy Snort ở chế độ sniffer sử dụng tham số -v. $ snort –v Tùy chọn này chỉ cho phép hiển thị các IP và TCP/UDP/ICMP header, ngoài ra không còn thêm gì khác. Nếu muốn hiển thị thêm dữ liệu ở tầng ứng dụng phải thêm tùy chọn –d. $ snort –vd
  38. 38. 25 Tùy chọn này sẽ cho phép hiển thị cả phần dữ liệu và tiêu đề của gói tin. Nếu muốn hiển thị nhiều hơn các thông tin khác ví dụ như phần header ở tầng data-link thêm tùy chọn –e. $ snort –vde hoặc $ snort –d –v –e Ưu điểm của snort so với các ứng dụng bắt gói tin khác là: Có thể lưu các tập tin log sau khi sniffer gói tin xuống cơ sở dữ liệu như MySQL hoặc PostgreSQL. Tập tin log có thể hiện thị ở dạng ASCII theo từng địa chỉ IP riêng biệt, giúp dễ dàng phân tích. Ngoài ra tập tin log cũng có thể được lưu trữ dưới dạng tập tin nhị phân theo định dạng của tcpdump. Để chạy Snort ở chế độ logger sử dụng tham số -l. $ snort –dev –l /home/user/log Câu lệnh trên cho phép sau khi bắt các gói tin, lưu trữ chúng dưới dạng tập tin log. Ngoài ra có thể lưu trữ các tập tin log dựa trên các địa chỉ IP truy cập. Ví dụ câu lệnh sau sẽ cho phép ta bắt, in ra màn hình và lưu trữ lại các gói tin TCP/IP cũng với tiêu đề ở tầng data-link, dữ liệu của gói tin của tất cả các gói tin đi vào từ địa chỉ của lớp mạng C. $ snort –dev –l /hom/user/log -h 192.168.1.0/24 Trường hợp muốn chạy snort ở chế độ logger lưu trữ các tập tin log ở dạng nhị phân có thể sử dụng tùy chọn –b, và sử dụng tùy chọn –r để đọc các tập tin nhị phân được ghi lại. $ snort –l /log –b $ snort –dv –r packet.log 2.4.2 Chế độ NIDS Để khởi chạy Snort ở chế độ phát hiện xâm nhập mạng không cần bắt tất cả các gói tin.
  39. 39. 26 $/snort -dev -l ./log -h 192.168.1.0/24 -c snort.conf Tham số -c được sử dụng để chỉ định tập tin cấu hình của snort. Mặc định các tập tin log sẽ được lưu trữ tại /var/log/snort. Khi chạy ở chế độ NIDS có thể bỏ tùy chọn –v để tăng tốc độ, do không cần thiết phải bắt các gói tin và in ra màn hình. 2.5. Giới thiệuvề SnortSam Chức năng của Snort chỉ là phát hiện xâm nhập và cảnh báo cho người quản trị biết về những xâm nhập đó, nó không thể ngăn chặn các cuộc tấn công đó. Để thực hiện được chức năng ngăn chặn một cách chủ động (active response) có thể sử dụng các plug-in dành cho Snort như SnortSam, Fwsnort hay snort_inline để làm điều này. Các plug-in đó sẽ thay đổi hoặc chặn các lưu lượng mạng dựa trên địa chỉ IP (SnortSam), dựa trên giao thức ở tầng Transport (Fwsnort) hay ở tầng Application (Snort_inline). Một điểm cần lưu ý là một hệ thống ngăn chặn xâm nhập ngoài việc ngăn chặn các gói tin đi vào hệ thống nó còn có thể thay đổi trực tiếp các gói tin đó khi chúng được chuyển qua mạng. Bởi vậy Fwsnort và snort_inline được xếp vào hệ thống ngăn chặn xâm nhập (IPS) còn SnortSam chỉ được xếp vào hệ thống phản ứng chủ động (Active Response System) Nội dung phần này sẽ tìm hiểu về SnortSam một plug-in của Snort cho phép tự động chặn các địa chỉ IP dựa trên các tường lửa như:  Checkpoint Firewall-1  Cisco PIX firewalls  Cisco Routers (sử dụng ACL)  Former Netscreen, now Juniper firewalls  IP Filter (ipf), trên các dòng Unix-like OS ví dụ FreeBSD  FreeBSD's ipfw2 (phiên bản 5.x)  OpenBSD's Packet Filter (pf)
  40. 40. 27  Linux IPchains  Linux IPtables  Linux EBtables  WatchGuard Firebox firewalls  8signs firewalls trên Windows  MS ISA Server firewall/proxy trên Windows  CHX packet filter  Ali Basel's Tracker SNMP thông qua SNMP-Interface-down plug-in. SnortSam bao gồm hai phần riêng biệt. Một phần là một tập hợp của các sửa đổi trong tập tin mã nguồn, mở rộng Snort bằng cách thêm một mô-đun output mới đó là: alert_fwsam. Phần còn lại là một tác nhân sẽ giao tiếp trực tiếp với tường lửa gọi là agent. Tác nhân này có thể đặt ngay trên chính các tường lửa nếu tường lửa đó là iptables, hoặc trên pf nếu hệ thống là BSD hoặc trên Checkpoint’s Firewall-1 nếu hệ thống là Windows. Đối với các tường lửa phần cứng như Cisco PIX thì tác nhân này của SnortSam phải đặt trên một máy riêng biệt rành riêng để giao tiếp với PIX. Về phương thức hoạt động. Snort sẽ giám sát các luồng lưu lượng trên mạng, và khi một luật của Snort được kích hoạt (gặp một traffic phù hợp), Snort sẽ gửi đầu ra cho mô-đun fwsam. Mô-đun fwsam sau đó sẽ gửi một tin nhắn mã hóa tới cho agent được đặt trên tường lửa. Agent này sẽ kiểm tra xem tin nhắn đó có phải được gửi tới từ một nguồn có thẩm quyền hay không, nếu đúng nó sẽ giải mã thông điệp vừa nhận được và kiểm tra xem các địa chỉ IP nào được yêu cầu chặn. SnortSam sẽ rà soát xem các địa chỉ IP đó có nằm trong danh sách trắng (white-list) hay không. Nếu IP đó không nằm trong danh sách trắng, SnortSam sẽ yêu cầu tường lửa chặn địa chỉ IP đó trong một khoảng thời gian đã được định nghĩa từ trước. 2.5.1. Snort Output Plug-in Phần Output yêu cầu chỉnh sửa cả ở tập tin cấu hình và luật của Snort. Phần output này sẽ giao tiếp với agent trên tường lửa thông qua giao thức TCP hoạt động ở port 898. Phần output plug-in này hỗ trợ mã hóa giao tiếp với phần agent với một khóa
  41. 41. 28 đã được định nghĩa trước trong tập tin cấu hình. Thuật toán mã hóa SnortSam đang sử dụng là Twofish. Đối với tập tin cấu hình snort.conf thêm dòng này vào: output alert_fwsam: 192.168.10.1/sn0r3sam Đối với các luật sẽ thêm tùy chọn fwsam và thời gian vào sau mỗi luật. Ví dụ, muốn chặn một địa chỉ IP nào đó với khoảng thời gian là một giờ sẽ thêm chuỗi :fwsam:src, 1 hour;” alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"WEB-CGI /wwwboard/passwd.txt access"; flow:to_server,established; uricontent:"/wwwboard/passwd.txt"; nocase; reference:arachnids,463; reference:cve,CVE 1999-0953; reference:nessus,10321; reference:bugtraq,649; classtype:attempted-recon; sid:807; rev:7; fwsam: src, 1 hour;) 2.5.2. Blocking Agent Phần này sẽ có trách nhiệm tương tác trực tiếp với các tường lửa thay cho phần output plug-in trên Snort. Nếu Snort phát hiện một cuộc tấn công phù hợp với bất kỳ một quy tắc nào như trong ví dụ trên nó sẽ thiết lập một phiên mã hóa TCP để gửi một thông điệp chứa các IP nguồn từ các gói tin gây ra cảnh báo + thời gian mà địa chị IP đó bị cấm. Vì phiên mã hóa TCP đó sẽ giao tiếp thông qua port 898 (hoặc bất cứ port nào được cấu hình) nên cầm đảm bảo là tường lửa cho phép giao tiếp trên port này. Trạng thái của tất cả các địa chỉ IP bị cấm sẽ được đặt trong tập tin /var/log/snortsam.state. Tập tin cấu hình của SnortSam đặt tại /etc/snortsam.conf dưới đây là một số tùy chọn quan trọng có thể được sử dụng trong tập tin cấu hình.  accept: Cho phép các cảm biến cụ thể của Snort có thể giao tiếp với phần agent trên tường lửa. Nhiều cảm biến cũng có thể được cấu hình với tùy chọn này cùng với các khóa dùng để mã hóa riêng: accept <host>/<mask>,<key>
  42. 42. 29  defautlkey: Thiết lập khóa mặc định được sử dụng cho tất cả các cảm biến.  port: Thiết lập port lắng nghe từ các cảm biến của Snort. Mặc định là port TCP 898.  dontblock: Chỉ định một host hoặc một mạng mà SnortSam sẽ bỏ qua ngay cả khi phát hiện một cuộc tấn công từ nguồn này.  logfile: Chỉ định đường dẫn lưu logfile mà SnortSam sẽ ghi. Tập này cũng liệt kê tất cả các địa chỉ IP mà SnortSam đã chặn kèm theo thời gian chặn.  daemon: Chạy agent như một dịch vụ.  bindip: Giới hạn phần agent trên tường lửa lắng nghe trên một địa chỉ IP với một card mạng nhất định. Điều này làm giảm khả năng tấn công các agent vì giới hạn số đường kết nối tới các agent đó.  <firewall><interface>: Chỉ định loại tường lửa cụ thể mà agent đang chạy trên đó và cổng giao tiếp mà các luật nên thêm vào.  keyinterval <time>: Tùy chọn này cho phép các agent yêu cầu hoặc tạo các khóa mã hóa mới sau mỗi khoảng thời gian nào đó. Mặc định nếu không thiết lập là 4 tiếng.  email <smtpserver>:<port> <recipient> <sender>: Tùy chọn này cho phép xác định máy chủ email. Khi một địa chỉ nào đó bị block, SnortSam sẽ gửi thông báo tới địa chỉ email được cấu hình. Ví dụ: accept 192.168.20.3, sn0r3sam bindip 192.168.20.1 iptables eth0 logfile /var/log/snortsam.log daemon
  43. 43. 30 CHƯƠNG 3 PREPROCESSORS VÀ OUTPUT PLUG-INS 3.1. Preprocessors Như trong chương phía trên, chúng ta đã có những hiểu biết cơ bản về cấu trúc và cách làm việc của Snort. Ngoài ra cũng có cái nhìn tổng quát về preprocessors trong Snort. Vậy chức năng chính của preprocessor là gì? Preprocessors được giới thiệu lần đầu trong phiên bản 1.5 của Snort. Ban đầu nó được biết đến với chức năng bình thường hóa các giao thức mạng. Ngày nay, preprocessor không chỉ đảm nhiệm chức năng bình thường hóa các giao thức nữa mà nó còn có thể phát hiện xâm nhập dựa trên sự bất thường và tạo ra những cảnh báo riêng. Trong thực tế Snort nổi bật với chức năng phát hiện xâm nhập dựa theo mẫu và các dấu hiệu có sẵn. Các plug-in preprocessors được bổ sung vào ngoài mục đích tạo đầu ra cho detection engine mà nó còn có chức năng tạo ra các cảnh báo thông qua việc phát hiện các điểm bất thường trong các lưu lượng mạng đi vào hệ thống. Phần này sẽ tìm hiểu một vài tiền xử lý quan trọng, đặc biệt là các tiền xử lý tái hợp các gói tin, một hình thức có thể giúp các attacker lẩn trốn khỏi các hệ thống phát hiện xâm nhập. Các preprocessors cực kỳ hữu ích khi phát hiện các cuộc tấn công phân mảnh gói tin nhằm mục đích đánh lừa hệ thống phát hiện xâm nhập như Tiny Fragment Attack, Overlaping Fragment Attack, Teardrop Fragment Attack.
  44. 44. 31 Hình 3.1: Quá trình tiền xử lý. 3.1.1. Frag3
  45. 45. 32 Trong tiền xử lý frag3 có một khái niệm mới được đưa ra đó là “target-based”. Ý tưởng của thuật ngữ này như sau: Một IDS được đặt trong hệ thống mạng, nhưng IDS này hoàn toàn không biết được các hệ điều hành trên các máy trạm trong hệ thống mạng mà nó theo dõi. Các gói tin phân mảnh sau đó được ghép lại tại các máy trạm này. Vấn đề đặt ra là nếu các attacker biết được mục tiêu của chúng là một máy trạm cài đặt hệ điều hành Linux. Chúng cố tình phân mảnh dữ liệu sao cho nếu tái hợp các mảnh này trên hệ điều hành Windows thì không có bất cứ hiệu ứng gì, nhưng nếu hệ điều hành Linux tái hợp các phân mảnh đó thì sẽ gây ra một lỗ hổng có thể khai thác được. Điều quan trọng là nếu IDS được điều chỉnh để tái hợp các phân mảnh như trên hệ điều hành Windows thì IDS sẽ không thể phát hiện được cuộc tấn công như trên. Và attacker đã đánh lừa được IDS và xâm nhập vào được hệ thống mạng mà không gặp bất trắc gì. Ý tưởng đặt ra là cấu hình sao cho IDS có thể kiểm soát được các hệ điều hành cài đặt trên các máy trạm trong hệ thống mạng. Nếu có bất kỳ gói tin nào được gửi tới máy trạm đó, IDS sẽ phân tích và tái hợp các phân mảnh như hệ điều hành tại máy trạm đó. Cấu hình: Có hai chỉ thị tiền xử lý trong việc cấu hình Frag3 đó là cấu hình toàn cục và cấu hình động cơ. Có thể có nhiều cấu hình động cơ nhưng chỉ duy nhất một cầu hình toàn cầu. Cấu hình toàn cầu:  Tên tiền xử lý: frag3_global  Các tùy chọn (các tùy chọn này được phân cách bằng dấu phẩy “,”) - max_frags <number>: Số lượng tối đa các phân mảnh được theo dõi đồng thời. Mặc định là 8192. - memcap <bytes>: Bộ nhớ tự quản, mặc định là 4MB. Con số này thể hiện bộ nhớ lớn nhất mà Frag3 được phép sử dụng. - prealloc_memcap <bytes>: - prealloc_frags <number>:
  46. 46. 33 - disabled: Cấu hình động cơ:  Tên tiền xử lý: frag3_engine  Các tùy chọn (cách nhau bởi khoảng trắng) - timeout <seconds>: Thời gian timeout của phân mảnh. Những phân mảnh tồn tại trên hệ thống sau thời gian này sẽ bị hủy. Mặc định là 60s. - min_ttl <value>: Giá trị TTL tối thiểu chấp nhận được cho một phân mảnh gói tin. Mặc định là 1, chấp nhận giá trị từ 1-255. - detect_anomalies: Phát hiện các phân mảnh dị thường. - bind_to <ip_list>: Danh sách các địa chỉ IP bị ràng buộc với cấu hình này. Tiền xử lý này sẽ chỉ xử lý với các địa chỉ đích có trong danh sách này. Mặc định là tất cả. - overlap_limit <number>: Giới hạn số phân mảnh chồng chéo trên mỗi gói tin. Mặc định giá trị là “0” nghĩa là không giới hạn. Yêu cầu tùy chọn detect_anomalies phải được thiết lập trước đó. - min_fragment_length <number>: Định nghĩa kích thước nhỏ nhất của một phân mảnh (kích thước phần payload) được chấp nhận. Những phân mảnh có kích thước nhỏ hơn hoặc bằng sẽ bị coi là độc hại và sẽ có một hành động xử lý. Mặc định giá trị là “0” không giới hạn, giá trị tối thiểu là “0”. Tùy chọn này cũng yêu cầu tùy chọn detect_anomalies được thiết lập trước. - policy <type>: Lựa chọn chế độ chống phân mảnh dựa trên mục tiêu. Gồm các loại như first, last, bsd, bsd-right, linux, windows và solaris. Mặc định là bsd.
  47. 47. 34 Platform Type Platform Type AIX 2 BSD Linux 2.4 (RedHat 7.1-7.3) Linux AIX 4.3 8.9.3 BSD MacOS First Cisco IOS Last OpenBSD Linux FreeBSD BSD OS/2 BSD HP JetDirect BSD-right OSF1 V4.0,5.0,5.1 BSD HP-UX B.10.20 BSD SunOS 4.1.4 BSD HP-UX 11.00 First SunOS 5.5.1,5.6,5.7,5.8 First IRIX 6.2, 6.3 BSD Tru64 Unix V5.0A,V5.1 BSD IRIX64 6.4 BSD Windows (95/98/NT4/W2K/XP) Windows Hình 3.2: Phân loại các hệ điều hành. Output: Frag3 có khả năng phát hiện tám loại khác nhau của dị thường. Phần output dựa trên các gói tin và làm việc với tất cả các chế độ output khác của Snort. Các cảnh báo output này có thể tìm thấy trong /preproc_rules/preprocessor.rules của tập tin mã nguồn Snort với gid=123. Ví dụ: preprocessor frag3_global: prealloc_nodes 8192 preprocessor frag3_engine: policy linux, bind_to 192.168.1.0/24 preprocessor frag3_engine: policy first, bind_to [10.1.47.0/24,172.16.8.0/24] preprocessor frag3_engine: policy last, detect_anomalies
  48. 48. 35 3.1.2. Stream5 Tiền xử lý Stream5 cũng là một mô-đun tái hợp TCP dựa trên mục tiêu. Nó có khả năng theo dõi các phiên của cả giao thức TCP và UDP. Với tiền xử lý này, các luật “flow” và “flowbits” có thể được sử dụng cho cả lưu lượng TCP và UDP. Stream5 cũng tương tự như Frag3, tức là IDS sẽ xử lý các luồng dữ liệu dựa vào mục tiêu. Stream5 sẽ xử lý việc chồng chéo dữ liệu và các dấu hiệu bất thường của kết nối TCP. Một số ví dụ về việc nhận dạng sự bất thường trên giao thức TCP như: dữ liệu tồn tại trong gói SYN, dữ liệu nhận được vượt quá kích thước của cửa sổ TCP. a. Cấu hình toàn cục preprocessor stream5_global: <tùy chọn> Tùy chọn Mô tả track_tcp <yes|no> Theo dõi phiên TCP. Mặc định là “yes” max_tcp <num sessions> Số phiên TCP tối đa được đồng thời theo dõi. Mặc định là “262144”, tối đa là “1048576”, tối thiểu là “1”. memcap <num bytes> Bộ nhớ cho lưu trữ gói tin TCP. Mặc định là "8388608"(8MB), tối đa là "1073741824"(1GB), tối thiểu là "32768" (32KB). track_udp <yes|no> Theo dõi phiên UDP. Mặc định là “yes”. max_udp <num sessions> Số phiên UDP tối đa được đồng thời theo dõi. Mặc định là "131072", tối đa là "1048576", tối thiểu là "1". track_icmp <yes|no> Theo dõi phiên ICMP. Mặc định là “no”. max_icmp <num sessions> Số phiên ICMP tối đa được đồng thời theo dõi. Mặc định là "65536", tối đa là "1048576", tối thiểu là "1". track_ip <yes|no> Theo dõi phiên IP. Mặc định là “no”
  49. 49. 36 max_ip <num sessions> Số phiên IP tôi đa được đồng thời theo dõi. Mặc định là "16384", tối đa là "1048576", tối thiểu là "1". disabled Tùy chọn vô hiệu hóa stream5, mặc định tùy chọn này được tắt. flush_on_alert Tương thích ngược. Đẩy ra một TCP stream khi một cảnh báo được tạo ra. Mặc định được tắt. show_rebuilt_packets In/hiển thị các gói tin sau khi được xây dựng lại (debug). Mặc định được tắt. prune_log_max <num bytes> In ra một thông báo khi một phiên chấm dứt hoặc tiêu tốn nhiều hơn số bytes được quy định. Mặc định là "1048576" (1MB), tối thiểu là "0" (disabled) hoặc nếu không bị vô hiệu hóa thì tối thiểu là "1024" và tối đa là “1073741824". Hình 3.3: Ý nghĩa các tham số cấu hình toàn cục. b. Cấu hình cho giao thức TCP preprocessor stream5_tcp: <tùy chọn> Tùy chọn Mô tả bind_to <ip_addr> Dãy địa chỉ IP sẽ được áp dụng chính sách này. Mặc định là bất kỳ địa chỉ nào. timeout <num seconds> Thời gian chờ của một phiên. Mặc định là “30”, tối thiểu là “1” và tối đa là “86400” (khoảng 1 ngày). policy <policy_id> Chính sách này áp dụng cho hệ điều hành mục tiêu nào. overlap_limit <number> Giới hạn số lượng gói tin chồng chéo nhau trên một phiên. Mặc định là “0” (không giới hạn) tối đa là "255". max_window <number> Số TCP window tối đa cho phép. Mặc định là
  50. 50. 37 “0” (không giới hạn) và tối đa là "1073725440" (65535 dịch trái 14). Tùy chọn này được sử dụng để chống DoS. require_3whs [<number seconds>] Một phiên thiết lập chỉ hoàn thành khi thực hiện quá trình bắt tay 3 bước, mặc định nó được tắt. Số giây chỉ thời gian gia hạn của một phiên hiện tại. Tối thiểu là “0” (không xem xét thời gian thiết lập) và tối đa là “86400”. detect_anomalies Phát hiện và cảnh báo sự bất thường của giao thức TCP. Mặc định nó được tắt. check_session_hijacking Kiểm tra kiểu tấn công TCP Session Hijacking bằng cách kiểm tra địa chỉ MAC của hai đầu kết nối có giống trong quá trình bắt tay ba bước hay không. dont_store_large_packets Không lưu các gói tin quá lớn vào buffer trong quá trình tái phân mảnh. dont_reassemble_async Không đợi các gói tin để tái hợp nếu lưu lượng mạng không được tìm thấy ở cả hai hướng. max_queued_bytes <bytes> Hạn chế số bytes đợi cho việc tái phân mảnh trên một phiên TCP. Mặc định là "1048576" (1MB). Giá trị "0" có nghĩa là không giới hạn và giá trị tối thiểu khác “0” là “1024”, tối đa là "1073741824" (1GB). max_queued_segs <num> Hạn chế số segments đợi cho việc tái phân mảnh trên một phiên TCP. Mặc định là “2621”. Giá trị "0" nghĩa là không giới hạn, tối thiểu là “2” và tối đa là "1073741824" (1GB). ports <client|server|both> <all|number(s)> Chỉ định danh sách các port ở client, server hoặc cả hai phía trong việc tái phân mảnh gói tin. Mặc định là các port: 21 23 25 42 53 80 110 111 135 136 137 139 143 445 513 514 1433 1521 2401 3306.
  51. 51. 38 protocol <client|server|both> <all|service name(s)> Chỉ định danh sách các dịch vụ ở client, server hoặc cả hai phía trong việc tái phân mảnh gói tin. Mặc địch là các dịch vụ: ftp telnet smtp nameserver dns http pop3 sunrpc dcerpc netbios- ssn imap login shell mssql oracle cvs mysql. Hình 3.4: Ý nghĩa các tham số cấu hình TCP. c. Cấu hình cho giao thức UDP preprocessor stream5_udp: [timeout <number secs>], [ignore_any_rules] Tùy chọn Mô tả timeout <num seconds> Thời gian chờ của một phiên. Mặc định là “30”, tối thiểu là “1” và tối đa là “86400”. ignore_any_rules Không xử lý bất kỳ luật nào any → any. Mặc định được tắt. Hình 3.5: Ý nghĩa các tham số cấu hình UDP. d. Cấu hình cho giao thức ICMP preprocessor stream5_icmp: [timeout <number secs>] Tùy chọn Mô tả timeout <num seconds> Thời gian chờ của một phiên. Mặc định là “30”, tối thiểu là “1” và tối đa là “86400”. Hình 3.6: Ý nghĩa các tham số cấu hình ICMP. e. Cấu hình cho giao thức IP preprocessor stream5_ip: [timeout <number secs>] Tùy chọn Mô tả timeout <num seconds> Thời gian chờ của một phiên. Mặc định là “30”, tối thiểu là “1” và tối đa là “86400”. Hình 3.7: Ý nghĩa các tham số cấu hình IP.
  52. 52. 39 Ví dụ 1: preprocessor stream5_global: max_tcp 8192, track_tcp yes, track_udp yes, track_icmp no preprocessor stream5_tcp: policy first, use_static_footprint_sizes preprocessor stream5_udp: ignore_any_rules Ví dụ 2: preprocessor stream5_global: track_tcp yes preprocessor stream5_tcp: bind_to 192.168.1.0/24, policy windows preprocessor stream5_tcp: bind_to 10.1.1.0/24, policy linux preprocessor stream5_tcp: policy solaris 3.1.3. sfPortscan Mô-đun sfPortscan được phát triển bởi Sourcefire, nó được thiết kế nhằm phát hiện các hình thức thăm dò hệ thống trước khi tấn công. Trong giai đoạn trinh sát hệ thống, attacker sẽ xác định các giao thức mạng, dịch vụ máy chủ hoặc hệ điều hành mục tiêu. Giai đoạn chưa phải là giai đoạn xâm nhập nhưng attacker có thể thu thập được nhiều thông tin hữu ích chuẩn bị cho quá trình xâm nhập. Một công cụ quét cổng cực kỳ mạnh mẽ và phổ biến hiện nay đó nà Nmap. Nmap đầy đủ các kỹ thuật quét cổng hiện nay và sfPortscan được thiết kế nhằm chống lại những kỹ thuật quét cổng từ Nmap. 3.1.4. HTTP Inspect HTTP đã trở thành một trong những giao thức phổ biến và thông dụng trên Internet. Nên đây mà một giao thức rất được các attacker ưa chuộng. Attacker có thể sử dụng sự linh hoạt của các Web server để cố gắng ẩn thân và che dấu hành vi tấn công trước các NIDS. Ví dụ trong mẫu sau, các mẫu phát hiện như trong Snort sẽ chỉ có thể phát hiện được dạng foo/bar mà không thể phát hiện được foobar. http://www.abc/foo/bar/xyz.php
  53. 53. 40 http://www.abc/foobarxyz.php Ngoài ra Attacker còn có thể sử dụng vô số các kỹ thuật mã hóa dựa trên mã hex với uft-8. http_inspect sẽ chỉ xử lý trên từng gói tin, điều này có nghĩa là những chuỗi mà nó xử lý phải được tái hợp trước đó bằng tiền xử lý stream5. Ví dụ dưới đây về các phương thức GET, chúng đều có chung một chức năng giống hệ nhau, được các webserver xử lý giống hệ nhau. GET /../../../../etc/passwd HTTP /1.1 GET %2f..%2f..%2f..%2f..%2fetc%2 fpasswd HTTP /1.1 GET %2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%2e%2e%2f%65%74%63%2f%70%61%73% 73%77%64 HTTP /1.1 Trên đây là một ví dụ về tấn công “directory traversal”, hay còn gọi với các tên khác như “dot-dot-slash”, “directory clumbing”. Là hình thức tấn công truy cập đến những file và thư mục mà được lưu bên ngoài webroot. Một hệ thống phát hiện xâm nhập hiểu được phương thức GET của giao thức HTTP nên nó sẽ cho phép request này. Tuy nhiên vấn đề là có vô hạn cách mã hóa các chuỗi độc hại dẫn đến việc nếu ta cấu hình một IDS nhằm phát hiện chuỗi độc hại này dựa trên “signature” thì không thể đảm bảo sẽ phát hiện được hết. Một cách khác đó là bình thường hóa chuỗi này, sau đó so sánh nó với một danh sách “known bad” để phát hiện. 3.2. Output Mô-đun ouput được thêm vào Snort từ phiên bản 1.6. Chúng cho phép Snort có nhiều cấu hình linh hoạt hơn trong việc định dạng và trình bày dữ liệu đầu ra cho người quản trị hệ thống. Các mô-đun output này sẽ được khởi chạy khi một sự kiện cảnh báo hoặc yêu cầu ghi log được gọi, sau quá trình tiền xử lý và phát hiện thông qua detection engine. Trong tập tin cấu hình của Snort ta có thể cấu hình nhiều mô-đun đầu ra khác nhau và các mô-đun này sẽ được gọi thứ tự khi có một sự kiện nào đó xảy ra. Mặc định
  54. 54. 41 các cảnh báo và các tập tin log sẽ được ghi vào thư mục /var/log/snort hoặc bất kỳ thư mục nào mà người quản trị cấu hình. Snort hỗ trợ nhiều mô-đun output khác nhau bao gồm: alert_syslog: Cấu hình này cho phép Snort sẽ gửi thông báo tới syslog. alert_fast: Các cảnh báo của Snort sẽ được in ra một cách nhanh chóng nhất. Đây là một phương pháp ghi các cảnh báo nhanh hơn hẳn so với alert_full vì nó không cần in ra tất cả phần header của gói tin và bởi vì nó chỉ in ra trong một tập tin duy nhât. alert_full: Các cảnh báo sẽ được in ra với đầy đủ phần header của các gói tin. Mặc định thông tin sẽ được lưu tại /var/log/snort hoặc một thư mục được chỉ định. Snort sẽ tạo ra các thư mục con chứa các cảnh báo ứng với mỗi IP, điều này làm cho hoạt động của Snort chậm đi do đó nó không được khuyến khích sử dụng. alert_unixsock: Tùy chọn này yêu cầu thiết lập một UNIX domain socket và gửi cảnh báo tới nó. Các chương trình hoặc các tiến trình mở rộng sẽ lắng nghe trên socket đó giúp cho việc nhận các cảnh báo các các gói dữ liệu trong thời gian thực. log_tcpdump: Tùy chọn cấu hình này cho phép Snort ghi các tập tin log ở định dạng tập tin của chương trình tcpdump. Điều này đặc biệt hữu ích trong việc tổng hợp và phân tích các thông tin với số lượng lớn. Có rất nhiều công cụ có thể đọc được định dạng này lên nó rất hữu ích. csv: Đây là một định dạng lưu trữ dạng text với các trường được phân cách nhau bởi dấu phẩy. Định dạng này giúp ta có thể dễ dàng import vào các cơ sở dữ liệu. unified và unified2: Là hai định dạng đầu ra thống nhất, phiên bản unified2 là phiên bản cải tiến của unified. Ưu điểm của phương pháp lưu trữ với các định dạng đầu ra thống nhất đó là: cho phép dễ dàng trong việc lưu trữ và quản lý, có tốc độ nhanh hơn hẳn so với các phương pháp khác, tập tin xuất ra khó có thể chỉnh sửa nội dung. log_null: Tùy chọn này hữu ích trong một số trường hợp muốn tạo ra một vài quy tắc cảnh báo lưu lượng truy cập mạng mà không muốn ghi ra các tập tin log.
  55. 55. 42 CHƯƠNG 4 LUẬT TRONG SNORT Giới thiệu “Luật” trong Snort ta có thể hiểu một cách đơn giản nó giống như các quy tắc và luật lệ trong thế giới thực. Nghĩa là nó sẽ có phần mô tả một trạng thái và hành động gì sẽ xảy ra khi trạng thái đó đúng. Một trong những điểm đáng giá nhất của Snort đó là khả năng cho phép người sử dụng có thể tự viết các luật của riêng mình hoặc tùy biến các luật có sẵn cho phù hợp với hệ thống mạng của mình. Ngoài một cơ sở dữ liệu lớn mà người sử dụng có thể download từ trang chủ của Snort, người quản trị có thể tự phát triển các luật cho hệ thống của mình. Thay vì phải phụ thuộc vào nhà cung cấp, một cơ quan bên ngoài, hoặc phải cập nhật khi có một cuộc tấn công mới hay một phương pháp khai thác lỗ hổng mới được phát hiện. Người quản trị có thể viết riêng một luật dành cho hệ thống của mình khi nhìn thấy các lưu lượng mạng bất thường và so sánh với bộ luật được cộng đồng phát triển. Ưu điểm của việc tự viết các luật là có thể tùy biến và cập nhật một cách cực kỳ nhanh chóng khi hệ thống mạng có sự bất thường. Ví dụ: “Nếu có người cố gắng mở cửa ô tô thì còi sẽ hú.”. Phân tích ở đây ta hành động “còi hú” sẽ được thực hiện nếu có dấu hiệu là “có người cố gắng mở cửa ô tô”. Trong hệ thống mạng cũng vậy, ta không thể sử dụng ngôn ngữ tự nhiên hằng ngày để mô tả dấu hiệu hay trạng thái của hệ thống mạng được. Ví dụ: Nếu có một kết nối SSH có địa chỉ IP Public kết nối tới máy chủ web thì chặn lại. Mặc dù đây là một mô tả khá cụ thể, tuy nhiên Snort lại không thể hiểu được. Luật trong Snort sẽ giúp ta dễ dàng mô tả dấu hiệu này theo ngôn ngữ mà Snort có thể hiểu được. Để biết cách viết một luật từ các dữ liệu của hệ thống ta cần phải hiểu cấu trúc của luật trong Snort như thế nào. Một luật trong Snort được chia thành hai phần đó là
  56. 56. 43 phần header và options. Phần header bao gồm: rule action, protocol, địa chỉ ip nguồn, địa chỉ ip đích, subnetmask, port nguồn, port đích. Phần options bao gồm các thông điệp cảnh báo, thông tin các phần của gói tin sẽ được kiểm tra để xác định xem hành động nào sẽ được áp dụng. 4.1. Rule Header Rule Header Hình 4.1: Cấu trúc luật trong Snort. 4.1.1. Rule Action Phần Header sẽ chứa các thông tin xác định ai, ở đâu, cái gì của một gói tin, cũng như phải làm gì nếu tất cả các thuộc tính trong luật được hiện lên. Mục đầu tiên trong một luật đó chính là phần rule action, rule action sẽ nói cho Snort biết phải làm gì khi thấy các gói tin phù hợp với các luật đã được quy định sẵn. Có 5 hành động mặc định trong Snort đó là: alert (cảnh báo), log (ghi lại log), pass (cho qua), active (kích hoạt), dynamic. Ngoài ra nếu chạy Snort ở chế độ inline còn có thêm các tùy chọn bổ sung như drop, reject và sdrop.  alert - tạo ra cảnh báo sử dụng phương pháp đã lựa chọn trước và sau đó ghi log lại các gói tin.  log - ghi log lại các gói tin.  pass - bỏ qua gói tin đó.  active - cảnh báo và sau đó bật một dynamic rule khác để kiểm tra thêm điều kiện của gói tin.  dynamic - duy trì trạng thái “nhàn rỗi” cho đến khi được kích hoạt bởi một active rule sau đó hành động như một log rule Rule Action Protocol Src/Des Port Rule Option

×