Cài đặt Các Thư Viện Cần Thiết Cho Việc Cài đặt Snort:

5.1.1. Cài đặt các thư viện cần thiết cho việc cài đặt Snort:

Cài đặt Snort:

Đề tài: Xây dựng hệ thống Snort IDS-IPS trên CentOS GVHD: PGS.TS Trần Công Hùng

session: [printable|all];

- resp

Dùng để đóng phiên làm việc khi cảnh báo được bật. Trong Snort resp được mệnh danh là sự đáp ứng linh hoạt.

resp_mechanism:

 rst_snd: Gửi gói TCP-RST tới socket bên gửi.  rst_rcv: Gửi gói TCP-RST tới socket bên nhận.  rst_all: Gửi gói TCP-RST tới socket của 2 bên.

 icmp_net: Gửi một ICMP NET UNREACH tới bên nhận.  icmp_host: Gửi một ICMP HOST UNREACH tới bên nhận.  icmp_port: Gửi một ICMP PORT UNREACH tới bên nhận.  icmp_all: Gửi tất cả gói ICMP ở trên tới bên nhận.

Cấu trúc:

resp:<resp_mechanism>[,<resp_mechanism>[,<resp_mechanism>]];

- react

Mặc định thì Snort sẽ đóng các kết nối, khóa vài vị trí hoặc dịch vụ và gửi cảnh báo đến trình duyện web của user (nếu như truy cập web).

 block – Đóng kết nối và gửi thông báo.  warn – Gửi thông báo.

 msg – Bao gồm từ khóa msg để block.

 proxy <port nr> – Dùng port porxy để gửi thông báo. Cấu trúc:

Chương IV. Tìm hiểu về Snort - 62 - Ngô Văn Chơn - Lê Thị Mộng Vân

Đề tài: Xây dựng hệ thống Snort IDS-IPS trên CentOS GVHD: PGS.TS Trần Công Hùng

react: block[, <react_additional_modifier>];

Ví dụ:

alert tcp any any <> 192.168.1.0/24 80 (content: "bad.htm"; \ msg: "Not for children!"; react: block, msg, proxy 8000;)

- Ngoài ra còn một số tùy chọn khác như: tag, activates, activated_by, count,

Chương V. Cài đặt và cấu hình Snort - 63 - Ngô Văn Chơn - Lê Thị Mộng Vân

Đề tài: Xây dựng hệ thống Snort IDS-IPS trên CentOS GVHD: PGS.TS Trần Công Hùng

CHƯƠNG V. CÀI ĐẶT VÀ CẤU HÌNH SNORT Cài đặt Snort.

Như đã nhắc đến ở trên, Snort có thể được cài đặt trên nhiều hệ điều hành khác nhau: Linux, Windows, OpenBSD, FreeBSD, NetBSD, Slolaris... Ở đây, ta sẽ tiến hành cài đặt Snort trên hệ điều hành CentOS 6.3 (phiên bản 64 bit).

5.1.1. Cài đặt các thư viện cần thiết cho việc cài đặt Snort:

Các gói cần thiết cho quá trình cài đặt Snort là:

- gcc (phiên bản 4.4.6)

- flex (phiên bản 2.5.35)

- bison (phiên bản 2.4.1)

- zlib (phiên bản 1.2.3, bao gồm cả zlib-devel)

- pcre (phiên bản 7.84, bao gồm cả pcre-devel)

- tcpdump (phiên bản 4.1.0)

- libpcap-devel

- make

- rpm-build

- autoconf

- automake

- mysql, mysql-devel, mysql-bench, mysql-server

- php, php-common, php-mysql, php-gd, php-pear

Để cài đặt các gói trên ta đăng nhập với quyền của user root và sử dụng lệnh:

yum install <tên gói>

Ta tải các gói: libdnet-1.11.tar.gz, daq-2.0.0.tar.gz, nbtscan-source-1.0.35.gz, snort-2.9.4.tar.gz,snortrules-snapshot-2940.tar.gz, base-1.4.5.tar.gz, adodb518a.gz,

Chương V. Cài đặt và cấu hình Snort - 64 - Ngô Văn Chơn - Lê Thị Mộng Vân

Đề tài: Xây dựng hệ thống Snort IDS-IPS trên CentOS GVHD: PGS.TS Trần Công Hùng

barnyard2-1.9.tar.gz về lưu chung ở một thư mục ( /root/Desktop/Source ) để tiến hành cài đặt.

Cài đặt libdnet:

Libdnet là một mạng API chung, cung cấp quyền truy cập vào một số giao thức. Để cài đặt libdnet ta thực hiện như sau:

cd /usr/local/src/ tar -zxvf /root/Desktop/Source/libdnet-1.11.tar.gz cd libdnet-1.11/ ./configure --with-pic make make install cd /usr/local/lib ldconfig -v /usr/local/lib Cài đặt DAQ:

DAQ là tập hợp dữ liệu API cần thiết để sử dụng cho phiên bản Snort 2.9.0 trở lên. Cài đặt DAQ như sau:

cd /usr/local/src/ tar -zxvf /root/Desktop/Source/daq-2.0.0.tar.gz cd daq-2.0.0/ ./configure make make install cd /usr/local/lib ldconfig -v /usr/local/lib

Chương V. Cài đặt và cấu hình Snort - 65 - Ngô Văn Chơn - Lê Thị Mộng Vân

Đề tài: Xây dựng hệ thống Snort IDS-IPS trên CentOS GVHD: PGS.TS Trần Công Hùng

Cài đặt nbtscan: nbtscan là chương trình dùng để quét những IP mạng cho thông tin về tên NetBIOS.

Nó trả lời cho chúng ta những địa chỉ IP, tên NetBIOS, những người dùng đang dăng nhập và địa chỉ MAC. Cài đặt nbtscan:

cd /root/Desktop/Source/ mv nbtscan-source-1.0.35.gz nbtscan-1.0.35.tar.gz cd /usr/local/src/ mkdir nbtscan cd nbtscan/ tar -zxvf /root/Desktop/Source/nbtscan-1.0.35.tar.gz make Cài đặt Snort:

Để cài đặt Snort ta tiến hành như sau:

cd /usr/local/src/ tar -zxvf /root/Desktop/Source/snort-2.9.4.tar.gz cd snort-2.9.4/ ./configure --enable-sourcefire make make install

Các lỗi phát sinh trong quá trình “configure” sẽ bị bỏ qua, do đó ta có thể kiểm tra file “config.log” được sinh ra bởi các câu lệnh sau:

cd /usr/local/lib

ldconfig -v /usr/local/lib

Để cài đặt môi trường cho Snort hoạt động ta thực thi các câu lệnh sau:

Chương V. Cài đặt và cấu hình Snort - 66 - Ngô Văn Chơn - Lê Thị Mộng Vân

Đề tài: Xây dựng hệ thống Snort IDS-IPS trên CentOS GVHD: PGS.TS Trần Công Hùng

mkdir -p snort mkdir /var/log/snort cd snort/

tar -zxvf /root/Desktop/Source/snortrules-snapshot-2940.tar.gz cp ./etc/* .

touch /etc/snort/rules/white_list.rules /etc/snort/rules/black_list.rules mkdir /usr/local/lib/snort_dynamicrules

cp /etc/snort/so_rules/precompiled/Centos-5-4/i386/2.9.4.0/*.so

/usr/local/lib/snort_dynamicrules/

cat /etc/snort/so_rules/*.rules >> /etc/snort/rules/so-rules.rules touch /var/log/snort/alert

Tạo group và user cho snort:

groupadd -g 40000 snort

useradd snort -d /var/log/snort -s /sbin/nologin -c SNORT_IDS -g snort

Để bảo đảm cho Snort hoạt động ổn định, ta cấp cần cấp quyền sở hữu và quyền truy cập cho group và user snort đối với tất cả những thư mục liên quan đến quá trình cài đặt của Snort:

cd /etc/snort/

chown -R snort:snort *

chown -R snort:snort /var/log/snort/

chown -R snort:snort /usr/local/lib/snort_dynamicrules chmod -R 700 /usr/local/lib/snort_dynamicrules

chown snort:snort /var/log/snort/alert chmod 700 /var/log/snort/alert

cd /var/log chmod 700 snort

Chương V. Cài đặt và cấu hình Snort - 67 - Ngô Văn Chơn - Lê Thị Mộng Vân

Đề tài: Xây dựng hệ thống Snort IDS-IPS trên CentOS GVHD: PGS.TS Trần Công Hùng

cd /usr/local/lib

chown -R snort:snort snort*

chown -R snort:snort snort_dynamic* chown -R snort:snort pkgconfig chmod -R 700 snort*

chmod -R 700 pkgconfig cd /usr/local/bin/

chown -R snort:snort daq-modules-config chown -R snort:snort u2*

chmod -R 700 daq-modules-config chmod 700 u2*

cd /etc/

chown -R snort:snort snort chmod -R 700 snort

Thiết lập các mức khởi chạy của Snort:

cd /usr/local/src/snort-2.9.4/rpm/ cp snortd /etc/init.d/snort

cp /usr/local/src/snort-2.9.4/rpm/snort.sysconfig /etc/sysconfig/snort chkconfig --add snort

Tạo liên kết mềm cho Snort:

cd /usr/sbin/

ln -s /usr/local/bin/snort snort

Mở file /etc/sysconfig/snort bằng vim và chỉnh sửa lại các thông tin:

INTERFACE=eth1 #ALERTMODE=fast

Chương V. Cài đặt và cấu hình Snort - 68 - Ngô Văn Chơn - Lê Thị Mộng Vân

Đề tài: Xây dựng hệ thống Snort IDS-IPS trên CentOS GVHD: PGS.TS Trần Công Hùng

#DUMP_APP=1 #BINARY_LOG=1

Cài đặt barnyard2:

Ta tiến hành cài đặt barnyard2 như sau:

cd /usr/local/src/ tar -zxvf /root/Desktop/Source/barnyard2-1.9.tar.gz cd barnyard2-1.9/ ./configure --with-mysql make make install cp etc/barnyard2.conf /etc/snort/ Cấu hình barnyard2: mkdir /var/log/barnyard2 vim /etc/snort/barnyard2.conf config hostname: localhost config interface: eth0

output database: alert, mysql, user=snort password=password dbname=snort host=localhost

output database: log, mysql, dbname=snort user=snort password=password host=localhost

Trong thư mục baryard---/src ta thực thi câu lệnh:

cp barnyard2 /etc/init.d/

Cấu hình mysql:

Chương V. Cài đặt và cấu hình Snort - 69 - Ngô Văn Chơn - Lê Thị Mộng Vân

Đề tài: Xây dựng hệ thống Snort IDS-IPS trên CentOS GVHD: PGS.TS Trần Công Hùng

service mysqld start mysql

SET PASSWORD FOR root@localhost=PASSWORD('password'); create database snort;

grant ALL PRIVILEGES on snort.* to snort@localhost with GRANT option; SET PASSWORD FOR snort@localhost=PASSWORD('password');

exit

cd /usr/local/src/barnyard2-1.9/schemas/ mysql -p < create_mysql snort

mysql -p show databases; use snort show tables; exit Cài đặt adodb5:

Ta tiến hành cài đặt adodb5 như sau:

cd /root/Desktop/Source/ tar -zxvf adodb518a.gz

mv adodb5 /var/www/html/adodb5

Cài đặt BASE:

Ta thực thi các câu lệnh sau:

cd /root/Desktop/Source/ tar -zxvf base-1.4.5.tar.gz

Chương V. Cài đặt và cấu hình Snort - 70 - Ngô Văn Chơn - Lê Thị Mộng Vân

Đề tài: Xây dựng hệ thống Snort IDS-IPS trên CentOS GVHD: PGS.TS Trần Công Hùng

mv /var/www/html/base/base_conf.php.dist /var/www/html/base/base_conf.php pear install --force Image_Color

pear install --force Image_Canvas pear install --force Image_Graph

Sau khi cài đặt ta tiến hành cấu hình BASE:

vim /var/www/html/base/base_conf.php $DBlib_path = '/var/www/html/adodb5'; $DBtype = 'mysql'; $alert_dbname = 'snort'; $alert_host = 'localhost'; $alert_port = ''; $alert_user = 'snort'; $alert_password = 'password'; $archive_exists = 0; $archive_dbname = 'snort'; $archive_host = 'localhost'; $archive_port = ''; $archive_user = 'snort'; $archive_password = 'password';

Tùy chỉnh cấu hình Snort:

Ta thực hiện chỉnh sửa file snort.conf như sau:

vim /etc/snort/snort.conf

ipvar HOME_NET 10.1.1.0/24 ipvar EXTERNAL_NET !$HOME_NET var RULE_PATH /etc/snort/rules

Chương V. Cài đặt và cấu hình Snort - 71 - Ngô Văn Chơn - Lê Thị Mộng Vân

Đề tài: Xây dựng hệ thống Snort IDS-IPS trên CentOS GVHD: PGS.TS Trần Công Hùng

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 output unified2: filename snort.log, limit 128

Sau khi thực hiện các thao tác trên, ta có thể kiểm tra sự hoạt động của Snort bằng câu lệnh sau:

snort -u snort -g snort -c /etc/snort/snort.conf -i eth0

barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort/ -f snort.u2 -w /var/log/snort/barnyard2.waldo

Cấu hình Snort và các phần bổ sung: Các biến trong Snort:

Có 3 loại biến được định nghĩa trong Snort, các biến này đứng sau 3 từ khóa sau:

- var

- ipvar

- portvar

Ta sẽ tìm hiểu cụ thể cách sử dụng từng biến ở phần sau đây.

Từ khóa var

Dùng từ khóa var để khai báo các biến liên quan đến đường dẫn. Cấu trúc:

var <tên biến> <đường dẫn>

Chương V. Cài đặt và cấu hình Snort - 72 - Ngô Văn Chơn - Lê Thị Mộng Vân

Đề tài: Xây dựng hệ thống Snort IDS-IPS trên CentOS GVHD: PGS.TS Trần Công Hùng

Trong phần tùy chỉnh cấu hình Snort ta đã cấu hình như sau:

var RULE_PATH /etc/snort/rules

var WHITE_LIST_PATH /etc/snort/rules var BLACK_LIST_PATH /etc/snort/rules

Điều này có nghĩa ta đã sử dụng RULE_PATH là một biến được khai báo bằng từ khóa var, RULE_PATH có giá trị được gán là: /etc/snort/rules. Tương tự với các biến còn lại.

Từ khóa ipvar

Từ khóa ipvar dùng để khai báo các biến chỉ địa chỉ IP, dãy IP trong hệ thống mạng.

Cấu trúc:

ipvar <tên biến> <IP, dãy IP, any, hoặc !IP, ! dãyIP >

Ví dụ:

ipvar HOME_NET 10.1.1.0/24

ipvar EXTERNAL_NET !$HOME_NET

Từ khóa portvar

portvar dùng để khai báo các giá trị port từ 0 – 65535. Cũng giống như biến

ipvar, portvar cũng có thể khai báo cho một port hoặc dãy port, port bất kỳ hay loại trừ port nào đó.

Danh sách các port phải được đặt trong dấu ngoặc vuông, và khi muốn định nghĩa phạm vi của các port nằm trong giới hạn nào, ta phải dùng dấu “:”, Ví dụ như:

Chương V. Cài đặt và cấu hình Snort - 73 - Ngô Văn Chơn - Lê Thị Mộng Vân

Đề tài: Xây dựng hệ thống Snort IDS-IPS trên CentOS GVHD: PGS.TS Trần Công Hùng

var EXAMPLE2_PORT [80:90] var PORT_EXAMPLE2 [1] portvar EXAMPLE3 any portvar EXAMPLE4 [!70:90]

portvar EXAMPLE5 [80,91:95,100:200]

Cấu hình Preprocessor:

Các plugin trong Module Tiền xử lý được cấu hình bằng từ khóa “preprocessor” trong file cấu hình snort.conf

Cấu trúc:

preprocessor <name>: <options>

- name: Tên của plugin : frag3, stream5, arpspoof

- option: Các tùy chọn

Ví dụ:

preprocessor minfrag: 128

Sau đây ta sẽ đi vào tìm hiểu các plugin của Module Tiền xử lý. Frag3

Khi một packet đi qua các mạng khác nhau, nó thường cần phân mảnh thành các packet nhỏ hơn do MTU qui định trên mỗi mạng. Sau đó tất cả các sắp xếp lại khi đến nơi để khôi phục dữ liệu gốc. Một trong những phương pháp tấn công của attacker là việc can thiệp và sửa đổi những packet phân mảnh này để phục vụ cho mục đích của chúng. Frag3 trong module tiền xử lý có chức năng quản lý những gói tin phân mảnh này, bằng cách sắp xếp và so sánh các gói này với nhau, nó sẽ dễ dàng phát hiện ra những thay đổi đó. Frag3 có các options để chống lại các dạng tấn công này.

Chương V. Cài đặt và cấu hình Snort - 74 - Ngô Văn Chơn - Lê Thị Mộng Vân

Đề tài: Xây dựng hệ thống Snort IDS-IPS trên CentOS GVHD: PGS.TS Trần Công Hùng

Để kích hoạt Frag3, ta cần phải tiến hành cấu hình 2 thành phần: frag3_global và frag3_engine.

Frag3_global

Cấu trúc:

Preprocessor frag3_global:<options>

Có thể cấu hình nhiều options cho frag3_global, các options cách nhau bằng dấu phẩy.

Các options:

- max_frags <number>: số lượng tối đa các phân mảnh đồng thời được theo dõi. Mặc định là 8192.

- memcap <bytes> : Bộ nhớ tự quản. Mặc định là 4MB.

- Prealloc_frags <number>: Thay thế chế độ quản lý bộ nhớ. Sử dụng các nút phân đoạn trước khi thay thế. (Nhanh hơn trong một số trường hợp).

Frag3_engine

Cấu trúc:

Preprocessor frag3_engine:<options>

Các options cách nhau bằng khoảng trắng. Các options:

- timeout <seconds> : thời gian timeout của phân mảnh. Những phân mảnh trong hệ thống tồn tại trong hệ thống sau thời gian này sẽ bị hủy. Mặc định là 60 giây.

- ttl_limit <hops> : Giá trị TTL tối đa chấp nhận cho gói tin đầu tiên trong phân mảnh.Mặc định là 5.

Chương V. Cài đặt và cấu hình Snort - 75 - Ngô Văn Chơn - Lê Thị Mộng Vân

Đề tài: Xây dựng hệ thống Snort IDS-IPS trên CentOS GVHD: PGS.TS Trần Công Hùng

- min_ttl <value> : Giá trị TTL tối thiểu chấp nhận cho một gói phân mảnh. Mặc định là 1.

- detect_anomalies : Phát hiện những đoạn phân mảnh bất thường

- bind_to <ip_list> : Danh sách IP liên kết với hệ thống. Hệ thống chỉ chạy những gói tin với địa chỉ đích nằm trong danh sách IP. Giá trị mặc định là tất cả.

- policy <type> : Lựa chọn chính sách dựa trên tiêu chí chống phân mảnh. Những chính sách có sẵn là first, last, bsd, bsd-right, linux. Mặc định là bsd.

Stream5

Tiền xử lý stream5 là một module của snort, có khả năng theo dõi các traffic TCP và UDP đang lưu thông trên mạng bằng cách sử dụng các khoá rule “flow” và “flowbits”.

Các thành phần của Stream5: global, TCP, UDP, ICMP, IP.

Global

Các tùy chọn trong cấu hình global, mỗi tùy chọn cách nhau bằng dấu phẩy:

- [track_tcp <yes|no>]: theo dõi phiên TCP, mặc định là “yes”.

- [max_tcp <number>]: giá trị phiên TCP lớn nhất được theo dõi cùng lúc, mặc định là “26214”, lớn nhất là “1048576” và nhỏ nhất là “1”.

- [memcap <number bytes>]: đỉnh bộ nhớ cho việc lưu trữ gói tin TCP, mặc

định là 8MB, tối đa 1GB và nhỏ nhất là 32KB.

- [track_udp <yes|no>]: theo dõi phiên UDP, mặc định là “yes”.

- [max_udp <number>]: >]: giá trị phiên UDP lớn nhất được theo dõi cùng lúc, mặc định là “131072”, lớn nhất là “1048576” và nhỏ nhất là “1”.

Chương V. Cài đặt và cấu hình Snort - 76 - Ngô Văn Chơn - Lê Thị Mộng Vân

Đề tài: Xây dựng hệ thống Snort IDS-IPS trên CentOS GVHD: PGS.TS Trần Công Hùng

- [max_icmp <number>]: giá trị phiên ICMP lớn nhất được theo dõi cùng lúc,

mặc định là “65536”, lớn nhất là “1048576” và nhỏ nhất là “1”.

- track_ip <yes|no>]: theo dõi phiên IP, mặc định là “no”.

Từ khóa » Cài đặt Snort