IV. Cấu hình Snort nâng cao 1 Các tiện ích
c. IPS plugins
(1) Snort Inline
Snort Inline là một gói sửa đổi khác của Snort, cho phép kiểm tra các gói tin từ
iptables , phân tích và sau đó dùng các rule mới như drop,sdrop,reject để thông báo cho iptables thực hiện các tác vụ tiếp theo như hủy,loại bỏ,sửa hoặc cho phép gói tin
đi qua dựa trên các rule của Snort.
Snort Inline có thểđược cài đặt bằng 2 cách :
- dùng ./configure --enable-inline khi biên dịch mã nguồn của Snort - download gói cài đặt hoàn chỉnh tại http://snort-inline.sourceforge.net/
Nhưđã nói ở trên, Snort Inline làm việc cùng với Iptables để cung cấp 1 giải pháp NIDS/IPS tổng thể nên khi triển khai phải triển khai cả Iptables, điều này có thể gây ra khó khăn nếu như hệ thống triển khai đã sử dụng 1 loại firewall khác.
(2) SnortSam
SnortSam là 1 agent có tính năng tương tự Snort Inline, khi Snort phát hiện ra 1 vi phạm, nó cung cấp cảnh báo tương ứng với các điều kiện block cho trước đến 1 hoặc nhiều SnortSam agent được cài đặt tích hợp trên firewall hoặc có kết nối đến firewall, Agent này sẽ yêu cầu firewall block kết nối.
SnortSam đang được phát triển và ngày càng tương thích nhiều với các chủng loại firewall từ các hãng khác nhau như Checkpoint, Cisco, Juniper, xBSD ipfw, *nix IPTables, MS ISA Server…
SnortSam có thể download tại : http://www.snortsam.net/ 2. Snort switches
USAGE: snort [-options] <filter options> Options:
-A Set alert mode: fast, full, console, test or none (alert file alerts only) "unsock" enables UNIX socket logging (experimental).
-b Log packets in tcpdump format (much faster!)
-B <mask> Obfuscated IP addresses in alerts and packet dumps using CIDR mask -c <rules> Use Rules File <rules>
-C Print out payloads with character data only (no hex) -d Dump the Application Layer
-D Run Snort in background (daemon) mode -e Display the second layer header info -f Turn off fflush() calls after binary log writes -F <bpf> Read BPF filters from file <bpf>
-g <gname> Run snort gid as <gname> group (or gid) after initialization -G <0xid> Log Identifier (to uniquely id events for multiple snorts) -h <hn> Home network = <hn>
-H Make hash tables deterministic. -i <if> Listen on interface <if>
-I Add Interface name to alert output
-k <mode> Checksum mode (all,noip,notcp,noudp,noicmp,none) -K <mode> Logging mode (pcap[default],ascii,none)
-l <ld> Log to directory <ld> -L <file> Log to this tcpdump file
-M Log messages to syslog (not alerts) -m <umask> Set umask = <umask>
-n <cnt> Exit after receiving <cnt> packets -N Turn off logging (alerts still work)
-o Change the rule testing order to Pass|Alert|Log -O Obfuscate the logged IP addresses
-p Disable promiscuous mode sniffing
-P <snap> Set explicit snaplen of packet (default: 1514) -q Quiet. Don't show banner and status report -r <tf> Read and process tcpdump file <tf> -R <id> Include 'id' in snort_intf<id>.pid file name -s Log alert messages to syslog
-S <n=v> Set rules file variable n equal to value “v” -t <dir> Chroots process to <dir> after initialization -T Test and report on the current Snort configuration -u <uname> Run snort uid as <uname> user (or uid) after initialization -U Use UTC for timestamps
-v Be verbose
-V Show version number
-w Dump 802.11 management and control frames -X Dump the raw packet data starting at the link layer -x Exit if Snort configuration problems occur -y Include year in timestamp in the alert and log files
-Z <file> Set the performonitor preprocessor file path and name -? Show this information
3. Snort rule
Marty Roesch, tác giả của Snort, ngay từđầu đã chọn cách tạo ra một cú pháp đơn giản và có tính mở rộng để viết rule, điều này cho phép người dùng Snort trên toàn thế giới tạo ra một trong những tập dấu hiệu nhận dạng ( signature ) toàn diện nhất có sẵn cho mọi hệ IDS. Mỗi rule có thểđược sửa đổi riêng biệt , làm cho rule được sửa đổi ngày càng có sát với cơ
sở hạ tầng mạng Snort đang bảo vệ. Ngoài ra, các rule có thểđược tự tạo ra từđầu và hoàn toàn sử dụng được với Snort điều này ho phép người dùng tùy chỉnh để tạo ra các quy tắc làm cho Snort trở thành một ứng dụng bảo mật thật sự thực dụng.
Khi xây dựng một rule cho Snort, phải nhớ rằng ta đang thực sự tạo ra một dấu hiệu nhận biết cho 1 lưu thông mạng, mục tiêu của dấu hiệu nhận biết này là làm sao có thể phát hiện ra 1 kiểu lưu thông riêng bằng cách so sánh các lưu thông khác với nó, chính vì vậy, phải nhớ
rằng luôn có 1 khoảng cách nhất định giữa dấu hiệu ta muốn rule kích hoạt và thực tế
a. Các thành phần chính
(1) Rule Header
Rule Header quy định loại cảnh báo, loại giao thức ( protocol ), địa chỉ IP, Ports được giám sát trong dấu hiệu nhận dạng ( signature ).
Cú pháp :
rule_action protocol source_address_range source_port_range
(a) Rule Action :
Thông sốđầu tiên quy định Snort sẽ làm gì khi các gói tin phù hợp với rule.Có 3 lựa chọn :
(i) Alert (ii) Log (iii) Pass
(iv) Drop ( action riêng, mới của Snort Inline ) (b) Protocol:
Snort hỗ trợ 3 loại giao thức tại Rule Header là TCP,UDP và ICMP (c) Director operator
Chỉđịnh cho Snort biết hướng sẽ áp dụng. có 2 loại là -> và < > (d) Source and Destination IP Address
Snort hỗ trợ khai báo địa chỉ theo nhiều dạng : 1 vùng địa chỉ với netmask, hỗn hợp vừa vùng vừa địa chỉ, khai báo qua biến ( ex: $EXTERNAL_NET.. ), hoặc kiểu loại trừ với dấu “ ! “ ( ex: ! 192.168.1.1/24 )
(e) Source and Destination Ports
Snort hỗ trợ khai báo dạng 1 port, 1 dải port hoặc loại trừ
(2) Rule Option
Rule Option chính là phần dấu hiệu nhận biết ( signature ) và được quy định ưu tiên. Phần dấu hiệu này được chỉđịnh bởi một hay nhiều từ khóa lựa chọn. Những từ khóa lựa chọn này dùng để xây dựng nên dấu hiệu nhận biết cho lưu thông mạng mà ta muốn Snort giám sát. Các từ khóa lựa chọn này được phân làm 8 loại sau : (a) Các từ khóa lựa chọn liên quan đến nội dung ( Content-related )
Từ khóa lựa chọn quan trọng nhất lien quan đến việc kiểm tra nội dung. Dùng để
giám sát 1 mẫu đặt trưng trong phần tải của gói tin ( packet’s payload )
Các từ khóa lựa chọn liên quan đến nội dung chiếm khoảng 75% trong bộ rule của Snort, tuy nhiên việc sử dụng chúng cần rất cẩn thận vì chúng thường chiếm nhiều tài nguyên. Vì vậy, người ta thường hạn chế vùng tìm kiếm trong payload của gói tin bằng cách giới hạn tìm kiếm bằng các từ khóa offset, depth, flow.
Bao gồm các từ khóa sau : - Content - Uricontent - Content-list - Nocase - Offset - Depth - Regex
(b) Các từ khóa lựa chọn liên quan đến phiên làm việc ( Session-related ) - Flow
gồm các flow : to_client, to_server, from_client, from_server
ngoài ra có thể áp dụng rule cho các trạng thái riêng của phiên làm việc TCP bằng 2 thông số : established, stateless.
- Session
(c) Các từ khóa lựa chọn liên quan đến IP ( IP-related )
Dùng để kiểm tra các thông số chứa trong IP Header . Bao gồm : - Ttl
- Tos - Id
- Ipopts ( eol, sec, nop, ts, satid, rr, lsrr, ssrr )
- Fragbits ( M-More Fragments, D- Don’t Fragment, R-Reserved Bit ), +,-,! ) - Dsize
- Ip_proto : quy định các loại giao thức 0 IP 1 ICMP 2 GGP 6 TCP 8 EGP 12 PUP 17 UDP 22 IDP - Sameip - Fragoffset
(d) Các từ khóa lựa chọn liên quan đến TCP ( TCP-related ) - Flags ( TCP flags ) F FIN S SYN A ACK R Reset P Push U Urgent 0 No TCP Flags set 1 Reserved-Bit #1 2 Reserved-Bit #2 - Seq - Ack
(e) Các từ khóa lựa chọn liên quan đến ICMP ( ICMP-related ) - Itype 0 Echo reply 1 Unassigned 2 Unassigned 3 Destination unreachable 4 Source quench 5 Redirect