Bài viết này sẽ hướng dẫn các bạn cài đặt hệ thống phát hiện xâm nhập với snort, Log của snort sẽ được ghi vào cơ sở dữ liệu của MySQL, Người quản trị sẽ theo dõi Log thông qua giao diện của BASE (Basic Analysis And Security Engine). Bài viết nằm trong loạt bài xây dựng và bảo mật server linux.
Các bước chuẩn bị:
![]()
- Cài đặt hệ điều hành fedora: Đối với Linux server chúng ta chỉ cần cài các phần sau:
+ Các phần mềm về server:- Server configuration tools: chọn mặc định.- Web server cần các gói sau:+ Crypto-Utils
+ Mod_auth_mysql
+ Mod_perl
+ Php
+ php_mysql
+ Webalizer.- MySQL Database cần các gói sau:+ mysql-connector-odbc+ Phần mềm phát triển Development:
+ mysql-server
+ mysql-devel
+ Perl-DBD-MySQL
+ Php-mysqlDeveloment tool: chỉ cần cài gói expect và gcc-objc để biên dịch- Cài đặt các gói cần thiết: để kiểm tra các gói phần mềm đã cài trên máy chưa ta dùng lệnh:rpm –qa |grep tên-gói-cần-kiểm-traDanh sách các gói.Apache: [ This e-mail address is being protected from spambots. You need JavaScript enabled to view it ~]#rpm -qa | grep http
- httpd-manual-2.2.11-2.fc10.i386
- httpd-tools-2.2.11-2.fc10.i386
- httpunit-1.6.2-2.fc10.noarch
- httpd-2.2.11-2.fc10.i386
- mod_ssl-2.2.11-2.fc10.i386
MySQL: [ This e-mail address is being protected from spambots. You need JavaScript enabled to view it ~]#rpm -qa | grep mysql
- mysql-5.0.77-1.fc10.i386
- mysql-server-5.0.77-1.fc10.i386
- mysql-devel-5.0.77-1.fc10.i386
- mysql-libs-5.0.77-1.fc10.i386
- php-mysql-5.2.6-5.i386
PHP: [ This e-mail address is being protected from spambots. You need JavaScript enabled to view it ~]#rpm -qa | grep php
- php-5.2.6-5.i386
- php-devel-5.2.6-5.i386
- php-mysql-5.2.6-5.i386
- php-pdo-5.2.6-5.i386
- php-ldap-5.2.6-5.i386
- php-common-5.2.6-5.i386
- php-pear-1.7.2-2.fc10.noarch
- php-gd-5.2.6-5.i386
- php-cli-5.2.6-5.i386
Gói nào thiếu các bạn cứ: yum install tên-gói-cần-cài là được.
- Ngoài ra còn cần cài thêm các gói hỗ trợ cho snort như: libpcap (bao gồm hai gói libpcap và libpcap-devel nếu cài từ rpm) khuyến khích cài từ source.
+ Cài libpcap từ source: http://www.tcpdump.org/release/libpcap-1.0.0.tar.gz[ This e-mail address is being protected from spambots. You need JavaScript enabled to view it ~]# wget http://www.tcpdump.org/release/libpcap-1.0.0.tar.gz
--2009-05-17 16:41:53-- http://www.tcpdump.org/release/libpcap-1.0.0.tar.gz
Resolving www.tcpdump.org... 209.87.252.214
Connecting to www.tcpdump.org|209.87.252.214|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 524273 (512K) [application/x-gzip]
Saving to: `libpcap-1.0.0.tar.gz'
100%[============================================================================>] 524,273 63.0K/s in 8.3s
2009-05-17 16:42:03 (61.7 KB/s) - `libpcap-1.0.0.tar.gz' saved [524273/524273]
[ This e-mail address is being protected from spambots. You need JavaScript enabled to view it ~]#cp libpcap-1.0.0.tar.gz /usr/local/
![]()
[root@uitnetwork.com ~]# cd /usr/local/
[root@uitnetwork.com local]# tar -xvzf libpcap-1.0.0.tar.gzlibpcap-1.0.0/[root@uitnetwork local]# cd libpcap-1.0.0
libpcap-1.0.0/acconfig.h
libpcap-1.0.0/aclocal.m4
libpcap-1.0.0/arcnet.h
libpcap-1.0.0/atmuni31.h
libpcap-1.0.0/bpf/
libpcap-1.0.0/bpf/net/
libpcap-1.0.0/bpf/net/bpf_filter.c
libpcap-1.0.0/bpf_dump.c
......
[root@uitnetwork libpcap-1.0.0]# ./configure
checking build system type... i686-pc-linux-gnuĐoạn màu đỏ cho ta biết là cần phải cài thêm thư viện flex để biên dịch libpcap thành công. ta tiến hành tải flex về và cài đặt theo địa chỉ trên ta được link http://biznetnetworks.dl.sourceforge.net/sourceforge/flex/flex-2.5.35.tar.gz.
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
.....
checking whether we have the DAG API... no
checking whether we have Septel API... no
checking for flex... no
checking for bison... no
checking for capable lex... insufficient
configure: error: Your operating system's lex is insufficient to compile
libpcap. flex is a lex replacement that has many advantages, including
being able to compile libpcap. For more information, see
http://www.gnu.org/software/flex/flex.html .[root@uitnetwork ~]# wget http://biznetnetworks.dl.sourceforge.net/sourceforge/flex/flex-2.5.35.tar.gz
--2009-05-18 17:03:53-- http://biznetnetworks.dl.sourceforge.net/sourceforge/flex/flex-2.5.35.tar.gz
Resolving biznetnetworks.dl.sourceforge.net... 203.142.84.220
Connecting to biznetnetworks.dl.sourceforge.net|203.142.84.220|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1456620 (1.4M) [application/x-gzip]
Saving to: `flex-2.5.35.tar.gz'
100%[=====================================================>] 1,456,620 18.1K/s in 76s
2009-05-18 17:06:34 (18.6 KB/s) - `flex-2.5.35.tar.gz' saved [1456620/1456620][root@uitnetwork ~]# cp flex-2.5.35.tar.gz /usr/local/
[root@uitnetwork ~]# cd /usr/local/
[root@uitnetwork local]# tar -xvzf flex-2.5.35.tar.gz
flex-2.5.35/
flex-2.5.35/m4/
flex-2.5.35/m4/gettext.m4
flex-2.5.35/m4/iconv.m4
flex-2.5.35/m4/lib-ld.m4
flex-2.5.35/m4/lib-link.m4
flex-2.5.35/m4/lib-prefix.m4
flex-2.5.35/m4/nls.m4
flex-2.5.35/m4/po.m4
........[root@uitnetwork local]# cd flex-2.5.35
[root@uitnetwork flex-2.5.35]# ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
...........
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes[root@uitnetwork flex-2.5.35]# make && make installBây giờ ta quay lại cài libpcap.[root@uitnetwork libpcap-1.0.0]# cd /usr/local/libpcap-1.0.0
[root@luitnetwork libpcap-1.0.0]# ./configure
....
checking for bison... no
configure: WARNING: don't have both flex and bison; reverting to lex/yacc
checking for capable lex... insufficient
configure: error: Your operating system's lex is insufficient to compile
libpcap. flex is a lex replacement that has many advantages, including
being able to compile libpcap. For more information, see
http://www.gnu.org/software/flex/flex.html .Lại thiếu thư viện Bison. Ta tìm thì ra link sau: http://ftp.gnu.org/gnu/bison/. Lấy bản mới nhất là http://ftp.gnu.org/gnu/bison/bison-2.4.1.tar.gz
[root@uitnetwork local]# wget http://ftp.gnu.org/gnu/bison/bison-2.4.1.tar.gz
--2009-05-18 18:12:18-- http://ftp.gnu.org/gnu/bison/bison-2.4.1.tar.gz[root@uitnetwork local]# tar -xvzf bison-2.4.1.tar.gz
Resolving ftp.gnu.org... 140.186.70.20
Connecting to ftp.gnu.org|140.186.70.20|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2005257 (1.9M) [application/x-tar]
Saving to: `bison-2.4.1.tar.gz'
100%[=====================================================>] 2,005,257 81.0K/s in 31s
2009-05-18 18:12:52 (63.8 KB/s) - `bison-2.4.1.tar.gz' saved [2005257/2005257]Tiến hành biên dịch và cài đặt:[root@uitnetwork local]# cd bison-2.4.1
[root@uitnetwork bison-2.4.1]# ./configure.....[root@uitnetwork bison-2.4.1]#make && make installBây giờ ta quay lại cài libpcap lần nữa.
[root@uitnetwork libpcap-1.0.0]# cd /usr/local/libpcap-1.0.0
[root@luitnetwork libpcap-1.0.0]# ./configureOk ko có lỗi[root@uitnetwork libpcap-1.0.0]# make && make installCài Đặt và Cấu hình Snort:
Trước khi cài Snort, bạn phải xác định là cài Snort ở chế độ inline hay passive.
o Inline là cài Snort tích hợp với tường lửa để kích hoạt tường lửa khóa hay drop hoặt các hành động khác nhằm ngăn chặn cuộc tấn công mà nó phát hiện.
o Passive thì Snort chỉ phát hiện xâm nhập, nghi log và cảnh báo.
[root@uitnetwork libpcap-1.0.0]# cd /usr/local/
[root@uitnetwork local]# tar -xvzf snort-2.8.4.1.tar.gz
[root@uitnetwork local]# cd snort-2.8.4.1
[root@uitnetwork snort-2.8.4.1]#[root@uitnetwork snort-2.8.4.1]# ./configure
checking for a BSD-compatible install... /usr/bin/install -c[root@uitnetwork snort-2.8.4.1]#
......
./configure: line 24035: pcre-config: command not found
./configure: line 24041: pcre-config: command not found
checking pcre.h usability... no
checking pcre.h presence... no
checking for pcre.h... no
ERROR! Libpcre header not found.
Get it from http://www.pcre.orgThiếu gói cài đặt pcre bạn có thể cài từ gói rpm: yum install pcre pcre-devel.Nhưng chúng ta sẽ cài từ Soure cho nó pro. Link ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.9.tar.gz.
[root@uitnetwork local]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.9.tar.gz
--2009-05-18 18:34:29-- ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.9.tar.gz
=> `pcre-7.9.tar.gz'
Resolving ftp.csx.cam.ac.uk... 131.111.8.80
Connecting to ftp.csx.cam.ac.uk|131.111.8.80|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD /pub/software/programming/pcre ... done.
==> SIZE pcre-7.9.tar.gz ... 1191330
==> PASV ... done. ==> RETR pcre-7.9.tar.gz ... done.
Length: 1191330 (1.1M)
100%[=====================================================>] 1,191,330 14.7K/s in 53s
2009-05-18 18:35:27 (22.0 KB/s) - `pcre-7.9.tar.gz' saved [1191330]
[root@uitnetwork local]# tar -xvzf pcre-7.9.tar.gz
.....[root@uitnetwork pcre-7.9]# cd pcre-7.9
[root@uitnetwork pcre-7.9]# ./configure[root@uitnetwork pcre-7.9]# make && make installCài đặt Libnet ftp://64.50.238.52/.1/gentoo/distfiles/libnet-1.1.2.1.tar.gz[root@uitnetwork local]# cp /root/libnet-1.1.2.1.tar.gz /usr/local/
[root@uitnetwork libnet]# tar -xvzf libnet-1.1.2.1.tar.gz
[root@uitnetwork libnet]# cd libnet
[root@uitnetwork libnet]# ./configure
[root@uitnetwork libnet]# make
[root@uitnetwork libnet]# make installĐã cài xong pcre và Libnet giờ ta tiến hành cài đặt snort.theo như lúc đầu khi viết bài thì chúng ta sẽ cài đặt snort với MySQL nên ta sẽ thêm tuỳ chọn --with-mysql. bạn có thể tuỳ chọn --enable-inline để cài đặt snort làm việc với tường lửa.[root@uitnetwork local]# cd snort-2.8.4.1
[root@uitnetwork snort-2.8.4.1]# ./configure --with-mysql --enable-dynamicplugin --enable-inlineĐể xem các tuỳ chọn khác khi biên dịch bạn dùng tuỳ chọn --help[root@uitnetwork snort-2.8.4.1]# ./configure --help[root@uitnetwork snort-2.8.4.1]#make && make installCấu Hình:Tạo thư mục cho Snort:[root@localhost base-1.4.2]# mkdir /etc/snort
[root@localhost base-1.4.2]# mkdir /etc/snort/rulesTạo thư mục cho Snort lưu file log
[root@localhost base-1.4.2]# mkdir /var/log/snort/
Chép các file cần thiết vào thư mục đã được tạo:[root@uitnetwork snort-2.8.4.1]# cd /usr/local/snort-2.8.4.1/etc/
[root@uitnetwork etc]# cp * /etc/snort/Tiếp theo cần có các rules cho snort:[root@uitnetwork ~]# wget http://www.snort.org/pub-bin/downloads.cgi/Download/vrt_os/snortrules-snapshot-2.8.tar.gz[root@uitnetwork ~]# tar -xzvf snortrules-snapshot-2.8.tar.gz[root@uitnetwork ~]# cd rules
[root@uitnetwork ~]# cp * /etc/snort/rules/
Tạo một liên kết mềm (symbolic link) của file snort binary đến /usr/sbin/snort, tập tin snort binary nằm ở đường dẫn /usr/local/bin/snort[root@uitnetwork ~]# ln -s /usr/local/bin/snort /usr/sbin/snortTạo một group và user để chạy snort:
[root@uitnetwork ~]# groupadd snort
[root@uitnetwork ~]# useradd -g snort snortSet quyền sở hữu và cho phép Snort ghi log vào thư mục chứa log
[root@uitnetwork ~]# chown snort:snort /var/log/snort/
[root@uitnetwork ~]# chmod 664 /var/log/snort/alertChỉnh lại file cấu hình snort.conf:
Thay đổi các dòng sau:
var RULE_PATH ../rules ---> var RULE_PATH /etc/snor/rules
chỉ ra thư mục chứa các tập luật.
Bỏ dấu # ở đầu dòng và chỉnh sữa lại dòng output database như sau
output database: log,mysql, user=snort password = 123456 dbname=snort host=localhost
// Đặt pass kiểu này dễ chết lắm
Chi tiết bạn nên xem các phần chú thích kèm theo để cấu hình theo ý mình.
Thiết Lập Snort khởi động cùng hệ thống: Snort cung cấp các scrip để khởi động trong thư mục rpm/ trong thư mục xả nén snort.[root@uitnetwork ~]# cd /usr/local/snort-2.8.4.1/rpm/
[root@uitnetwork rpm]# cp snortd /etc/init.d/
[root@uitnetwork rpm]# cp snort.sysconfig /etc/sysconfig/snortFile snort bạn có thể chỉnh lại theo yêu cầu của bạn; interface để snort hoạt động trên interface đó mặcđịnh là eth0, ALERTMODE -có thểđể mặc định là fast, BINARY_LOG để mặc định là 1, Hoặc chỉnh trong file cấu hình
Set quyền lại cho file snortd :
[root@uitnetwork ~]# chmod 755 /etc/init.d/snortd
[root@uitnetwork ~]# chkconfig snortd on
[root@uitnetwork ~]# chkconfig --add /etc/init.d/snortd
[root@uitnetwork ~]# chkconfig snortd onTạo CSDL snort với MySQL:
Trước tiên ta cần set password cho root trong MySQL.
[root@uitnetwork ~]# mysqladmin -u root password 123456
Đặt pass này cho dễ chết
.
Tạo password cho tài khoản snort.
mysql> use mysql;
mysql> CREATE USER 'snort'@'localhost' IDENTIFIED BY '123456';mysql> flush privileges;
Tạo CSDL cho snort.
mysql> create database snort;Cấp quyền cho tài khoản snort.
Query OK, 1 row affected (0.01 sec)mysql> GRANT CREATE, INSERT, SELECT, DELETE, UPDATE ON snort.* to snort@localhost;Tạo các bảng: vào thư mục schames mà bạn giải nén snort:
Query OK, 0 rows affected (0.00 sec)[root@uitnetwork ~]# cd /usr/local/snort-2.8.4.1/schemas/
[root@uitnetwork schemas]# mysql -u root -p < create_mysql snortCài đặt BASE:
Web server và PHP đã cài đặt sẵn ta cần cài thêm vài gói pear cho PHP.
[root@uitnetwork ~]# pear install Image_Graph-alpha Image_Canvas-alpha Image_Color Numbers_Roman
Cài đặt ADODB:
Tải ADODB tại: http://nchc.dl.sourceforge.net/sourceforge/adodb/adodb508a.tgz
[root@uitnetwork ~]# wget http://nchc.dl.sourceforge.net/sourceforge/adodb/adodb508a.tgz
[root@uitnetwork ~]# cp adodb508a.tgz /var/www/html/
[root@uitnetwork ~]# cd /var/www/html/
[root@uitnetwork html]# tar -xvzf adodb508a.tgzCài BASE:
Tải BASE tại: http://nchc.dl.sourceforge.net/sourceforge/secureideas/base-1.4.2.tar.gz
[root@uitnetwork ~]# wget http://nchc.dl.sourceforge.net/sourceforge/secureideas/base-1.4.2.tar.gz
[root@uitnetwork ~]# cp base-1.4.2.tar.gz /var/www/html/
[root@uitnetwork ~]# cd /var/www/html/
[root@uitnetwork html]# tar -xzvf base-1.4.2.tar.gz
[root@uitnetwork html]# rm -rf base-1.4.2.tar.gz
[root@uitnetwork base-1.4.2]# cp base_conf.php.dist base_conf.php
[root@uitnetwork base-1.4.2]# vi vi base_conf.php
Chỉnh lại thông số ở các dòng sau:
$DBlib_path = '/var/www/html/adodb5';
$DBtype = 'mysql';
$alert_dbname = 'snort';
$alert_host = 'localhost';
$alert_port = '';
$alert_user = 'snort';
$alert_password = '123456';
$archive_exists = 1; # Set this to 1 if you have an archive DB
$archive_dbname = 'snort';
$archive_host = 'localhost';
$archive_port = '';
$archive_user = 'snort';
$archive_password = '123456';
/* Whois query */
$external_whois_link = 'index.php';
/* DNS query */
$external_dns_link = 'index.php';
/* SamSpade "all" query */
$external_all_link = 'index.php';
Sửa lại đường dẫn cho BASE:
[root@uitnetwork html]# mv base-1.4.2/ base/
Mở trình duyệt lên và đánh vào http:// /base ta được trang web như sau:

Click vào Create BASE để tạo cơ sở dữ liệu cho BASE.

Click vào main page để chạy trang chủ của BASE.

Công việc bây giờ là kiểm tra snort có làm việc tốt hay không? Bạn có thể tạo ra vài rules đơn giản để test hoặc tiến hành quét bằng nmap cũng sẽ được ghi nhận vào BASE.
Đây là kết quả khi tiến hành quét cổng với nmap:

Chúc các bạn thành công !
This e-mail address is being protected from spambots. You need JavaScript enabled to view it
www.UITnetwork.com
- 16/09/2009 20:35 - Kĩ thuật Mã hoá trong Mạng máy tính
- 11/09/2009 16:48 - Lỗ hổng zero-day của SMB 2.0 protocol
- 11/09/2009 11:21 - Phần mềm mã nguồn mở trong kiểm tra tự động ứng dụ…
- 11/09/2009 11:00 - Khóa WPA Wi-Fi bị tấn công trong vòng 1 phút
- 10/09/2009 14:05 - Tăng cường an ninh cho trung tâm dữ liệu
- 16/05/2009 22:39 - Căn bản về firewall
. Ta tìm thì ra link sau:
.
. Link 