Thành phần

Snort sử dụng file cấu hình lúc khởi động. Một file cấu hình snort.conf được chứa sẵn trong source code của Snort /etc/snort/snort.conf. Có thể đặt tên tùy ý cho file cấu hình, tuy nhiên tên thông thường là snort.conf. Khi muốn sử dụng trong hoạt động của Snort thì kèm theo option -c trong câu lệnh cùng với tên của file cấu hình.

File cấu hình được tổ chức thành nhiều phần khác nhau:

  • Các biến network và các biến cấu hình
  • Cấu hình module Decoder và Detection engine của Snort
  • Cấu hình tiền xử lý (Pre-processor)
  • Cấu hình output
  • File inclusions

Cụ thể, từng thành phần như sau:

  1. Các biến network và biến cấu hình

Các biến được định nghĩa trong file cấu hình được dùng trong các rule của Snort. Có 3 loại biến trong Snort, là var, portvar và ipvar.

  • Biến IP và danh sách các IP: IP nên được dùng với kiểu biến ipvar nhưng sử dụng var cũng được. Tên biến IP có thể bắt đầu bằng số hoặc chữ hay ‘_’. Biến này có hỗ trợ toán tử ! (đảo). Từ khóa any dùng cho trường hợp thỏa mọi IP nhưng không hỗ trợ !any.
  • Biến port và danh sách các port: nên dùng kiểu biến portvar, có thể dùng var (với tên biến bắt đầu hoặc kết thúc bằng PORT_ hay _PORT), khoảng giá trị hợp lệ là 0 đến 65535, có thể biểu diễn dưới dạng danh sách hay khoảng port. Từ khóa any chỉ tất cả các port nhưng không hỗ trợ !any.
  • Một số biến mặc định trong snort: HOME_NET, EXTERNAL_NET, HTTP_PORTS,…

2. Cấu hình bộ tiền xử lý  (Pre-processor)

Các bộ tiền xử lý và các plug-ins đầu vào hoạt động trên các gói tin nhận được trước khi các Snort rule được áp dụng trên chúng, chạy sau khi gói tin được decode và trước khi gọi detection engine. Cấu hình bộ tiền xử lý cung cấp các thông tin cơ bản về thêm hoặc bớt các bộ tiền xử lý của Snort. Phần cấu hình này có định dạng:

preprocessor <tên>[: <option cấu hình>]

Mỗi pre-processor có thể chấp nhận các option hay tham số khác nhau được cung cấp phía sau tên của nó. Ngoài những preprocessor được định nghĩa sẵn, người dùng có thể viết preprocessor của riêng mình với hướng dẫn được cung cấp trong source code của Snort.

3. Cấu hình Decoder và Detection Engine

Mặc định decoder của Snort sẽ cảnh báo việc sử dụng các gói TCP có option không thông dụng, do ít gặp trên mạng nên xem như là hành động không hợp lệ. Người dùng có thể tắt các cảnh báo này bằng cách bỏ ký tự “#” vào trước vào các dòng lệnh disable một loại cảnh báo nào đó, ví dụ config disable_decode_alerts.

4. Cấu hình module output

Module output thay đổi đầu ra từ các rule của Snort. Việc cấu hình của module này thường có định dạng chung như sau:

output <tên module>[: <option cấu hình>]

5.  Định nghĩa kiểu action mới

Ngoài các kiểu action được Snort định nghĩa trước như alert, drop, pass, log… người dùng có thể tự định nghĩa một kiểu action trong file cấu hình với định dạng:

ruletype ten_hanh_dong {    action definition }

6.  File inclusion

File cấu hình có thể chứa các file khác với từ khóa include. Những file được thêm này có thể là những file chứa các thông tin cấu hình hay chứa các rule được Snort sử dụng (có đuôi .rules). Ngoài ra, từ khóa include cũng có thể dùng cho các file classification.config trong trường hợp cài đặt việc phân loại và độ ưu tiên trong Snort, hoặc reference.config chứa các liên kết đến các trang web chứa thông tin về các cảnh báo.

include <path_to_file>

Cấu hình Snort và Kiểm tra cấu hình

Snort cần một số file và thư mục để hoạt động cùng các quyền hạn trên các thư mục này, bao gồm các thư mục: cấu hình và các rule được lưu trong /etc/snort, các cảnh báo được xuất ra /var/log/snort, các rule được biên dịch sẽ lưu trong /usr/local/lib/snort_dynamicrules. Tạo các thư mục cần thiết:

  • Tạo thư mục log:

  • Tạo nơi lưu trữ các quy tắc động:

Sao chép các file cấu hình và preprocessor cần thiết cần cho hoạt động của Snort vào thư mục /etc/snort. Danh sách các file này bao gồm:

Với snortrule-snapshot-2990.tar.gz đã sao chép vào máy Ubuntu Server trước đó, giải nén file này vào thư mục /etc/snort:

Ta được danh sách các thư mục rule được định nghĩa sẵn gồm rules, preproc_rules, so_rules:

Tạo ra các tập tin cấu hình và các tập tin chứa quy tắc cho snort bằng cách tạo 2 file white_list.rules và black_list.rules trong thư mục /etc/snort/rules:

Thiết lập quyền cho các thư mục và tập tin đã tạo:

Với các thư mục này, cần thay đổi quyền sở hữu để đảm bảo Snort có thể truy xuất đến chúng:

  • Thay đổi file cấu hình của Snort:

Trong file /etc/snort/snort.conf, bạn sẽ cần phải thay đổi biến HOME_NET. Ta có thể khai báo Internal network và các network được xem là External, các HTTP servers, DNS servers, danh sách các port, …

HOME_NET và EXTERNAL_NET có thể là một địa chỉ IP chính xác hoặc một địa chỉ network. Để khai báo nhiều địa chỉ IP hoặc network, bạn cần khai báo tất cả các IP hoặc network trong cặp dấu ngoặc vuông và cách nhau bởi dấu phẩy.

Ở đây, nhóm thực hiện với EXTERNAL_NET là những IP khác mạng HOME_NET(192.168.139.0/24).

Thay đổi các tham số PATH trong file cấu hình cho phù hợp với cấu trúc thư mục của Snort đã tạo trên máy:

Kiểm tra để chắc chắn cấu hình chính xác:

(còn tiếp)