Khi một gói tin được truyền từ mạng này sang mạng khác, nó có thể bị phân mảnh (fragmented) thành nhiều gói tin nhỏ. Nguyên nhân của việc phân mảnh là do MTU (maximum segment size) của mỗi mạng khác nhau. Nếu một gói tin đi qua một mạng có MTU nhỏ hơn kích thước của bản thân gói tin đó thì nó có thể bị phân mảnh. Các gói tin bị phân mảnh này khi tới mạng đích sẽ được ghép lại. Nhiều hành động tấn công sử dụng các gói tin có kích thước rất nhỏ “very small packet” để vượt qua Firewall hoặc hệ thống phát hiện xâm nhập. Ví dụ, nếu tập luật của Snort tìm kiếm chuỗi /users.pwd trong phần dữ liệu của một gói tin. Kẻ tấn công có thể tạo ra một chuỗi các gói tin với kích thước nhỏ đã bị phân mảnh, trong đó mỗi gói tin chỉ chứa một phần nhỏ dữ liệu: Ví dụ, mảnh thứ nhất chứa xâu /usr, mảnh thứ hai chứa xâu s.pwd. Các gói tin này sẽ không bị loại bỏ vì nó không trùng khớp so với các luật. Frag2 preprocessor sẽ ráp lại các gói tin bị phân mảnh, từ đó nó khôi phục lại được chuỗi usrs.pwd. Việc phân mảnh các gói tin làm cho hệ thống nhận các gói tin này phải tốn nhiều tài nguyên để xử lý chúng. Đặc biệt một số thiết bị phần cứng xử lý không tốt các gói tin phân mảnh có thể không hoạt động khi nó gặp nhiều gói tin bi phân mảnh. Cũng cần chú ý là khi triển khai Snort, ta phải xác định xem có sử dụng frag2 preprocessor không. Vì một số thiết bị thực hiện việc ráp các gói tin bị phân mảnh trước khi chuyển tiếp sang host kế tiếp. Ví dụ, Cisco PIX firewall luôn luôn thực hiện việc ráp các gói tin bị phân mảnh trước khi chuyển tiếp các gói tin đó. Vì vậy, nếu Snort sensor đặt sau thiết bị này thì frag2 preprocessor sẽ không mang lại bất kỳ hiệu quả gì cho hệ thống. Frag2 preprocessor có một số tùy chọn để chống lại kiểu tấn công sử dụng sự phân mảnh của các gói tin IP:
88 trang |
Chia sẻ: lethao | Lượt xem: 5826 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài Hệ thống phát hiện xâm nhập Snort, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
t, mỗi agent giám sát một host, đôi khi các sensor trên các host gửi dữ liệu đến một hoặc một số agent trung tâm. Việc lựa chọn host để giám sát là quyết định quan trọng trong việc sắp xếp các agent. Hầu hết các tổ chức sử dụng hệ thống phát hiện xâm nhập đểu chọn mô hình host “chóp ngọc”, các server là trung tâm của hệ thống. Một số tổ chức chọn một vài host phân tán.
Trong hệ thống phát hiện xâm nhập dựa trên nền tảng mạng, agent đặt 2 vị trí:
Đặt nơi có hiệu quả nhất. Hiệu qủa là một phần trong chính sách mạng nơi đặt các kết nối tới sensor và các thành phần khác. Càng có nhiều sensor và agent thì hiệu quả càng cao.
Đặt ở nơi có mức độ an toàn nhất. Mức độ an toàn cho các agent là rất quan trọng, vì vậy cần phải đặt các agent tại vùng an toàn trong mạng, hoặc ít nhất cũng phải đặt sau một số firewall.
2.3.3. Đảm bảo an toàn Agent
Agent bị tấn công thì rất nghiêm trọng. bởi vì agent là phẩn tử thông minh hơn sensor và nếu một agent bị tấn công thì kẻ tấn công không những có thể dừng hoặc phá hoại phân tích mà agent đang thực hiện mà chúng còn có thể lấy cắp thông tin xác thực phục vụ tấn công các thành phần khác trong hệ thông IDS. Do đó các agent cần phải xem xét đến tính an toàn.
May mắn thay, các thức triển khai agent tạo ra một mức bảo vệ chống lại các tấn công. Agent (đặc biệt trong hệ thống IDS nền tảng mạng) được phân bổ khắp nơi trong mạng. Do đó mỗi Agent cần phải phát hiện ra vị trí thì sau đó mới có thể bị tấn công. Điều này làm tăng công việc để tấn công Agent. Chức năng đa dạng của agent làm tăng thêm độ an toàn. Hơn nữa, các agent có khả năng di động, làm cho khả năng tấn công càng trở lên khó khăn hơn.
Tuy nhiên, agent cần phải được bảo vệ bằng cách như bảo vệ các sensor, tạo nền tảng vững chắc, đảm bảo chắc chắn rằng chúng chỉ có thể truy nhập với người có quyền. Sau đây là vài hướng quy tắc:
Dựa trên nền tảng phần cứng tốt. Khi nền tảng phần cứng tốt thì các agent hoạt động tốt hơn. Kẻ tấn công có thể truy nhập vào nền tảng và thông qua đó chiêm quyền điểu khiển tất cả các agent.
Mã hóa các traffic: bởi vì giữ an toàn agent là rất quan trọng, vì vậy tất cả các traffic giữa các agent cần được mã hóa và giữa các agent và các thành phần khác cũng cần phải được mã hóa.
Lọc dữ liệu vào: Thêm điều này, tránh nguy cơ tấn công từ chối dịch vụ, bộ lọc ngăn dữ liệu lặp đi lặp lại và thừa.
2.4. Các thành phần Quản lý
Thành phần cuối cùng trong 1 kiến trúc đa tầng là thành phần manager (hay đôi khi còn gọi là thành phần server). Mục đích cơ bản của thành phần này là cung cấp khả năng điều khiển hoặc thực thi hệ thống phát hiện xâm nhập.
2.4.1. Các chức năng quản lý
Chúng ta đã thấy rằng các phần tử sensor thông thường là các thành phần ở mức độ khá thấp và các agent thường là các thành phần phức tạp hơn, chúng phân tích các dữ liệu nhận được từ các sensor hoặc có thể từ nhau ở mức độ tối thiểu. Mặc dù các sensor và các agent có thể hoạt động mà không cần có các manager (thành phần điều khiển chính) nhưng có được thành phần như vậy sẽ hết sức thuận lợi trong việc giúp cho tất cả các thành phần hoạt động kết hợp tốt hơn. Hơn nữa thành phần quản lí có thể thực hiện những chức năng quan trọng khác mà chúng ta sẽ tìm hiểu tiếp sau.
Data Management Quản lí dữ liệu
IDS có thể tập hợp được một khối lượng dữ liệu khổng lồ. Một cách xử lí lượng dữ liệu này là nén (lưu giữ trong đĩa), lưu dữ liệu và sau đó dọn dẹp định kì.Tuy nhiên trong một số trường hợp chiến lược này không được hoàn hảo lắm vì thường cần phải có dữ liệu trực tuyến hơn là dữ liệu được lưu trữ để thực hiện những phân tích cần thiết đang diễn ra. Ví dụ chúng ta có thể nhận ra hoạt động khả nghi từ một máy chủ nội bộ đặc biệt và muốn biết xem trong vài tháng gần đây có hoạt động nào tương tự như vậy không.Tìm đến khu trung tâm chứa dữ liệu thích hợp hơn là phải tìm phương tiện chứa dữ liệu và phục hồi dữ liệu cho một hoặc nhiều hệ thống.
Tất nhiên điều đáng quan tâm chính là phải có không gian đĩa đầy đủ cho mục đích quản lí. Một giải pháp tốt là RAID(Redundant Array of Inexpensive Disks), mà ghi dữ liệu trên nhiều đĩa và cung cấp dự phòng trong trường hợp một đĩa nào đó bị hỏng. Một sự lựa chọn khác là phương tiện lưu trữ quang học, như là đĩa worm(mặc dù việc thực thi là một vấn đề).
Thành phần quản lí của một IDS cũng sẽ tổ chức dữ liệu được lưu trữ một cách lí tưởng. Một cơ sở dữ liệu quan hệ, như là Oracle hay Sysbase, rất phù hợp cho mục đích này. Ngay khi một cơ sở dữ liệu được thiết kế và thực thi, dữ liệu mới có thể được thêm vào khoảng trống và truy vấn lại cơ sở dữ liệu .
Alerting- Cảnh báo
Chức năng quan trọng khác mà thành phần quản lí có thể thực hiện là tạo ra các lệnh báo động bất cứ khi nào xảy ra các sự kiện gây ra mức độ đe doạ cao (ví dụ như sự thoả hiệp của 1 mạch điều khiển phạm vi Windows hoặc 1 máy chủ chính dịch vụ thông tin mạng hoặc của 1 thiết bị mạng tới hạn như là router). Các agent được thiết kế để cung cấp khả năng phát hiện nhưng các agent thường không dính dáng đến việc cảnh báo vì làm như vậy từ máy chủ trung tâm thì hiệu quả hơn. Thay vào đó các agent thưòng gửi thông tin đến 1 máy chủ trung tâm, máy chủ đó gửi cảnh báo bất cứ khi nào gặp các điều kiện được xác định trước. Điều này đòi hỏi máy chủ không chỉ lưu trữ các địa chỉ của những người điều hành cần được thông báo mà còn phải có một cơ chế cảnh báo.
Các cảnh báo thường được gửi qua e-mail hoặc Unix syslog facility. Nếu gửi qua e-mail thì nội dung thư nên được mã hoá bằng cách sử dụng PGP (Pretty Good Privacy) hay một số hình thức mã hoá thư tín. Những người tấn công phát hiện ra nội dung của thư liên quan đến sự xâm nhập được phát hiện hoặc những địa chỉ IP không liên quan có thể điều chỉnh các chiến lược của họ ( ví dụ như sử dụng một địa chỉ IP nguồn khác nếu địa chỉ mà họ đang sử dụng bị chặn) bằng cách đó sẽ tăng hiệu quả của chúng. Lợi ích chính của syslog facility là tính linh hoạt – syslog có thể gửi các thư tín về hầu như bất cứ thứ gì cho hầu hết mọi người nếu được yêu cầu. Tuy nhiên mã hoá nội dung syslog là một thử thách lớn hơn nhiều so với việc mã hóa nội dung thư điện tử. May thay một dự án trong tương lai có tên là syslog-ng đôi khi sẽ cung cấp những giải pháp mã hóa cho lưu lượng thông tin được truyền liên quan đến syslog. Hơn nữa máy chủ syslog sẽ lưu giữ các lệnh cảnh báo đã được đưa ra trong trường hợp có ai đó cần kiểm tra nội dung của các cảnh báo trước.
Event Correlation Liên kết sự kiện
Chức năng vô cùng quan trọng khác của thành phần quản lí là liên kết các sự kiện đã xảy ra để quyết định xem chúng có cùng một nguồn gốc không, xem chúng có phải là một phần của chuỗi những tấn công không, v.v…. Việc liên kết sự kiện là rất quan trọng.
High-Level Analysis Phân tích ở cấp độ cao
Chức năng khác mà thành phần quản lí còn có thể thực hiện là sự phân tích ở mức độ cao những sự kiện mà công cụ phát hiện xâm nhập hoặc phòng chống xâm nhập phát hiện ra. Ví dụ, thành phần quản lí có thể theo dõi quá trình của mỗi tấn công từ giai đoạn này sang giai đoạn khác, bắt đầu bằng giai đoạn chuẩn bị (doorknob rattling). Hơn nữa thành phần này có thể phân tích nguy cơ đe doạ mà mỗi sự kiện gây ra, gửi thông báo cho chức năng tạo lệnh cảnh báo bất cứ khi nào nguy cơ đe doạ đạt đến 1 giá trị đã được định rõ nhất định. Đôi khi sự phân tích ở cấp độ cao được thực hiện bởi mạng nơron hay hệ chuyên gia tìm kiếm các mô hình trong một lượng lớn các dữ liệu.
Monitoring Other Components Kiểm tra các thành phần khác
Trong phần này chúng ta đã thấy rằng có 1 thành phần kiểm tra để kiểm tra tình trạng của các biến cảm và các agent là rất quan trọng. Người quản trị là một thành phần lí tưởng để đặt chức năng này trong đó vì chức năng này có hiệu quả nhất nếu tập trung vào nó.
Ví dụ như người quản trị có thể gửi các gói tin cho mỗi biến cảm và agent để xác định xem mỗi biến cảm và agent đó có đáp lại để nhập dữ liệu không. Nhưng hay hơn là người quản trị có thể đề xướng các kết nối cho mỗi biến cảm và agent để xác định xem mỗi biến cảm và agent đó có lên và hoạt động không. Nếu thành phần quản lí xác định có một thành phần nào đó đã hỏng, nó có thể thông báo khả năng cảnh báo của nó để đưa ra cảnh báo.
Trong việc phát hiện xâm nhập căn cứ vào máy chủ, người quản trị có thể kiểm tra mỗi máy chủ để đảm bảo rằng việc ghi và kiểm tra đang hoạt động một cách chính xác. Thành phần quản lí cũng có thể theo dõi việc sử dụng tài nguyên hệ thống và mạng, đưa ra một cảnh báo nếu bất kì hệ thống hay phần nào của mạng bị áp đảo.
Policy Generation and Distribution Đưa ra và phân phối chính sách
Chức năng khác thưòng được gắn vào thành phần quản lí là sự đưa ra và phân phối chính sách. Xét trong bối cảnh của thành phần quản lí, chính sách chỉ những sắp đặt có tác động đến cách hoạt động của các thành phần khác nhau của hệ thống phát hiện xâm nhập hoặc phòng chống xâm nhập. Ví dụ 1 chính sách có thể được thiết lập để kích hoạt tất cả các agent hoặc để di chuyển 1 agent từ máy này sang máy khác.
Không có nơi nào chính sách quan trọng hơn ở IPSs. Dựa trên dữ liệu mà thành phần quản lí nhận được, thành phần quản lí tạo ra và sau đó phân phối 1 chính sách hay 1 sự thay đổi về chính sách đến các máy chủ riêng biệt. Chính sách có thể ra lệnh cho mỗi máy chủ không chấp nhận nhập dữ liệu cho một địa chỉ IP cụ thể hoặc không thực hiện 1 yêu cầu hệ thống cụ thể. Thông thường hành phần quản lí phụ trách việc tạo chính sách, cập nhật và làm cho nó có hiệu quả.
Security Management and Enforcement - Quản lí và thi hành bảo mật
Quản lí và thi hành bảo mật là một trong những chức năng quan trọng nhất có thể được gắn vào thành phần quản lí. Chức năng này được đề cập trong phần “Những điều quan tâm về bảo mật người quản trị” ở phần này.
Cửa sổ lệnh để quản lý
Cung cấp một giao diện cho những người sử dụng qua bảng điều khiển quản lí là chức năng khác của thành phần quản lí. Giống như hầu hết các chức năng khác được đề cập trong phần này, chức năng này tạo ra sự khác biệt lớn về mặt giá trị của 1 IDS đối với một tổ chức. Bảng điều khiển quản lí cần hiển thị thông tin quyết định - những cảnh báo, tình trạng của mỗi thành phần, dữ liệu trong nhũng gói tin riêng lẻ, dữ liệu ghi kiểm định, v.v…- và cũng cần cho phép những người điều hành điều khiển mọi phần của một IDS. Ví dụ, nếu 1 biến cảm xuất hiện để gửi dữ liệu sai lạc, 1 người điều hành cần nhanh chóng ngừng hoạt động biến cảm bằng cách sử dụng bảng điều khiển quản lí.
Tầm quan trọng của việc có thể xem xét dữ liệu gói
Các bảng điều khiển quản lí cần cho phép các nhà điều hành sẵn sàng truy cập tất cả dữ liệu mà 1 IDS thu thập được, gửi đi và xử lí. 1 loại dữ liệu không có sẵn trong một số việc thực thi của IDS là dữ liệu gói. Xét cho cùng việc cất giữ dữ liệu gói đòi hỏi lượng lớn khoảng trống đĩa. Nhưng dữ liệu gói thường là một trong những loại dữ liệu hữu ích nhất đối với những người điều hành. Ví dụ, những lỗi trong việc ứng dụng, xu hướng của tất cả mọi người cho IDS để tạo chuông báo lỗi và các thủ thuật được thực hiện bởi những người tấn công có thể gây ra kết quả sai lầm hoặc có thể gợi ý cho những vấn đề xa hơn.
Ví dụ, giả sử như 1 IDS báo cáo về scan được phân phối từ 1 phạm vi các địa chỉ IP nhất định. Đi đến phần IP của mỗi gói tin sẽ mang lại thông tin như địa chỉ nguồn IP được chỉ ra, bản dịch của giao thức IP và TTL(time-to-live parameter). Nếu các địa chỉ nguồn IP rõ ràng cho scan được phân phối cách 15 bước nhảy ngắn ( như đã được phát hiện bởi kết quả của lệnh “traceroute” hoặc “tracert”), nhưng tham số TTL của hầu hết các gói tin thường bằng 4 hoặc 5. Nhiều hệ điều hành và các ứng dụng gắn 1 giá trị TTL khởi đầu là 64 hoặc 128 cho các gói dữ liệu IP mà chúng tạo ra. Trong trường hợp này các gói tin từ các máy chủ cách 15 hops trêm mạng lưới thì cần 1 giá trị TTL tương ứng 115 hoặc có thể là 51. Các giá trị TTL thấp mà không hợp lí chỉ ra rằng những gói tin này hầu như là giả.
Điểm mấu chốt là chúng ta cần suy nghĩ kĩ nếu chúng ta tính đến việc mua 1 IDS mà nó không cho phép chúng ta truy cập dữ liệu gói một cách dễ dàng.
Tầm quan trọng của các nhân tố con người gây ra trong mẫu bảng điều khiển quản lí không được phóng đại. Các bảng điều khiển quản lí được thiết kế gần giống nhau để làm những phương tiện duy nhất mà qua đó các nhà điều hành và phân tích tác động với IDS. Các định dạng hiển thị cần phải dễ hiểu và các chuỗi tương tác có thể nhận thức được bằng trực giác. Tóm lại, khả năng sai sót của con người phải được giảm đến mức tối thiểu. Những vấn đề chính với các bảng điều khiển quản lí trong các IDS hiện nay bao gồm sự phức tạp quá mức, những phương pháp điều hướng không thể nhận thức được bằng trực giác và những trình bày lộn xộn, những vấn đề đó gây ra những giờ học tập kéo dài không cần thiết, sự nhầm lẫn và tỉ lệ sai sót cao.
2.4.2. Triển khai thành phần quản lý
Một trong những điều quan tâm đối với thành phần quản lí là phải đảm bảo rằng nó hoạt động trên phần cứng có giới hạn hết sức cao ( với một bộ nhớ dung lượng lớn và một bộ xử lí nhanh ) và trên nền của hệ thống vận hành đáng tin cậy đã được chứng minh (như Solaris hay Red Hat Linux). Tính hiệu lực liên tiếp của thành phần quản lí là rất cần thiết – thông thường thời gian chết nào cũng làm cho 1 IDS hoàn toàn vô hiệu. SỬ dụng RAID và triển khai các máy chủ thừa trong trường hợp một máy bi hỏng là những biện pháp thêm vào có thể được sử dụng để giúp cho việc đảm bảo tính hiệu lực liên tục.
NHững quyết định liên quan đến nơi triển khai bảng điều khiển quản lí trong mạng lưới (giống như việc triển khai các agent) cần phải dựa trên hiệu quả - thành phần quản lí cần được định vị trong mạng lưới giảm thiểu được khoảng cách từ các agent mà nó kết nối và dựa trên sự bảo mật được đề cập ở phần tiếp theo.
2.4.3. An toàn thành phần quản lý
Trong 3 thành phần chính của kiến trúc đa tầng, các sensor thường bị tấn công và các agent bị tổn thương hoặc không có khả năng sử dụng có thể gây ra vấn đề lớn, nhưng sự tấn công đơn lẻ thành công trên bảng điều khiển quản lí thông thường là kết quả tồi tệ nhất có thể hình dung được.Do sự tập trung của thành phần quản lí đối với toàn bộ IDS hay IPS, sự tấn công như vậy có thể nhanh chóng làm cho tất cả các thành phần trong một kiến trúc bị tổn hại hoặc không thể sử dụng được và nó có thể phá huỷ tất cả các dữ liệu và các lệnh cảnh báo được thu thập. Vì vậy dành nỗ lực đáng kể là thích hợp cho việc làm cứng máy chủ mà bảng điều khiển quản lí hoạt động trong đó.
Việc làm cứng bao gồm việc thực hiện các biện pháp nhằm ngăn ngừa các tấn công từ chối dịch vụ như việc cài đặt 1 bức tường lửa định cấu hình hợp lí hay trình bao bọc TCP trên hộp đặt ở thành phần quản lí, việc đảm bảo rằng tất cả các kết nối dịch vụ được cài đặt và không chạy các dịch vụ không cần thiết. Máy chủ cũng cần được bảo vệ bởi 1 hoặc nhiều bức tường lửa bên ngoài và cũng là bên trong, và không nên đặt nó trong một phần của mạng lưới có lưu lượng ở mức độ đạc biệt cao. Nền phần cứng mà thành phần quản lí hoạt động trên đó cũng phải được thiết kế cho riêng chức năng này, và nó cần có một biên cảm đặc biệt - chức năng kiểm soát độc lập với khả năng ghi được cài đặt sẵn - để cung cấp sự kiểm tra chuyên dụng cho tất cả các hoạt động trên máy chủ.
Việc truy cập trái phép luôn luôn là mối quan tâm chính trong bất cứ hệ thống nào, nhưng việc ruy cạp trái phép vào bảng điều khiển quản lí thậm chí còn quan trọng hơn. Vì vậy việc đặt những điều khiển truy cập phù hợp trong vị trí là cấp bách. Thực hiện các biệ pháp như khoá bàn phím và bọc khoá trên tất cả các phần cứng được sử dụng để kết nối với thành phần quản lí, và việc đặt hệ thống trong phòng máy chủ với việc truy cập có giới hạn là điểm xuất phát.
Sự thẩm định quyền cũng là một mối quan tâm đặc biệt đối với thành phần quản lí. Sự thẩm định quyền dựa trên password đó được đưa ra đã trở nên vô hiệu trong việc tránh xa những người sử dụng trái phép, chúng ta nên yêu cầu sự thẩm định của bên thứ 3 cho việc ruy cập vào bất cứ phần nào của thành phần quản lí, nhưng đặc biệt là bảng điều khiển quản lí. Các thẻ thông minh và thẻ từ như SecurID do RSA là 2 hình thức thẩm định phổ biến gần đây của bên thứ 3. Mặc dù việc thẩm định thuộc về sinh trắc học vẫn còn mới mẻ, một số hình thức thẩm định thuộc về sinh trắc học như nhận diện mặt cũng được sử dụng một cách đáng tin cậy trông các trường hợp như truy cập bảng điều khiển quản lí.
Cuối cùng việc cung cấp các mức đọ mã hoá phù hợp có ý nghĩa quyết định. Tất cả các kết nối giữa thành phần quản lí và các thành phần khác cần được mã hoá bằng phương thức mã hoá chắc chắn, ví dụ như mã hoá AES. Đặc biệt là các phiên họp từ các trạm làm việc tách biệt với bảng điều khiển quản lí cần được mã hoá. Nêu không chúng có thể bị chiếm đoạt hoặc nội dung chương trình có thể bị lộ ra. Bất kì dữ liệu cá nhân nào được cất trữ trong thành phần quản lí cũng cần được mã hoá để tránh những vi phạm về đời tư và để thống nhất luật từ trung ương đến địa phương.
Phần II: Hệ thống phát hiện xâm nhập Snort
1. Tổng quan về Snort
Snort là một ứng dụng bảo mật mới với 3 chức năng chính là: đánh hơi gói tin, theo dõi gói tin và sử dụng như một NIDS. Ngoài ra còn có nhiều chương trình thêm vào để cung cấp những cách khác nhau nhằm mục đích ghi dấu và quản lý logfile của Snort, thêm và bảo trì tập luật, thông báo cho người quản trị hệ thống khi có những traffic gây hại được nhận ra…Có nhiều cách để sử dụng Snort trong thiết kế bảo mật của công ty.
Thông thường Snort chỉ sử dụng TCP/IP nhưng những phần thêm vào có thể mở rộng khả năng cung cấp các loại ngôn ngữ khác như Novell'IPX...
Trưởng nhóm phát triển IDS là Martin Roesch chọn tên Snort vì Snort nghĩa là "Sniffer and more", ngoài ra cũng là mang tên của con heo may mắn. Snort ra đời nhờ ý tưởng có một hệ thống có thể hoạt động trên nhiều OS, gói tin được xuất ra nhất quán hơn và có những chức năng có thể phục vụ tốt hơn người quản trị mạng. Các thành phần chính của Snort:
Packet Decoder (Bộ giải mã gói tin):
PreProcessers (Các bộ tiền xử lý)
Detection Engine (Máy phát hiện)
Logging and Alerting System (Hệ thống cảnh báo và ghi dấu)
Output Modules (Mô đun xuất)
Hình 2.1: Quan hệ giữa các thành phần của Snort
Các gói dữ liệu giao tiếp từ mạng Internet vào trong hệ thống được đi qua Packet decoder. Tại mỗi thành phần các gói tin được xử lý rồi truyền kết quả cho thành phần kế tiếp trong hệ thống. Output modul sẽ loại bỏ các gói tin, ghi log hay sinh ra cảnh báo.
1.1. Packet Decoder (Bộ giải mã gói tin):
Thông qua Card mạng và dây dẫn, bộ giải mã gói tin xác định giao thức nào đang dùng và kết nối dữ liệu dựa trên những hành vi cho phép của các gói tin. Nó giải mã các gói tin từ nhiều dạng khác nhau của mạng (Ethernet, SLIP, PPP....) để chuẩn bị cho giai đoạn tiền xử lý. Packet Decoder có thể tạo ra những cảnh báo dựa trên sự phát hiện những giao thức khác lạ, những gói tin quá dài, những tùy chọn TCP lạ hoặc những hành động khác. Lưu ý là chúng ta nên giới hạn bớt những cảnh báo của Packet Decoder bằng cách vào snort.conf để chỉnh lại những mặc định sẵn có lúc cài đặt. Sau khi được giải mã gói tin được chuyển tới bộ tiền xử lý, nếu điều này được định nghĩa trong file snort.conf.
Hình 2.2: Sơ đồ giải mã gói tin
1.2. PreProcessers (Các bộ tiền xử lý)
Bộ phận này đóng vai trò khá quan trọng, cho phép phân tích các gói tin theo các cách có lợi nhất cho chúng ta theo những lựa chọn đã định. Nếu không có quá trình này thì chúng ta chỉ nhận các gói tin từ truyền tới trong dạng những gói tin riêng biệt, điều này có thể là nguyên nhân dẫn đến việc bỏ lỡ phát hiện nhiều tấn công.
Các dữ liệu chỉ tới bộ tiền xử lý sau khi đã qua bộ giải mã. Snort 2.4.4 cung cấp nhiều cách tiền xử lý như cấu hình quá trình phát hiện cổng, tái hợp các mảnh của TCP, thông qua luồng dữ liệu để phát hiện những những hoạt động bất thường và một số tùy chọn khác.
Bộ tiền xử lý là các công cụ sẵn có hoặc những phần thêm vào để sắp xếp hoặc định dạng các gói tin trước khi Detection Engine làm một số tác vụ để tìm ra xâm nhập. Mỗi phần tiền xử lý của Snort đều làm những công việc chung tương tự nhau: lấy dữ liệu từ các gói tin đã được giải mã và áp dụng các quy tắc của nó tìm ra những hành vi khác thường và tạo những cảnh báo. Cụ thể là nó có thể phân mảnh các gói tin, giải mã URI, tái hợp các luồng TCP....(Khi một gói tin đã được phân mảnh thì cần giai đoạn tiền xử lý nối các gói tin lại để có thể làm việc với chúng. Hoặc khi bị hacker lừa bằng cách xáo trộn hoặc thêm vào các ký tự mà WebServer có thể hiểu nhưng IDS lại bị lừa, giai đoạn tiền xử lý cần để sắp xếp lại để IDS có thể phát hiện).
Chúng ta sẽ phân tích 2 ví dụ, là 2 cách hoạt động tiêu biểu của Preprocessers:
1.2.1. HTTPInspect
Từ Snort 2.1 trở lên khái niệm HTTPInspect thay thế http_decode để phát hiện mọi tấn công dựa trên các đặc tính của HTTP. Nó sẽ quan sát bên trong các gói tin, tìm các HTTP traffic (lưu thông HTTP) và thử chúng trên cả 2 phía server và client. HttpInspect không kiểm soát chính nó cho nên nếu có quá trình thêm Preprocessers nào đó đang tái đóng gói gói tin thì nó sẽ thu thập thêm các dữ liệu khác nhưng trong từng gói tin chứ không phải trong toàn bộ phiên giao tiếp của HTTP. HttpInspect có 2 file cấu hình là global và server.
Phần cấu hình global cho phép chúng ta tạo cho nó file ánh xạ để ánh xạ những file kết nối cho IIS, cấu hình những cách cảnh báo cho proxy của server hoặc cấu hình sự phát hiện hợp lệ trên các cổng
ví dụ: preprocessor http_inspect: global \iis_unicode_map unicode.map 1252
Phần cấu hình server cho phép chúng ta có những hồ sơ cấu hình khác nhau đối với các server khác nhau đã biết, những phần căn bản chung của các server, chọn cổng dùng để giải mã HTTP… một điều cần chú ý là HTTPInspect sẽ không nhìn vào sâu trong sự mã hoá lưu thông SSL, vì vậy không nên cấu hình nó thử giải mã lưu thông HTTP, điều này có thể tạo nên những trạng thái sai và không tạo nên kết quả chính xác.
ví dụ: preprocessor http_inspect_server: server default \profile all \ports { 80 8080 }
1.2.2. Flow-PortScan
Đây là một ví dụ tốt để minh hoạ sự phụ thuộc của các Preprocessers vào nhau. Để Flow-PortScan có thể hoạt động thì phải enable Preprocessers. Flow-PortScan lấy các dữ liệu đã được phân tích trong các luồng dữ liệu và tìm trong nhiều host hoặc 1 host trong nhiều cổng. Flow-PortScan là sự thay thế xứng đáng cho portscan và portscan2.
Flow-PortScan nhận dữ liệu và dùng phép so chuỗi để xác định xem nó có phải đã được đọc rồi hay chưa, nếu đã đọc thì sẽ tăng biến đếm thêm 1, nếu số đó vượt qua giới hạn cho phép thì sẽ tạo ra cảnh báo hoặc cứ đến 1 số Y nào đó lại tạo ra cảnh báo. (Lựa chọn Suspense sẽ bỏ qua những sự kiện đó, không đếm chúng).
Flow-PortScan còn 2 tham số hữu ích là src-ignore-net và dst-ignore-net khi chúng ta hiểu rõ scanner hoặc mạng mà chúng ta sẽ cấm. Tham số server-watchnet giúp chúng ta biết mạng nào chúng ta nên theo dõi.
ví dụ: preprocessor flow-portscan: server-watchnet [192.168.1.0/24] \unique-memcap 5000000 \unique-rows 50000 \tcp-penalties on \server-scanner-limit 50 \alert-mode all \output-mode msg \server-learning-time 3600
1.3. Detection Engine (Máy phát hiện)
Là phần quan trọng nhất trong Snort. Trách nhiệm của nó là phát hiện những xâm nhập trên các gói tin. Các luật lệ được lấy ra từ các cấu trúc dữ liệu bên trong hoặc các dây xích liên kết, chúng sẽ đối chiếu các gói tin với các luật định sẵn để tạo ra các hoạt động tương ứng.
Detection Engine là quá trình cần nhiều thời gian nhất, phụ thuộc vào: số lượng các luật, sức mạnh các máy mà Snort chạy trên đó, tốc độ của bus, tốc độ truyền tải trên mạng…
Các phương pháp phân tích dựa trên những phần khác nhau của gói tin: header IP, header lớp truyền tải (TCP, UDP, ICMP), header lớp ứng dụng (có thể lock offset hoặc dữ liệu từ các lớp ứng dụng khác nhau), packet payload ( tìm các chuỗi dữ liệu trong các gói tin).
Snort chỉ tạo ra 1 thông báo khi so sánh đầu tiên thành công, trong khi IDS tạo tất cả các cảnh báo tương ứng với các so sánh mà nó thành công. Từ Snort 2.1.3 thì đã có lựa chọn cho phép ta chọn thêm kiểu thông báo đầy đủ như của IDS. Nếu có nhiều quá trình so sánh đồng thời 1 sự kiện thì Snort đã có hệ thống hai pha cho phép bật hệ thống đa lựa chọn.
Tổng quát thì luật cảnh báo sinh ra trước luật pass (cho qua), thứ tự ưu tiên của chúng cũng sẽ có hiệu quả trong 1 số trường hợp. Từ khoá PRCE dùng trong tập lệnh là 1 đặc tính mạnh trong những phiên bản gần đây của Snort, cho phép chúng ta dùng chung (kết hợp) dữ liệu với các đặc tính của Perl trong những payload của gói tin.
Ví dụ: alert tcp any any -> any [21:1023] (pcre:"/ROOT/i";)
1.4. Logging and Alerting System (Hệ thống cảnh báo và ghi dấu)
Tuỳ thuộc vào Detection Engine mà tạo alert hoặc log, các log đều được lưu trong ../var/log/snort. Logs thì lưu dưới dạng text, tcp-dump file hoặc những dạng tương tự. Cơ chế ghi dấu trong Snort sẽ được khởi động, theo dõi gói tin khi gói tin đó sập bẫy 1 luật nào đó. Như là tiền xử lý, các chức năng này được gọi từ file snort.conf . Tùy ta xác định giá trị thông tin mà chúng ta có nhiều lựa chọn cách thức phù hợp, có thể thông qua SMB của Windo
Các file đính kèm theo tài liệu này:
- Xây dựng hệ thống phát hiện xâm nhập với Snort cho một hệ thống thông tin.doc