0
Tải bản đầy đủ (.doc) (94 trang)

Cài đặt Snort từ source code

Một phần của tài liệu TÌM HIỂU VỀ CÁC PHẦN MỀM PHÁT HIỆN VÀ PHÒNG CHỐNG XÂM NHẬP TRÁI PHÉP (Trang 45 -45 )

Để cài đặt Snort từ source code, ta phải xây dựng nó đầu tiên. Ta có thể xây dựng file thực thi snort sử dụng thủ tục mở rộng. Đầu tiên, download phiên bản mới nhất của Snort. Phiên bản mới nhất hiện tại là: snort-2.6.1.5.tar.gz, ta có thể cất nó trong thư mục /opt trên Linux. Chú ý là phương thức cài đặt tương tự như các phiên bản khác.

1. Giải nén

Bước đầu tiên sau khi download là giải nén source code. Gõ dòng lệnh:

tar zxvf snort-1.2.6.1.4.tar.gz

Nó sẽ tạo thư mục /opt/snort-2.1.6.4, gỉa sử ta đã download file Snort trong thư mục /opt và đã chạy lệnh tar trong thư mục này. Trong trường hợp các phiên bản khác của Snort, tên thư mục sẽ khác và sẽ ánh xạ tên phiên bản. Sau khi giải nén ta sẽ thấy cây thư mục được tạo bởi lệnh tar sử dụng lệnh tree. Tiếp theo là một snapshot (chụp nhanh) của thư mục hiển thị dưới thư mục /opt/snort-2.6.1.5.

[root@conformix opt]# tree -d snort-2.6.1.5 snort-2.6.1.5 |-- contrib |-- doc |-- etc |-- rules |-- src | |-- detection-plugins | |-- output-plugins | |-- preprocessors | `-- win32 | |-- WIN32-Code | |-- WIN32-Includes | | |-- NET | | |-- NETINET

| | |-- libnet | | |-- mysql | | `-- rpc | |-- WIN32-Libraries | | |-- libnet | | `-- mysql | `-- WIN32-Prj `-- templates 21 directories [root@conformix opt]#

Một danh sách ngắn gọn chứa nội dung của thư mục này được liêt kê dưới đây: - Thư mục contrib chứa các tiện ích, chúng không hoàn toàn là thành phần của Snort. Các tiện ích nào bao gồm ACID,MySQL được tạo ra từ script và những thứ khác. - Thư mục doc chứa file tài liệu.

- Thư mục etc chứa file cấu hình.

- Thư mục rules chứa các file luật định nghĩa lại.

- Tất cả các source code được trình bày dưới thư mục src.

- Thư mục templates chỉ hữu ích cho những ai muốn ghi những plug-in mà họ sở hữu. Nó không có ý nghĩa cho những user Snort.

2. Biên dịch và cài đặt

Quá trình biên dịch và cài đặt gồm 3 bước:

- Chạy script configure. - Chạy lệnh make.

- Chạy lệnh make install.

Để bắt đầu việc biên dịch Snort, vào thư mục /opt/snort-2.6.1.5 và chạy lệnh

configure. Nếu ta tạo mới phần mềm kiều GNU, lệnh configure là một tiện ích chung cùng với gói nguồn mở. Nó được dùng để thiết lập một vài tham số, tạo file hoạt động và nhận dạng những công cụ phát triển và những thư viện sẵn có trên hệ thống. Có nhiều lựa chọn trên dòng lệnh sử dụng cùng với configure. Những lựa chọn này xác định những thành phần Snort sẽ được cấu hình cùng với Snort. Cho ví dụ, sử dụng lựa chọn này, ta có thể xây dựng hỗ trợ SNMP,MySQL hoặc cảnh báo SMB, và thêm nhiều thứ khác nữa. Ta cũng có thể xác định thư mục cuối cùng cho những file Snort sẽ được cài đặt. Những lựa chọn sẵn có với configure có thể liệt kê bằng cách gõ lệnh “./configure -help”. Dưới đây minh họa danh sách các lựa chọn trong configure:

[root@conformix snort-1.9.0]# ./configure --help

Usage: configure [options] [host]

Configuration:

--cache-file=FILE cache test results in FILE --help print this message

--no-create do not create output files

--quiet, --silent do not print `checking...' messages --version print the version of autoconf that

created configure

Directory and file names:

--prefix=PREFIX install architecture-independent files in PREFIX

[/usr/local]

--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX

[same as prefix]

--bindir=DIR user executables in DIR [EPREFIX/bin]

--sbindir=DIR system admin executables in DIR [EPREFIX/sbin]

--libexecdir=DIR program executables in DIR [EPREFIX/libexec]

--datadir=DIR read-only architecture-independent data in DIR

[PREFIX/share]

--sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]

--sharedstatedir=DIR modifiable architecture-independent data in DIR

[PREFIX/com]

--localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]

--libdir=DIR object code libraries in DIR [EPREFIX/lib]

--includedir=DIR C header files in DIR [PREFIX/include]

[/usr/include]

--infodir=DIR info documentation in DIR [PREFIX/info]

--mandir=DIR man documentation in DIR [PREFIX/man]

--srcdir=DIR find the sources in DIR [configure dir or ..]

--program-prefix=PREFIX prepend PREFIX to installed program names

--program-suffix=SUFFIX append SUFFIX to installed program names

--program-transform-name=PROGRAM run sed PROGRAM on installed program names

Host type:

--build=BUILD configure for building on BUILD [BUILD=HOST]

--host=HOST configure for HOST [guessed]

--target=TARGET configure for TARGET [TARGET=HOST] Features and packages:

--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)

--enable-FEATURE[=ARG] include FEATURE [ARG=yes] --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]

--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)

--x-includes=DIR X include files are in DIR --x-libraries=DIR X library files are in DIR --enable and --with options recognized:

--enable-debug enable debugging options (bugreports and developers only)

--enable-profile enable profiling options (developers only)

--with-libpcap-includes=DIR libcap include directory --with-libpcap-libraries=DIR libcap library directory

--with-mysql=DIR support for mysql --with-odbc=DIR support for odbc

--with-postgresql=DIR support for postgresql --with-oracle=DIR support for oracle

--with-snmp support for snmp

--with-openssl=DIR support for openssl

--enable-sourcefire Enable Sourcefire specific build options

--enable-perfmonitor Enable perfmonitor preprocessor --enable-smbalerts SMB alerting capaility via Samba --enable-flexresp Flexible Responses on hostile connection attempts

[root@conformix snort-1.9.0]#

Sau đây là một đoạn script configure điển hình. Ví dụ minh họa hiển thị bên dưới đã được rút ngắn do thông tin cấu hình rất nhiều:

[root@conformix snort-1.9.0]# ./configure --prefix=/opt/snort --enable-smbalerts --enable-flexresp --with-mysql --with-snmp --with-openssl

loading cache ./config.cache

checking for a BSD compatible install... (cached) /usr/bin/

install -c

checking whether build environment is sane... yes checking whether make sets ${MAKE}... (cached) yes checking for working aclocal... found

checking for working autoconf... found checking for working automake... found checking for working autoheader... found checking for working makeinfo... found checking for gcc... (cached) gcc

checking whether the C compiler (gcc ) works... yes

checking whether the C compiler (gcc ) is a cross- compiler...

no

checking whether we are using GNU C... (cached) yes checking whether gcc accepts -g... (cached) yes

checking for gcc option to accept ANSI C... (cached) none needed

checking for ranlib... (cached) ranlib

Lựa chon prefix dùng để chỉ định thư mục cài đặt cuối cùng. Các lựa chọn khác dùng để xác định các thành phần dưới đây:

- Hỗ trợ cơ sở dữ liệu Snort. - Hỗ trợ các SNMP trap

- Hỗ trợ các cảnh báo SMB alert. SMB alert dùng để gửi những cửa sổ pop-up cho hệ thống Microsoft Window.

- Hỗ trợ đáp ứng flex. Đáp ứng flex dùng để kết thúc phiên mạng trong thời gian thực. Chúng ta sẽ hiểu như thế nào là đáp ứng flex trong phần sau. Chú ý rằng để có thể hỗ trợ lựa chon này, ta phải cài đặt libnet. Ta có thể download libnet tại website: http://securityfocus.net.

Sau khi chạy configure, ta có thể chạy 2 dòng lệnh để biên dịch và cài đặt file Snort.

make

make install

Dòng lệnh đầu tiên có thể chạy lâu hoặc nhanh phụ thuộc vào sức mạnh của máy. Khi ta chạy dòng lệnh thứ 2, những file được cài đặt vào trong thư mục thích hợp.

make install cài đặt file nhị phân Snort trong thư mục /opt/snort khi ta chọn là --prefix=/opt/snort lúc configure.

Các tham số dòng lệnh có thể dùng chung với configure --with-mysql Hỗ trợ MySQL trong Snort

--with-snmp Hỗ trợ SNMP trong khi biên dịch Snort. Ta phải sử dụng cùng với openssl nếu ta muốn dùng nó

--with- openssl

Bật sự hỗ trợ openssl. Ta có thể cần sử dụng điều này khi sử dụng cùng với SNMP

--with- oracle

Hỗ trợ cơ sở dữ liệu Oracle --with-odbc Hỗ trợ ODBC trong Snort --enable-

flexresp

Sử dụng Flex Response có thể cho phép cấm một kết nối đến host. Đây chỉ là một thực nghiệm (xem tập tin README.FLEXRESP trong sự phân tán Snort)

--enable- smbalerts

Bật SMB alert. Khi có trường hợp khẩn cấp, nó sẽ gửi một cảnh báo đến máy cục bộ

SMB (smbclient)

--prefix=DIR Thiết lập thư mục cho các file cài đặt Snort.

Bảng 3.1. Các tham số dòng lệnh dùng chung với configure

Thủ tục cài đặt cho libnet được tìm thấy đi cùng với file README. Cơ bản, nó gồm có 4 bước:

- Giải nén file sử dụng: tar zxvf libnet-1.0.2a.tar.gz

- Thay đổi thư mục Libnet-1.0.2a và chạy lệnh ./configure

- Chạy lệnh make

- Chạy lệnh make install

Ta có thể kiểm tra bằng lệnh “make check” trước khi chạy “make install” để đảm bảo rằng Snort đã được cài đặt.

Sau khi cài đặt, chạy Snort để thấy nếu file thực thi đang làm việc. Sử dụng thủ tục giám sát trước, file nhị phân Snort được cài đặt trong thư mục /opt/snort/bin. Lệnh tiếp theo hiển thị thông điệp giúp đỡ của Snort xây dựng mới nhất

[root@conformix snort]# /opt/snort/bin/snort -?

Initializing Output Plugins! -*> Snort! <*-

Version 1.9.0 (Build 209)

By Martin Roesch (roesch@sourcefire.com, www.snort.org) USAGE: /opt/snort/bin/snort [-options] <filter options> Options:

-A Set alert mode: fast, full, console, or none (alert file alerts only)

"unsock" enables UNIX socket logging (experimental).

-a Display ARP packets

-b Log packets in tcpdump format (much faster!)

-c <rules> Use Rules File <rules>

-C Print out payloads with character data only (no hex)

-d Dump the Application Layer

-D Run Snort in background (daemon) mode -e Display the second layer header info -f Turn off fflush() calls after binary log

writes

-F <bpf> Read BPF filters from file <bpf>

-g <gname> Run snort gid as <gname> group (or gid) after initialization

-G <mode> Add reference ids back into alert msgs (modes: basic, url)

-h <hn> Home network = <hn>

-i <if> Listen on interface <if>

-I Add Interface name to alert output -l <ld> Log to directory <ld>

-m <umask> Set umask = <umask>

-M <wrkst> Sends SMB message to workstations in file <wrkst>

(Requires smbclient to be in PATH)

-n <cnt> Exit after receiving <cnt> packets -N Turn off logging (alerts still work) -o Change the rule testing order to Pass|Alert|Log

-O Obfuscate the logged IP addresses -p Disable promiscuous mode sniffing -P <snap> set explicit snaplen of packet (default: 1514)

-q Quiet. Don't show banner and status report -r <tf> Read and process tcpdump file <tf>

-R <id> Include 'id' in snort_intf<id>.pid file name

-s Log alert messages to syslog

-S <n=v> Set rules file variable n equal to value v -t <dir> Chroots process to <dir> after

initialization

-T Test and report on the current Snort configuration

-u <uname> Run snort uid as <uname> user (or uid) after initialization

-v Be verbose

-V Show version number

-w Dump 802.11 management and control frames -X Dump the raw packet data starting at the link layer

-y Include year in timestamp in the alert and log files

-z Set assurance mode, match on established sesions (for TCP)

-? Show this information

<Filter Options> are standard BPF options, as seen in TCPDump

[root@conformix snort]#

Nếu ta thấy thông điệp này, ta phải xây dựng thuộc tính Snort. Trong phần sau chúng ta sẽ thấy nhiếu về cấu hình và chạy Snort.

3. Xử lý sau khi cài đặt

Chúng ta đã xây dựng Snort binary, ta cần phải làm một vài thứ trước khi ta sử sụng nó. Các bước bao gồm:

- Tạo thư mục /var/log/snort, nơi mà Snort tạo các log file theo mặc định.

- Tạo một thư mục để lưu file cấu hình. Chẳng hạn như /opt/snort/etc. Ta có thể tạo ở đâu tùy thích.

- Tạo hoặc chép file cầu hính Snort trong thư mục /opt/snort/etc.

- Tạo một thư mục /opt/snort/rules và chép những rule file mặc định vào

/opt/snort/etc. Đường dẫn của thư mục được giám sát trong file snort.conf và ta có thể tạo một thư mục tùy thích theo ý mình

Chi tiết các bước trên:

Đầu tiên, tạo một thư mục /var/log/snort, nơi mà Snort giữ những log file của nó. Ta có thể sử dụng thư mục khác cho mục đích này nhưng đây thường là nơi lưu trữ các dữ liệu log file. Nếu ta muốn sử dụng thư mục khác, ta phải sử dụng dòng lệnh lựa chọn –l khi bắt đầu chạy Snort.

Thứ hai, ta tạo file cấu hình Snort. Khi Snort khởi động, nó có thể đọc cấu hình của nó, file cấu hình là snort.conf từ thư mục hiện hành hoặc từ .snortrc trong thư mục gốc. Nếu file đó nằm trong thư mục khác, ta sử dụng lựa chọn –c trên dòng lệnh để chỉ định tên của những rule file. Để cho dễ dàng, tạo một thư mục /opt/snort/etc và chép file snort.conf vào file sourcer code Snort. Chép file classification.config

reference.config vào /opt/snort/etc. Những file này được bao hàm trong file chính

snort.conf. Chép toàn bộ các file từ thư mục rule của cây source code vào

/opt/snort/rules. Để thực hiện việc này, ta có thể dùng lệnh: mkdir /opt/snort/etc

cp /opt/snort-1.9.0/etc/snort.conf /opt/snort/etc cp /opt/snort-1.9.0/etc/classification.config /opt/snort/etc cp /opt/snort-1.9.0/etc/reference.config /opt/snort/etc mkdir /opt/snort/rules cp /opt/snort-1.9.0/rules/* /opt/snort/rules

Những file trong thư mục rule có đuôi là .rules và chứa các tập luật khác nhau. Những file này được bao hàm bên trong file snort.conf. Vị trí của chúng được điều khiển bởi biến RULE_PATH định nghĩa trong snort.conf. Việc định nghĩa biến này trong snort.conf đó là:

var RULE_PATH ../rules

Điều này có nghĩa là những rule file nằm trong một thư mục có tên là “rules”. Đường dẫn ../rules dùng tham chiếu đến vị trí của file snort.conf. Cho ví dụ, nếu

snort.conf nằm trong thư mục /opt/snort/etc, tất cả các rule file sẽ nằm trong thư mục

/opt/snort/rules. Cho ví dụ khác, nếu snort.conf nằm trong thư mục /var/snort, rule file phải nằm trong thư mục /var/rules. Ta có thể giữ tất cả rule file và snort.conf

trong thư mục giống nhau nếu ta thiết lập giá trị các biến này đến ./ thay vì ../rules

trong snort.conf sử dụng lệnh: var RULE_PATH ./

Để biết được nhiều thông tin hơn về rule file, phần sau chúng ta sẽ bàn kỹ hơn. File classification.config chứa thông tin về phân loại các tập luật Snort. Chú ý rằng /opt/snort-2.6.1.5 là nơi mà tất cả file source code đều nằm trong đó. Nếu ta sử dụng phiên bản khác của Snort, tên thư mục này là khác.

File reference.config liệt kê URLs để tham chiếu đến những website khác nhau, nơi mà thông tin nhiều hơn để tìm về alert. Những tham chiếu này được dùng trong tập luật Snort và ta có thấy nhiều hơn trong phần sau. Một file reference.config điển hình giống như dưới đây:

# $Id: reference.config,v 1.3 2002/08/28 14:19:15 chrisgreen

Exp $

# The following defines URLs for the references found in the

rules #

# config reference: system URL

config reference: bugtraq

http://www.securityfocus.com/bid/

config reference: cve http://cve.mitre.org/cgi-bin/ cvename.cgi?name=

config reference: arachNIDS http://www.whitehats.com/info/IDS

# Note, this one needs a suffix as well.... lets add that in a

bit.

config reference: McAfee http://vil.nai.com/vil/content/v_ config reference: nessus http://cgi.nessus.org/plugins/ dump.php3?id=

config reference: url http://

Chú ý rằng cả hai classification.configreference.config đều bao hàm trong file

snort.conf chính.

Bây giờ chúng ta có thể bắt đầu sử dụng Snort bằng dòng lệnh dưới đây. Dòng lệnh hiển thị thông điệp khởi động và sau đó lắng nghe đến giao tiếp eth0. Chú ý: lựa chọn dòng lệnh nơi mà snort.conf được chỉ định với đường dẫn đầy đủ của nó. Chúng ta đề nghị luôn luôn sử dụng đường dẫn đầy đủ cho snort.conf trên dòng lệnh để tránh cho nhiều nhầm lẫn.

[root@conformix snort]# /opt/snort/bin/snort -c

Một phần của tài liệu TÌM HIỂU VỀ CÁC PHẦN MỀM PHÁT HIỆN VÀ PHÒNG CHỐNG XÂM NHẬP TRÁI PHÉP (Trang 45 -45 )

×