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.. Khóa l
Trang 1i
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ệu ban đầ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 ***
Trang 2ii
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Giáo viên hướng dẫn
Trang 3iii
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Giáo viên phản biện
Trang 41
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
Trang 52
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…
Trang 63
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 collected many 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 i ntrusion detection, misuse/signature based intrusion detection, Snort, SnortSam, SYN Flood, Apache Killer
Trang 74
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
Trang 85
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
Trang 96
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
Trang 107
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
Trang 118
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
Trang 129
DANH MỤC TỪ VIẾT TẮT
ACID Analysis Console for Intrusion Databases
Trang 1310
PHẦN I ĐẶT VẤN ĐỀ
Trang 141
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êu nghiê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
Trang 152
Đố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
Trang 163
PHẦN II GIẢI QUYẾT VẤN ĐỀ
Trang 174
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/S nortSam”
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”
Trang 18hú để 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ì?
Trang 196
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
Trang 20Về 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)
Trang 21 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
Trang 229
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)
Trang 2310
■ 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
Trang 2411
■ 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
Trang 25■ 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
Trang 26Để 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
Trang 2714
“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
Trang 2815
CHƯƠNG 2 GIỚI THIỆU VỀ SNORT/SNORTSAM
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
Trang 2916
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
Trang 30Ngoà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:
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
Trang 3118
Ở 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)
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 (Detection Engine)
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)
Trang 3219
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)
Trang 3320
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
DecodeTCPOptions TCP Options
DecodeIPOnly Embedded IP
Hình 2.3: Giải mã gói tin
2.3.2 Preprocessors
Trang 3421
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
Đầ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 đó
Trang 3522
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
Trang 3623
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 Policy Manager 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
Trang 3724
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á
$ snort –vd
Trang 3825
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
Trang 3926
$/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ệu về 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)
Trang 4027
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