Intrusion Detection System (IDS) là hệ thống phòn g chốn g 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ạn g như là m cho dịch vụ mạn g
ngừng hoạt đ ộng hay mất dữ liệu. Từ đó người quản trị mạn g có thể ngăn chặn thôn g
qua các biện pháp kỹ thuật khác nhau.
Đề tài của chúng tôi với mục tiêu là xây đựng một hệ thốn g Snort – IDS trên hệ điề u
hành Ubuntu, hệ thốn g này với mục đích phát hiện và phòn g chống các hành đ ộng tấn
công và thâ m nhập trong mạn g. Do đó đề tài tập trung n ghiên cứu vào phương thứ c
hoạt động và vận hành của hệ thốn g Sn ort – IDS đồng t hời đưa ra cách cài đặt và thiế t
lập một hệ th ốn g IDS hoàn chỉnh trên hệ điều hành Ubuntu. Bên cạnh đó chún g 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ụn g barnyard để tăn g cường khả năng ghi lại l o g của hệ th ốn g và
oinkmaster để tự động liên tục cập nhật rule.
152 trang |
Chia sẻ: lvbuiluyen | Lượt xem: 3394 | Lượt tải: 6
Bạn đang xem trước 20 trang tài liệu Đề tài Xây dựng hệ thống IDS - Snort trên hệ điều hành Linux, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC HOA SEN
KHOA KHOA HỌC VÀ CÔNG NGHỆ
Giảng viên hướng dẫn : Nguyễn Ngọc Như Hằng
Nhóm sinh viên thực hiện :
Nguyễn Quỳnh MSSV: 070073
Phù Sử Hùng MSSV: 070156
Lớp : VT071
Tháng 12 /năm 2010
PHIẾU GIAO ĐỀ TÀI KHÓA LUẬN TỐT NGHIỆP
1. Mỗi sinh viên phải viết riêng một báo cáo
2. Phiếu này phải dán ở trang đầu tiên của báo cáo
1. Họ và tên sinh viên/ nhóm sinh viên được giao đề tài (sĩ số trong nhóm: )
(1) ........................................................ MSSV: .................... khóa: ...........................
(2) ........................................................ MSSV: .................... khóa: ...........................
(3) ........................................................ MSSV: .................... khóa: ...........................
Chuyên ngành: Mạng máy tính Khoa: Khoa Học - Công Nghệ ....................
2. Tên đề tài: Xây dựng hệ thống IDS – Snort trên hệ điều hành Linux .....................
...............................................................................................................................
3. Các dữ liệu ban đầu:
Snort được xây dựng với mục đích phát hiện xâm nhập vào hệ thống. Snort 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, ICMP, virus…Snort là phần mềm open source 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 ...........................................
....................................................................................................................................
....................................................................................................................................
4. Các yêu cầu đặc biệt:
Hiểu được khái niệm, cách hoạt động của IDS - Snort. Cài đặt, cấu hình Snort trên
hệ điều hành Ubuntu. Kiểm chứng kết quả đạt được sau khi cài đặt thành công...........
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
5. Kết quả tối thiểu phải có:
1. Nắm rõ khái niệm về IDS và Snort ...................................................................
2. Cài đặt, cấu hình thành công Snort trên hệ điều hành Ubuntu ...........................
3. .........................................................................................................................
4. .........................................................................................................................
Ngày giao đề tài:……../………./………Ngày nộp báo cáo: ……/…………/.........
Họ tên GV hướng dẫn 1: Nguyễn Ngọc Như Hằng…….………Chữ ký: ....................
Họ tên GV hướng dẫn 2: …………………...…………………..Chữ ký: ....................
Ngày …. tháng … năm…
Trích Yếu
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ừ đó người quản trị mạng 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 chúng tôi với mục tiêu là xây đựng một hệ thống Snort – IDS trên hệ điều
hành Ubuntu, 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 Snort – IDS đồ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 Ubuntu. 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 và
oinkmaster để 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 chúng tôi đưa một cái nhìn tổng quan về hệ
thống Host-based IDS và Network-based IDS, về sự khác và giống nhau của hai hệ
thống từ đó có thể ứng dụng trong mô hình mạng thực tế.
Mục Lục
Trích Yếu .................................................................................................................. iv
Mục Lục .....................................................................................................................v
Lời Cảm Ơn..............................................................................................................vii
Nhận Xét Của Người Hướng Dẫn ............................................................................viii
Nhập Đề .....................................................................................................................9
1. Nguyên Lý Hoạt Động Của Snort ...................................................................... 10
1.1 Quá trình khởi động của snort...................................................................... 10
1.2 Xử lý gói tin trong snort .............................................................................. 11
1.3 Detection Engine ......................................................................................... 15
1.4 Khảo sát Detection Engine .......................................................................... 18
1.5 Snort Inline Mode........................................................................................ 20
2. Preprocessor....................................................................................................... 22
2.1 Preprocessor frag3 ....................................................................................... 23
2.2 Preprocessor stream5 ................................................................................... 25
3. Hệ Thống Rule Trong Snort ............................................................................... 31
3.1 Tổng quan về rule trong snort ...................................................................... 31
3.2 Cấu trúc rule ................................................................................................ 31
3.3 Thứ tự các rule trong rule base của snort ..................................................... 34
3.4 Oinkmaster .................................................................................................. 34
4. Snort Output Plug-in .......................................................................................... 35
4.1 Output log và alertvới tốc độ nhanh ............................................................. 35
4.2 Output log và alert vào database .................................................................. 38
4.3 Output log và alert vào Unix syslog............................................................. 38
4.4 Output log và alert vào một file cụ thể ......................................................... 39
4.5 Output log và alert vào file CSV.................................................................. 40
4.6 Output log và alert ra nhiều dạng khác nhau ................................................ 41
5. Network-Based và Host-Based IDS ................................................................... 41
5.1 Nework-Based IDS...................................................................................... 41
5.2 Host-Based IDS........................................................................................... 43
5.3 Triển Khai IDS Trong Mạng........................................................................ 44
6. Các Hình Thức Khai Thác Và Tấn Công Hệ Thống Phổ Biến ............................ 47
6.1 Port scan...................................................................................................... 47
6.2 DOS (Denial of Services) ............................................................................ 50
6.3 ARP Spoofing ............................................................................................. 53
7. Cài Đặt Snort ..................................................................................................... 54
7.1 Một số tùy chọn khi biên dịch snort ............................................................. 54
7.2 Cấu trúc database của snort ......................................................................... 55
7.3 Cài đặt Snort với Snort Report (Single Snort Sensor) .................................. 56
7.4 Cài đặt Snort với BASE (Single Snort Sensor) ............................................ 62
7.5 Cài đặt snort với BASE (Multiple SnortSensors) ......................................... 72
7.6 Cài đặt Snort inline ...................................................................................... 81
8. Lab Kiểm Tra Hoạt Động Của Snort .................................................................. 91
8.1 Rule để kiểm tra hoạt động của snort ........................................................... 91
8.2 Rule phát hiện truy cập web......................................................................... 92
8.3 Phát hiện portscan trong Snort ..................................................................... 93
8.4 Phát hiện DOS với snort .............................................................................. 94
8.5 Phát hiện ARP attack................................................................................... 96
Kết Luận................................................................................................................. 101
Tài Liệu Tham Khảo............................................................................................... 102
Lời Cảm Ơn
Chúng tôi xin chân thành cảm ơn cô Nguyễn Ngọc Như Hằng - giảng viên trực tiếp
hướng dẫn nhóm chúng tôi thực hiện khóa luận tốt nghiệp này này, đã tận tình hướng
dẫn và hỗ trợ và giúp chúng tôi giải quyết khó khăn trong quá trình nghiên cứu đề tài
này. Chúng tôi chân thành cảm ơn sự nhiệt tình của cô, cô đã giúp chúng tôi giải đáp
những thắc mắc cũng như cung cấp những tài liệu cần thiết cho quá trình nghiên cứu
đề tài của chúng tôi. Một lần nữa xin chân thành cảm ơn cô.
Chúng tôi xin gửi lời cảm ơn đến những giảng viên của ngành Mạng Máy Tính trường
đại học Hoa Sen đã tận tình giảng dạy và tạo điều kiện cho chúng tôi học tập, nghiên cứu.
Để từ đó chúng tôi có được một nền tảng kiến thức vững chắc làm tiền đề giúp
cho chúng tôi thực hiện tốt đề tài tốt nghiệp của mình.
vii Xây dựng hệ thống IDS – Snort trên hệ điều hành Linux
NHẬN XÉT CỦA NGƯỜI HƯỚNG DẪN
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
Người hướng dẫn ký tên
viii Xây dựng hệ thống IDS – Snort trên hệ điều hành Linux
Nhập Đề
Khái niệm tấn công một máy tính bằng việc tác động trực tiếp vào máy đó đã trở
thành quá khứ khi mà ngày nay con người có thể truy cập vào một máy chủ ở cách xa
mình nửa vòng trái đất để lấy thông tin website, mail… Hacker cũng làm những công
việc tương tự nhưng họ tận dụng những lỗ hỏng của hệ thống nhằm chiếm quyền sử
dụng hay ngăn chặn sự truy cập của người dùng khác vào hệ thống đó.
Nhằm ngăn chặn những truy nhập trái phép vào hệ thống người ta sử dụng những
thiết bị bảo mật như Firewall hay các thuật toán mã hóa. Thế nhưng đối với những
máy chủ chạy những dịch vụ như web, mail thì những công cụ bảo mật này vẫn chưa
hoàn hảo vì đây là những máy chủ được mọi người từ bên ngoài truy cập (public
server). Hacker sẽ lợi dụng chính những dịch vụ này để tấn công vào hệ thống. Điều
đó là nguyên nhân dẫn đến sự cần thiết sử dụng công cụ IDS (Intrusion Detection
System) với mục đích là dò tìm và nghiên cứu các hành vi bất thường và thái độ của
người sử dụng trong mạng, phát hiện ra các hành vi lạm dụng đặc quyền để giám sát
hệ thống mạng.
1. Nguyên Lý Hoạt Động Của Snort
1.1 Quá trình khởi động của snort
Quá trình khởi động của snort chia làm 3 giai đoạn
Các đối số của command-line được phân tích để xác định chế độ chạy của snort
và thiết lập các biến môi trường.
File cấu hình được xử lý, trong file này chứa các thông tin cấu hình về rule,
preprocessor, output plug-in…
Sau khi thông tin cấu hình được đọc, snort bắt đầu thiết lập detection
engine, cácthư viện pcap…
1.1.1 Trình command-line của snort
Command line của snort rất linh hoạt và có nhiều option cho phép người dùng thiết
lập và cấu hình thông qua command line. Điều này cho phép người dùng có
thể thay đổi cấu hình cấu hình của snort mà không cần phải thay đổi file cấu hình.
Đồng thời có thể cho phép nhiều tiến trình snort chia sẽ với nhau một file cấu
hình. Để xem các command line option trong snort được xử lý thế nào người dùng
có thể xem hàm ParseCmdLine trong file snort.c. Đồng thời qua đó người dùng
cũng có thể tạo thêm các option tùy theo ý muốn. Từ phiên bản 2.6 snort đã có hơn
40 command line options.
1.1.2 Xử lý file cấu hình
File cấu hình chứa các thông số cấu hình cho snort, một số thông số cấu hình sẽ
không được hỗ trợ thông qua command line. Các thông số này bao gồm các
loạigiá trị cấu hình, preprosessor, các chỉ dẫn cho output, rule và các thông số
khác.
File cấu hình của snort được định dạng theo từng dòng và được phân tích và chạy theo
từng dòng một. Snort đọc toàn bộ các line và phân tích từng line như là một đối
tượng riêng biệt. Để thực hiện việc phân tích các rule snort sử dụng hàm
ParseRulesFile trong file parser.c. Để phân tích các thành phần còn lại trong file cấu
hình snort tích hợp code dùng cho việc phân tích cho preprocessor, dectection
option, và các output plug-in vào trong các module đó.
1.1.3 Phân tích các rule
Mỗi rule trong snort bao gồm 2 phần: header và các option. Header của rule dùng
để phân biệt loại rule (alert, log, pass…), protocol, source và destination IP, source
và destination port mà rule đang dùng. Phần Option của rule chứa nhiều loại
option khác nhau quy định các thông tin về rule và khác detect option như sid
(snort identifier), message…Khi rule được phân tích snort sẽ tiến hành xây dựng
tất cả các rule theo dạng cây. Phần header của rule dùng để tạo thành rule tree
node (RTN) và phần option sẽ tạo thành option tree node (OTN). Một phần của
OTN sẽ bao gồm các dection option. Tất cả các OTN tương ứng với một header sẽ
được nhóm lại dưới cùng một RTN.
1.2 Xử lý gói tin trong snort
Snort bắt đầu với việc tiếp nhận gói tin. Sau khi gói tin được snort tiếp nhận, các gói
tin lúc này được chuyển vào packet decoder.
Sau khi được decode, gói tin sẽ được chuyển vào preprocessor để tiêu chuẩn hóa
gói tin, phân tích, phân tích thống kê và phát hiện các protocol bất thường.
Tiếp theo đó gói tin sẽ được chuyển vào detection engine để đối chiếu kiểm tra với
rulebase trong snort.
Cuối cùng gói tin được gửi vào các ouput plug-in để loging và cảnh báo.
1.2.1 Tiếp nhận gói tin
Lúc bắt đầu, snort tiến hành thực hiện chức năng packet processing của nó. Snort
đi vào chế độ sniffing mode bằng cách sử dụng hàm InterfaceThread trong file
snort.c. Hàm này khởi động libpcap để lấy các gói tin từ interface. Libpcap là một
thư viện hỗtrợ nhiều nền tảng khác nhau và cho phép tiếp nhận tất cả các gói tin trực
tiếp từ interface. Libpcap giúp cung cấp những thông tin cơ bản sau đây cho mỗi
gói tin:
Thời gian mà gói tin được bắt từ interface tính đến phần trăm giây
Chiều dài gói tin
Số byte của packet đã bắt được
Link type của packet (Ethernet, Point to Point…)
Con trỏ đến nội dung của gói tin
Chức năng xử lý gói tin của snort được thực hiện qua nhiều giai đoạn khác nhau.
Đầu tiên snort gọi libpcap bằng hàm pcap_dispatch để xử lý tất cả các gói tin đang
chờ. Với mỗi gói tin libpcap gọi hàm PcapProcessPacket trong file snort.c để xử
lý gói tin. Hàm này khởi tạo lại giá trị counter và số liệu của từng gói tin vàgọi
hàm ProcessPackettrong file snort.c. Hàm ProcessPacket xử lý tất cả các chi tiết
của công việc decode gói tin, xuất gói tin ra màn hình (nếu chạy ở chế verbose
mode), gọi hàm logging packet (nếu chạy ở log mode) và gọi các preprocessor
(nếu chạy ở IDS mode).
Khi chạy snort ở chế độ inline, vấn đề lúc này là không có thư viện nào tương
đương với libpcap cho snort khi chạy ở Sniffer, Packages và Intrusion Detection
mode.Tuy nhiên snort có thể tiếp nhận được gói tin trực tiếp từ iptables thay vì từ
libpcap. Nhưng do snort hoạt động trên nền tảng pcap, các gói tin sẽ được chuyển
thành định dạng pcap sau đó sẽ gọi hàm PcapProcessPacket.
Khi snort hoàn tất việc xử lý gói tin, snort có thể chuyển gói tin đi với nội dung
không thay đổi hoặc có thể bị thay đổi, reject gói tin hoặc drop gói tin mà không
cần phản hồi lại. Việc xử lý gói tin của snort khi chạy ở chế độ inline sẽ thực hiện
phụ thuộc vào cờ được gán trong lúc snort xử lý gói tin. Người dùng có thể xem
chi tiết phương thức xử lý của snort inline trong file inline.c
Snort chỉ có thể có thể xử lý một gói tin tại một thời điểm. Mặc dù pcap và API
của inline đều có thể buffer các gói tin, nếu snort tốn quá nhiều thời gian để xử lý
gói tin trong buffer thì các gói tin này sẽ bị drop. Khi gói tin bị drop snort sẽ
không có đủ thong tin cần thiết để có thể phát hiện hành động tấn công mặc dù ở chế
độ inline drop gói tin thì đồng nghĩa với việc hành động tấn công cũng bị drop theo.
Ngoài ra việc này còn làm cho việc kết nối trong m