Xác định tập luật cho IDS dựa trên các dấu hiệu

16:00 | 06/10/2008

An ninh mạng ngày càng trở thành vấn đề quan trọng đối với nhiều cơ quan, doanh nghiệp. Để bảo vệ các nguồn tài nguyên và thông tin trên mạng, một trong những công nghệ quan trọng mà các tổ chức cần phải có là các Hệ thống phát hiện xâm nhập trái phép (IDS) hiệu quả cao để kịp thời phát hiện các tấn công.

IDS hoạt động dựa trên cơ sở tri thức là tập các luật (rule), trong đó mỗi luật xác định một dấu hiệu tấn công hoặc một hành động truy cập bất thường vào trong hệ thống. Hiện nay, có hai phương pháp để xây dựng tập luật cho IDS. Phương pháp thứ nhất, thực hiện bằng cách thủ công, dựa trên tri thức và quan sát của những người quản trị. Phương pháp thứ hai, sử dụng các phương pháp trí tuệ nhân tạo, đang được đầu tư nghiên cứu để nâng cao độ chính xác của tập luật. Tập luật của IDS cần được sửa đổi, cập nhật thường xuyên để IDS có đủ tri thức phát hiện ra nhiều loại tấn công khác nhau và các tấn công mới xuất hiện. Hiện nay, nhiều hệ thống IDS của các hãng cho phép cập nhật tri thức bằng việc tải các luật từ Internet hoặc tạo ra giao diện thân thiện cho phép những người quản trị tự định nghĩa các luật cho IDS.
Phần thứ nhất của bài báo trình bày tổng quan về IDS và làm rõ khái niệm về các luật của IDS thông qua việc tìm hiểu cú pháp của các luật trong hệ thống phát hiện đột nhập trái phép mã nguồn mở Snort. Trong phần thứ hai, tác giả đề nghị một số phương pháp định nghĩa tập luật, Ngoài ra, còn có các ví dụ minh họa đưa ra trên Snort IDS.

1. Tổng quan về IDS
IDS là các công cụ phần mềm hoặc thiết bị, được thiết kế cho việc phân tích các dòng dữ liệu hoặc các biến cố, nhằm xác định các hành động trái phép và các vi phạm chính sách an ninh tổ chức trên hệ thống mạng máy tính. IDS sử dụng các thông tin được tập hợp và dựa trên các tri thức được định nghĩa trước, để lập luận về khả năng có xâm nhập trái phép hay không. IDS cũng cung cấp các dịch vụ cảnh báo cho người quản trị hoặc kích hoạt các chương trình khác để ngăn chặn các tấn công theo thời gian thực.

1.1. Phương pháp phát hiện
IDS phát hiện các xâm nhập trái phép bằng hai phương pháp chính. Phương pháp thứ nhất, phát hiện dựa trên các dấu hiệu (signature) của gói tin, việc phát hiện xâm nhập trái phép được thực hiện bằng cách so sánh dòng dữ liệu với các dấu hiệu mẫu tấn công đã biết trước. Phương pháp thứ hai, dựa trên các dấu hiệu về các hành động bất thường (anomaly action), được phát hiện bằng cách thống kê các hành động khi truy cập vào hệ thống, một cảnh báo được tạo ra khi giá trị thống kê vượt quá ngưỡng cho phép. Theo hai phương pháp này, IDS cần phải có một cơ sở tri thức bao gồm các mẫu đã được định nghĩa trước. Các IDS thường cho phép người quản trị tự định nghĩa các dấu hiệu mẫu (các luật) cho việc phát hiện tấn công. Ngoài ra, một phương pháp đang được tập trung nghiên cứu là phát hiện dựa trên mô hình, để làm cho IDS có khả năng tự học và suy luận thông minh khi có các tấn công mới.

 1.2. Các loại IDS
a. Network-Based IDS (NIDS)
NIDS được đặt trên mạng như một thành phần của đường truyền và thường đặt sau Firewall để phát hiện xâm nhập trái phép từ Internet cho toàn bộ hệ thống mạng nội bộ. Hoặc NIDS có thể đặt tại các phân vùng mạng có nguy cơ tấn công cao mà cần phải được bảo vệ, ví dụ như phân vùng DMZ, hay phân vùng đặt cơ sở dữ liệu và các ứng dụng quan trọng. NIDS làm nhiệm vụ phân tích các gói tin và kiểm tra các dấu hiệu tấn công dựa trên một tập các dấu hiệu mẫu. Nếu phát hiện ra tấn công, NIDS sẽ ghi vào log file hoặc gửi đi các cảnh báo thông qua email, điện thoại di động…, cách thức cảnh báo phụ thuộc vào từng hệ thống IDS hoặc cách cấu hình.
- Ưu điểm của NIDS: Cho phép quan sát toàn bộ các gói tin đi qua một mạng hoặc một phân vùng mạng. Nó hoàn toàn trong suốt với người sử dụng và không làm ảnh hưởng đến hoạt động của một máy tính cụ thể nào; dễ dàng trong việc quản lý, duy trì hoạt động. Hoạt động phát hiện chủ yếu ở tầng mạng nên có thể độc lập với các ứng dụng và các hệ điều hành sử dụng tại máy tính trên mạng.
- Hạn chế của NIDS: Thường có nhiều báo động nhầm. NIDS không có khả năng phát hiện được các tấn công trên các dòng dữ liệu đã được mã hóa như VPN, SSL, IPSec. Không thể ghi lại diễn biến (kịch bản) của một cuộc tấn công, vì vậy cũng không thể xác định được các tấn công đã thành công hay chưa.


Hình 1. Hệ thống phát hiện  xâm nhập trái phép NIDS

b. Host-Based IDS (HIDS)
HIDS thường được cài đặt trên mỗi máy tính cần được bảo vệ, để giám sát các hành động trên các dịch vụ hoặc các máy tính có tài nguyên quan trọng và dễ bị tấn công, ví dụ, máy chủ chạy các ứng dụng quan trọng như: application server, web server, mail server. HIDS thường phát hiện các tấn công dựa trên các hành động truy cập bất thường vào trong hệ thống và gây ra các thay đổi trên hệ thống như: tiến trình, giá trị của Registry, thời gian sử dụng bộ nhớ, CPU, …
- Ưu điểm của HIDS:  Phát hiện các tấn công một cách chính xác hơn đối với từng dịch vụ hoặc từng máy tính. Cho phép ghi lại diễn biến của các cuộc tấn công, đây là cơ sở quan trọng làm bằng chứng khi cần có sự can thiệp của luật pháp và hỗ trợ cho việc nghiên cứu các kiểu tấn công mới. Có khả năng phân tích các dữ liệu mã hoá.

Hình 2. Hệ thống phát hiện xâm nhập trái phép HIDS

- Hạn chế của HIDS: Làm giảm năng lực xử lý và tiêu tốn các tài nguyên của máy tính, tốn công sức hơn trong việc triển khai và duy trì, chỉ quan sát được các tấn công cục bộ và không  thể phát hiện các cuộc dò quét mạng.
 
1.3. Hệ thống phát hiện xâm nhập trái phép mã nguồn mở Snort
Snort là một hệ thống phát hiện xâm nhập trái phép mã nguồn mở, được sử dụng một cách rộng rãi nhất hiện nay cho các mục đích nghiên cứu, phát triển và giáo dục. Nó có thể phát hiện ra nhiều loại tấn công khác nhau như: Buffer Overflow, Port scan, Cross-site scripting… Snort phát hiện tấn công dựa trên tập luật được định nghĩa sẵn bởi cộng đồng mã nguồn mở. Người dùng có thể tải các luật của Snort miễn phí trên Internet hoặc tự định nghĩa các luật để tạo ra một hệ thống phát hiện đột nhập trái phép chuyên dụng theo ý muốn.
- Luật của Snort: Mỗi luật của Snort bao gồm 2 phần: Header và Option.
Phần Header bao gồm các thuộc tính: Action (hành động), Protocol (giao thức), Source IP Address (địa chỉ nguồn) và Destination IP Address (địa chỉ đích), Sunnet mask (mặt nạ mạng con) và số hiệu Port (cổng) nguồn/đích.
Phần Option bao gồm các tham số trạng thái, nó trình bày các giá trị trạng thái của gói tin, nó cho chúng ta biết các thông tin cần thiết về lý do tại sao lại đưa ra các cảnh báo tương ứng. Ví dụ 1, một luật của Snort như sau:
Alert tcp $IN_NET 12345 -> $EXT_NET any  (msg: "có thể Backdoor: Netbus/GabanBus"; flags:SA)
Luật này đưa ra cảnh báo rằng có thể có backdoor, khi có dòng dữ liệu TCP từ một địa chỉ IP của mạng nôi bộ với số hiệu cổng (Port) là 12345 đi ra mạng bên ngoài trên cổng bất kỳ mà các giá trị tham số cờ (Flags) của các gói tin được thiết lập là SA (SYN và ACK). Trong luật được trình bày ở trên thì phần Header là Alert tcp $IN_NET 12345 -> $EXT_NET any, phần Option là (msg: “có thể có Backdoor: Netbus/GabanBus”; flags:SA).
- Tham số Action: Các tham số khác trong phần header là tương đối rõ ràng và dễ hiểu. Ở đây, chúng ta chỉ nói thêm về tham số Action. Như trong Ví dụ 1, thì Snort sẽ thực hiện hành động Alert khi dòng dữ liệu khớp với quy tắc được định nghĩa trong luật. Ngoài hành động Alert thì Snort còn có thể đưa ra một số hành động sau: Log (ghi vào tệp log), Pass (Bỏ qua các gói tin, không làm gì hết), Activate (đưa một cảnh báo và kích hoạt một luật dynamic), Dynamic (Luật Dynamic sẽ được kích hoạt bằng một luật Activate nào đó).
- Các tham số của phần Option: Một luật có thể trình bày nhiều tham số Option với các giá trị khác nhau, các tham số được phân cách bởi dấu “;”. Mỗi tổ hợp của các tham số Option sẽ xác định một luật cụ thể, điều này sẽ cho phép người dùng có thể định nghĩa ra các luật một cách linh động và phong phú. Một số tham số thường được sử dụng trong Snort như: msg (hiển thị một thông báo trong một cảnh báo hoặc khi ghi log file), ttl (dùng để so sánh với giá trị TTL trong phần header của gói tin IP), ack (dùng để so sánh với TCP ACK  trong gói tin TCP), flags (dùng để so sánh với các giá trị TCP flags trong gói tin), content  (xác định một từ khóa có trong gói tin hay không), id (dùng để so sánh với giá trị của IP header fragment trong gói tin). Ví dụ 2, luật dưới đây sẽ giúp cho Snort đưa ra cảnh báo về khả năng có tấn công quét cổng kiểu SYN FIN đối với máy tính 10.10.0.10, khi gói tin mà nó nhận thiết lập các TCP plags có giá trị là SF.
Alert any any -> 10.10.0.10 any (flags: SF; msg: "Tấn công quét cổng kiểu SYN FIN";)

2. Xác định tập luật cho hệ thống IDS
Việc xác định một tập luật cho IDS là công việc tương đối khó và cần nhiều kỹ năng trong lĩnh vực mạng máy tính cũng như lĩnh vực phân tích IDS. Trong phần này, chúng tôi giới thiệu một số phương pháp để tiếp cận với việc xác định tập luật cho IDS.

2.1 Xác định các luật của IDS dựa trên các dòng dữ liệu được phép
Đầu tiên chúng ta cần phải xác định được các kiểu gói tin nào được phép lưu thông trên hệ thống mạng. Đây là một công việc khó, đòi hỏi người quản trị phải vận dụng các kỹ năng về hệ thống mạng cũng như sử dụng các công cụ phân tích giám sát mạng và phân tích các log file. Việc xác định các kiểu gói tin được phép, không chỉ đơn thuần là dựa trên địa chỉ IP, hay số hiệu Port mà phải dựa vào cả nội dung, kích thước và các tham số khác của gói tin ở cả ba lớp: Network, Transport và Application. Tập luật được định nghĩa sẽ bao gồm các luật cho phép tất cả các kiểu gói tin được phép đi qua mà không tạo ra các cảnh báo và các luật đưa ra cảnh báo đối với các gói tin không nằm trong danh sách được phép. Ví dụ 3,  để phát hiện xâm nhập trái phép cho dịch vụ mail, đầu tiên chúng ta định nghĩa tất cả các luật để bỏ qua các gói tin được phép truyền thông với dịch vụ mail, và một luật đưa ra cảnh báo nếu gói tin truyền thông không nằm trong danh sách được phép:

Ưu điểm: Phương pháp này có thể bắt được tất cả các dòng dữ liệu không được phép, vì vậy cho phép phân tích để phát hiện được cả những tấn công chưa biết. 
Nhược điểm: Có thể có rất nhiều cảnh báo nhầm và  khó xác định một cảnh báo là đúng hay sai, mức độ nghiêm trọng như thế nào, vì vậy đòi hỏi người phân tích IDS phải có kỹ năng cao trong lĩnh vực này. Phương pháp định nghĩa này nên áp dụng tại những khu vực có mức độ tin cậy cao, mật độ dòng dữ liệu thấp hoặc sử dụng khi thực hiện cho việc nghiên cứu các tấn công mạng.

2.2. Xác định các luật dựa trên các kiểu gói tin nghi ngờ
Ý tưởng cơ bản của phương pháp này là định nghĩa các luật để tạo ra cảnh báo nếu gói tin có chứa các giá trị tham số mà các dịch vụ của hệ thống mạng không sử dụng đến. Để thực hiện phương pháp này, cần phải phân tích nội dung của dòng dữ liệu được gửi trực tiếp đến từng dịch vụ mạng cụ thể, bằng việc xác định các giá trị tham số mà dịch vụ sẽ sử dụng trong quá trình hoạt động. Tiếp theo cần định nghĩa các luật để đưa ra cảnh báo đối với những gói tin chứa giá trị tham số mà dịch vụ không sử dụng. Ví dụ 4, các web server thường cho phép trình duyệt web gửi dữ liệu của người dùng đến server thông qua phương thức POST hoặc  GET. Giả sử web server được lập trình để cho phép người dùng chỉ gửi dữ liệu theo phương thức POST, nhưng có một dòng dữ liệu gửi đến theo phương thức GET- dòng dữ liệu bị nghi ngờ,  thì cần định nghĩa một luật để tạo ra báo động trong trường hợp này.
AERT  TCP $WEB_SERVER 80 <> any 1024: (content: "GET"; msg: "HTTP sử dụng pt  GET")
Ưu điểm: Phương pháp này có thể phát hiện các tấn công chính xác hơn phương pháp thứ nhất. Cho phép đưa ra mức độ nghiêm trọng cho mỗi cảnh báo.
Nhược điểm: Đòi hỏi đầu tư nhiều công sức hơn trong việc xác định dòng dữ liệu không mong muốn của hệ thống. Yêu cầu cập nhật thay đổi khi các dịch vụ của hệ thống có sự thay đổi. Không thể phát hiện được các tấn công ở tầng mạng. Phương pháp này nên áp dụng cho các IDS dạng HOST-BASED hoặc đặt ở các vùng cần giám sát cho dịch vụ quan trọng.

2.3 Xác định dựa trên dấu hiệu tấn công đã biết
Phương pháp này đòi hỏi người định nghĩa phải biết chính xác các dấu hiệu của các kiểu tấn công, các luật được định nghĩa để tạo ra cảnh báo khi các giá trị tham số hoặc nội dung của gói tin có chứa các dấu hiệu giống với dấu hiệu của các tấn công đã biết. Ví dụ 5, kỹ thuật quét cổng “Xmas tree scan” thường  có dấu hiệu là tất cả các cờ TCP flags được thiết lập trong gói tin gửi đến, do đó chúng ta có thể định nghĩa một luật tạo ra cảnh báo như sau:
Pass TCP any 1024: <> $WEB_SERVER  22 (flags: SFRPA ; msg "Có có thể  tấn công quét cổng");
Ưu điểm: Phương pháp này tạo ra các cảnh báo với tỉ lệ chính xác rất cao.
Nhược điểm: Đòi hỏi người định nghĩa tập luật phải có rất nhiều kinh nghiệm trong lĩnh vực IDS. Tập luật được định nghĩa bằng phương pháp này sẽ bỏ sót nhiều tấn công mới hoặc những tấn công mà người định nghĩa không biết. Việc định nghĩa cần phải bỏ ra nhiều công sức hơn các phương pháp khác.

3. Kết Luận
IDS là một trong những công nghệ quan trọng nhất trong lĩnh vực an ninh mạng. Tuy nhiên,  việc sở hữu một hệ thống IDS không đảm bảo rằng hệ thống mạng sẽ an toàn trước mọi nguy cơ tấn công. Yếu tố con người mới là yếu tố quyết định đến sự thành công của một hệ thống an ninh. Những người quản trị cần được đào tạo để có phương pháp luận trong việc quản lý và duy trì hệ thống an ninh. Còn những người sử dụng cần được giáo dục để có ý thức tránh các tấn công. Hệ thống IDS cần phải được quan tâm một cách thường xuyên, đặc biệt trong vấn đề cập nhật, định nghĩa các luật cũng như phân tích các cảnh báo của IDS, vì vậy nó đòi hỏi người quản trị phải có đủ kiến thức và kỹ năng trong lĩnh vực này. Bài báo giúp cho những người làm công tác quản trị mạng, những nhân viên an ninh mạng chưa có nhiều kinh nghiệm trong lĩnh vực IDS, hiểu được hoạt động của IDS dựa trên tập luật, và một cách để tiếp cận với việc định nghĩa các luật cho hệ thống IDS dựa trên dấu hiệu tấn công và các dấu hiệu của các hành động bất thường.