Trao đổi với tôi

http://www.buidao.com

12/7/09

[Security] Tìm hiểu IDS (Hệ thống phát hiện xâm nhập)

Tìm hiểu IDS (Hệ thống phát hiện xâm nhập)
Hệ thống phát hiện xâm nhập (Intrusion Detection System – IDS) là hệ thống phần cứng hoặc phần mềm có chức năng tự động theo dõi các sự kiện xảy ra trên hệ thống máy tính, phân tích để phát hiện ra các vấn đề liên quan đến an ninh, bảo mật. Khi mà số vụ tấn công, đột nhập vào các hệ thống máy tính, mạng ngày càng tăng, hệ thống phát hiện xâm nhập càng có ý nghĩa quan trọng và cần thiết hơn trong nền tảng bảo mật của các tổ chức.

Một vài định nghĩa.

•Khái niệm “Phát hiện xâm nhập”

Phát hiện xâm nhập là tiến trình theo dõi các sự kiện xảy ra trên một hệ thống máy tính hay hệ thống mạng, phân tích chúng để tìm ra các dấu hiệu “xâm nhập bất hợp pháp”. Xâm nhập bất hợp pháp được định nghĩa là sự cố gắng tìm mọi cách để xâm hại đến tính toàn vẹn, tính sẵn sàng, tính có thể tin cậy hay là sự cố gắng vượt qua các cơ chế bảo mật của hệ thống máy tính hay mạng đó. Việc xâm nhập có thể là xuất phát từ một kẻ tấn công nào đó trên mạng Internet nhằm giành quyền truy cập hệ thống, hay cũng có thể là một người dùng được phép trong hệ thống đó muốn chiếm đoạt các quyền khác mà họ chưa được cấp phát.


• Network IDS hoặc NIDS :

Là các hệ thống phát hiện tấn công, nó có thể bắt giữ các gói tin được truyền trên các thiết bị mạng (cả hữu tuyến và vô tuyến). và so sánh chúng với cơ sở dữ liệu các tín hiệu.

• Host IDS hoặc HIDS :

Được cài đặt như là một tác nhân trên máy chủ. Những hệ thống phát hiện xâm nhập này có thể xem những tệp tin log của các trình ứng dụng hoặc của hệ thống để phát hiện những hành động xâm nhập.

• Signature :

Là những phần mà ta có thể thấy được trong một gói dữ liệu. Nó được sử dụng để phát hiện ra một hoặc nhiều kiểu tấn công. Signature có thể có mặt trong các phần khác nhau của một gói dữ liệu. Ví dụ ta có thể tìm thấy các tín hiệu trong hearder IP, hearder của tầng giao vận (TCP, UDP hearder) hoặc hearder tầng ứng dụng. Thông thường, IDS ra quyết định dựa trên những tín hiệu tìm thấy ở hành động xâm nhập. Các nhà cung cấp IDS cũng thường xuyên cập nhật những tín hiệu tấn công mới khi chúng bị phát hiện ra

• Alert :

Là những lời thông báo ngắn về những hành động xâm nhập bất hợp pháp. Khi IDS phát hiện ra kẻ xâm nhập, nó sẽ thông báo cho người quản trị bảo mật bằng alert. Alert có thể hiện ngay trên màn hình, khi đăng nhập hoặc bằng mail và bằng nhiều cách khác. Alert cũng có thể được lưu vào file hoặc vào cơ sở dữ liệu để các chuyên gia bảo mật có thể xem lại.

• Log :

Thông thường, những thông tin mà IDS thu được sẽ lưu lại trong file. Chúng có thể được lưu lại dưới dạng text hoặc dạng nhị phân. Tốc độ lưu lại thông tin ở dạng nhị phân sẽ nhanh hơn ở dạng text.


• False Alarm

Là những thông báo đúng về một dấu giống dấu hiệu xâm nhập nhưng hành động

• Sensor

Là những thiết bị mà hệ thống phát hiện xâm nhập chạy trên nó bởi vì nó được sử dụng như các giác quan trên mạng. Cũng tương tự như các sensor trong các tài liệu kỹ thuật khác, sensor dùng để bắt tín hiệu âm thanh, màu sắc, áp xuất... thì sensor ở đây sẽ bắt các tín hiệu có dấu hiệu của xâm nhập bất hợp pháp.

Các nhiệm vụ cần phải thực hiện

Nhiệm vụ chính của các hệ thông phát hiện xâm phạm là phòng chống cho một hệ thống máy tính bằng cách phát hiện các dấu hiệu tấn công và có thể đẩy lùi nó. Việc phát hiện các tấn công phụ thuộc vào số lượng và kiểu hành động thích hợp. Để ngăn chặn xâm phạm tốt cần phải kết hợp tốt giữa “bắt và bẫy” được trang bị cho việc nghiên cứu các mối đe dọa. Việc làm lệnh hướng sự tập trung của kẻ xâm nhập vào tài nguyên được bảo vệ là một nhiệm vụ quan trọng khác. Cả hệ thống thực và hệ thống bẫy cần phải được kiểm tra một cách liên tục. Dữ liệu được tạo ra bằng các hệ thống phát hiện xâm nhập được kiểm tra một cách cẩn thận (đây là nhiệm vụ chính cho mỗi IDS) để phát hiện các dấu hiệu tấn công.

Các kỹ thuật xử lý dữ liệu.
• Hệ thống Expert (Expert systems)

Hệ thống này làm việc trên một tập các nguyên tắc đã được định nghĩa từ trước để miêu tả các tấn công. Tất cả các sự kiện có liên quan đến bảo mật đều được kết hợp vào cuộc kiểm định và được dịch dưới dạng nguyên tắc if-then-else. Lấy ví dụ Wisdom & Sense và ComputerWatch (được phát triển tại AT&T).

• Phát hiện xâm nhập dựa trên luật(Rule-Based Intrusion Detection):

Giống như phương pháp hệ thống Expert, phương pháp này dựa trên những hiểu biết về tấn công. Chúng biến đổi sự mô tả của mỗi tấn công thành định dạng kiểm định thích hợp. Như vậy, dấu hiệu tấn công có thể được tìm thấy trong các bản ghi(record). Một kịch bản tấn công có thể được mô tả, ví dụ như một chuỗi sự kiện kiểm định đối với các tấn công hoặc mẫu dữ liệu có thể tìm kiếm đã lấy được trong cuộc kiểm định. Phương pháp này sử dụng các từ tương đương trừu tượng của dữ liệu kiểm định. Sự phát hiện được thực hiện bằng cách sử dụng chuỗi văn bản chung hợp với các cơ chế. Điển hình, nó là một kỹ thuật rất mạnh và thường được sử dụng trong các hệ thống thương mại (ví dụ như: Cisco Secure IDS, Emerald eXpert-BSM(Solaris)).

• Phân biệt ý định người dùng(User intention identification):

Kỹ thuật này mô hình hóa các hành vi thông thường của người dùng bằng một tập nhiệm vụ mức cao mà họ có thể thực hiện được trên hệ thống (liên quan đến chức năng người dùng). Các nhiệm vụ đó thường cần đến một số hoạt động được điều chỉnh sao cho hợp với dữ liệu kiểm định thích hợp. Bộ phân tích giữ một tập hợp nhiệm vụ có thể chấp nhận cho mỗi người dùng. Bất cứ khi nào một sự không hợp lệ được phát hiện thì một cảnh báo sẽ được sinh ra.

• Phân tích trạng thái phiên (State-transition analysis):

Một tấn công được miêu tả bằng một tập các mục tiêu và phiên cần được thực hiện bởi một kẻ xâm nhập để gây tổn hại hệ thống. Các phiên được trình bày trong sơ đồ trạng thái phiên. Nếu phát hiện được một tập phiên vi phạm sẽ tiến hành cảnh báo hay đáp trả theo các hành động đã được định trước.

• Phương pháp phân tích thống kê (Statistical analysis approach):

Đây là phương pháp thường được sử dụng. Hành vi người dùng hay hệ thống (tập các thuộc tính) được tính theo một số biến thời gian. Ví dụ, các biến như là: đăng nhập người dùng, đăng xuất, số tập tin truy nhập trong một khoảng thời gian, hiệu suất sử dụng không gian đĩa, bộ nhớ, CPU,… Chu kỳ nâng cấp có thể thay đổi từ một vài phút đến một tháng. Hệ thống lưu giá trị có nghĩa cho mỗi biến được sử dụng để phát hiện sự vượt quá ngưỡng được định nghĩa từ trước. Ngay cả phương pháp đơn giản này cũng không thế hợp được với mô hình hành vi người dùng điển hình. Các phương pháp dựa vào việc làm tương quan thông tin về người dùng riêng lẻ với các biến nhóm đã được gộp lại cũng ít có hiệu quả. Vì vậy, một mô hình tinh vi hơn về hành vi người dùng đã được phát triển bằng cách sử dụng thông tin người dùng ngắn hạn hoặc dài hạn. Các thông tin này thường xuyên được nâng cấp để bắt kịp với thay đổi trong hành vi người dùng. Các phương pháp thống kê thường được sử dụng trong việc bổ sung trong IDS dựa trên thông tin hành vi người dùng thông thường.
Giới thiệu SNORT


Snort là một hệ thống phát hiện xâm nhập mạng (NIDS) mã nguồn mở miễn phí. NIDS là một kiểu của hệ thống phát hiện xâm nhập (IDS), được sử dụng để quét dữ liệu di chuyển trên mạng. Cũng có các hệ thống phát hiện xâm nhập host-based, được cài đặt trên một host cụ thể và chỉ để phát hiện các sự tấn công nhắm đến host đó. Mặc dù tất cả các phương pháp phát hiện xâm nhập vẫn còn mới nhưng Snort được đánh giá là hệ thống tốt nhất hiện nay.

Dữ liệu được thu thập và phân tích bởi Snort. Sau đó, Snort lưu trữ dữ liệu trong cơ sở dữ liệu MySQL bằng cách dùng output plug-in. Web server Apache với ACID, PHP, thư viện GD và PHPLOT sẽ biểu diễn dữ liệu này trên trình duyệt khi một người dùng kết nối đến server. Người dùng có tạo nhiều kiểu truy vấn khác nhau để phân tích dữ liệu.

Snort chủ yếu là một IDS dựa trên luật, tuy nhiên các input plug-in cũng tồn tại để phát hiện sự bất thường trong các header của giao thức.
Snort sử dụng các luật được lưu trữ trong các file text, có thể được chỉnh sửa bởi người quản trị. Các luật được nhóm thành các kiểu. Các luật thuộc về mỗi loại được lưu trong các file khác nhau. File cấu hình chính của Snort là snort.conf. Snort đọc những luật này vào lúc khởi tạo và xây dựng cấu trúc dữ liệu để cung cấp các luật để bắt giữ dữ liệu. Tìm ra các dấu hiệu và sử dụng chúng trong các luật là một vấn đề đòi hỏi sự tinh tế, vì bạn càng sử dụng nhiều luật thì năng lực xử lý càng được đòi hỏi để thu thập dữ liệu trong thực tế. Snort có một tập hợp các luật được định nghĩa trước để phát hiện các hành động xâm nhập và bạn cũng có thể thêm vào các luật của chính bạn. Bạn cũng có thể xóa một vài luật đã được tạo trước để tránh việc báo động sai.

Các thành phần của Snort:

Snort được chia thành nhiều thành phần. Những thành phần này làm việc với nhau để phát hiện các cách tấn công cụ thể và tạo ra output theo một định dạng được đòi hỏi. Một IDS dựa trên Snort bao gồm các thành phần chính sau đây:

• Packet Decoder.
• Preprocessor.
• Dectection Engine.
• Logging và Alerting System.
• Output Modules.


Packet Decoder (Bộ phận giải mã gói)

Bộ phận giải mã gói lấy các gói từ các giao diện mạng khác nhau và chuẩn bị cho việc gói tin được xử lí trước hoặc được gửi cho bộ phận phát hiện.

Preprocessor (Bộ phận xử lí trước)

Bộ phận xử lí trước là những thành phần được sử dụng với Snort để sắp xếp hoặc chỉnh sửa gói dữ liệu trước khi bộ phận phát hiện làm một vài xử lý để tìm ra gói tin có được sử dụng bởi kẻ xâm nhập hay không. Một vài bộ phận xử lý trước cũng thực thi việc phát hiện bằng cách tìm các dấu hiệu bất thường trong header của gói tin và tạo ra các cảnh báo. Bộ phận xử lí trước là rất quan trọng trong bất kì IDS nào, chúng chuẩn bị cho các gói dữ liệu được phân tích dựa trên các luật trong bộ phận phát hiện. Kẻ tấn công sử dụng nhiều kĩ thuật khác nhau để lừa IDS theo nhiều cách. Bộ phận xử lí trước cũng được sử dụng để tái hợp các gói tin. Trên IDS, trước khi áp dụng bất kì luật nào, bạn phải tái hợp các gói tin lại để tìm ra các dấu hiệu. Bộ phận xử lí trước trong Snort có thể tái hợp các gói tin, giải mã HTTP URI, ráp lại các dòng TCP, v.v...Những chức năng này rất quan trọng trong hệ thống phát hiện xâm nhập.

Dectection Engine (Bộ phận phát hiện):

Đây là phần quan trọng nhất của Snort. Trách nhiệm của nó là phát hiện có sự xâm nhập tồn tại trong gói tin hay không. Bộ phận phát hiện sử dụng các luật của Snort cho mục đích này.Nếu một gói tin giống với bất kì lậut nào, một hành động tương ứng sẽ được thực hiện. Đây là bộ phận then chốt về thời gian thực thi của Snort. Dựa vào bộ máy của bạn mạnh như thế nào và bao nhiêu luật bạn định nghĩa mà nó có thể tốn những khoảng thời gian khác nhau đối với các gói tin khác nhau. Nếu lưu lượng trên mạng là quá lớn khi Snort đang hoạt động trong chế độ NIDS, bạn có thể mất một vài gói tin và có thể thời gian đáp ứng không chính xác. Lưu lượng trên bộ phận phát hiện phụ thuộc vào các yếu tố sau:

• Số lượng các luật
• Sức mạnh của bộ máy mà Snort đang chạy
• Tốc độ của bus được sử dụng
• Lưu lượng trên mạng

Bộ phận phát hiện hoạt động theo những cách khác nhau ở các phiên bản khác nhau của Snort. Trong tất cả phiên bản 1.x của Snort, bộ phận phát hiện dừng việc xử lí gói tin khi phù hợp với một luật. Dựa vào luật, bộ phận phát hiện sẽ có các hành động tương ứng. Điều này có nghĩa là nếu một gói tin phù hợp với nhiều luật, chỉ có luật đầu tiên được áp dụng mà không xem xét đến các luật còn lại. Điều này làm nảy sinh một vấn đề. Một luật có độ ưu tiên thấp sẽ tạo ra một cảnh báo có độ ưu tiên thấp, nếu một luật có độ ưu tiên cao bị xếp sau trong chuỗi luật. Vấn đề này được giải quyết trong Snort phiên bản 2, khi mà tất cả các luật được so sánh trên một gói tin trước khi tạo ra một cảnh báo. Sau khi so sánh tất cả các luật, luật có độ ưu tiên cao nhất sẽ được chọn để tạo cảnh báo. Vì bộ phận phát hiện trong phiên bản 2 đã được viết lại hoàn toàn nên nó nhanh hơn rất nhiều so với các phiên bản trước đây.

Logging và Alerting System (Hệ thống ghi và cảnh báo) :

Phụ thuộc vào cái mà bộ phận phát hiện tìm thấy trong gói tin, gói tin có thể được sử dụng để ghi lại các hành vi hoặc tạo ra một cảnh báo. Các thông tin ghi lại được giữ trong các file text đơn giản hoặc các dạng khác.

Output Modules (Bộ phận đầu ra) :

Module đầu ra hoặc plug-in có thể hoạt động theo nhiều cách phụ thuộc vào việc bạn muốn lưu các output được tạo ra bằng hệ thống ghi và tạo cảnh báo như thế nào.
Trước khi chúng ta tìm hiểu các cơ chế hoạt động của Snort, đầu tiên hãy xem xét các tùy chọn của dòng lệnh. Một vài tùy chọn có thể được xác định trong file cấu hình thay vì ở dòng lệnh. Nếu bạn chỉ muốn thử một vài thứ, xác định các cài đặt trong dòng lệnh. Nếu bạn dự định sẽ giữ các cài đặt này trong một khoảng thời gian, thiết lập chúng trong file cấu hình.

File snort.conf trong Snort

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.

File này được tổ chức thành nhiều phần (và chứa nhiều các lời chú thích và hướng dẫn để nhắc bạn về một vài tùy chọn có thể đối với các mục cấu hình khác nhau):

•Các biến cấu hình
•Cấu hình bộ giải mã và bộ phận phát hiện của Snort
•Cấu hình tiền xử lí
•Cấu hình xuất thông tin
•Các file kèm theo