Snort là một hệ thống phát hiện xâm nhập mạng (NIDS) mã nguồn mở miễn phí.NIDS là một kiểu của hệ thống phát hiện xâm nhập (IDS), được sử dụng để quét dữ liệu di chuyển trên mạng. Snort cung cấp khả năng phát hiện xâm nhập theo thời gian thực. Trong hướng dẫn này, chúng ta sẽ cài đặt Snort trực tiếp từ file nguồn. Hướng dẫn này được viết cho Debian. Cập nhập, nâng cấp và khởi động lại Trước khi tiến hành, ta thực hiện một số lệnh sau: Mã: apt-get update apt-get upgrade -y reboot Chuẩn bị trước khi cài đặt Snort Tiến hành cài đặt một số gói cần thiết: Mã: apt-get install flex bison build-essential checkinstall libpcap-dev libnet1-dev libpcre3-dev libnetfilter-queue-dev iptables-dev libdumbnet-dev -y Tạo thư mục lưu trữ các tập tin nguồn: Mã: mkdir -p /usr/src/snort_src cd /usr/src/snort_src Cài đặt Data Acquisition Library (DAQ) Tải về tập tin nguồn: Mã: wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz Giải nén tập tin: Mã: tar xvfz daq-2.0.6.tar.gz Di chuyển tới thư mục daq-2.0.6 Mã: cd daq-2.0.6 Cấu hình và cài đặt DAQ. Mã: ./configure; make; make install Cài đặt Snort Chúng tôi muốn chắc chắn rằng chúng tôi đang ở trong thư mục /usr/src/snort_src, vì vậy chúng tôi dùng câu lệnh sau: Mã: cd /usr/src/snort_src Tải về tập tin nguồn: Mã: wget https://www.snort.org/downloads/snort/snort-2.9.8.0.tar.gz Giải nén tập tin: Mã: tar xvfz snort-2.9.8.0.tar.gz Di chuyển tới thư mục snort-2.9.8.0 Mã: cd snort-2.9.8.0 Cấu hình và cài đặt nguồn. Mã: ./configure --enable-sourcefire; make; make install Sau khi cài đặt của Snort Một khi đã cài đặt xong Snort, chúng tôi cần phải chắc chắn rằng các thư viện chia sẻ đã được cập nhật. Chúng tôi có thể làm điều này bằng cách sử dụng lệnh: Mã: ldconfig Sau đó, chúng tôi tiến hành kiểm tra cài đặt Snort bằng câu lệnh: Mã: snort --version Nếu lệnh này không làm việc, bạn sẽ cần phải tạo ra một liên kết tượng trưng. Bạn có thể làm điều này bằng cách gõ: Mã: ln -s /usr/local/bin/snort /usr/sbin/snort Mã: snort –version Các kết quả đầu ra sẽ giống như dưới đây: Mã: ,,_ -*> Snort! <*- o" )~ Version 2.9.7.5 GRE (Build 262) '''' By Martin Roesch & The Snort Team: http://www.snort.org/contact#team Copyright (C) 2014-2015 Cisco and/or its affiliates. All rights reserved. Copyright (C) 1998-2013 Sourcefire, Inc., et al. Using libpcap version 1.6.2 Using PCRE version: 8.35 2014-04-04 Using ZLIB version: 1.2.8 Thay đổi user chạy Snort Bây giờ chúng tôi đã cài đặt snort, chúng tôi không muốn nó chạy bằng user root, vì vậy chúng tôi cần phải tạo một user và group có tên là snort. Để tạo một user và group mới, chúng ta có thể sử dụng hai lệnh dưới đây: Mã: sudo groupadd snort sudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort Chúng tôi cần phải 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. Mã: mkdir -p /etc/snort/rules mkdir /etc/snort/preproc_rules touch /etc/snort/rules/white_list.rules /etc/snort/rules/black_list.rules /etc/snort/rules/local.rules Tạo thư mục log Mã: mkdir /var/log/snort Tạo nơi lưu trữ các quy tắc động Mã: mkdir -p /usr/local/lib/snort_dynamicrules Thiết lập quyền cho các thư mục và tập tin đã tạo Mã: chmod -R 5775 /etc/snort chmod -R 5775 /var/log/snort chmod -R 5775 /usr/local/lib/snort_dynamicrules chown -R snort:snort /etc/snort chown -R snort:snort /var/log/snort chown -R snort:snort /usr/local/lib/snort_dynamicrules Thiết lập các tập tin cấu hình Tiến hành sao chép dữ liệu tới thư mục cấu hình /etc/snort Mã: cp /usr/src/snort_src/snort*/etc/*.conf* /etc/snort cp /usr/src/snort_src/snort*/etc/*.map /etc/snort Cấu hình Trong file /etc/snort/snort.conf, bạn sẽ cần phải thay đổi biến HOME_NET. Khoảng dòng thứ 45, ta 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, … Mã: ipvar HOME_NET 192.168.0.0/24 ipvar EXTERNAL_NET !$HOME_NET Lưu ý: 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 network trong cặp dấu ngoặc vuông và cách nhau bởi dấu phẩy. Ví dụ: để giám sát máy chủ DMZ có địa chỉ IP 10.0.0.1, dải địa chỉ 172.16.0.0/16 và vùng mạng Internal 192.168.0.0/16, ta khai báo như sau: [10.0.0.1,172.16.0.0/16,192.168.0.0/16]. Nếu bạn muốn giám sát tất cả, đặt địa chỉ network là “any”. Thiết lập các quy tắc Khoảng dòng thứ 104, cấu hình đường dẫn của các file như sau: Mã: var RULE_PATH /etc/snort/rules var SO_RULE_PATH /etc/snort/so_rules var PREPROC_RULE_PATH /etc/snort/preproc_rules var WHITE_LIST_PATH /etc/snort/rules var BLACK_LIST_PATH /etc/snort/rules Một khi những giá trị này được thiết lập, xóa hoặc comment các quy tắc bắt đầu vào khoảng dòng 548. Bây giờ, cho phép kiểm tra để chắc chắn rằng cấu hình của bạn là chính xác. Bạn có thể xác minh nó với lệnh sau: Mã: snort -c -T /etc/snort/snort.conf Bạn sẽ thấy kết quả ra tương tự như sau: Mã: Running in Test mode --== Initializing Snort ==-- Initializing Output Plugins! Initializing Preprocessors! Initializing Plug-ins! ..... Rule application order: activation->dynamic->pass->drop->sdrop->reject->alert->log Verifying Preprocessor Configurations! --== Initialization Complete ==-- ,,_ -*> Snort! <*- o" )~ Version 2.9.8.0 GRE (Build 229) '''' By Martin Roesch & The Snort Team: http://www.snort.org/contact#team Copyright (C) 2014-2015 Cisco and/or its affiliates. All rights reserved. Copyright (C) 1998-2013 Sourcefire, Inc., et al. Using libpcap version 1.7.4 Using PCRE version: 8.35 2014-04-04 Using ZLIB version: 1.2.8 Rules Engine: SF_SNORT_DETECTION_ENGINE Version 2.4 <Build 1> Preprocessor Object: SF_IMAP Version 1.0 <Build 1> Preprocessor Object: SF_FTPTELNET Version 1.2 <Build 13> Preprocessor Object: SF_SIP Version 1.1 <Build 1> Preprocessor Object: SF_REPUTATION Version 1.1 <Build 1> Preprocessor Object: SF_POP Version 1.0 <Build 1> Preprocessor Object: SF_DCERPC2 Version 1.0 <Build 3> Preprocessor Object: SF_SDF Version 1.1 <Build 1> Preprocessor Object: SF_GTP Version 1.1 <Build 1> Preprocessor Object: SF_DNS Version 1.1 <Build 4> Preprocessor Object: SF_SSH Version 1.1 <Build 3> Preprocessor Object: SF_DNP3 Version 1.1 <Build 1> Preprocessor Object: SF_SSLPP Version 1.1 <Build 4> Preprocessor Object: SF_SMTP Version 1.1 <Build 9> Preprocessor Object: SF_MODBUS Version 1.1 <Build 1> Snort successfully validated the configuration! Snort exiting Mọi thứ đều đã được cấu hình và không xuất hiện lỗi, tiếp theo ta tiến hành kiểm tra snort. Kiểm tra Snort Cách đơn giản nhất để kiểm tra Snort là bằng cách cho phép các local.rules. Đây là một tập tin có chứa các quy tắc tùy chỉnh của bạn. Nếu bạn đã nhận thấy trong file snort.conf, ở đâu đó xung quanh dòng 546, dòng này tồn tại: Mã: include $RULE_PATH/local.rules Nếu bạn không có nó, hãy thêm vào khoảng 546. Sau đó bạn có thể sử dụng các tập tin local.rules để thử nghiệm. Bây giờ ta sẽ tạo một rule thử nghiệm. Rule này sẽ báo cho bạn nếu có ai đó đang thực hiện ping từ External network vào Internal network. Bạn có thể làm điều đó bằng cách thêm vào các dòng sau vào tập tin local.rules của bạn. Mã: vim /etc/snort/rules/local.rules Mã: alert icmp any any -> $HOME_NET any (msg:"Ai do dang ping tu ben ngoai"; sid:10000001; rev:001;) Lưu lại file rồi thoát. Chạy thử nghiệm Sử dụng câu lệnh sau: Mã: /usr/local/bin/snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eno1 Các tham số: -A console: cho Snort biết ta sẽ chạy Snort và mọi kết quả sẽ hiện lên màn hình Terminal hiện tại. -c : đường dẫn file cấu hình sẽ sử dụng. -i eno1: lắng nghe trên interface eno1. -u snort và -g snort: chạy snort dưới quyền của user và group snort. Tiến hành ping tới địa chỉ ip của máy chủ của bạn từ một máy khác. Bạn sẽ bắt đầu thấy kết quả đầu ra trông giống như sau: Mã: 01/07−16:03:30.611173 [**] [1:10000001:0] Ai do dang ping tu ben ngoai [**] [Priority: 0] 192.168.1.105 -> 192.168.1.104 01/07−16:03:31.612174 [**] [1:10000001:0] Ai do dang ping tu ben ngoai [**] [Priority: 0] 192.168.1.104 -> 192.168.1.105 01/07−16:03:31.612202 [**] [1:10000001:0] Ai do dang ping tu ben ngoai [**] [Priority: 0] 192.168.1.105 -> 192.168.1.104 ^C*** Caught Int−Signal Bạn có thể nhấn Ctrl + C để thoát khỏi chương trình. Điều này cho thấy Snort đã được thiết lập. Bây giờ bạn có thể sử dụng bất kỳ quy tắc mà bạn mong muốn. Bạn có thể tải về các rule từ trang chính thức của snort, bạn hãy vào trang này, dưới tab Communty, rồi tải về tập tin là community-rules.tar.gz, sau đó giải nén, bạn sẽ có được 1 file là community.rules chứa các quy tắc cần thiết.