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à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
Leave a Reply