Logo snort

Snort là một hệ thống phát hiện, phòng ngừa xâm nhập hệ thống (IDS/IPS) mã nguồn mở được viết bởi Martin Roesch vào năm 1998. Hiện tại, Snort được phát triển bởi Sourcefire và được sở hữu bởi Cisco từ năm 2013. Bài viết này sẽ hướng dẫn cài đặt snort 2.9 trên Centos7 làm IDS.

Chuẩn bị

Một máy Centos7 có cấu hình tối thiểu:

  • 2G RAM
  • 2 core
  • 1 interface
  • 50G disk

Cài đặt

Update và cài đặt một số gói cần thiết

yum update -y

yum install epel-release -y

yum install gcc gcc-c++ libnetfilter_queue libnetfilter_queue-devel git flex bison zlib zlib-devel pcre pcre-devel libdnet libdnet-devel tcpdump libnghttp2 wget xz-devel lzma mysql-devel* autoconf libtool -y

Tạo folder để chứa source

mkdir ~/snort_src
cd ~/snort_src

Snort yêu cầu một số thư viện. Vì vậy chúng ta cần cài đặt nó trước khi cài snort

Cài đặt libpcap

wget http://www.tcpdump.org/release/libpcap-1.8.1.tar.gz
tar xzvf libpcap-1.8.1.tar.gz
cd libpcap-1.8.1
./configure && make && make install
yum install libpcap-devel -y
cd ..

Cài đặt DAQ

wget https://www.snort.org/downloads/snort/daq-2.0.7.tar.gz
tar xvfz daq-2.0.7.tar.gz
cd daq-2.0.7
autoreconf -f -i
./configure && make && make install
cd ..

Cài đặt LuaJIT

wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz
tar xvzf LuaJIT-2.0.5.tar.gz
cd LuaJIT-2.0.5/
make && make install
cd ..

Cài đặt snort

wget https://www.snort.org/downloads/snort/snort-2.9.16.tar.gz
tar xvzf snort-2.9.16.tar.gz
cd snort-2.9.16
./configure --enable-sourcefire && make && make install

Cấu hình

Bây giờ ta cần sửa một số file cấu hình

Update thư viện dùng chung

ldconfig

Snort được cài đặt trong thư mục /usr/local/bin/snort. Để thuận tiện cho việc sử dụng ta tạo một liên kết đến /usr/bin/snort

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

Để chắc chắn snort đã được cài đặt thành công sử dụng lệnh sau để kiểm tra

snort -v

Để chạy snort mà không cần đến quyền root. Ta tạo một user và group cho snort khi chạy daemon

groupadd snort
useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort

Tạo một số thư mục để lưu cấu hình snort

mkdir -p /etc/snort/rules
mkdir /var/log/snort
mkdir /usr/local/lib/snort_dynamicrules

Phân quyền lại cho các thư mục vừa tạo

chmod -R 5775 /etc/snort
chmod -R 5775 /var/log/snort
chmod -R 5775 /usr/local/lib/snort_dynamicrules
chmod -R 5775 /usr/local/lib/snort_dynamicrules
chown -R snort:snort /var/log/snort
chown -R snort:snort /usr/local/lib/snort_dynamicrules

Tạo file

touch /etc/snort/rules/white_list.rules
touch /etc/snort/rules/black_list.rules
touch /etc/snort/rules/local.rules

Copy một số file tới thư mục cấu hình

cp ~/snort_src/snort-2.9.16/etc/* /etc/snort/

Sửa đổi một số thông tin trong file cấu hình /etc/snort/snort.conf

sed -i "s/include \$RULE\_PATH/#include \$RULE\_PATH/ " /etc/snort/snort.conf

Thay đổi thủ công một số dòng sau

ipvar HOME_NET 10.10.34.0/24
ipvar EXTERNAL_NET !$HOME_NET
var RULE_PATH /etc/snort/rules
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
include $RULE_PATH/local.rules

Kiểm tra file cấu hình snort bằng lệnh

snort -T -c /etc/snort/snort.conf

Thêm một rule test vào file /etc/snort/rules/local.rules

alert icmp any any -> $HOME_NET any (msg:"ICMP test"; sid:10000001; rev:001;)

Thực hiện lệnh sau để kiểm tra

snort -A console -q -u snort -g snort -c /etc/snort/snort.conf

Trên một máy khác thực hiện lệnh ping đến máy cài snort

Cảnh báo của snort

Cài đặt Barnyard2

Barnyard2 hỗ trợ việc xuất dữ liệu đầu ra của snort ra CSDL MySQL như vậy sẽ thuận tiện hơn cho việc lưu trữ hoặc xử lý nó

Cài một số gói cần thiết

yum install git unzip libtool mariadb-server -y

Sửa dòng 521 trong file /etc/snort/snort.conf thành như sau để định dạng lại dữ liệu đầu ra của snort để dùng được Barnyard2

output unified2: filename snort.log, limit 1024

Bắt đầu cài đặt

cd ~/snort_src
wget https://github.com/firnsy/barnyard2/archive/master.tar.gz -O barnyard2-Master.tar.gz
tar -xzvf barnyard2-Master.tar.gz
cd barnyard2-master/
./autogen.sh && ./configure --with-mysql --with-mysql-libraries=/usr/lib64/mysql &&
make && make install
cp -v etc/barnyard2.conf /etc/snort/

Thay đổi một số giá trị trong file /etc/snort/barnyard2.conf

config logdir: /var/log/barnyard2
config hostname: localhost
config interface: ens33
config waldo_file: /var/log/barnyard2/barnyard2.waldo

Tạo folder log cho Barnyard2

mkdir /var/log/barnyard2
chmod 744 /var/log/barnyard2 && chown snort.snort /var/log/barnyard2
touch /var/log/barnyard2/barnyard2.waldo && chown snort.snort /var/log/barnyard2/barnyard2.waldo

Để kiểm tra barnyard ta sử dụng câu lệnh sau

cd /var/log/snort
barnyard2 -c /etc/snort/barnyard2.conf -o snort.log

Cấu hình MySQL

systemctl start mariadb && systemctl enable mariadb
mysql_secure_installation

Thực hiện set password cho root và trả lời tất cả câu hỏi là Y

Kết nối MySQL và tạo DB

mysql -u root -p
create database snort;
grant all privileges on snort.* to snort@'localhost' identified by '123456';
grant all privileges on snort.* to snort@'127.0.0.1' identified by '123456';
flush privileges;
exit

Tạo các bảng cho DB vừa tạo

cd ~/snort_src/barnyard2-master/schemas/
mysql -u root -p snort < create_mysql

Cấu hình cho Barnyard2 kết nối đến mysql

vi /etc/snort/barnyard2.conf

#Comment lại dòng 227
#output alert_fast: stdout

#Bỏ comment dòng 351 và khai báo thông tin mysql
output database: log, mysql, user=snort password=123456 dbname=snort
host=localhost

Cài đặt Pulledpork

Pulledpork là một script viết bằng perl dùng để tự động tải các rules từ snort

Cài các gói cần thiết

yum install perl-libwww-perl perl-core "perl(Crypt::SSLeay)" perl-LWP-Protocol-https

Download và cài đặt

cd ~/snort_src
git clone https://github.com/shirkdog/pulledpork.git
cd pulledpork/
cp pulledpork.pl /usr/local/bin
chmod +x /usr/local/bin/pulledpork.pl
cp etc/*.conf /etc/snort
mkdir /etc/snort/rules/iplists
touch /etc/snort/rules/iplists/default.blacklist

Kiểm tra pulledpork đã cài đặt thành công

pulledpork.pl -V

Vào lại file cấu hình của snort /etc/snort/snort.conf thêm dòng sau vào dòng 547

include $RULE_PATH/snort.rules

Bạn cần tạo một tài khoản trên https://snort.org/ để có oinkcode để tải về những rules mới nhất. Sau khi tạo tài khoản và đăng nhập chọn như sau để lấy oinkcode

Sửa một số thông tin trong file config của Pulledpork

vi /etc/snort/pulledpork.conf
rule_url=https://www.snort.org/reg-rules/|snortrules-snapshot.tar.gz| <oinkcode>
line 21 comment it
line 74 change to:rule_path=/etc/snort/rules/snort.rules
line 89 change to:local_rules=/etc/snort/rules/local.rules
line 92 change to:sid_msg=/etc/snort/sid-msg.map
line 119 change to:config_path=/etc/snort/snort.conf
line 136 change to:distro=Centos-7
line 144 change to:back_list=/etc/snort/rules/iplists/default.blacklist
line 153 change to:IPRVersion=/etc/snort/rules/iplists
line 202 uncomment and change to:enablesid=/etc/snort/enablesid.conf
line 203 uncomment and change to:dropsid=/etc/snort/dropsid.conf
line 204 uncomment and change to:disablesid=/etc/snort/disablesid.conf
line 205 uncomment and change to:modifysid=/etc/snort/modifysid.conf

Lưu file và chạy lệnh sau

mkdir -p /etc/snort/rules/iplists/
touch /etc/snort/rules/iplists/default

Chạy lệnh Pulledpork

pulledpork.pl -c /etc/snort/pulledpork.conf

Mở file /etc/crontab và thêm vào cuối dòng sau

* */5 * * * root /usr/local/bin/pulledpork.pl -c /etc/snort/pulledpork.conf

Cấu hình tự động khởi động cùng hệ thống

Để cho phép Snort và Barnyard2 khởi động khi bật máy bạn cần cấu hình như sau:

Mở file /lib/systemd/system/snort.service và thêm vào nội dung

[Unit]
Description=Snort NIDS Daemon
After=syslog.target network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/snort -q -u snort -g snort -c /etc/snort/snort.conf

[Install]
WantedBy=multi-user.target

Bật và cho phép snort khởi động cùng hệ thống

systemctl start snort
systemctl enable snort

Mở file /lib/systemd/system/barnyard2.service và thêm vào nội dung sau

[Unit]
Description=Barnyard2 Daemon
After=syslog.target network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/barnyard2 -c /etc/snort/barnyard2.conf -d
/var/log/snort -f snort.log -w /var/log/barnyard2/barnyard2.waldo

[Install]
WantedBy=multi-user.target

Bật và cho phép barnyard khởi động cùng hệ thống

systemctl start barnyard2
systemctl enable barnyard2