Đồ án Tìm hiểu và nghiên cứu hệ thống phần mềm phát hiện và phòng chống xâm nhập

LỜI CẢM ƠN 1 MỤC LỤC 2 MỞ ĐẦU 5 CHƯƠNG I 7 TỔNG QUAN VỀ HỆ THỐNG PHÁT HIỆN XÂM NHẬP 7 1.1. Tổng quan về các nguy cơ an ninh. 7 1.1.1. Những kiểu tấn công nhằm vào điểm yếu của hệ thống. 7 1.1.1.1. Kiểu tấn công thăm dò. 7 1.1.1.2. Kiểu tấn công truy cập. 8 1.1.1.3. Kiểu tấn công từ chối dịch vụ. 9 1.1.1.4. Kiểu tấn công qua ứng dụng web. 10 1.1.2. Vấn đề bảo mật hệ thống mạng. 12 1.1.2.1. Các vấn dề chung về bảo mật hệ thống mạng. 12 1.1.2.2. Khái niệm bảo mật hệ thống mạng máy tính. 13 1.1.2.3. Lỗ hổng bảo mật và phương thức tấn công mạng. 14 1.1.2.4. Vấn đề bảo mật cho hệ thống mạng doanh nghiệp. 16 1.2. Tổng quan về hệ thống phát hiện và phòng chống xâm nhập. 17 1.2.1. Định nghĩa. 17 1.2.2. Vai trò của hệ thống phát hiện xâm nhập IDPS. 18 1.2.3. Những ưu điểm và hạn chế của hệ thống. 19 1.2.4. Kiếm trúc chung của hệ thống phát hiện xâm nhập. 19 1.2.4.1. Phân loại hệ thống phát hiện xâm nhập IDPS. 19 1.2.4.2. Mô hình, cấu trúc và hoạt động của hệ thống. 21 CHƯƠNG II 30 HỆ THỐNG PHẦN MỀM PHÁT HIỆN XÂM NHẬP SNORT 30 2.1. Tổng quan về Snort. 30 2.1.1. Khái niệm. 30 2.1.2. Các đặc tính. 30 2.2. Các thành phần của Snort. 32 2.2.1. Bộ phận giải mã gói. 32 2.2.2. Bộ phận xử lí trước. 33 2.2.3. Bộ phận phát hiện. 34 2.2.3.1. Những biểu thức thông thường cho SQL injection. 34 2.3.2.2. Những biểu thức thông thường cho CSS. 38 2.2.4. Hệ thống ghi và cảnh báo. 41 2.2.5. Bộ phận đầu ra. 41 2.3. Các chế độ làm việc của Snort. 42 2.3.1. Chế độ “lắng nghe” mạng. 42 2.3.2. Chế độ phát hiện xâm nhập mạng. 44 2.4. Làm việc với tập luật của Snort. 45 2.4.1. Luật dở đầu tiên: 46 2.4.2. Cấu trúc chung của luật trong Snort. 46 2.4.2.1. Rule header. 46 2.4.2.2. Rule option. 48 CHƯƠNG III 56 TRIỂN KHAI SNORT BẢO VỆ HÊ THỐNG MẠNG 56 3.1. Tiêu chí triển khai. 56 3.1.2. Một số chú ý khi triển khai. 56 3.1.2. Các hệ thống và mạng phải giám sát. 57 3.1.3. Tạo các điểm kết nối. 58 3.1.4. Lưu lượng mã hóa. 58 3.1.5. Bảo mật bộ cảm biến Snort. 59 3.1.6. Chọn một hệ điều hành 59 3.1.7. Cấu hình các giao diện 60 3.2. Xây dựng snort bảo vệ hệ thống mạng. 61 3.2.1. Tham khảo một số mô hình thực tế. 61 3.2.2. Xây dựng mô hình. 63 3.4. Triển khai cơ sở hạ tầng. 65 3.4.1. Cấu hình. 65 3.4.2. Cài đặt snort trong hệ thống ubuntu. 65 3.4.3. Cấu hình với file Snort.conf. 69 3.5. Phân tích snort bảo vệ hệ thống trước các cuộc tấn công. 75 3.5.1. Mô hình tấn công. 75 3.5.2. Tấn công Dos. 75 3.5.2.1. Kịch bản tấn công 75 3.5.2.2. Phân tích kỹ thuật tấn công của hacker. 76 3.5.2.3. Kết luận. 79 3.5.3. Tấn công sql injection. 79 3.5.3.1. Kịch bản tấn công. 80 3.5.3.2. Phân tích tấn công. 81 3.5.3.3 Kết luận. 85 KẾT LUẬN 86 1. Những vấn đề gặp phải khi sử dụng IDS. 86 2. IPS là giải pháp: 86 3. Đánh giá và xu hướng phát triển của IDS. 87 BẢNG KÝ HIỆU VIẾT TẮT 89 PHỤ LỤC HÌNH ẢNH 90 PHỤ LỤC CÁC BẢNG 91 TÀI LIỆU THAM KHẢO 92

doc92 trang | Chia sẻ: lvcdongnoi | Lượt xem: 3278 | Lượt tải: 2download
Bạn đang xem trước 20 trang tài liệu Đồ án Tìm hiểu và nghiên cứu hệ thống phần mềm phát hiện và phòng chống xâm nhập, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
này thì msg là từ khóa và "Detected confidential" là đối số của từ khóa Phần tiếp theo là các từ khóa được sử dụng trong phần option của luật Snort. Trường Rule option Mô tả trường Giải thích Ack: ; TCP header chứa một trường cknowledgement Number dài 32 bit. Trường này chỉ ra rằng sequence number kế tiếp của người gửi được mong đợi. Trường này chỉ có ý nghĩa khi cờ flag trong trường TCP được thiết lập. Classtype Name Tên được sử dụng cho việc phân loại. Tên được sử dụng với từ khóa classtype trong luật Snort. Description Mô tả ngắn về kiểu phân loại. Priority Thứ tự ưu tiên mặc định cho sự phân loại, có thể được chỉnh sửa bằng từ khóa priority. Priority càng thấp thì độ ưu tiên càng cao Offset : ; Từ khóa offset được sử dụng kết hợp với từ khóa content. Sử dụng từ khóa này, bạn có thể bắt đầu tìm kiếm từ một vị trí xác định so với vị trí bắt đầu của gói tin. Sử dụng một con số như là đối số của từ khóa này. Một đặc tính quan trọng của Snort là khả năng tìm thấy một mẫu dữ liệu trong một gói tin. Mẫu đó có thể tồn tại dưới dạng một chuỗi ASCII hoặc là các kí tự thập lục phân. Giống như virut, những kẻ xâm nhập cũng có các dấu hiệu và từ khóa content để có thể tìm ra các dấu hiệu trong các gói tin. Vì Snort phiên bản 1.x không hỗ trợ các giao thức ở lớp ứng dụng nên từ khóa này, cùng với từ khóa offset, cũng có thể được sử dụng để xem xét header của lớp ứng dụng. Depth: ; Từ khóa depth cũng được sử dụng kết hợp với từ khóa content để xác định giới hạn trên của việc so sánh mẫu. Sử dụng từ khóa này, bạn có thể xác định một vị trí so với vị trí bắt đầu. Dữ liệu sau vị trí này sẽ không được tìm kiếm để so mẫu. Nếu bạn dùng cả hai từ khóa offset và depth thì bạn có thể xác định một khoảng dữ liệu thực hiện việc so sánh mẫu. Nocase; Từ khóa nocase được sử dụng kết hợp với từ khóa content. Nó không có đối số. Mục đích của nó là thực hiện việc tìm kiếm trong trường hợp vô tình. Content_list:; Từ khóa content-list được sử dụng với tên của một file như là đối số của từ khóa này. File này sẽ chứa một danh sách các chuỗi sẽ được tìm kiếm trong một gói tin. Mỗi chuỗi được đặt trên các dòng khác nhau của file. Drsize: [] ; Từ khóa dsize được sử dụng để tìm chiều dài một phần dữ liệu của gói tin. Nhiều cách tấn công sử dụng lổ hổng tràn bộ đệm bằng cách gửi các gói tin có kích thước lớn. Sử dụng từ khóa này, bạn có thể tìm thấy các gói tin có chiều dài dữ liệu lớn hoặc nhỏ hơn một số xác định. Flags: ; Từ khóa flags được sử dụng để tìm ra bit flag nào được thiết lập trong header TCP của gói tin. Mỗi flag có thể được sử dụng như một đối số của từ khóa flags trong luật Snort. Những bit flag này được sử dụng bởi nhiều các công cụ bảo mật với nhiều mục đích trong đó có việc quét các cổng như nmap. Fragbits:; Sử dụng từ khóa này, bạn có thể tìm ra những bit RB (Reserved Bit), DF(Don't Fragment Bit), MF(More Fragments Bit) trong header IP có được bật lên hay không. Icmp_id: ; Option icmp_id được sử dụng để phát hiện một ID cụ thể được sử dụng với một gói tin ICMP. Icmp_seq: ; Option icmp_seq giống như từ khóa icmp_id. Itype: ; Header ICMP nằm sau header IP và chứa trường type. Từ khóa itype được sử dụng để phát hiện các cách tấn công sử dụng trường type trong header ICMP của gói tin. Icode: ; Trong gói tin ICMP, header ICMP đi sau header IP. Nó chứa một trường code. Từ khóa icode được sử dụng để phát hiện trường code trong header gói tin ICMP. Id: ; Từ khóa id được sử dụng để đối chiếu trường fragment ID của header gói tin IP. Mục đích của nó là phát hiện các cách tấn công sử dụng một số ID cố định. Ipopts: ; Header IPv4 cơ bản dài 20 byte. Bạn có thể thêm các tùy chọn vào header này ở cuối. Chiều dài của phần tùy chọn này có thể lên đến 40 byte. Các tùy chọn được sử dụng cho các mục đích khác nhau, bao gồm: + Record Route (rr). + Time Stamps (ts). + Loose Source Routing (lsrr). + Strict Source Routing (ssrr). Ip_proto: [!] ; Từ khóa ip_proto sử dụng plug-in IP Proto để xác định số giao thức trong header IP. Từ khóa này cần một con số giao thức là đối số. Bạn cũng có thể sử dụng tên giao thức nếu nó có thể phân giải bằng file /etc/protocols. Logto: ; Từ khóa logto được sử dụng để ghi log các gói tin vào một file đặc biệt. Msg:; Từ khóa msg được sử dụng để thêm một chuỗi kí tự vào việc ghi log và cảnh báo. Bạn có thể thêm một thông điệp trong hai dấu ngoặc kép sau từ khóa này. Priority: ; Từ khóa priority gán độ ưu tiên cho một luật. React: ; Từ khóa react được sử dụng với một luật để kết thúc một phiên, khóa một vài vị trí hoặc dịch vụ. Không phải tất cả các option với từ khóa này hoạt động. Để sử dụng từ khóa react, bạn nên biên dịch Snort với lệnh --enable-flexresp trong script cấu hình. Reference: ,; Từ khóa reference có thể thêm một sự tham khảo đến thông tin tồn tại trên các hệ thống khác trên mạng. Nó không đóng một vai trò nào trong cơ chế phát hiện. Có nhiều hệ thống để tham khảo như CVE và Bugtraq. Những hệ thống này giữ các thông tin thêm về các kiểu tấn công đã được biết. Bằng việc sử dụng từ khóa này, bạn có thể kết nối đến các thông tin thêm trong thông điệp cảnh báo. Resp Từ khóa resp là một từ khóa cực kì quan trọng. Nó có thể được sử dụng để đánh bại các hành vi của hacker bằng cách gửi các gói tin trả lời cho một host mà tạo ra một gói tin thỏa luật. Từ khóa này cũng được biết như là Flexible Response (FlexResp) và được dựa trên FlexResp plug-in. Plug-in nên được biên dịch vào Snort, sử dụng lệnh (--with-flexresp)trong script cấu hình. Rev: ; Từ khóa rev được thêm vào option của luật Snort để chỉ ra số revision của luật. Nếu bạn cập nhật luật, bạn có thể sử dụng từ khóa này để phân biệt giữa các phiên bản. Các module output cũng có thể sử dụng con số này để nhận dạng số revision. Rpc: ; Từ khóa rpc được sử dụng để phát hiện các yêu cầu RPC cơ bản. Từ khóa này chấp nhận 3 số như là đối số. Sameip; Từ khóa sameip được sử dụng để kiểm tra địa chỉ nguồn và đích có giống nhau hay không. Nó không có đối số. Seq: ; Từ khóa seq trong luật Snort có thể được sử dụng để kiểm tra số thứ tự sequence của gói tin TCP. Flow Từ khóa flow được sử dụng để áp dụng một luật lên các gói tin di chuyển theo một hướng cụ thể. Bạn có thể sử dụng các option với từ khóa để xác định hướng. Các option sau đây có thể được sử dụng với từ khóa này: + To_client + To_server + From_client + From_server Session: [printable|all]; Từ khóa có thể được sử dụng để gạt bỏ tất cả dữ liệu từ một phiên TCP. Sid: ; Sử dụng SID, các công cụ như ACID có thể biểu diễn luật thật sự tạo ra một cảnh báo cụ thể. Tag: , count>,[, direction] Từ khóa tag là một từ khóa rất quan trọng khác có thể được sử dụng để ghi log các dữ liệu thêm vào từ (hoặc đến) một host xâm nhập khi một luật được kích hoạt. Dữ liệu thêm vào có thể được phân tích sau này một cách chi tiết hơn. Tos: ; Từ khóa tos được sử dụng để phát hiện một giá trị cụ thể trong trường TOS (Type of Service) của header IP. Ttl: ; Từ khóa ttl được sử dụng để phát hiện giá trị Time to Live trong header IP của gói tin. Từ khóa này có thể được sử dụng với tất cả các kiểu giao thức được xây dựng trên IP như ICMP, UCP và TCP. Sử dụng từ khóa ttl, bạn có thể tìm ra nếu có một người cố gắng traceroute mạng của bạn. Vấn đề duy nhất là từ khóa cần một giá trị TTL chính xác. Uricontent: [!] "content string"; Từ khóa uricontent giống với từ khóa content ngoại trừ việc nó được sử dụng để tìm một chuỗi chỉ trong phần URI của gói tin. Bảng 3: Rule option. CHƯƠNG III TRIỂN KHAI SNORT BẢO VỆ HÊ THỐNG MẠNG 3.1. Tiêu chí triển khai. Khi triển khai một hệ thống snort ta cần vạch định ra hệ thống làm việc ra sao, hệ thống phù hợp với mô hình mạng không? Hệ thống tiết kiệm nhất... Do vậy ta cần có một số tiêu chí khi triển khai hệ thống snort. 3.1.2. Một số chú ý khi triển khai. Một thử thách khi sử dụng một ứng dụng mã nguồn mở như Snort là thường xuyên có nhiều phiên bản mới. Những phiên bản mới này có thể có thêm các chức năng mà bạn muốn sử dụng. Vấn đề duy nhất là thỉnh thoảng các chức năng này làm cho cách thực hiện các việc cũ bị thay đổi hoặc bị thay thế (ví dụ như tiền xử lí portscan2 và conversation bị thay thế bằng flow-portscan). Hãy kiểm tra các phiên bản và chức năng mới này trước khi nâng cấp. Thỉnh thoảng, các chức năng mới cũng có một số lỗi. Tuy nhiên, việc kiểm tra mã nguồn mở phiên bản beta cùng với các công ty và nhà phát triển được thực hiện bởi Sourcefire (một công ty bán phiên bản thương mại của Snort) đã loại trừ hầu hết các lỗi trước khi chúng được phát hành. Làm thế nào để bạn biết được mình bị tấn công hay bị hack. Theo khái niệm về phòng thủ theo chiều sâu (defense-in-depth), mỗi thiết bị trên mạng đóng một vai trò về bảo mật và các cách khác nhau có thể được triển khai để phát hiện hoặc ngăn chặn các cuộc tấn công. Việc triển khai NIDS không phải là tất cả những gì cần để có thể bảo mật cho hệ thống của bạn. Không có một thiết bị đơn nào có thể làm việc đó. NIDS là một lớp phòng thủ khác. Bạn vẫn cần cài đặt các bản vá bảo mật cho phần mềm hệ thống của bạn. Bạn vẫn cần cách li các hệ thống đối mặt với Internet thành các mạng riêng biệt (thường được gọi là DMZ). Bạn vẫn cần kiểm tra các log hệ thống. Một NIDS cung cấp sớm một cảnh báo rằng một người nào đó đang thăm dò bạn hoặc một sự tấn công đang được thực hiện vào hệ thống. Nếu bạn chỉ có hệ thống Windows trong mạng, việc sử dụng các luật mà theo dõi những sự tấn công vào hệ thống Unix sẽ chỉ là gây ra các cảnh báo nhầm. Nếu bạn đang chạy server web Apache, loại trừ các luật cảnh báo về Microsoft IIS mà có thể không ảnh hưởng đến server web của bạn 3.1.2. Các hệ thống và mạng phải giám sát. Thật là không thực tế khi mong đợi xem được tất cả lưu lượng giữa tất cả các hệ thống trên mạng một cách hiệu quả với NIDS. Sự ưu tiên của các hệ thống và các mạng là cần thiết. Các hệ thống cung cấp các dịch vụ cho Internet là lựa chọn đầu tiên. Những hệ thống này nguy hiểm hơn so với các mạng bên trong. Chúng cũng có thể cung cấp các dịch vụ cho khách hàng hoặc đối tác của bạn, điều cực kì quan trọng đối với mục đích của tổ chức của bạn. Quy tắc đầu tiên là cách li bất kì hệ thống nào cung cấp các dịch vụ cho cộng đồng Internet thành các mạng độc lập mà giới hạn truy cập đến các mạng bên trong. Cách sắp xếp này làm cho lưu lượng mạng dễ kiểm soát hơn. Cũng có một nhóm các server cung cấp các dịch vụ cho những người làm việc: print server, file server, mail server và cơ sở dữ liệu... Tác động của các cảnh báo nhầm gia tăng khi theo dõi lưu lượng mạng LAN bên trong. Việc trao đổi bình thường giữa các hệ thống Window này có thể tạo ra một khối lượng lớn các cảnh báo này. Hệ thống có giá trị nhất chính là cơ sở dữ liệu. Bạn có thể bổ sung cho cái thiếu của NIDS bằng các nhà quản trị mạng, bao gồm việc thực hiện tốt khi xây dựng hệ thống, sử dụng các phần mềm chống virus, và kiểm tra các log hệ thống. Điều này không có nghĩa là chúng ta sẽ bỏ qua các máy trạm, laptop, và các thành phần khác của mạng bên trong. Người ta đề nghị rằng lưu lượng giữa những hệ thống này và Internet nên được kiểm soát bằng NIDS. Nếu bạn có một kết nối WAN đến các đối tác, chi nhánh, một bộ cảm biến trên các kết nối này là cần thiết. Vị trí chính xác của bộ cảm biến được xác định dễ hơn bằng cách tìm kiếm những chỗ nghẽn cổ chai – kết nối giữa các mạng này là điểm rất tốt. Điểm giữa mạng của bạn và Internet là một sự lựa chọn dễ dàng. Như đã đề cập ở trên, các kết nối WAN là các điểm quan trọng. Hãy nhớ đặt các server bên trong vào các mạng riêng biệt để lưu lượng giữa các mạng chứa người sử dụng và các server có thể được kiểm soát. Còn một vấn đề: bạn muốn đặt bộ cảm biến bên phía Internet của firewall (bên ngoài) hay là phía bên trong. Nếu bạn đặt bên ngoài, bộ cảm biến thấy tất cả các tấn công vào mạng. Nếu là bên trong, ta có thể sử dụng bộ cảm biến cho nhiều mục đích hơn, vì chỉ có những lưu lượng nào được firewall cho phép mới được giám sát. 3.1.3. Tạo các điểm kết nối. Những thiết bị switch tốc độ cao chỉ chuyển lưu lượng đến những cổng trong cuộc trao đổi – làm cho việc nghe trộm cuộc trao đổi đó với bộ cảm biến NIDS là không thể. Một vài nhà quản trị cắm một hub nhỏ vào đường truyền lưu lượng mà họ muốn xem. Tuy cách này vẫn hoạt động nhưng nó không tin cậy bằng các switch dành cho doanh nghiệp. Có rất nhiều thiết bị phần cứng có thể tạo một bản sao của lưu lượng di chuyển trên mạng. Một vài là sản phẩm thương mại và những cái khác có thể được xây dựng theo các hướng dẫn trên Internet. Giải pháp thương mại thường được sử dụng, nhưng có một điểm lỗi tiềm tàng đối với các cáp được nghe trộm. Một giải pháp tốt hơn là sử dụng các switch của Cisco. Nó có thể tạo ra các sao chép của lưu lượng từ một hoặc nhiều cổng và gửi nó ra một cổng được chỉ định mà bạn sẽ cắm bộ cảm biến vào. Đây được gọi là SPAN port (Switched Port Analyzer) của Cisco. Bạn có thể thu thập được lưu lượng từ một cổng đơn, tập hợp lưu lượng từ nhiều cổng, thậm chí là các cổng trên các switch ở xa. 3.1.4. Lưu lượng mã hóa. Bạn có thể muốn sử dụng Snort để giám sát các giao dịch thương mại điện tử quan trọng. Lưu lượng này được mã hóa bằng SSL - làm cho giao dịch được bảo mật hơn. Khi đó, Snort không thể đối chiếu nội dung của một gói tin được mã hóa với các dấu hiệu trong file luật. Mục đích của việc mã hóa lưu lượng là làm cho nó không thể bị can thiệp hoặc giám sát. Một giải pháp cho phép lưu lượng web vẫn được mã hóa nhưng cho phép Snort đối chiếu với các dấu hiệu xâm nhập là sử dụng một proxy SSL. Proxy SSL có nhiều tên như Content Switch, SSL Accelerator, và SSL Proxy. Thiết bị này nằm giữa client và server và giải quyết nhiệm vụ mã hóa lưu lượng. Lưu lượng từ web server đến proxy SSL không được mã hóa còn lưu lượng từ proxy và web client thì được mã hóa. Đặt bộ cảm biến Snort giữa web server và proxy sẽ cho phép lưu lượng được giám sát. Một ưu điểm khác của cách thực thi này là khả năng chuyển trách nhiệm mã hóa của CPU cho một thiết bị ủy quyền, cho phép web server hoạt động hiệu quả hơn. Các proxy SSL cũng thường thực hiện các nhiệm vụ khác như cân bằng tải hoặc xác thực. 3.1.5. Bảo mật bộ cảm biến Snort. Một điều hiển nhiên rằng bảo vệ hệ thống chịu trách nhiệm giám sát và duy trì sự bảo mật cho các mạng là một việc cực kì quan trọng. Bạn không chỉ cần bảo vệ hệ thống NIDS mà còn phải bảo vệ các server syslog, server xác thực, các công cụ giám sát và quản trị. Một kiểu triển khai là mạng quản trị. Mạng này có một firewall riêng và các sự truy cập đến nó chịu sự điều khiển chặt chẽ. Firewall chỉ mở những cái cần cho việc giám sát lưu lượng. Việc quản lý chặt chẽ hệ thống Snort là rất quan trọng. Các hệ điều hành nên được cấu hình theo chuẩn công nghiệp và thường xuyên cập nhật các bản vá lỗi, cập nhật. Xét cho cùng, một bộ cảm biến IDS có thể truy cập đến hầu hết các hệ thống nhạy cảm của bạn – một tình huống nguy hiểm. 3.1.6. Chọn một hệ điều hành Có nhiều việc để suy nghĩ và đưa ra quyết định như sau: a). Khả năng hỗ trợ. Rất thông thường, hãy quyết định chọn hệ điều hành nào được sử dụng dựa trên những gì mà bạn biết. Chọn một hệ điều hành mà bạn biết cấu hình và bảo quản hiệu quả. Nếu bạn biết rõ về Windows nhưng không biết gì về Linux, hãy sử dụng Windows. Hầu như những tài nguyên web được sử dụng để chạy Snort thiên về cài đặt nền tảng Linux. b). Sự hoạt động. Mọi người thừa nhận rằng mạng trên Linux và BSD thì nhanh hơn mạng Windows. Theo kinh nghiệm của các chuyên gia bảo mật, dường như bộ cảm biến Linux có thể giám sát mức độ băng thông cao hơn Windows với một cấu hình định sẵn. Điều đó làm cho bạn cảm thấy Snort được viết cho hệ điều hành Unix. c). Sự ổn định. Người ta đã từng cho rằng Linux và BSD thì ổn định hơn Windows nhiều. Điều đó thật sự không thật đúng đối với các hệ thống Windows được cấu hình và vá lỗi tốt. d). Bảo mật. Có nhiều việc làm để bảo mật cho hệ thống Windows. Số lượng các bản vá lỗi cho các dịch vụ Windows là rất nhiều. Cũng có các bản vá lỗi cho những hệ điều hành khác và các dịch vụ Unix nhưng thường là ít hơn. Và vì hệ điều hành Unix có khuynh hướng chạy ít dịch vụ hơn nên bạn sẽ có ít lỗ hổng hơn. Về nhiệm vụ có liên quan đến bảo mật, nhiều chuyên gia sử dụng Linux hay BSD hơn là Windows. 3.1.7. Cấu hình các giao diện Cùng với việc tạo ra một mạng quản lý, có nhiều bước phải thực hiện để bảo mật cho hệ thống của bạn. Các bộ cảm biến Snort nên được cấu hình với ít nhất 2 giao diện. Một giao diện trên mạng quản trị, tất cả các lưu lượng cảnh báo và quản trị dùng giao diện này, tránh cho nó khỏi những con mắt tò mò. Snort sẽ sử dụng giao diện kia để giám sát. Giao diện này sẽ không được cấu hình với một địa chỉ IP, vì vậy nó sẽ không thể bị thấy bởi các host trên mạng. Việc giữ các giao diện lắng nghe “vô hình” với các hệ thống khác trên mạng làm cho việc bảo mật bộ cảm biến dễ dàng hơn. a). Tắt các dịch vụ không cần thiết. Nếu một dịch vụ không cần thiết cho chức năng của một server, ta không nên cài đặt hoặc bật nó lên. Càng ít dịch vụ chạy trên một hệ thống, càng ít các vấn đề cần phải bảo mật. b). Cập nhật các bản vá lỗi. Ngày càng xuất hiện nhiều các tấn công mới, vì vậy bạn phải thường xuyên cập nhật và vá lỗi hệ thống. Điều này đúng với bất kì hệ điều hành nào mà bạn sử dụng. c). Sử dụng các cách xác thực mạnh. Khi có thể, hãy sử dụng các phương pháp xác thực mạnh hơn việc chỉ đơn giản là username và password. Hãy bắt người dùng thay đổi password định kì, hủy tài khoản sau một số lần đăng nhập không thành công... d). Giám sát hệ thống tạo log. Hệ thống được cấu hình để tạo ra các log là rất quan trọng và các log đó được xem lại thường xuyên để biết được các vấn đề về hệ thống, phần cứng, cấu hình...(bao gồm cả các dấu hiệu xâm nhập). Nếu có thể, gửi các log đến một server syslog tập trung (nên được đặt trong mạng quản lý). Điều này làm cho việc xem các log và thiết lập một vài sự liên quan của các sự kiện trên nhiều mạng dễ dàng hơn. 3.2. Xây dựng snort bảo vệ hệ thống mạng. 3.2.1. Tham khảo một số mô hình thực tế. Dưới đây là một số mô hình mạng đã được triển khai và có tính hiệu quả cao để bảo vệ hệ thống mạng. a). Mô hình mạng bảo vệ nhiều lớp. Hình 20: Hệ thống mạng bảo vệ nhiều lớp. Mô hình này đưa ra một hệ thống được bảo vệ nghiêm ngặt. Bởi hệ thống smoothwall, snort_inline, honeywall. Mục tiêu của nó đưa ra một bộ mẫu các cuộc tấn công vào hệ thống nhăm đưa vào snort thông tin dữ liêu của các cuộc tấn công đó được snort ghi lại và đưa ra cảnh báo và ngăn chăn ngay lập tức các dấu hiệu tấn công vào hệ thống mạng. Với hệ thống trên các cuộc tấn công nhanh chóng bị chăn lại mà vẫn đảm bảo được hệ thống hoạt đông thông suốt. b). Snort trên solaris. Hình 21: Hệ thống snort trên solaris. Hệ thống phát hiện xâm nhập snort được đặt tại hệ thống máy chủ solaris nhăm bảo vệ hệ thống chia sẻ thông tin. Với hệ thống trên snort dễ dang cảnh báo tới hệ thống bên trong mạng và người dùng rằng có sự truy cập bất hợp pháp đến dữ liệu. Giúp người dùng trong hệ thống mạng được bảo vệ an toàn mà hệ thống luôn gọn nhẹ không cồng kềnh với chi phí thấp nhất. c). Mô hình dữ liễu kiểm soát snort_inline. Hình 22: Snort inline. Kiểm soát dữ liệu là một quá trình dùng để kiểm soát dung lượng, lưu lượng truy cập từ hệ thống honeynet lên mạng công cộng. Mục đích của hệ thống này là kiểm soát được luồng dữ liệu để bảo vệ hệ thống mạng. Trong hệ thống này honeynet có nhiệm vụ là một hệ thống mạng ảo dùng để thu thập thông tin về các cuộc tấn công, cơ chế của cuộc tấn công đó và cung với hệ thống snort_inline đưa ra các biện pháp phòng và chống lại các nguy cơ tấn công. Các gói tin đi ngang qua các hệ thống kiểm soát dữ liệu từ Internet vào honeynet bằng cách sử dụng khung layer2. Các dữ liệu trong hệ thống kiểm soát trực tiếp giữa các honeynet và Internet, chụp lại, và kiểm tra, kiểm soát các gói tin khi di chuyển. Các vòng tròn màu đỏ trong biểu đồ dưới đây phản ánh rằng việc triển khai thực hiện. Hệ thống kiểm soát dữ liệu là một sự kết hợp tường lửa và hệ thống phát hiện xâm nhập snort_inline. Với hệ thống trên ta thấy khá mạnh mẽ. Với hệ thống trên snort-Inline ở giữa Internet và Honeynet tại đây luồng dữ liệu được kiểm soát với độ an toàn tin cậy. 3.2.2. Xây dựng mô hình. Dưới đây em triển khai một số mô hình đơn giản phù hợp với một số mạng trung bình và có quy mô không quá lớn. a). Mô hình dự kiến. Hình 23: Mô hình dự kiến. Ở vị trí này snort thu thập gói tin phân tích chúng và áp dụng luật đồng thời nếu gói tin không hợp lệ được cảnh báo hoặc là chặn chúng. b). Mô hình thực tế. Hình 24 : Mô hình thực tế. 3.4. Triển khai cơ sở hạ tầng. 3.4.1. Cấu hình. Snort DMZ Client Hệ điều hành Ubuntu 8.10 Winserver 2003 Win XP SP2 Địa chỉ IP Eth1: 192.168.40.2 Eth2: 192.168.160.2 192.168.160.133 192.168.160.4 RAM 512Mb 256 Mb 256 Mb Bảng 4: Cơ sở hạ tầng. 3.4.2. Cài đặt snort trong hệ thống ubuntu. a). Cài đặt Snort: # rpm -ivh snort-2.8.2-1.i386.rpm # rpm -ivh snort-mysql-2.8.2-1.i386.rpm b). Copy các rules: # tar -xzvf snortrules-snapshot-2.8.tar.gz # cd rules # cp * /etc/snort/rules c). Tạo cơ sở dữ liệu mysql để lưu trữ log và cảnh báo: # mysqladmin -u root password ‘123456’ # mysql -u root -p mysql>create database snort; mysql>grantCREATE,INSERT,SELECT,UPDATE,DELETE on snort.* to snort@localhost identified by ‘snort’; mysql>exit; # mysql snort -u root -p< /usr/share/snort- 2.8.1/schemas/create_mysql d). Cấu hình Snort: var HOME_NET 192.168.40.0/24 output database: log, mysql, user=snort, password=snort dbname=snort host=localhostoutput database: alert, mysql, user=snort,password=snort dbname=snort, host=localhost e). Cấu hình Snort: # service snortd start hoặc # snort -D -d -v -i eth0 -c /etc/snort/snort.conf f). Cài đặt ADODB, BASE: # tar -xzvf adodb505.tgz -C /var/www/html # tar -xzvf base-1.4.0.tar.gz -C /var/www/html # mv /var/www/html/adodb505 /var/ww/html/adodb # mv /var/www/html/ base-1.4.0 /var/ww/html/ base # chmod 757 /var/www/html/base g). Cài đặt PHP hỗ trợ đồ họa: # rpm -ivh php-gd-5.1.6-5.el5.i386.rpm # rpm -ivh php-pear-Image-Color-1.0.2-3.el5.noarch.rpm # rpm -ivh php-pear-Image-Graph-0.7.2-2.el5.noarch.rpm # rpm -ivh php-pear-Image-Canvas-0.3.0-3.el5.noarch.rpm # vi /etc/php.ini Bỏ ‘#’ trước dòng extension=msql.so Thêm dòng extension=gd.so Lưu lại cấu hình PHP, restart lại service HTTP. h). Cấu hình BASE thông qua web: Bước 1: gõ chỉ IP/base/setup Bước 2: Điền vào đường dẫn chứa ADODB: /var/www/html/adodb Bước 3: Database Name: snort Database Host: localhohost Database User Name: snort Database Password: snort Bước 4: Chọn Use Authentication System Điền đầy đủ các thông tin về Username và Password Bước 5: Chọn Create BASE AG 3.4.3. Cấu hình với file Snort.conf. File Snort.conf không phải là một file nhỏ. Nó chứa nhiều cài đặt và một phiên bản mới có thể thay đổi và gây ra nhầm lẫn. File snort.conf điều khiển mọi thứ về việc Snort sẽ giám sát cái gì, chúng tự bảo vệ như thế nào, các luật gì chúng sử dụng để tìm thấy lưu lượng nguy hiểm, và thậm chí là cách chúng giám sát các lưu lượng nguy hiểm tiềm tàng mà không được định nghĩa bằng các dấu hiệu như thế nào. Việc hiểu thấu đáo những gì trong file này và cách cấu hình chúng là rất quan trọng để triển khai thành công Snort như là IDS trong mạng của bạn. Ở chế độ báo động (alert), Snort yêu cầu phải có file cấu hình, files cấu hình mặc định lưu ở thư mục /etc/Snort.conf, nếu file nằm ở chỗ khác ta phải dùng cờ -c để chỉ tới files Các báo động sẽ lưu ở thư mục /var/log/Snort. Snort sẽ thoát ra nếu file .conf và thư mục log không có. Ta có thể chỉ định loại báo động nào ví dụ như full, fast,none hoặc Unix sockets bằng cách thêm cờ -A vào dòng lệnh Lần đầu nhìn vào file Snort.conf ta có thể nhìn thấy nhiều dòng chú thích rất dễ hiểu với màu sắc dễ phân biệt, ví dụ như tạo các biến, set các đường dẫn RULE_PATH để chỉ Snort các files rules ví dụ: var RULE_PATH ../rules Thay đổi đường dẫn đầy đủ nơi chứa các rules var RULE_PATH /etc/snort/rules Để cho Snort khởi động, sử dụng dòng lệnh: Snort -c /etc/snort/Snort.conf File Snort.conf điều khiển mọi thứ mà Snort thấy được, làm cách nào nó có thể chống lại các cuộc tấn công, những rules nào được sử dụng khi thấy nghi ngờ, và làm cách nào nó có thể phát hiện ra được những dấu hiệu nguy hiểm tìm tàng mặc dù nó không có các tín hiệu nhận dạng cụ thể để so sánh Các biến mặc định trong file snort.conf là: HOME_NET. Sử dụng để xác định địa chỉ IP của hệ thống bạn đang bảo vệ. EXTERNAL_NET Ta nên sử dụng kí tự “!” để xác định mọi thứ không nằm trong mạng bên trong của bạn. Ví dụ, hãy xem một luật sau đây: alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"ATTACK-RESPONSES directory listing"; content: "Volume Serial Number"; flow:from_server,established; classtype:bad-unknown; Có nhiều luật được thiết kế để giám sát các dịch vụ cụ thể. Việc đặt địa chỉ cho các server làm giảm số lượng các cảnh báo nhầm mà Snort tạo ra. Thình thoảng, server bạn liệt kê không có trên mạng. Ví dụ, bạn có thể không có các server DNS bên mạng trong. Các biến được sử dụng để định nghĩa các server chạy các dịch vụ mà có các luật xác định là: DNS_SERVERS SMTP_SERVERS HTTP_SERVERS SQL_SERVERS TELNET_SERVERS SNMP_SERVERS HTTP_PORTS Cổng 80 là cổng mặc định của HTTP. SHELLCODE_PORTS Thường được đặt là các cổng không phải là 80. ORACLE_PORTS Xác định cổng mà Orale lắng nghe. Mặc định, Oracle lắng nghe ở cổng 1521. AIM_SERVERS Biến này được sử dụng bởi các luật để giám sát lưu lượng peer-to-peer và instant messenger. Nó được cấu hình với các danh sách địa chỉ server AOL Instant Messenger. Danh sách này thay đổi theo thời gian. RULE_PATH Biến này cần được thiết lập đúng, nếu không, Snort sẽ không hoạt động.Nó chỉ đến vị trí các luật trong file hệ thống. Nếu các luật được đặt trong. File conf được chia ra thành nhiều đoạn, những nội dung chính của nó gồm: Thiết lập mạng và cấu hình các biến. Cấu hình phần giải mã và phát hiện. Cấu hình tiền xử lý. Cấu hình phần ngõ ra. File được trỏ tới. a). Thiết lập mạng và cấu hình các biến. Các biến trong file conf được tạo ra thường để dễ dàng hơn trong việc theo dõi các địa chỉ IP, hoặc các port TCP, UDP được chỉ định mà nó đang lắng nghe. Mặc định các biến thường để giá trị là any chỉ tất cả các địa chỉ IP mà nó nhận được, nó cũng có thể là nguyên nhân gây ra nhiều báo động sai. Để chị định 1 địa chỉ ip, đơn giản chỉ làm theo cách sau: Var HOME_NET 192.168.1.1 Hoặc khi muốn chỉ định nhiều địa chỉ cùng lúc, phải có dấu ngoặc vuông để chỉ định cho cả nhóm: Var HOME_NET [192.168.1.1,192.168.14.1,10.0.0.2] \ Ta cũng có cách khác để chỉ định luôn cả mạng: Var HOME_NET 10.10.10.0/24 Hoặc cũng có thể gộp cả 2 cách trên vào chung 1 nhóm: Var HOME_NET192.168.1.1,10.10.10.0/24,172.168.1.5/16,187.1.1.1/19] Nếu muốn chỉ định không dùng các ip này thì dùng thêm dấu “than”! nghĩa là “không”. Var EXTERNAL_NET !$HOME_NET Để chỉ định cho các port cũng làm tương tự ví dụng . Var ORACLE_PORTS 1521 Hoặc các port không phải là port 80. Var SHELLCODE_PORTS !80 Các biến mặc định trong Snort.conf. HOME_NET: Chỉ định địa chỉ mạng của mình đang bảo vệ. EXTERNAL_NET: Các mạng bên ngoài. Các biến để chỉ định các server đang chạy các service phục vụ cho hệ thống. DNS_SERVERS SMTP_SERVERS HTTP_SERVERS SQL_SERVERS TELNET_SERVERS SNMP_SERVERS …… Các port mặc định các biến khác: HTTP_PORTS SHELLCODE_PORTS ORACLE_PORTS AIM_SERVERS RULES_PATH b). Cấu hình phần giải mã và phát hiện. Snort sẽ giải mã cấu trúc các packet và so sánh cấu trúc theo những dấu hiệu đã được trang bị. Nếu packet có kích thước lạ, nhiều cấu hình lạ không bình thường, Snort sẽ báo động. Ta có thể tắt chức năng này. Mặc định tất cả báo động đều bật. Để tắt 1 loại báo động cụ thể nào đó, ta nên để dấu thăng # vào trước dòng lệnh thành dòng comment ghi chú Các tùy chọn cấu hình bộ giải mã là: # config disable_decode_alerts # config disable_tcpopt_experimental_alerts # config disable_tcpopt_obsolete_alerts # config disable_tcpopt_ttcp_alerts # config disable_tcpopt_alerts # config disable_ipopt_alerts c).Cấu hình tiền xử lý. Tiền xử lý phục vụ cho nhiều mục đích. Nó bảo đảm rằng dữ liệu trong các packet Snort đang theo dõi sẽ có cơ hội tốt nhất để so sánh với các tín hiệu nhận dạng mà Snort được trang bị. Chức năng khác của quá trình tiền xử lý là tự phòng thủ. Các cuộc tấn công được phát triển để lẩn tránh, vì thế người tấn công có thể lợi dụng làm những công việc mình cần. Chức năng frag2 và stream4 tiền xử lý có chức năng chính để chống lại các phương pháp này. Và chức năng cuối cùng cũng là chức năng quan trọng nhất là làm cho Snort có thêm chút thông minh để phát hiện ra các cuộc tấn công mang phong cách không bình thường mà Snort không được trang bị trong luật. frag2 Khi một packet đi từ mạng này qua mạng khác, nó thường cần phân mảnh thành các packet nhỏ hơn, bởi vì mạng thứ 2 sẽ giới hạn kích thước của packet và tất nhiên nhỏ hơn mạng đầu tiên. Và tất cả các packet nhỏ sẽ được sắp xếp lại khi đến nơi. Một trong những phương pháp của attacker là dùng các packet nhỏ để lừa firewall hoặc IDS. Ví dụ: rules của Snort đang dò tìm chuỗi /users.pwd trong các section của packet, một attacker có thể tạo ra một dãy các packet rất nhỏ chỉ chứa vài byte trong data của packet, mảnh đầu tiên có thể chứa /user , và cái packet phân mảnh thứ 2 có thể chứa s.pwd, các packet này sẽ không kích hoạt báo động bởi vì nó không giống các rules nào cả, frag2 preprocessor sẽ sắp xếp sự phân mảnh này vào chung và nó sẽ dễ dàng phát hiện sự ẩn dấu đó. Hoặc một ví dụ khác các attacker có thể đưa ra 1 dung lượng quá lớn các packet đã phân mảnh nó sẽ chiếm dung lượng của hệ thống và làm overload có thể Snort sẽ từ chối tất cả và ảnh hưởng tới các packet không liên quan, các tools mà attacker thường dùng là Fragroute, frag2 có các options để chống lại các dạng tấn công này stream4 Stream4 được thiết kế để bảo vệ Snort từ 1 dạng tấn công mới của người tấn công bằng cách gửi tràn ngập các gói tin chứa các chuỗi dữ liệu giống như trong luật để kích các báo động, cũng có khá nhiều công cụ dùng cho việc này nhưng Snort của có cách chống lại. Stream4 có 2 nhiệm vụ chính: sateful inspection (kiểm tra tính nguyên ven), awareness and session reassembly (nhận biết và sắp xếp các session). d). Cấu hình OUTPUT. Một trong những sức mạnh thật sự của Snort là các tùy chọn để xuất các cảnh báo và thông tin phát hiện xâm nhập. Nhiều nhà quản trị Snort sử dụng các ứng dụng của công ty thứ ba để giám sát và nghiên cứu thông tin tạo ra bởi Snort. Để làm được việc đó, Snort phải xuất dữ liệu theo một định dạng cụ thể. Output plug-ins thực hiện nhiệm vụ này. Lưu ý rằng việc sử dụng một vài plug-in này đòi hỏi nhà quản trị phải thực hiện một vài bước khi Snort được biên dịch. Ví dụ, để cho phép Snort xuất dữ liệu ra một cơ sở dữ liệu MySQL, MySQL client cần được cài đặt trên hệ thống Snort và tùy chọn --with-mysql phải được xác định với câu lệnh ./configure. Một vài tùy chọn chỉ sử dụng được trên các platform cụ thể. Ví dụ, chỉ hệ thống Window có thể log trực tiếp vào Microsoft SQL Server với plug-in mysql (hệ thống Unix phải dùng ODBC với plug-in odbc). Nhiều plug-in output có thể được bật, cho phép nhiều công cụ được triển khai bởi nhà quản trị. Snort có thể output vào các file log hoặc output ra console, nhiều administrator thích dùng các phần mềm của hãng thứ 3 (third party) để tăng thêm chức năng giám sát của Snort, các phần mềm data database đều có thể dùng được, lưu ý trước khi cài đặt Snort muốn dùng database nào thì cần chỉ rõ khi cài đặt ví dụ dùng MySQL, khi biên dịch source thêm vào - -mysql e).File được trỏ tới. Thành phần cuối cùng trong file snort.conf là các mục đính kèm. Câu lệnh include nói cho Snort đính kèm thông tin trong các file đặt trong file hệ thống Snort. Những file này bao gồm thông tin cấu hình và các file chứa luật mà Snort sử dụng để phát hiện xâm nhập. Đường dẫn mặc định nên được xác định sớm trong cấu hình. Sử dụng biến $RULE_PATH để chỉ vị trí của chúng, hoặc sử dụng tên đầy đủ để chỉ các file luật bạn muốn sử dụng. Các rules ta có thể download trên internet, khi down về ta muốn phân nhóm hoặc chỉnh sửa, độ ưu tiên các rules ta có thể cấu hình trong file classification.config, file reference.config gồm các links tới web site với các thông tin cho tất cả các alerts, include nó rất hữu tích, nhanh gọn. 3.5. Phân tích snort bảo vệ hệ thống trước các cuộc tấn công. 3.5.1. Mô hình tấn công. Hình 25: Mô hình tấn công. 3.5.2. Tấn công Dos. Định nghĩa về tấn công DoS: Tấn công DoS là một kiểu tấn công mà một người làm cho một hệ thống không thể sử dụng, hoặc làm cho hệ thống đó chậm đi một cách đáng kể với người dùng bình thường, bằng cách làm quá tải tài nguyên của hệ thống. Nếu kẻ tấn công không có khả năng thâm nhập được vào hệ thống, thì chúng cố gắng tìm cách làm cho hệ thống đó sụp đổ và không có khả năng phục vụ người dùng bình thường đó là tấn công Denial of Service (DoS). Mặc dù tấn công DoS không có khả năng truy cập vào dữ liệu thực của hệ thống nhưng nó có thể làm gián đoạn các dịch vụ mà hệ thống đó cung cấp. Như định nghĩa trên DoS khi tấn công vào một hệ thống sẽ khai thác những cái yếu nhất của hệ thống để tấn công. 3.5.2.1. Kịch bản tấn công Sử dụng ping of death tạo ra những gói tin ICMP tấn công vào hệ thống máy victim IP 192.168.160.4 Máy tấn công Máy nạn nhân IP:192.168.40.135 IP:192.168.160.4 OS:Window XP SP2 OS:Window XP SP2 Ram:512 Mb Ram:128 Mb Bảng 5: Máy tấn công dos. Yêu cầu đạt được máy bị tấn công (Victim) sẽ không sử dụng được dịch vụ hoặc là các dịch vụ bị tê liệt. Snort phát hiện ra có sự tấn công và cảnh báo tới nạn nhân và ghi vào log cuộc tấn công trên. Ta dùng phương phá ping of death để tấn công dos. Là thủ phạm sinh ra cực nhiều giao tiếp ICMP (ping) tới địa chỉ Broadcast của nhiều mạng với địa chỉ nguồn là mục tiêu cần tấn công. Kịch bản của nó là khi máy A ping tới máy B máy B reply lại hoàn tất quá trình. Khi ping tới địa chỉ Broadcast của mạng nào đó thì toàn bộ các máy tính trong mạng đó sẽ Reply lại A. Nhưng giờ thay đổi địa chỉ nguồn, thay địa chỉ nguồn là máy C và ping tới địa chỉ Broadcast của một mạng nào đó, thì toàn bộ các máy tính trong mạng đó sẽ reply lại vào máy C chứ không phải A và đó là tấn công Smurf. Kết quả đích tấn công sẽ phải chịu nhận một đợt Reply gói ICMP cực lớn và làm cho mạng bị đứt hoặc bị chậm lại không có khả năng đáp ứng các dịch vụ khác. Hình 26: Kiểu tấn công Smurf Attack. 3.5.2.2. Phân tích kỹ thuật tấn công của hacker. Đầu tiên ta dùng công cụ ipscaner quét dò tìm địa chỉ của nạn nhân. Ta biết được nạn nhân có địa chỉ ip là: 192.168.160.4. Hình 27: Quét địa chỉ mạng. Bắt đầu tấn công Dos với công cụ death_n_destruction. Hình 28: Công cụ tấn công dos. Tại máy nạn nhân ta nhấn Ctrl+Alt+Del. Ta thấy chỉ số CPU sử dụng tăng vọt. Hình 29: Chỉ số CPU sử dụng. Khi kẻ tấn công vào máy nạn nhận hệ thống snort là 1 hệ thống phát hiện xâm nhập mạng có chức năng quét, dò tìm những nguy cơ tấn cống mạng đang di chuyển trên mạng. #snort –Q –v –c –i eth2 /etc/snort/snort.conf –l /var/log/snortl Cú pháp này làm cho Snort phân tích gói nhị phân có tên gọi là article_binary, kết quả được cho ra bên dưới. Đầu ra của Snort để có thể xem xét chi tiết từng phần một. Hình 30: Snort phát hiện xâm nhập. Ta thấy cảnh báo đã được kích hoạt bởi một hành động tấn công. Bây giờ xem xét đến file alert.ids, đây chính là file có thể mang lại nhiều thông tin chi tiết về những gì đã xảy ra. Từ alerts trên ta thấy chi tiết về hacker sử dụng phương pháp tấn công hệ thống. Alert này được cảnh báo tới nạn nhân và người quản trị mạng. Mục đích cốt lõi của hệ thống snort phát hiện xâm nhập mạng là tìm ra các sự kiện xâm nhập, tấn công trong mạng lưu lượng mạng. Từ đó đưa ra những biện pháp phòng tránh. 3.5.2.3. Kết luận. Trong phần phân tích trên, em đã thấy tấn công được minh chứng khi sử dụng Snort. Hệ thống hoàn toàn có thể phát hiện ra các cuộc tấn cống nhằm vào hệ thống mạng. Đưa ra những cảnh báo kịp thời tới người dùng và người quản trị hệ thống như: Mô hình hệ thống cần phải được xây dựng hợp lý, tránh phụ thuộc lẫn nhau quá mức. Bởi khi một bộ phận gặp sự cố sẽ làm ảnh hưởng tới toàn bộ hệ thống. Xây dựng hệ thống lọc thông tin trên router, firewall… và hệ thống bảo vệ chống lại SYN flood. Chỉ kích hoạt các dịch vụ cần thiết, tạm thời vô hiệu hoá và dừng các dịch vụ chưa có yêu cầu hoặc không sử dụng. Xây dựng hệ thống định mức, giới hạn cho người sử dụng. Liên tục cập nhật, nghiên cứu, kiểm tra để phát hiện các lỗ hổng bảo mật và có biện pháp khắc phục kịp thời. Sử dụng các biện pháp kiểm tra hoạt động của hệ thống một cách liên tục để phát hiện ngay những hành động bất bình thường. Xây dựng và triển khai hệ thống dự phòng. 3.5.3. Tấn công sql injection. Định nghĩa tấn công sql injection: SQL injection là một kĩ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng trong việc kiểm tra dữ liệu nhập trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu để "tiêm vào" (inject) và thi hành các câu lệnh SQL bất hợp pháp (không được người phát triển ứng dụng lường trước). Hậu quả của nó rất tai hại vì nó cho phép những kẻ tấn công có thể thực hiện các thao tác xóa, hiệu chỉnh, … do có toàn quyền trên cơ sở dữ liệu của ứng dụng, thậm chí là server mà ứng dụng đó đang chạy. Lỗi này thường xảy ra trên các ứng dụng web có dữ liệu được quản lí bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, MS Access hay IBM DB2, Sysbase. Khi hacker gửi những dữ liệu (thông qua các form), ứng dụng Web sẽ thực hiện và trả về cho trình duyệt kết quả câu truy vấn hay những thông báo lỗi có liên quan đến cơ sở dữ liệu. Và nhờ những thông tin này mà hacker biết được nội dung cơ sở dữ liệu và từ đó có thể điều khiển toàn bộ hệ thống ứng dụng. 3.5.3.1. Kịch bản tấn công. Môi trường thử nghiệm trên một máy cục bộ Máy tấn công Máy webserver(Victim) Localhost Cài IIS, SQL server 2000 OS:Window XP SP2 OS:Window server 2003 Ram:512 Mb Ram:512 Mb IP: 192.168.40.135 IP: 192.168.160.133 Hacker sẽ tìm ra website bị dính lỗi SQL injection. Ở đây webserver bị dính lỗi SQL injection là Localhost. Hình 31: Kịch bản tấn công sql injection. 3.5.3.2. Phân tích tấn công. Trước khi kẻ tấn công vào nạn nhân thì phải nghiên cứu trước như tìm ra địa chỉ IP và các địa chỉ mạng của nạn nhân. Kẻ tấn công này có thể cũng đã cố gắng khai thác thông tin như các port có liên quan đến mạng đó. Kiểu thông tin này là rất quan trọng trong trường hợp kẻ tấn công đã tìm nhưng không có cách nào vào mạng sau khi đã thực hiện các hành động quét, liệt kê và giả mạo nó. Công cụ mà hacker sử dụng là Nmap. Nmap là một công cụ khá hữu dụng và được sử dụng nhiều. Khi ta dùng nmap quét địa chỉ mạng thì snort cũng thu được những gói tin sau: Nmap. Những thực hiện là gửi một yêu cầu ICMP echo đến mạng nạn nhân. Ta thấy rằng nó không được trang bị tại một cổng nào đó, bởi vì ICMP không sử dụng các cổng, nhưng lại được quản lý bởi bộ thông báo lỗi ICMP xây dựng bên trong ngăn xếp giao thức TCP/IP. Gói ICMP này cũng được dán nhãn bằng một số duy nhất, trong trường hợp này là 52997 để giúp ngăn xếp TCP/IP có thể kiểm tra được lưu lượng trả về, và liên kết nó với gói ICMP trước đó đã gửi. Gói tin ngay trên là đáp trả từ một mạng nạn nhân, trong biểu mẫu của một đáp trả (reply) ICMP echo. Chính vì vậy hacker biết được rằng có một máy tính hoặc một mạng đằng sau địa chỉ IP đó. Trang yêu cầu đăng nhập username và password. Hình 32: Đăng nhập web. Bây giờ kiểm tra xem trang có bị dính lỗi SQL injection không. Hình 33: Kiểm tra lỗi SQL Nhập vào ‘: nếu mà nó phun lỗi như thế này là bị dính lỗi SQL. Hình 34: Lỗi SQL injection Dùng các câu điều kiện đăng nhập vào hệ thống:dùng ‘or 1=1—. Hình 35: Xâm nhập web lỗi sql-injection Đăng nhập thành công hệ thống. Hình 36: Xâm nhập thành công Chạy Snort đã được kích hoạt: #snort –Q –v –c /etc/snort/snort.conf –i eth0 –A full Bây giờ tìm hiểu xem một luật được viết cho snort và tìm hiểu xem snort hiểu như thế sau: alert tcp !$HOME_NET 80 -> $HOME_NET any (msg:"SQL-injection"; content: "|08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17|"; itype: 8; depth: 32;) Snort chứa thông điệp báo động và thông tin sẽ được snort sử dụng để kiểm tra xem liệu luật đó có phù hợp (match) với gói tin không. 07/23-09:46:41.866911 192.168.40.135 -> 192.168.160.133 tcp TTL:128 TOS:0x0 ID:2403 ID:8474 Seq:256 ECHO 36 12 7B 39 1B C6 0B 00 08 09 0A 0B 0C 0D 0E 0F 6.{9............ 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ................ 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./ 30 31 32 33 34 35 36 37 01234567 Khi snort giám sát các gói tin xuyên qua mạng của. Luật trên yêu cầu snort thẩm tra tất cả các gói tin ICMP nào không phải bắt nguồn từ mạng “!$HOME_NET” và đến mạng “->HOME_NET”. Thông số depth trong luật được gán là 32, nghĩa là snort sẽ tìm trong 32 byte đầu của gói tin để tìm kiếm nội dung có trong trường “content”. Nếu nội dung của trường “content” trong luật phù hợp với nội dung trong gói tin (ở trong trường hợp này là từ byte số 9 đến byte 24), snort sẽ phát sinh ra một thông báo, thông báo này sẽ được log lại. Nội dung của thông báo được log lại là: "SQL-injection". Trường “itype” chỉ kiểu của một gói tin tcp, trong trường hợp này là 8 tức là một gói tin tcp. 3.5.3.3 Kết luận. Trong phần phân tích trên, em đã thấy snort làm đã phân tích gói tin trên mạng và hệ thống phát hiện ra các cuộc tấn cống nhằm vào hệ thống lỗi sql injection. Đưa ra những cảnh báo kịp thời tới người dùng và người quản trị hệ thống chữa lỗi trên một lỗi rất phổ biến với nhiều trang web thường mắc phải. KẾT LUẬN 1. Những vấn đề gặp phải khi sử dụng IDS. IDS thường xuyên đưa ra rất nhiều báo động giả (False Positives). Là gánh nặng cho quản trị an ninh hệ thống bởi nó cần được theo dõi liên tục (24 giờ trong suốt cả 365 ngày của năm). Kèm theo các cảnh báo tấn công là một quy trình xử lý an ninh rất vất vả. Không có khả năng theo dõi các luồng dữ liệu được truyền với tốc độ lớn hơn 600 Megabit trên giây. Theo những khách hàng đang sử dụng IDS rằng quản trị và vận hành hệ thống IDS là rất khó khăn, tốn kém và không đem lại hiệu quả tương xứng so với đầu tư. Sau khi phát biểu này được đưa ra, một số ý kiến phản đối cho rằng, việc hệ thống IDS không đem lại hiệu quả như mong muốn là do các vấn đề còn tồn tại trong việc quản lý và vận hành chứ không phải do bản chất công nghệ kiểm soát và phân tích gói tin của IDS. Cụ thể, để cho một hệ thống IDS hoạt động hiệu quả, vai trò của các công cụ, con người quản trị là rất quan trọng, cần phải đáp ứng được các tiêu chí sau: Thu thập và đánh giá tương quan tất cả các sự kiện an ninh được phát hiện bởi các IDS, tường lửa để tránh các báo động giả. Các thành phần quản trị phải tự động hoạt động và phân tích. Kết hợp với các biện pháp ngăn chặn tự động Kết quả là tới năm 2005, thế hệ sau của IDS-hệ thống tự động phát hiện và ngăn chặn xâm nhập IPS- đã dần khắc phục được các mặt còn hạn chế của IDS và hoạt động hiệu quả hơn nhiều so với thế hệ trước đó. 2. IPS là giải pháp: Một hệ thống chống xâm nhập(Intrusion Prevention System –IPS) được định nghĩa là một phần mềm hoặc một thiết bị chuyên dụng có khả năng phát hiện xâm nhập và có thể ngăn chặn các nguy cơ gây mất an ninh. IDS và IPS có rất nhiều điểm chung, do đó hệ thống IDS và IPS có thể được gọi chung là IDP- Intrusion Detection and Prevention. IPS ra đời khi nào, tại sao lại cần IPS chứ không phải là IDS? Trước các hạn chế của hệ thống IDS, nhất là sau khi xuất hiện các cuộc tấn công ồ ạt trên quy mô lớn như Code Red, NIMDA, SQL Slammer, một vấn đề được đặt ra là làm sao có thể tự động ngăn chặn được các tấn công chứ không chỉ đưa ra các cảnh báo nhằm giảm thiểu công việc của người quản trị hệ thống. Hệ thống IPS được ra đời vào năm 2003 và ngay sau đó, năm 2004 nó được phổ biến rộng rãi. Kết hợp với việc nâng cấp các thành phần quản trị, hệ thống IPS xuất hiện đã dần thay thế cho IDS bởi nó giảm bớt được các yêu cầu tác động của con người trong việc đáp trả lại các nguy cơ phát hiện được, cũng như giảm bớt được phần nào gánh nặng của việc vận hành. Hơn nữa trong một số trường hợp đặc biệt, một IPS có thể hoạt động như một IDS bằng việc ngắt bỏ tính năng ngăn chặn xâm nhập. Ngày nay các hệ thống mạng đều hướng tới sử dụng các giải pháp IPS thay vì hệ thống IDS cũ. 3. Đánh giá và xu hướng phát triển của IDS. IDS được ví như một chiếc chuông cảnh báo trộm để cảnh báo chủ nhà về những tấn công khả nghi. Vì là một giám sát thụ động nó không thể ngăn chặn tấn công để ngăn ngừa tổn hại hệ thống do người tấn công gây ra. Nhà quản trị mạng không chỉ đơn thuần muốn có thông tin về những tấn công trên mạng của họ mà còn muốn có khả năng ngăn chặn được những tấn công ấy. Cách duy nhất có thể bảo đảm an ninh cho một mạng là ngăn chặn được những cuộc tấn công, không cho chúng phá hoại những đích tấn công bằng cách loại bỏ tất cả lưu lượng khả nghi ngay khi chúng bị phát hiện và trước khi chúng ảnh hưởng đến đích. Xu hướng phát triển hiện nay của các hệ thống phát hiện xâm nhập được thay thế rất nhanh bởi các giải pháp IPS. Tuy nhiên, các hệ thống IDS sẽ không mất đi mà được tích hợp và phát triển cùng với các hệ thống ngăn chặn xâm nhập IPS trở thành một hệ thống phát hiện và ngăn chặn xâm nhập IDP. Hệ thống phát hiện và ngăn chặn xâm nhập IDP tích hợp trong cùng một sản phẩm khả năng nhận dạng và cảnh báo nhà quản trị mạng về hoạt động xâm nhập và tấn công (những khả năng này được cung cấp bởi các hệ thống phát hiện xâm nhập IDS) với sức mạnh của một thiết bị an ninh mạng (được cung cấp bởi tường lửa) có khả năng loại bỏ lưu lượng bất hợp pháp. Hiện nay, có rất nhiều công ty, các hãng lớn cung cấp các thiết bị phần cứng, phần mềm an ninh chuyên dụng bao gồm các tính năng tích hợp như: IDS, IPS, bức tường lửa, vv…có khả năng phòng chống và bảo vệ hệ thống mạng một cách có hiệu quả trước nguy cơ đe dọa tiềm tàng trên Internet. Tóm lại Với những tính nǎng ưu việt của mình, IDS dần chiếm lĩnh được sự quan tâm hàng đầu của các công ty, các nhà cung cấp dịch vô trong lĩnh vực an ninh mạng. Các sản phẩm IDS đang được nghiên cứu, phát triển cả về phần cứng lẫn phần mềm. IDS dần được hoàn thiện và triển khai phổ biến nhằm hỗ trợ các hệ thống bảo mật bức tường lửa thuần tuý hay hệ thống ngăn chặn tấn công IPS. Ngày nay, các hệ thống phát hiện xâm nhập IDS phát triển và tích hợp với hệ thống tường lửa, hệ thống ngăn chặn xâm nhập IPS thành các thiết bị chuyên dụng có khả năng phát hiện và ngăn chặn các nguy cơ đe dọa từ bên ngoài áp dụng cho quy mô mạng từ nhỏ đến lớn. Các thiết bị chuyên dụng này được phát triển mạnh bởi các hãng lớn như Juniper, Checkpoint, Cisco, Proventia vv…đã góp phần đảm bảo an ninh cho hệ thống mạng của chúng ta. Trong chương này trình bày một cái nhìn tổng quan về hệ thống phát hiện xâm nhập IDS, đưa ra mô hình, kiến trúc và cách thức hoạt động cũng như đưa ra những ưu điểm và nhược điểm của hệ thống này. BẢNG KÝ HIỆU VIẾT TẮT IDS Intrusion Detection System Hệ thống phát hiện xâm nhập. IPS Intrusion Prevention System IPS Hệ thống phòng chống xâm nhập HIDS Host-based Instrusion Detection System Hệ thống phát hiện và phát hiện và phòng chống xâm nhập trên máy trạm. NIDS Network–based Instrusion Detection System–NIDS Hệ thống phát hiện xâm nhập trên mạng. VPN Virtual Private Network Mạng riêng ảo SSL Secure Sockets Layer SQL Structure query language Ngôn ngữ truy vấn DNS Domain Name System Hệ thống tên miền CGI Common Gateway Interface Giao diện cổng thông thường TCP Transfer Control Protocol Giao thức điều khiển truyền thông. XSS Cross Site Scripting URL Uniform Resource location Định vị tài nguyên web HTTP Hyper Text Transfer protocol Giao thức truyền siêu văn bản Dos Denial of service Từ chối dịch vụ DDos Distributed Denial of service Từ chối dịch vụ phân tán IIS Internet Infomation Server Dịch vụ thông tin mạng LAN Local Area Network Mạng máy tính cục bộ PHỤ LỤC HÌNH ẢNH Hình 1: Tấn công thăm dò IP. 8 Hình 2: Tấn công Ddos. 9 Hình 3: Số liệu tấn công ứng dụng web. 11 Hình 4: Tấn công XSS. 12 Hình 5: Hệ thống phát hiện xâm nhập dựa máy trạm. 20 Hình 6: Hệ thống phát hiện xâm nhập trên mạng. 21 Hình 7: Mô hình IDPS mức vật lý. 22 Hình 8: Hệ thống phát hiện xâm nhập IDS. 23 Hình 9: Mô hình thu thập dữ liệu ngoài luồng. 24 Hình 10: Mô hình thu thập dữ liệu trong luồng. 24 Hình 11: Các phương thức cảnh báo. 27 Hình 12: Một số phương pháp ngăn chặn tấn công. 29 Hình 13: Sơ đồ khối của hệ thống cài đặt Snort. 31 Hình 14: Thành phần xử lý gói tin của snort. 32 Hình 15: Preprocessor của snort. 33 Hình 16: Dectection Engine của snort. 34 Hình 17: Logging và Alerting System của snort. 41 Hình 18: Tính năng sniffer. 42 Hình 19: Sơ đồ luật hình cây của snort. 45 Hình 20: Hệ thống mạng bảo vệ nhiều lớp. 61 Hình 21: Hệ thống snort trên solaris. 62 Hình 22: Snort inline. 63 Hình 23: Mô hình dự kiến. 64 Hình 24 : Mô hình thực tế. 65 Hình 25: Mô hình tấn công. 75 Hình 26: Kiểu tấn công Smurf Attack. 76 Hình 27: Quét địa chỉ mạng. 77 Hình 28: Công cụ tấn công dos. 77 Hình 29: Chỉ số CPU sử dụng. 78 Hình 30: Snort phát hiện xâm nhập. 78 Hình 31: Kịch bản tấn công sql injection. 80 Hình 32: Đăng nhập web. 82 Hình 33: Kiểm tra lỗi SQL 82 Hình 34: Lỗi SQL injection 83 Hình 35: Xâm nhập web lỗi sql-injection 83 Hình 36: Xâm nhập thành công 84 PHỤ LỤC CÁC BẢNG Bảng 1: So sánh HIDS và NIDS. 21 Bảng 2: Rule header. 48 Bảng 3: Rule option. 55 Bảng 4: Cơ sở hạ tầng. 65 Bảng 5: Máy tấn công dos. 75 TÀI LIỆU THAM KHẢO Ebook: Giáo trình an toàn mạng máy tính (Học Viện Kỹ Thuật mật mã). An Intrusion – Detection Model (Dorothy E. Denning). Insertion, Evatsion and Denial of Service: Eluding Network Intrusion Detection (Thomas H. Ptacek, Timothy N.Newsham). Snort for Dummies (Charlie Scott, Paul Wolfe, and Bert Hayes). Web: www.google.com.vn www.hvaonline.net www.snort.org

Các file đính kèm theo tài liệu này:

  • docTìm hiểu và nghiên cứu hệ thống phần mềm phát hiện và phòng chống xâm nhập.doc