6. Bố cục của luận văn
2.3.2.2. Các tùy chọn
Rule option là thành phần theo sau rule header và đƣợc đặt trong dấu ngoặc đơn. Có thể có một hoặc nhiều rule option và chúng đƣợc chia cách bời dấu chấm phẩy (;). Khi sử dụng nhiều option cùng lúc thì sẽ có ý nghĩa là phải thỏa tất cả các option đó (toán tử AND). Tất cả các option đƣợc định nghĩa bằng các từ khóa, một số rule còn sử dụng thêm các argument. Argument và keyword cách nhau bởi dấu hai chấm (:).
Các loại từ khóa:
Từ khóa msg: Đƣa ra thông báo.
Từ khóa sid: Dùng id để xác định luật duy nhất. + <100 dành cho việc phát triển trong tƣơng lai.
+ 100 - 999.999 dành cho các luật mặc định trong file luật của Snort. + >=1.000.000 dành cho các luật của ngƣời dùng tạo.
Từ khóa classtype: Dùng để phân loại cái rule nhằm tạo điều kiện thuận lợi trong việc phân tích và thống kê các ghi nhận của Snort. Argument của classtype đƣợc liệt kê trong file classification. config với định dạng nhƣ sau:
config classification: name, description, priority. Trong đó:
+ name: Đƣợc sử dụng cùng với từ khóa classtype
+ description: Mô tả về loại lớp này
+ priority có thể đƣợc điều chỉnh thông qua từ khóa priority trong option. Ví dụ :
config classification: DoS , Denial of Service Attack, 2 và trong luật:
alert udp any any -> 192.168.1.0/24 6838 (msg:”DoS”; content: “server”; classtype: DoS;)
alert udp any any -> 192.168.1.0/24 6838 (msg:”DoS”; content: “server”; classtype: DoS; priority: 1;)
Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ Trong câu lệnh thứ 2 thì ta đã ghi đè lên giá trị priority mặc định của lớp đã định nghĩa.
Từ khóa content: Dùng để rà soát thành phần trong gói tin dƣới dạng ASCII hay Hecxa.
alert tcp 192.168.1.0/24 any -> ![192.168.1.0/24] any (content: “GET”; msg: “GET match”;)
Luật trên tìm mẫu “GET” trong phần dữ liệu của tất cả các gói tin TCP có nguồn đi từ mạng 192.168.1.0/24 và đi đến các địa chỉ không thuộc mạng đó. Từ “GET” này rất hay đƣợc dùng trong các tấn công HTTP.
Một luật khác cũng thực hiện đúng nhiệm vụ giống nhƣ lệnh trên nhƣng mẫu dữ liệu lại dƣới dạng hệ 16 là:
alert tcp 192.168.1.0/24 any -> ![192.168.1.0/24] any (content: “|47 45 54|”; msg: “GET match”;)
ttl: Kiểm tra giá trị time-to-live của gói tin IP.
offset: Dùng kèm theo với từ khóa content để chỉ ra vị trí offset đầu tiên để bắt đầu tìm kiếm.
Ví dụ sau sẽ tìm chuỗi “HTTP” bắt đầu từ vị trí cách đầu đoạn dữ liệu của gói tin là 4 byte:
alert tcp 192.168.1.0/24 any -> any any (content: “HTTP”; offset: 4; msg: “HTTP matched”;)
dept: Dùng kèm theo content và offset để định ra một khoảng cần tìm kiếm sau offset đã định bằng từ khóa offset.
Ví dụ:
alert tcp 192.168.1.0/24 any -> any any (content: “HTTP”; offset: 4; dept: 40; msg: “HTTP matched”;).
content-list: Khi có nhiều nội dung cần dò tìm thay vì dùng nhiều lần content ta sẽ đƣa những từ cần tìm vào một file và tên file đó sẽ trở thành argument cho keyword content-list.
Ví dụ nhƣ file test có dạng nhƣ sau: “test”
“Snort” “NIDS”
Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ và ta có luật sau:
alert tcp 192.168.1.0/24 any -> any any (content-list: “test”;msg: “This is my Test”;).
Ta cũng có thể dùng kí tự phủ định ! trƣớc tên file để cảnh báo đối với các gói tin không tìm thấy một chuỗi nào trong file đó.
Từ khóa dsize: Dùng để xác định chiều dài phần dữ liệu của gói tin trong những trƣờng hợp dò tìm tấn công tràn bộ đệm bằng cách gửi những gói tin có chiều dài dữ liệu bất thƣờng.
Từ khóa flags: Dùng để dò tìm bit flag của gói tin theo các argument nhƣ sau:
Flag Kí tự tham số dùng trong luật của Snort
FIN F SYN S RST R PSH P ACK A URG U Reserved Bit 1 1 Reserved Bit 2 2 No Flag set 0
Bảng 2.2. Các cờ sử dụng với từ khóa flags
Ta có thể sử dụng các dấu +, * và ! để thực hiện các phép toán logic AND, OR và NOT trên các bit cờ muốn kiểm tra.
Ví dụ luật sau đây sẽ phát hiện một hành động quét dùng gói tin TCP SYN- FIN:
alert tcp any any -> 192.168.1.0/24 any (flags: SF; msg: “SYNC-FIN packet detected”;)
Từ khóa flow: Cho phép luật chỉ chấp nhận hƣớng của traffic flow đƣợc chỉ ra.
Số hóa bởi Trung tâm Học liệu - ĐHTN http://www.lrc-tnu.edu.vn/ Từ khóa ack: Dùng để đặt ra điều kiện về trƣờng ACK của gói tin cần xét. Từ khóa này đƣợc sử dụng trong những trƣờng hợp truy tìm những gói tin ping thăm dò của hacker với trƣờng ACK mang những giá trị đặc biệt nhằm mục đích foot printing.
Vậy để kiểm tra loại ping TCP này thì ta có thể dùng luật nhƣ sau:
alert tcp any any -> 192.168.1.0/24 any (flags: A; ack: 0; msg: “TCP ping detected”)
Thứ tự các rule trong rule base của Snort
Rule có thể phân thành 3 loại dựa trên trƣờng Action của Rule: Alert > Pass > Log.
Khi một gói tin đi vào IDS Snort, nó sẽ đƣợc kiểm tra theo thứ tự nêu trên để đảm bảo mọi gói tin đều đƣợc kiểm tra thông qua những rule Alert nhằm loại bỏ những mối nguy hại cho hệ thống. Tuy nhiên nếu thực hiện theo cơ chế này thì sẽ hao tốn vi xử lý rất nhiều vì khi hệ thống hoạt động có rất nhiều gói tin đi qua mà phần lớn là các gói tin bình thƣờng không gây hại. Vì thế Snort đã đƣa ra một thứ tự khác nhằm giải quyết tình trạng này đó là: Pass > Alert > Log.
Cơ chế này giải quyết đƣợc vấn đề vi xử lý tuy nhiên lại nguy hiểm hơn nếu ngƣời quản trị không cẩn thận trong việc viết các pass rule khiến cho các gói tin lẽ ra phải báo động thì lại cho qua dễ dàng. Ngƣời dùng có thể điều chỉnh thứ tự rule thông qua file Snort.conf ở dòng config order Alert -> Pass -> Log. [4]