PDA

View Full Version : File snort.conf trong Snort



tranthanhliem
05-09-2007, 09:15 PM
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

Các biến cấu hình

Phần đầu của file dành cho việc ghi lại một vài thông tin cấu hình. Hầu hết các biến được sử dụng bởi các luật Snort để xác định chức năng của một vài hiển thị và vị trí của các phần khác. Các biến vạch ra cách bố trí môi trường mà Snort có thể quyết định sự kiện nào sẽ tạo ra cảnh báo.Các biến tìm kiếm cả địa chỉ IP và cổng TCP mà một dịch vụ đang lắng nghe.
Theo mặc định, các biến được khai báo với giá trị bất kì. Nó đúng với bất kì địa chỉ IP nào. Khi giá trị này được sử dụng, nó có thể tạo ra một số lượng lớn các cảnh báo nhầm.
Để xác định một địa chỉ đơn, chỉ cần đánh vào địa chỉ IP đó :

var HOME_NET 10.120.25.135

Bạn cũng có thể xác định nhiều địa chỉ, các nhóm địa chỉ nằm trong dấu ngoặc vuông và các địa chỉ cách nhau bởi dấu phẩy (không có khoảng trắng):

var HOME_NET [10.10.10.20,192.168.1.23,172.16.30.25]

Bạn cũng có thể xác định một không gian địa chỉ bằng cách xác định số các bit trong subnet mask. Ví dụ :

var HOME_NET 10.10.10.0/24

Bạn có thể kết hợp các kiểu ghi địa chỉ như sau :
var HOME_NET [192.168.1.12,172.16.0.0/16,10.10.10.10,10.10.20.0/24]

Bạn có thể sử dụng kí tự “!” để phủ định. Lưu ý rằng khi thiết lập các biến, bạn chỉ sử dụng tên biến. Khi bạn thật sự sử dụng biến, bạn phải đặt kí tự “$” trước tên biến. Ví dụ sau đây sẽ thiết lập biến EXTERNAL_NET là tất cả các địa chỉ không nằm trong biến HOME_NET:

var EXTERNAL_NET !$HOME_NET

Một vài biến cần gán cho số cổng, không phải là địa chỉ IP. Ta có thể gán 1 cổng đơn, 1 dãy các cổng liên tục hoặc là phủ định của 1 cổng. Ví dụ:
var ORACLE_PORTS 1521
var ORACLE_PORTS 8000:8080 (các cổng từ 8000 đến 8080)
var ORACLE_PORTS :8080 (các cổng lớn hơn 8080)
var SHELLCODE_PORTS !80 (không phải cổng 80)

Các biến mặc định trong file snort.conf là:

HOME_NET
Sử dụng để xác định địa chỉ IP của hệ thống bạn đang bảo vệ.

EXTERNAL_NET
Ta nên sử dụng kí tự “!” để xác định mọi thứ không nằm trong mạng bên trong của bạn. Ví dụ, hãy xem một luật sau đây:

alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"ATTACK-RESPONSES directory listing"; content: "Volume Serial Number"; flow:from_server,established; classtype:bad-unknown;

Có nhiều luật được thiết kế để giám sát các dịch vụ cụ thể. Việc đặt địa chỉ cho các server làm giảm số lượng các cảnh báo nhầm mà Snort tạo ra. Thình thoảng, server bạn liệt kê không có trên mạng. Ví dụ, bạn có thể không có các server DNS bên mạng trong. Các biến được sử dụng để định nghĩa các server chạy các dịch vụ mà có các luật xác định là :

DNS_SERVERS
SMTP_SERVERS
HTTP_SERVERS
SQL_SERVERS
TELNET_SERVERS
SNMP_SERVERS


HTTP_PORTS
Cổng 80 là cổng mặc định của HTTP.

SHELLCODE_PORTS
Thường được đặt là các cổng không phải là 80

ORACLE_PORTS
Xác định cổng mà Orale lắng nghe. Mặc định, Oracle lắng nghe ở cổng 1521.
AIM_SERVERS
Biến này được sử dụng bởi các luật để giám sát lưu lượng peer-to-peer và instant messenger. Nó được cấu hình với các danh sách địa chỉ server AOL Instant Messenger. Danh sách này thay đổi theo thời gian.
RULE_PATH
Biến này cần được thiết lập đúng, nếu không, Snort sẽ không hoạt động.Nó chỉ đến vị trí các luật trong file hệ thống. Nếu các luật được đặt trong /usr/local/share/snort_rules/march_2003/rules thì ta phải thiết lập biến như sau :
var RULE_PATH /var/local/share/snort_rules/march_2003/rules

Cấu hình bộ giải mã và bộ phận phát hiện của Snort

Bộ giải mã Snort giám sát cấu trúc gói tin để đảm bảo chúng được xây dựng theo qui định. Nếu một gói tin có kích thước lạ, một tập hợp tùy chọn lạ, hoặc là các thiết lập không phổ biến, Snort sẽ tạo ra một cảnh báo. Nếu bạn không quan tâm đến các cảnh báo này hoặc là số lượng các cảnh báo nhầm quá lớn, bạn có thể tắt việc tạo ra cảnh báo của bộ giải mã. Theo mặc định, tất cả các cảnh báo đều được bật. Để tất một kiểu cảnh báo cụ thể, xóa kí tự “#” ở đầu dòng. Các tùy chọn cấu hình bộ giải mã là:

# config disable_decode_alerts
# config disable_tcpopt_experimental_alerts
# config disable_tcpopt_obsolete_alerts
# config disable_tcpopt_ttcp_alerts
# config disable_tcpopt_alerts
# config disable_ipopt_alerts


Lưu ý : bạn cũng có thể thêm nhiều tùy chọn dòng lệnh Snort vào phần này của file snort.conf. Bảng 5-1 chỉ ra một vài tùy chọn:


Table 5-1. snort.conf configure options
Tùy chọn
Mô tả
config order: [pass, alert, log, activation, or dynamic]
Thay đổi thứ tự các luật được đánh giá.
config alertfile: alerts
Thiết lập file cảnh báo output.
config decode_arp
Bật giải mã arp (snort -a).
config dump_chars_only
Bật dump kí tự (snort -C).
config dump_payload
Dump thông tin lớp ứng dụng (snort -d).
config decode_data_link
Giải mã header lớp 2 (snort -e).
config bpf_file: filters.bpf
Xác định bộ lọc BPF (snort -F).
config set_gid: 30
Thay đổi GID (snort -g).
config daemon
Chạy Snort trong chế độ daemon (snort -D).
config interface: <interface name>
Thiết lập giao diện mạng (snort -i).
config alert_with_interface_name
Gán tên cho cảnh báo (snort -I).
config logdir: /var/log/snort
Thiết lập thư mục log (snort -l).
config umask: <umask>
Thiết lập umask khi đang chạy (snort -m).
config pkt_count: N
Thoát ra sau N gói tin (snort -n).
config nolog
Tắt việc ghi log (vẫn còn cảnh báo) (snort -N).
config obfuscate
Làm khó hiểu các địa chỉ IP (snort -O).
config no_promisc
Tắt chế độ promiscuous (snort -p).
config quiet
Tắt các đầu đề và trạng thái bản báo cáo (snort -q).
config chroot: /home/snort
Chroot đến thư mục xác định (snort -t).


config checksum_mode : all
Các kiểu gói tin được tính checksum. Các giá trị là : none, noip, notcp, noicmp, noudp, và all.

config set_uid: <id>
Thiết lập UID (snort -u).
config utc
Sử dụng UTC thay vì thời gian cục bộ cho timestamp (snort-U).
config verbose
Sử dụng ghi log Verbose cho stdout (snort -U).
config dump_payload_verbose
Bỏ raw packet bắt đầu từ lớp liên kết (snort -X ).
config show_year
Hiển thị năm trong timestamps (snort -y).


Cấu hình tiền xử lí

Các bộ tiền xử lí phục vụ một ít mục đích. Chúng chuẩn hóa lưu lượng cho nhiều loại dịch vụ, đảm bảo rằng dữ liệu trong các gói tin mà Snort giám sát sẽ có 1 định dạng mà các dấu hiệu sẽ được nhận ra. Một chức năng khác của bộ tiền xử lí là tự bảo vệ. Nhiều loại tấn công được thiết kế để gây nhầm lẫn hoặc làm tràn ngập bộ cảm biến NIDS, vì vậy mà kẻ tấn công có thể thực hiện tấn công mà không bị phát hiện. Tiền xử lí frag2 và stream4 chủ yếu là các cơ chế phòng thủ.
Lợi ích cuối cùng của bộ tiền xử lí là chúng mở rộng khả năng của Snort để phát hiện các điều bất thường mà có thể là dấu hiệu xâm nhập.

Cấu hình xuất kết quả

Một trong những sức mạnh thật sự của Snort là các tùy chọn để xuất các cảnh báo và thông tin phát hiện xâm nhập. Nhiều nhà quản trị Snort sử dụng các ứng dụng của công ty thứ ba để giám sát và nghiên cứu thông tin tạo ra bởi Snort. Để làm được việc đó, Snort phải xuất dữ liệu theo một định dạng cụ thể. Output plug-ins thực hiện nhiệm vụ này. Lưu ý rằng việc sử dụng một vài plug-in này đòi hỏi nhà quản trị phải thực hiện một vài bước khi Snort được biên dịch. Ví dụ, để cho phép Snort xuất dữ liệu ra một cơ sở dữ liệu MySQL, MySQL client cần được cài đặt trên hệ thống Snort và tùy chọn --with-mysql phải được xác định với câu lệnh ../configure. Một vài tùy chọn chỉ sử dụng được trên các platform cụ thể. Ví dụ, chỉ hệ thống Window có thể log trực tiếp vào Microsoft SQL Server với plug-in mysql (hệ thống Unix phải dùng ODBC với plug-in odbc). Nhiều plug-in output có thể được bật, cho phép nhiều công cụ được triển khai bởi nhà quản trị.

Alert_syslog

Các hệ thống Unix sử dụng syslog để tập hợp các thông điệp được tạo ra bởi một hoặc nhiều hệ thống. Có một số cách khác nhau để Snort tạo ra thông tin có thể được trình bày trong syslog. Bạn có thể xác định khả năng được sử dụng bởi Snort và cũng xác định mức độ ưu tiên được gán cho các mục được tạo ra bởi Snort.

Định dạng của plug-in này là:

Output alert_syslog: <facility> <Priority>
Tùy chọn facility xác định một trong các chuẩn syslog :
LOG_AUTH:
LOG_AUTH
LOG_AUTHPRIV
LOG_DAEMON
LOG_LOCAL0
LOG_LOCAL1
LOG_LOCAL2
LOG_LOCAL3
LOG_LOCAL4
LOG_LOCAL5
LOG_LOCAL6
LOG_LOCAL7
LOG_USER
Tùy chọn priority cũng xác định một trong các ưu tiên chuẩn của syslog :
LOG_ALERT:
LOG_EMERG
LOG_ALERT
LOG_CRIT
LOG_ERR
LOG_WARNING
LOG_NOTICE
LOG_INFO
LOG_DEBUG
Đây là một cấu hình mẫu cho output plug-in alert_syslog :
output alert_syslog: LOG_AUTH LOG_ALERT

Log_tcpdump

Output plug in này ghi log gói tin theo định dạng tcpdump. Có nhiều ứng dụng có thể đọc định dạng này. Tùy chọn duy nhất cho output plug in này là tên file trong thông tin được ghi.
Đây là một cấu hình mẫu cho log_tcpdump plug-in:
output log_tcpdump /var/log/snort/tcpdump.out

Cơ sở dữ liệu
Plug-in cơ sở dữ liệu cho phép bạn viết nhiều cơ sở dữ liệu liên quan với nhau trên cùng một hệ thống đang chạy Snort hoặc trên một host khác. Khi ghi log vào một cơ sở dữ liệu, nhiều thông tin được ghi lại – bao gồm các cảnh báo, liên quan đến host, và gói tin gây ra cảnh báo – làm cho việc phân biệt giữa các cảnh báo thật và giả dễ dàng hơn.
Thỉnh thoảng việc ghi log vào một server cơ sở dữ liệu có thể gây ra nghẽn cổ chai, vì chỉ có một cảnh báo được ghi log vào 1 thời điểm. Một server cơ sở dữ liệu được cấu hình tốt có thể giải quyết vấn đề này.
Plug-in output cơ sở dữ liệu có định dạng sau :
output database: <log|alert>, <database type>, <parameter list>

<log|alert>
Chọn log hoặc alert. Log gửi thông tin log đến cơ sở dữ liệu, và alert gửi các cảnh báo. Lưu ý rằng log bao gồm các thông tin cảnh báo và thông tin gói tin tạo ra cảnh báo. Nếu bạn muốn gửi cả hai đến cơ sở dữ liệu, bạn cần chọn 2 dòng output cơ sở dữ liệu.

< database type>
Đây là nơi bạn xác định kiểu cơ sở dữ liệu mà bạn ghi log. Snort hỗ trợ các dạng sau : mysql, postgresql, oracle, odbc, and mssql.

Khi cấu hình một plug-in output cơ sở dữ liệu cụ thể, thiết lập các thông số sau (không có dấu phẩy giữa các thông số) :

Thông số
Mô tả
host
Địa chỉ IP của server cơ sở dữ liệu. Nếu để trống, nó sẽ là máy cục bộ (local machine)

port
Cổng mà cơ sở dữ liệu đang lắng nghe. Bạn chỉ cần xác định nếu không sử dụng cổng chuẩn.

dbname=<database name>

Kiểu cơ sở dữ liệu bạn ghi log

user
Username mà Snort sử dụng để ghi log vào cơ sở dữ liệu.

password
Password được sử dụng để log vào cơ sở dữ liệu.

sensor_name

Tên bộ cảm biến cho cấu hình này (không bắt buộc). Cách khác, tùy chọn –I ở dòng lệnh sử dụng địa chỉ IP của bộ cảm biến như là tên.

encoding
Việc mã hóa được sử dụng để ghi log vào cơ sở dữ liệu. Bạn có thể xác định hex( ít tốn không gian, có thể tìm kiếm nhưng khó đọc ), base64 (nhỏ hơn plain text, không tìm kiếm được, không đọc được bởi người ), hoặc ASCII (lớn hơn, có thể tìm kiếm, người dùng có thể đọc được).

detail
Bạn có thể xác định mức độ chi tiết được sử dụng để khi gửi thông tin đến cơ sở dữ liệu. Full sẽ bao gồm tất cả thông tin mà Snort thu thập, bao gồm cả header và thông tin gói tin. Fast thì nhanh hơn 1 chút, nhưng bao gồm ít thông tin hơn như tên cảnh báo, địa chỉ và cổng nguồn, đích và thời gian. Full được khuyên dùng.




Các file kèm theo

Thành phần cuối cùng trong file snort.conf là các mục đính kèm. Câu lệnh include nói cho Snort đính kèm thông tin trong các file đặt trong file hệ thống Snort. Những file này bao gồm thông tin cấu hình và các file chứa luật mà Snort sử dụng để phát hiện xâm nhập. Đường dẫn mặc định nên được xác định sớm trong cấu hình. Sử dụng biến $RULE_PATH để chỉ vị trí của chúng, hoặc sử dụng tên đầy đủ để chỉ các file luật bạn muốn sử dụng.
Nhiều file đính kèm có thể được sử dụng trong một cấu hình. Đây là mẫu cấu hình đính kèm nói cho Snort các file luật nào được sử dụng :

# include $RULE_PATH/bad-traffic.rules (không sử dụng file luật này)

include $RULE_PATH/exploit.rules

include $RULE_PATH/scan.rules

Nếu bạn đang sử dụng cài đặt phân loại mức độ ưu tiên hoặc tham chiếu đến bất kì một hệ thống nào, sử dụng các mục sau đây. Đảm bảo rằng các file này tồn tại khi khởi động Snort. Những file này giúp phân loại và ưu tiên cho các cảnh báo tùy theo mức độ. Bạn có thể chỉnh sửa file classification.config theo ý của mình. Khi file này được cấu hình theo nhu cầu của bạn, bạn có thể sử dụng console để tìm kiếm các cảnh báo có độ ưu tiên cao nhất.
File reference.config bao gồm các link đến các trang web với thông tin về tất cả các cảnh báo. Nó rất hữu dụng.

# Include classification & priority settings
include classification.config
# Include reference systems
include reference.config

vudinhcuong
22-10-2008, 04:44 PM
Đầu tiên xin chân thành cảm ơn anh tranthanhliem (http://vnpro.org/forum/member.php?u=11505) về bài viết này
Xin anh vui lòng cho tôi hỏi về cách làm thế nào để cấu hình Snort trên Windows. khi tôi cài đặt vào máy tính xong và chạy dòng lệnh:
Snort -v thì nó báo là Not Using PCAP_FRAMES như vậy thì tôi đã làm sai điều gì và làm thế nào để cho nó hoạt động (xem hình 1).
http://www.sachvang.org/hinh/snort1.jpg

Rất mong nhận được sự hồi đáp của anh.

nvnam
23-12-2008, 03:37 PM
here is the steps if ur using windows XP
1) rite click on my computer
2) properties
3) Open the "Advanced" tab
4) "Environment Variables"
5) "new" from the system var area
6) fill the var name 'PCAP_FRAMES" and its value 32768 for example