Hệ thống phát hiện và ngăn chặn xâm nhập
Snort là phần mềm xây dựng hệ thống phát hiện xâm nhập (IDS), có nhiệm vụ theo dõi, phát hiện các hành vi khai thác trái phép tài nguyên của hệ thống được bảo vệ mà có thể dẫn đến việc làm tổn hại đến tính bảo mật, tính toàn vẹn và tính sẵn sàng của hệ thống. Anh em có thể tham khảo thêm tại https://www.snort.org/
Để trở Snort trở thành một hệ thống ngăn chặn xâm nhập (IPS) mình xin giới thiệu về một phần mềm do 1 bên thứ 3 phát triển là SnortSam, đây là 1 plugin của Snort sẽ hỗ trợ việc block các IP do Snort phát hiện là đang thực hiện hành vi trái phép đối với hệ thống.
SnortSam sẽ giúp Snort gửi thông tin tương tác với Firewall để chặn các IP tấn công, hiện đang hỗ trợ các Firewall: Iptables, Checkpoint Firewall-1, CISCO ASA, PIX, Netscreen…Anh em tham khảo thêm tại: http://www.snortsam.net/index.html
Sau đây là bài viết hướng dẫn xây dựng hệ thống IPS bằng cài đặt Snort + SnortSam trên Ubuntu 10.04 LST, sử dụng IPtables để thực hiện việc chặn các IP tấn công:
Cài đặt các gói phụ thuộc và download các phần mềm cần thiết.
Các câu lệnh cài đặt đều thực hiện ở quyền root:
Download các gói sau (google search ):
- snort-2.9.1.2.tar.gz
- daq-0.6.2.tar.gz
- snortrules-snapshot-2912.tar.gz
- snortsam-src-2.70.tar.gz
- snortsam-2.9.1.2.diff.gz
- razorback-0.4.1.tar.gz
- base-1.4.5.tar.gz
Giải nén và cài đặt các phần mềm đã download trên:
Tạo database để lưu trữ các event:
Tạo user snort:
Rule cho Snort:
Chỉnh sửa file cấu hình snort:
Chạy thử với file cấu hình vừa chỉnh sửa
Cài đặt giao diện base để quản lý event của snort:
Cấu hình BASE:
Truy cập giao diện BASE:
Cấu hình SnortSam:
Sửa đổi file cấu hình SnortSam:
Nội dung sửa đổi:
Bổ sung cấu hình file snort:
Bổ sung cuối file:
Câu lệnh thực hiện chạy Snort và SnortSam:
Cách viết luật sử dụng SnortSam để chặn IP tấn công:
Ví dụ:
So với cách viết luật thông thường cho Snort thì có thêm cấu hình chặn IP:
Hoàn thành.
Để trở Snort trở thành một hệ thống ngăn chặn xâm nhập (IPS) mình xin giới thiệu về một phần mềm do 1 bên thứ 3 phát triển là SnortSam, đây là 1 plugin của Snort sẽ hỗ trợ việc block các IP do Snort phát hiện là đang thực hiện hành vi trái phép đối với hệ thống.
SnortSam sẽ giúp Snort gửi thông tin tương tác với Firewall để chặn các IP tấn công, hiện đang hỗ trợ các Firewall: Iptables, Checkpoint Firewall-1, CISCO ASA, PIX, Netscreen…Anh em tham khảo thêm tại: http://www.snortsam.net/index.html
Sau đây là bài viết hướng dẫn xây dựng hệ thống IPS bằng cài đặt Snort + SnortSam trên Ubuntu 10.04 LST, sử dụng IPtables để thực hiện việc chặn các IP tấn công:
Cài đặt các gói phụ thuộc và download các phần mềm cần thiết.
Các câu lệnh cài đặt đều thực hiện ở quyền root:
PHP:
apt-get update
PHP:
apt-get -y install build-essential libpcap0.8-dev libmysqlclient15-dev mysql-client-5.1 mysql-server-5.1 bison flex apache2 libapache2-mod-php5 php5-gd php5-mysql libphp-adodb php-pear libc6-dev g++ gcc pcregrep libpcre3-dev
PHP:
apt-get install uuid-dev libmagic-dev libmemcached-dev libssl-dev libssl-dev libconfig8-dev libpcre3-dev libmysqlclient-dev make libtool autoconf automake libcurl4-openssl-dev libcli-dev libjson0-dev
PHP:
cd /home/admin/
wget hxxp://libdnet.googlecode.com/files/libdnet-1.12.tgz
tar –zxvf libdnet-1.12.tgz
cd libdnet-1.12
./configure
make
make install
ldconfig
ln -s /usr/local/lib/libdnet.1 /usr/lib/libdnet.1
Download các gói sau (google search ):
- snort-2.9.1.2.tar.gz
- daq-0.6.2.tar.gz
- snortrules-snapshot-2912.tar.gz
- snortsam-src-2.70.tar.gz
- snortsam-2.9.1.2.diff.gz
- razorback-0.4.1.tar.gz
- base-1.4.5.tar.gz
Giải nén và cài đặt các phần mềm đã download trên:
PHP:
tar -zxvf snort-2.9.1.2.tar.gz
tar -xvzf daq-0.6.2.tar.gz
cd daq-0.6.2
./configure
make
make install
tar -zxvf snortsam-src-2.70.tar.gz
cd snortsam
chmod +x makesnortsam.sh
./makesnortsam.sh
cp snortsam /usr/bin/
gunzip -d snortsam-2.9.1.2.diff.gz
cd /home/admin/snort-2.9.1.2
patch -p1 < /home/admin/snortsam-2.9.1.2.diff
chmod +x autojunk.sh
./autojunk.sh
libtoolize --automake --copy
aclocal -I m4
autoheader
automake --add-missing --copy
autoconf
./configure -enable-dynamicplugin --with-mysql
make
make install
Tạo database để lưu trữ các event:
PHP:
mysql -u root –p
create database snort;
create database snort_archive;
use snort;
grant all privileges on snort.* to 'snort'@'localhost' identified by '123456’;
grant all privileges on snort.* to 'root'@'localhost' identified by '123456';
use snort_archive;
grant all privileges on snort_archive.* to 'snort'@'localhost' identified by ‘123456';
exit
mysql -D snort -u snort -p < /home/admin/snort-2.9.1.2/schemas/create_mysql
mysql -D snort_archive -u snort -p < /home/admin/snort-2.9.1.2/schemas/create_mysql
Tạo user snort:
PHP:
adduser snortchsh snort
Login Shell [/bin/bash]: /bin/true
passwd snort -l
Rule cho Snort:
PHP:
mkdir -p /etc/snort/rules /var/log/snort
sudo chown -R root.snort /var/log/snort
sudo chmod -R 770 /var/log/snort
tar -xvzf /home/admin/snortrules-snapshot-2912.tar.gz -C /etc/snort
Chỉnh sửa file cấu hình snort:
PHP:
vim /etc/snort/etc/snort.conf
PHP:
#dynamicdetection directory /usr/local/lib/snort_dynamicrules
#var RULE_PATH ../rules
#var SO_RULE_PATH ../so_rules
#var PREPROC_RULE_PATH ../preproc_rules
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules
#preprocessor reputation: \
# memcap 500, \
# priority whitelist, \
# nested_ip inner, \
# whitelist $WHITE_LIST_PATH/white_list.rules, \
# blacklist $BLACK_LIST_PATH/black_list.rules
# dynamic library rules
include $SO_RULE_PATH/bad-traffic.rules
include $SO_RULE_PATH/chat.rules
include $SO_RULE_PATH/dos.rules
include $SO_RULE_PATH/exploit.rules
include $SO_RULE_PATH/icmp.rules
include $SO_RULE_PATH/imap.rules
include $SO_RULE_PATH/misc.rules
include $SO_RULE_PATH/multimedia.rules
include $SO_RULE_PATH/netbios.rules
include $SO_RULE_PATH/nntp.rules
include $SO_RULE_PATH/p2p.rules
include $SO_RULE_PATH/smtp.rules
include $SO_RULE_PATH/snmp.rules
include $SO_RULE_PATH/specific-threats.rules
include $SO_RULE_PATH/web-activex.rules
include $SO_RULE_PATH/web-client.rules
include $SO_RULE_PATH/web-iis.rules
include $SO_RULE_PATH/web-misc.rules
output database: log, mysql, user=snort password=123456 dbname=snort host=localhost
Chạy thử với file cấu hình vừa chỉnh sửa
PHP:
snort -c /etc/snort/etc/snort.conf
Cài đặt giao diện base để quản lý event của snort:
PHP:
tar -zxvf base-1.4.5.tar.gz
mv base-1.4.5 /var/www/base
pear install Image_Color Image_Canvas-alpha Image_Graph-alpha
chown www-data /var/www/base
chmod 755 /var/www/base
PHP:
vim /etc/php5/apache2/php.ini
sửa :error_reporting = E_ALL & ~E_NOTICE
Cấu hình BASE:
PHP:
vim /var/www/base/base_conf.php.dist
thay đổi:
$DBLib_path = '/usr/share/php/adodb';
$BASE_urlpath = '/base';
$alert_dbname = 'snort';
$alert_host = 'localhost';
$alert_port = '';
$alert_user = 'snort';
$alert_password = '123456';
/* Archive DB connection parameters */
$archive_exists = '1'; # Set this to 1 if you have an archive DB
$archive_dbname = 'snort_archive';
$archive_host = 'localhost';
$archive_port = '';
$archive_user = 'snort_archive';
$archive_password = '123456';
cp /var/www/base/base_conf.php.dist /var/www/base/base_conf.php
chown www-data:www-data /var/www/base
chown -R www-data:www-data /var/www/base/*
mysqldump -u root -p snort > snort.db
mysql -u root -p snort_archive < snort.db
mysql -u root –p
use snort_archive;
grant all privileges on snort_archive.* to 'snort'@'localhost' identified by '123456’;
Truy cập giao diện BASE:
PHP:
http://ip-address/base
Cấu hình SnortSam:
PHP:
cp snortsam/conf/snortsam.conf.sample /etc/snort/snortsam.conf
mkdir /var/db
chmod 777 /var/db
Sửa đổi file cấu hình SnortSam:
PHP:
vim /etc/snort/snortsam.conf
Nội dung sửa đổi:
PHP:
defaultkey 123456
accept localhost
iptables eth0 log
iptables -I FORWARD -i eth0 -s {ip_addr_to_be_blocked} -j REJECT
iptables -D FORWARD -i eth0 -s {ip_addr_to_be_unblocked} -j REJECT
Bổ sung cấu hình file snort:
PHP:
vim /etc/snort/etc/snort.conf
Bổ sung cuối file:
PHP:
output alert_fwsam: localhost:898/123456
Câu lệnh thực hiện chạy Snort và SnortSam:
PHP:
snort -u snort -g snort -c /etc/snort/etc/snort.conf -i eth0 ~
snortsam /etc/snortsam/snortsam.conf ~
Cách viết luật sử dụng SnortSam để chặn IP tấn công:
Ví dụ:
PHP:
alert tcp 10.2.51.121 any -> any 80 ( msg: "Test Rule: -----ICMP packet detected!"; sid: 10009; uricontent:"index.htm";uricontent:"index2.htm"; uricontent:"index3.htm"; flow:to_server,established ; threshold:type threshold, track by_src, count 20, seconds 3600; fwsam: src, 1 minutes;)
PHP:
fwsam: src, 1 minutes; ==>chặn IP tấn công là 1 phút
Hoàn thành.