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