CÀI ĐẶT VÀ CẤU HÌNH SNORT

Một phần của tài liệu Xây dựng hệ thống Snort IDS- IPS trên CentOS (Trang 67 - 88)

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:

cd /etc

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

chown -R snort:snort 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:

Ta tạo cơ sở dữ liệu với mysql như sau:

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

mv base-1.4.5 /var/www/html/base

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>

Ví dụ:

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ư:

portvar EXAMPLE1 80

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”.

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

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”.

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

- [disabled]: tùy chọn để tắt tiền xử lý Stream5. Khi tiền xử lý Stream5 tắt, chỉ có các tùy chọn memcap, max_tcp, max_udp, max_icmp được chấp nhận.

- [flush_on_alert]: làm tràn dòng TCP khi cảnh báo được tạo trên dòng đó.

Ngoài ra còn có một số tùy chọn khác.

TCP Các tùy chọn:

- [bind_to <ip_addr>], - [timeout <number secs>], - [policy <policy_id>], - [overlap_limit <number>], - [max_window <number>],

- [require_3whs [<number secs>]], - [detect_anomalies],

- [check_session_hijacking], - [use_static_footprint_sizes], - [dont_store_large_packets], - [dont_reassemble_async], - [max_queued_bytes <bytes>],

- [max_queued_segs <number segs>],

- [small_segments <number> bytes <number> [ignore_ports number [number]*]],

Chương V. Cài đặt và cấu hình Snort - 77 - 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 - [ports <client|server|both> <all|number [number]*>],

- [protocol <client|server|both> <all|service name [service name]*>], - [ignore_any_rules], [flush_factor <number segs>]

UDP, ICMP, IP Có các tùy chọn:

- preprocessor stream5_udp: [timeout <number secs>], [ignore_any_rules]

- preprocessor stream5_icmp: [timeout <number secs>]

- preprocessor stream5_ip: [timeout <number secs>]

sfPortscan

Các module sfPortscan được thiết kế để phát hiện các giai đoạn đầu tiên trong một cuộc tấn công mạng: scan port. Một trong những công cụ phỗ biến nhất của phương pháp scan port hiện nay là sử dụng Nmap, công cụ hỗ trợ rất nhiều các kỹ thuật scan port. sfPortscan được thiết kế để có thể phát hiện các loại hình quét Nmap có thể xảy ra.

Việc sử dụng tiền xử lý stream5 được yêu cầu cho sfPortscan để xác định những kết nối không được đảm bảo như ICMP hay UDP.

Các thông số bạn có thể sử dụng để cấu hình các module portscan là:

- proto <protocol>

Các tùy chọn có sẵn:

TCP

UDP

IGMP

ip proto

Chương V. Cài đặt và cấu hình Snort - 78 - 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

all

- scan type <scan type>

Các tùy chọn có sẵn:

Portscan

Portsweep

decoy portscan

distributed portscan

- sense level <level>

Có sẵn các tùy chọn:

“low”: cảnh báo chỉ được tạo ra với các gói tin lỗi được gửi từ các host mục tiêu, cài đặt này sẽ không bao giờ gây ra một cảnh báo lọc vì thiếu các tín hiệu lỗi. Thiết lập này được dựa trên một cửa sổ thời gian tĩnh trong 60 giây, sau đó được thiết lập lại.

“medium”: sẽ tạo ra cảnh báo lọc khi theo dõi các kết nối. Thiết lập này có thể sai trên các host hoạt động (NAT, proxy, DNS cache, vv), vì vậy user khi triển khai có thể điều chỉnh bỏ qua các chỉ thị này.

“high”: liên tục cảnh báo theo dõi các host trên một mạng, sử dụng một cửa sổ thời gian để đánh giá số liệu thống kê portscan cho host đó. Thiết lập

“high” sẽ quét chậm do phải giám sát liên tục, nhưng rất nhạy cảm với các host hoạt động. Điều này sẽ yêu cầu user điều chỉnh sfPortscan.

- watch ip <ip1|ip2/cidr[:[port|port2-port3]]>

- ignore scanners <ip1|ip2/cidr[:[port|port2-port3]]>

- ignore scanned <ip1|ip2/cidr[:[port|port2-port3]]>

Một phần của tài liệu Xây dựng hệ thống Snort IDS- IPS trên CentOS (Trang 67 - 88)

Tải bản đầy đủ (PDF)

(99 trang)