7. 10/1/2009 IDS Snort Host IDS - HIDS Network - NIDS HIDS chỉ quan sát các host , hệ điều hành, hoạt động của ứng dụng (thường làm những công việc như phân tích log, kiểm tra tính toàn vẹn…) NIDS nhìn toàn cảnh luồng dữ liệu trên mạng (NIDS thường được coi như là sniffer) Chỉ phát hiện những cuộc tấn công đã thành công. NIDS phát hiện những cuộc tấn công tiềm năng. Hoạt động hiệu quả trong những môi trường chuyển mạch, mã hóa, tốc độ cao. Rất khó hoạt động trong những môi trường này.
8. 10/1/2009 IDS Snort PREPROCESSORS OUTPUT SENSOR DETECTION ENGINE ALERT SYSTEMS LOGGING SYSTEMS
17. 10/1/2009 IDS Snort Chiến lược triển khai IDS phụ thuộc vào chính sách bảo mật và tài nguyên cần bảo vệ. Càng nhiều IDS thì đồng nghĩa với việc hệ thống chậm đi và chi phí bảo trì sẽ tăng lên.
Hình trên mô tả cấu trúc chuẩn của một hệ thống IDS. Mỗi IDS đều bao gồm các thành phần cơ bản: Sensor (là một packet sniffer) Preprocessors Detection Engine Output (Alerting System và Logging System ) Các thành phần này làm việc này làm việc với nhau để phát hiện các tấn công cụ thể và tạo ra output đã được quy định trước
Packet Sniffer là một thiết bị (có thể là phần cứng hoặc là phần mềm) được gắn vào trong hệ thống mạng, có chức năng lắng nghe tất cả các dữ liệu được trao đổi trên hệ thống mạng. Các dữ liệu này sẽ được IDS dùng để phân tích nhằm phát hiện nguy cơ tấn công. Một điểm cần lưu ý là các máy tính này thường gắn 2 interface, đối với interface dùng để lắng nghe dữ liệu trên mạng sẽ được đưa về promiscuous mode (hay còn gọi là trạng thái passsive), khi ở trạng thái này, card mạng sẽ lắng nghe tất cả các dữ liệu trao đổi trên mạng. Interface còn lại được người quản trị sử dụng để theo dõi hoạt của IDS.
Khi cài đặt Snort, mặc định đã bao gồm một số preprocessor, chẳng hạn như Frag3, Stream4, Stream5, Flow, Portscan, HTTP Inspect.
HIDS có hai điểm khác biệt khi triển khai so với NIDS. HIDS chỉ theo dõi được host mà nó đang được cài đặt và card mạng hoạt động ở trạng thái bình thường là non-promiscuous (hay còn gọi là trạng thái active). Khi triển khai theo mô hình HIDS có một số điểm thuận lợi như sau: Card mạng chỉ cần hoạt động ở chế độ bình thường nên không cần phải trang bị thêm card mạng mới, bởi vì không phải tất cả các card mạng đều có khả năng chuyển sang trạng thái promiscuos . Khi hoạt động ở chế độ bình thường sẽ không yêu cầu nhiều xử lý của CPU so với trạng thái promiscuous. Do chỉ theo dõi cho một host cụ thể nên HIDS có thể theo dõi sâu hơn về những thông tin của hệ thống như system calls, những thay đổi trong file hệ thống, system logs. Người quản trị có thể linh động cấu hình tập hợp các rule cho từng host cụ thể. Ví dụ như không cần phải sử dụng rule để phát hiện tấn công DNS trong khi một máy tính không chạy dịch vụ DNS. Do đó có thể giảm bớt những rule không cần thiết, giúp tăng cường hiệu suất và giảm thiểu những xử lý quá tải.
Trước phiên bản 2.6, Snort chỉ hỗ trợ static plug-in. Khi cần gắn thêm plug-in, trước hết cần phải stop Snort, sau đó phải biên dịch lại toàn bộ Snort cùng với plug-in mới. Bắt đầu từ phiên bản 2.6 trở về sau, Snort hỗ trợ dynamic plug-ins (cần lưu ý trong lần biên dịch đầu tiên phải biên dịch với tham số --enable-dynamic-plugin để kích hoạt chức năng này). Với dynamic plug-ins, ta có thể xây chép trực tiếp plug-in vào thư mục plug-in của Snort, thêm khai báo mới trong file cấu hình, sau đó chỉ cần reststart lại Snort. API của static plug-ins và dynamic plug-ins không khác nhau nhiều.
Cách tổ chức phân cấp này hữu dụng khi một số giới hạn các host được quan tâm hoặc bạn muốn xem thoáng qua các địa chỉ IP của các host được bắt giữ. Tuy nhiên, thư mục log có thể ngày càng nhiều vì sự gia tăng thư mục và các file. Nếu bạn ghi log tất cả lưu lượng trên một mạng lớn thì có thể sẽ bị tràn inodes ( Unix giới hạn tổng số file trong một file hệ thống) trước khi bị tràn bộ nhớ. Nếu một người nào đó thực hiện việc quét mạng của bạn và ánh xạ tất cả 65536 cổng TCp cũng như 65536 cổng UDP, bạn sẽ đột ngột có hơn 131000 file trong một thư mục đơn. Sự bùng nổ file này có thể là một thử thách lớn cho bất kì một máy nào, và rất dễ trở thành cách tấn công DoS. Việc ghi log theo kiểu nhị phân có thể đọc được bởi Snort, tcpdump hoặc ethereal. Cách này làm tăng tốc độ và khả năng vận chuyển của việc bắt giữ gói tin. Hầu hết các hệ thống có thể bắt giữ và ghi log với tốc độ 100 Mbps mà không có vấn đề gì. Để ghi log các gói tin theo kiểu nhị phân, sử dụng –b switch.
Action là phần đầu tiên của trong luật Snort. Nó cho ta biết snort sẽ xử lý như thế nào khi bắt gặp gói tin thỏa các điều kiện. Action chỉ thực hiện khi gói tin thỏa tất cả các điều kiện trong luật. Có 5 mức action khác nhau : Alert : Được sử dụng để gởi thông điệp cảnh khi Snort bắt gặp gói tin thỏa các điều kiện trong luật. Bạn có thể gửi thông báo ra file hoặc cửa sổ dòng lệnh. Snort sẽ gửi ra thông điệp cảnh báo và ghi chú lại vào file log. Log : Được sử dụng để ghi chú lại một gói dữ liệu. Có thể ghi chú vào file log hoặc cơ sở dữ liệu. Dữ liệu có thể được ghi lại ở những mức khác nhau bằng cách chỉ định bởi các tham số trong cửa sổ dòng lệnh hoặc trong file cấu hình. Pass : Khi sử dụng action này Snort sẽ cho dữ liệu đi qua. Action này rất quan trọng giúp cho snort chạy nhanh hơn trong trường hợp bạn không muốn kiểm tra gói tin. Active : Được sử dụng để tạo ra thông báo và thực hiện tiếp tục một luật khác để kiểm tra các điều kiện nhiều hơn. Luật được gọi thực hiện tiếp tục phải có action là Dynamic. Dynamic : Được gọi bởi một luật khác sử dụng action active. Nếu bạn chạy snort ở chế độ inline, bạn có thêm các tùy chọn Drop : làm cho iptables hủy bỏ gói dữ liệu và ghi chú lại. Reject : giống như drop action nhưng sau đó sẽ gửi TCP reset nếu giao thức là TCP hoặc thông báo “ICMP port unreachable” nếu giao thức là UDP. Sdrop : iptables hủy gói tin nhưng không ghi chú lại. Định nghĩa Action : Có thể định nghĩa kiểu báo động cho luật trong trường hợp bạn muốn các cảnh báo được chi tiết hơn. Có thể sử dụng các kiểu action có sẵn trong luật của snort.
Snort sử dụng ký tự “!” để loại trừ địa chỉ. Khi sử dụng kí tự này, snort sẽ không kiểm tra dữ liệu đến và đi từ địa chỉ này. Kí tự “->” : bên trái direction là địa chỉ và cổng nguồn, bên phải direction là địa chỉ và cổng đích. Kí tự “<-“ cho ta biết gói dữ liệu có địa chỉ và cổng đi từ bên phải qua bên trái direction. Kí tự “<>” rule sẽ áp dụng chiều đi của dữ liệu từ cả 2 hướng. kí tự này sử dụng khi bạn muốn kiểm soát dữ liệu trên cả 2 hướng client và server
Đây là dạng tấn công làm ngập gói tin ICMP ECHO REPLY. Sự khác biệt lớn giữa nó với gói tin ICMP ping “thật” là ở 2 trường: icmp_id = 0x00 và sequence number = 0x00 (gói ping thật có id # 0,sequence number # 0). Ngoài ra attcaker thường tăng kích thước payload mặc định của gói tin ping (32 byte) để nhanh chóng làm ngập mạng victim.
Đây là dạng tấn công chiếm dụng 100% tài nguyên CPU bằng các gói tin IP. Đặc điểm nhận dạng là nó có kích thước bằng 408 byte cho mỗi gói tin IP phân mảnh. Attacker thường lợi dụng sự phân mảnh để đánh lừa IDS Từ khóa fragbits : Tiêu đề IP (IP header) chứa 3 cờ bit, dùng để phân mảnh và tái hợp gói IP. Chức năng các cờ như sau: · Bit dành riêng (RB – Reserved Bit), dùng cho tương lai. · Bit không phân mảnh (DF – Don’t Fragment Bit). Nếu bit này bật, nó cho biết gói IP sẽ không phân mảnh. · Bit có nhiều phân mảnh (MF – More Fragments Bit). D tương đương DF. Tương tự, R là RB, M là MF. Bạn cũng có thể dùng dấu “!” trong rule. Ngoài ra, đi chung với “D,R,M”, ta cũng thường thấy các từ “+,-”. Nó có ý nghĩa, nếu là “+” tức là gắn thêm bit cờ với những bit khác, nếu là “-” thì bỏ bớt một số bit.
Teardrop sử dụng gói tin UDP có chỉ số ID trong IP header là 242.Gói tin này là gói có nhiều phân mảnh