6 DANH MỤC TỪ VIẾT TẮT Viết tắt Tiếng Anh Tiếng Việt DdoS Distributed Denial of DNS Domain Name System Hệ thống tên miền DoS Denial-of-service Tấn công từ chối dịch vụ FTP File Tran
Trang 33
MỤC LỤC
DANH SÁCH HÌNH VẼ 5
DANH SÁCH TỪ VIẾT TẮT 6
CHƯƠNG 1:TỔNG QUAN VỀ ĐỀ TÀI 7
1.1 Lý do chọn đề tài 7
1.2 Mục tiêu của đề tài 8
1.3 Giới hạn và phạm vi của đề tài 9
1.4 Nội dung thực hiện 9
1.5 Phương án tiếp cận 9
CHƯƠNG 2: TÌM HIỂU VỀ IDS – SNORT TRÊN HĐH LINUX 10
2.1 Phần mềm IDS – Snort 15
2.1.1Giới thiệu về Snort 15
2.1.2Các trạng thái 16
2.2 Các thành phần của Snort 17
2.2.1Bộ packet sniffer 18
2.2.2Bộ Preprocessor 18
2.2.3Bộ phát hiện (detection engine) 18
2.2.4Hệ thống ghi và cảnh báo (Logging và alerting) 20
2.2.5Cấu trúc của một luật 21
CHƯƠNG 3: TRIỂN KHAI HỆ THỐNG PHÁT HIỆN XÂM NHẬP SNORT TRÊN CENTOS 23
3.1 Mô tả thực nghiệm 23
3.2 Hạ tầng mạng thực nghiệm 25
3.3 Các bước cài đặt Snort trên hệ điều hành CentOS 25
3.3.1Cài hệ điều hành CentOS 25
3.3.2Cài đặt và cấu hình Snort 25
3.3.3Cấu hình MySQL server 28
3.3.4Cấu hình để Snort thực hiện alert vào MySQL 28
3.3.5 Cài đặt và cấu hình Basic Analysis and Sercurity Engine 29
3.4Giao diện hệ thống sau cài đặt 30
Trang 44
3.4.1Các thông tin cấu hình cơ bản 30
3.4.2Hướng dẫn sử dụng Snort 31
3.4.3Kết quả thống kê thực nghiệm IDS Snort 31
3.5 Các cuộc tấn công và kết quả thống kê thực nghiệm 35
3.5.1Tấn công và IDS Snort phát hiện 35
3.5.2Ngăn chặn 36
3.5.3Kết quả thống kê thực nghiệm 37
CHƯƠNG 4: KẾT LUẬN 39
4.1 Kết quả đạt được 39
4.2 Hạn chế của đề tài 39
4.3 Hướng phát triển của đề tài 40
TÀI LIỆU THAM KHẢO 41
Trang 55
DANH MỤC HÌNH VẼ
Hình 2-1: Mô hình kiến trúc hệ thống phát hiện xâm nhập (IDS) 11
Hình 2-2: Mô hình Network IDS 12
Hình 2-3: Mô hình Host IDS 13
Hình 2-4: Quá trình xử lý gói 17
Hình 2-5: Bộ phát hiện xâm nhập 19
Hình 2-6: Hệ thống ghi nhập file log và phát cảnh báo 20
Hình 3-1: Snort đang hoạt động 30
Hình 3-2: Giao diện chính của Base 32
Hình 3-3: Snort phát hiện Nmap đang scanport, truy cập ssh 32
Hình 3-4: Hiển thị các địa chỉ nghi vấn 33
Hình 3-5: Xem nội dung một packet 33
Hình 3-6: Thống kê theo ngày, giờ 34
Hình 3-7: Thống kê theo ngày 35
Hình 3-8: IDS Snort phát hiện các gói tin được gửi vào hệ thống 36
Hình 3-9: Mô hình thực nghiệm 38
Trang 66
DANH MỤC TỪ VIẾT TẮT Viết tắt Tiếng Anh Tiếng Việt
DdoS
Distributed Denial of
DNS Domain Name System Hệ thống tên miền
DoS Denial-of-service Tấn công từ chối dịch vụ
FTP File Transfer Protocol Giao thức truyền dữ liệu
HIDS Host Intrusion Detection
System
hệ thống phát hiện xâm phạm được cài đặt trên các máy tính (host)
ICMP Internet Control Message
Protocol
Giao thức xử lý các thông báo trạng thái cho IP
IDS Intrusion Detection System Hệ thống phát hiện xâm nhập
IP Internet Protocol Giao thức Internet
IPS Intrusion Prention System Hệ thống phát hiện xâm nhập
MAC Media Access Control Định danh được gán cho thiết
OSI Open Systems
Quản lý thống nhất các mối nguy hiểm
Trang 7Mạng Internet ngày càng đóng vai trò quan trọng trong các hoạt động của con người Với lượng thông tin ngày càng phong phú và đa dạng Không chỉ có ý nghĩa
là nơi tra cứu tin tức sự kiện đang diễn ra trong đời sống hàng ngày, Internet còn đóng vai trò cầu nối liên kết con người với nhau ở mọi vùng địa lý Các khoảng cách về địa lý hầu như không còn ý nghĩa, khi con người ở cách nhau nửa vòng trái đất họ vẫn có thể trao đổi thông tin, chia sẻ dữ liệu cho nhau như những người trong cùng một văn phòng
Internet còn góp phần làm thay đổi phương thức hoạt động kinh doanh của các doanh nghiệp Ngoài các hoạt động kinh doanh truyền thống, giờ đây các doanh nghiệp có thêm một phương thức kinh doanh hiệu quả, đó là thương mại điện tử Trong những năm gần đây, thương mại điện tử đã trở thành một bộ phận quan trọng trong sự tăng trưởng, phát triển của xã hội, mang lại những lợi ích rất lớn cho các doanh nghiệp, đồng thời thúc đẩy xã hội hóa thông tin cho các ngành nghề khác, góp phần mang lại tính hiệu quả cho nền kinh tế của doanh nghiệp nói riêng và cho toàn xã hội nói chung
Ði đôi với sự phát triển này thì bảo mật mạng đang là một nhu cầu cấp thiết nhằm bảo vệ hệ thống mạng bên trong, chống lại những tấn công xâm nhập và thực hiện các trao đổi thông tin, giao dịch qua mạng được an toàn Về những giá trị lợi ích của công nghệ thông tin mang lại, những kẻ xấu cũng lợi dụng công nghệ này gây ra không ít những khó khăn cho tổ chức, cơ quan cũng như những người áp dụng công nghệ thông tin vào cuộc sống
Công nghệ nào cũng có ưu điểm và nhược điểm Người tấn công (Attacker) chúng lợi dụng những lỗ hổng của hệ thống để truy xuất bất hợp phát vào khai thác những thông tin quan trọng, những dữ liệu có tính chất bảo mật, nhạy cảm, thông
Trang 88
tin mật của quốc phòng… Vì vậy chúng ta cần phải có biện pháp, phương pháp để phát hiện sự truy nhập trái phép đó Để phát hiện sự truy nhập trái phép đó, hiện nay công nghệ phát hiện chống xâm nhập hiệu quả được nhiều tổ chức, cơ quan, doanh nghiệp triển khai và áp dụng vào trong hệ thống mạng của ḿ nh là công nghệ Snort IDS
Intrusion Detection System (IDS) là hệ thống phòng chống và phát hiện xâm nhập thông minh nhất hiện nay IDS phát hiện những tín hiệu, biểu hiện, hành vi của người xâm nhập trước khi có thể gây thiệt hại đến hệ thống mạng như làm cho dịch vụ mạng ngừng hoạt động hay mất dữ liệu Từ đó chúng ta có thể ngăn chặn thông qua các biện pháp kỹ thuật khác nhau
Đề tài của em với mục tiêu là xây đựng một hệ thống IDS Snort trên hệ điều hành CentOS, hệ thống này với mục đích phát hiện và phòng chống các hành động tấn công và thâm nhập trong mạng Do đó đề tài tập trung nghiên cứu vào phương thức hoạt động và vận hành của hệ thống IDS Snort đồng thời đưa ra cách cài đặt và thiết lập một hệ thống IDS hoàn chỉnh trên hệ điều hành CentOS Bên cạnh đó chúng tôi đưa ra giải pháp nhằm tăng cường khả năng hoạt động và vận hành của hệ thống thông qua việc sử dụng barnyard để tăng cường khả năng ghi lại log của hệ thống để tự động liên tục cập nhật rule
Ngoài việc sử dụng hệ thống rule có sẵn, đề tài tìm hiểu cách tạo ra rule theo yêu cầu nhằm giám sát và kiểm tra đối với một luồng thông tin cụ thể khi mà hệ thống rule của snort không thể đáp ứng
Thông qua việc nghiên cứu, đề tài của em đưa một cái nhìn tổng quan về hệ thống IDS Snort từ đó có thể ứng dụng trong mô hình mạng thực tế
1.2 Mục tiêu của đề tài
- Nghiên cứu, tìm hiểu khái niệm, cách hoạt động của IDS Snort
- Cài đặt, cấu hình thử nghiệm Snort trên hệ điều điều hành CentOs 6.7
- Kiểm chứng kết quả đạt được sau khi cài đặt thành công và thử nghiệm các tập Rules mở rộng khả năng phát hiện
Trang 99
1.3 Giới hạn và phạm vi của đề tài
- Thực hiện trên HĐH Centos
- Hạn chế về thời gian và tài chính nên chưa thực hiện xây dựng được hệ thống mạng thật
- Việc hoàn thiện các module gắn thêm cho hệ thống IDS là chưa có
- Cách phối hợp giữa Firewall Iptables và IDS Snort chưa được chặt chẽ
- Chưa tự động gửi cảnh báo đến người quản trị thông qua email và SMS
- Triển khai trên hệ thống mạng LAN
1.4 Nội dung thực hiện
- Tìm hiểu về IDS - Snort
- Triển khai hệ thống IDS - Snort trên CentOS
- Báo cáo lý thuyết quá trình tìm hiểu
- CD chứa video cài đặt và cấu hình chương trình
1.5 Phương án tiếp cận
- Tìm hiểu hệ thống phát hiện xâm nhập IDS
- Tìm hiểu chi tiết về IDS – Snort trên hệ điều hành Linux
- Xem các mô hình tấn công mạng
- Khảo sát qua mạng
Trang 10anomaly-Snort là một IDS rule-base (IDS dựa trên tập luật) chính, tuy nhiên những input plug-in giúp phát hiện những anomaly trong tiêu đề giao thức ‘Snort sử dụng những rule lưu trong những text file, nó có thể xem được bằng một trình soạn thảo văn bản Những rule được nhóm theo từng loại Những rule đi cùng với mỗi loại được lưu trữ trong những file riêng Những file này sau đó được tập hợp trong một
file cấu hình chính, gọi là snort.conf Snort đọc những rule này mỗi lần chạy và xây
dựng các cấu trúc dữ liệu bên trong nó hoặc áp dụng những rule đó để capture dữ liệu Việc tìm những signature và sử dụng chúng trong rule là một công việc đòi hỏi phải tinh tế, khi dùng nhiều rule, sẽ có nhiều công việc xử lý hơn được yêu cầu để capture dữ liệu trong thời gian thực Snort cho phép định nghĩa lại rule cho việc phát hiện xâm nhập và rất “linh hoạt” cho ta thêm vào rule riêng của mình
Trang 11Hình 2-1: Mô hình kiến trúc hệ thống phát hiện xâm nhập (IDS)
Trang 1212
Network IDS hay NIDS
NIDS là một IDS capture dữ liệu trong quá trình truyền dữ liệu trên mạng (cáp, wireless) và gắn chúng vào một cơ sở dữ liệu của những signature Phụ thuộc vào nơi mà một gói bi phát hiện với một tín hiệu xâm nhập, lúc đó một cảnh báo sẽ được phát sinh hoặc gói đó sẽ được ghi vào trong một file hay cơ sở dữ liệu Một chuyên gia sử dụng Snort như là một NIDS
Hình 2-2: Mô hình Network IDS
Trang 1313
Host IDS hay HIDS
Những hệ thống HIDS được cài đặt như là những agent (tác nhân) trên một host Những hệ thống này có thể nhìn vào trong những log file ứng dụng để phát hiện ra hành vi kẻ xâm nhập Một vài loại là reactive, có nghĩa nó chúng chỉ báo cho ta biết khi mà mọi việc đã xảy ra Cũng có một số là proactive (đoán trước), chúng quét lưu lượng mạng tại những HIDS đã được cài đặt và phát cảnh báo ngay cho ta
Hình 2-3: Mô hình Host IDS
Signatures (dấu hiệu)
Khi chúng ta nhìn vào trong gói dữ liệu, ta rút ra được một mẫu (lấy mẫu dữ liệu), mẫu đó gọi là signature Một signature dùng để phát hiện một hoặc nhiều loại tấn công Cho ví dụ, chuỗi “script/iisad-min” trong gói dữ liệu đi vào web server có thể nói cho ta biết đó là một hành vi xâm nhập
Signatures có thể trình bày nhiều thành phần khác nhau trong một gói dữ liệu phụ thuộc vào cách tấn công tự nhiên Cho ví dụ, ban có thể tìm signature trong IP
Trang 1414
header, transport layer header (TCP, UDP) và/hoặc application layer header hay payload Thường thì IDS phụ thuộc vào signature để tìm những hành vi xâm nhập Một vài sản phẩm IDS cần phải cập nhật từ nhà cung cấp những signature mới khi
có một loại tấn công nào đó ra đời Trong IDS khác, như Snort, có thể cập nhật signature của riêng mình
Alerts (cảnh báo)
Alerts là những loại thông báo người dùng của một hành vi xâm nhập Khi một IDS phát hiện ra một intruder, nó sẽ báo cho người quản trị bảo mật bằng cách dùng những cảnh báo này Alerts có thể là một dạng cửa sổ pop-up, dạng console, gửi một e-mail, v.v… Alerts cũng có thể được lưu trong những log file hay cơ sở dữ liệu, nơi mà chúng có thể xem lại về sau
Snort có thể phát ra Alerts trong nhiều hình thức và được điều khiển bởi những output plug-ins Snort cũng có thể gửi cùng một alert đến nhiều điểm đích Cho ví dụ, nó có thể ghi Alerts vào trong cơ sở dữ liệu và phát ra SNMP trap cùng một lúc Một vài plug-ins cũng có thể thay đổi cấu hình firewall nhằm ngăn những host xâm phạm vào firewall hay router
Logs
Thông điệp log thường được lưu trong một file Mặc định, Snort lưu những thông điệp này dưới thư mục /var/log/snort Tuy hiên, vị trí của nó có thể thay đổi bằng cách sử dụng lệnh khi khởi động Snort Thông điệp log có thể lưu ở dạng text (văn bản) hay binary (nhị phân) Những file binary có thể xem sau này bằng Snort hay chương trình tcpdump Một công cụ mới gọi là Barnyard cũng có thể phân tích những log file nhị phân Ghi ở dạng nhị phân thì nhanh hơn bởi vì nó lưu theo mức cao Ghi theo dạng nhị phân rất hữu dụng trong trường hợp khi thực thi Snort đòi hỏi tốc độ cao
False Alarms (cảnh báo lỗi):
False alarm là loại cảnh báo phát ra biểu thi một dấu hiệu mà không có hành vi xâm nhập nào Cho ví dụ, những host bên trong mạng do cấu hình sai có thể những thông điệp broadcast khớp với một rule nào đó, kết quả là nó phát ra một cảnh báo
Trang 1515
sai Ở một vài router như Linksys, nó sinh ra nhiều cảnh báo “lost of UpnP realated” Để tránh những lỗi trên, phải thay đổi điều chỉnh những rule mặc định khác Trong vài trường hợp, cần phải disable một vài rule để tránh False alarm
2.3 Phần mềm IDS – Snort
Giới thiệu về Snort
Snort là một phần mềm phát hiện xâm nhập mã nguồn mở hoạt động dựa trên các dấu hiệu cho phép giám sát, phát hiện những dấu hiện tấn công mạng Snort được nhiều tổ chức, doanh nghiệp phát triển và biến thành sản phẩm thương mại như Sourcefire, Astaro, …
Snort chủ yếu là một IDS dựa trên luật, tuy nhiên các input plug-in cũng tồn tại để phát hiện sự bất thường trong các header của giao thức Snort sử dụng các luật được lưu trữ trong các file text, có thể được chỉnh sửa bởi người quản trị Các luật được nhóm thành các kiểu Các luật thuộc về mỗi loại được lưu trong các file khác nhau File cấu hình chính của Snort là snort.conf Snort đọc những luật này vào lúc khởi tạo và xây dựng cấu trúc dữ liệu để cung cấp các luật để bắt giữ dữ liệu Tìm ra các dấu hiệu và sử dụng chúng trong các luật là một vấn đề đòi hỏi sự tinh tế, vì chúng ta càng sử dụng nhiều luật thì năng lực xử lý càng được đòi hỏi để thu thập
dữ liệu trong thực tế Snort có một tập hợp các luật được định nghĩa trước để phát hiện các hành động xâm nhập Các luật trên Snort có tính mở, cho phép người quản trị mạng tạo ra các luật mới và chúng ta có thể thêm vào các luật của chính mình Chúng ta cũng có thể xóa một vài luật đã được tạo trước để tránh việc báo động sai Các đặc điểm chính của Snort:
- Hỗ trợ nhiều platform: Linux, OpenBSD, FreeBSD, Solaris, Windows, …
- Có khả năng phát hiện một số lượng lớn các kiểu thăm dò, xâm nhập khác nhau như: Buffer overflow, CGI-attack, dò tìm hệ điều hành, ICMP, virus, …
- Phát hiện nhanh các xâm nhập theo thời gian thực
- Cung cấp cho nhà quản trị các thông tin cần thiết để xử lư các sự cố khi bị xâm nhập
- Giúp người quản trị tự đặt ra các dấu hiệu xâm nhập mới một cách dễ dàng
Trang 1616
- Là phần mềm mã nguồn mở (Open Source) và không tốn kém chi phí đầu tư
Các trạng thái
Snort có thể được cấu hình để chạy ở ba trạng thái:
+ Sniffer Mode: Là chế độ bắt gói tin và chỉ hiển thị header của các gói TCP/IP ra màn hình Cấu trúc lệnh như sau:
snort -v: Lệnh này chỉ chạy snort và hiển thị IP/TCP/UDP/ICMP header snort -vd: Lệnh này vừa hiển thị các header vừa cho thấy các gói dữ liệu snort -vde: Tương tự như trên nhưng trình bày rõ ràng hơn Thể hiện cả header của lớp Datalink
+ Packet Logger Mode: Trong trường hợp muốn ghi nhận lại các gói đã bắt được và nơi lưu trữ để tiện cho việc theo dõi về sau thì chế độ packet logger sẽ hỗ trợ tốt cho quản trị mạng Chế độ này chỉ định nơi lưu trữ và khi sử dụng cú pháp sau, snort sẽ tự động lưu lại thông tin vào thư mục đó:
snort -vde -l /usr/local/log/snort
Log được lưu ở dạng nhị phân, làm tăng đốc độ khả năng bắt gói tin của Snort Hầu hết các hệ thống có thể bắt gói và ghi thành file log ở tốc độ 100Mbps mà không xảy ra vấn đề gì
Để ghi nhận file log ở chế độ nhị phân sử dụng cờ -b
Để mở chế độ này, sử dụng cú pháp:
snort -dve -l /usr/local/log -h 192.168.0 0/24 -c snort.cfg
Trang 1717
Nếu admin sử dụng Snort với chế độ này trong thời gian lâu thì nên loại bỏ -v, -e ra khỏi câu lệnh Vì quá trình ghi dữ liệu ra màn hình sẽ làm chậm tốc độ hoạt động của hệ thống, đôi khi gây mất gói tin trong khi Snort đang ghi nhận Việc lưu lại các header của lớp Datalink cũng không cần thiết, nên có thể loại bỏ ra khỏi dòng lệnh
Lệnh cấu hình cho Snort chạy ở hình thái cơ bản của chế độ NIDS
snort -d -l /usr/local/log -h 192.168.0.0/24 -c snort.cfg
Trang 1818
Bộ packet sniffer
Bộ Packet Sniffer: Bộ bắt gói là một thiết bị (phần cứng hay phần mềm) được đặt vào trong hệ thống, làm nhiệm vụ bắt lưu lượng ra vào trong mạng Bộ bắt gói cho phép một ứng dụng hay một thiết bị có khả năng nghe lén toàn bộ dữ liệu đi trong hệ thống mạng
sẽ được chuyển đến bộ phận phát hiện xâm nhập
Bộ tiền xử lý là một thành phần rất hữu dụng trong Snort Vì đây là một
plug-in có thể mở hoặc tắt tùy ý nên giúp ích rất nhiều trong việc tùy chỉnh tài nguyên hệ thống hay tùy chỉnh mức báo động Ví dụ khi quản trị mạng nhận được thông báo port scan quá nhiều lần trong khi làm việc, họ có thể tắt plug-in này đi trong khi các plug-in khác vẫn hoạt động bình thường
Bộ phát hiện (detection engine)
Sau khi các gói tin đi qua bộ tiền xử lý, chúng được chuyển đến bộ phận phát hiện xâm nhập Nếu một gói tin giống với bất kỳ luật nào, chúng sẽ được gửi đến bộ
Snort dùng các rules để phát hiện ra các xâm nhập trên mạng Xem rules sau:
alert tcp !192.168.0.0/24 any -> any any (flags: SF; msg: “SYN-FIN Scan”;)
Trang 1919
Một rules có hai thành phần: Header và Option
Header: alert tcp !192.168.0.0/24 any -> any any
Option: (flags: SF; msg: “SYN-FIN Scan”;)
Trang 2020
Hệ thống ghi và cảnh báo (Logging và alerting)
Dùng để thông báo cho quản trị mạng và ghi nhận lại các hành động xâm nhập hệthống Hiện tại có 3 dạng logging và 5 kiểu alerting
Các dạng logging, được chọn khi chạy Snort:
- Dạng decoded: Đây là dạng log thô nhất, cho phép thực hiện nhanh
- Dạng nhị phân tcpdump: theo dạng tương tự như tcpdump và ghi vào đĩa nhanh chóng, thích hợp với những hệ thống đòi hỏi performance cao
- Dạng cây thư mục IP: Sắp sếp hệ thống log theo cấu trúc cây thư mục IP,
dễ hiểu đối với người dùng
Hình 2-6: Hệ thống ghi nhập file log và phát cảnh báo
Các dạng alerting:
- Ghi alert vào syslog
- Ghi alert vào trong file text
- Gửi thông điệp Winpopup dùng chương trình smbclient
- Full alert: Ghi lại thông điệp alert cùng với nội dung gói dữ liệu
- Fast alert: Chỉ ghi nhận lại header của gói dữ liệu Cách này thường dùng trong các hệ thống cần performance cao