Friday, December 26, 2014

Cài đặt và cấu hình Snort

Trong bài viết này sẽ hướng dẫn việc cài đặt và cấu hình Snort từng bước một. Tuy nhiên, phạm vi áp dụng của hướng dẫn này là cài đặt Snort dùng làm NIDS, nếu cài làm HIDS thì có thể tối ưu một số tham số (ngoài phạm vi hướng dẫn này :D)

Bước 1: Cài các gói phụ thuộc
yum install -y wget gcc flex bison zlib zlib-devel libpcap libpcap-devel pcre pcre-devel tcpdump
Cài đặt thêm gói libdnet:
Đối với bản RHEL6 and CentOS-6 32bit:
libdnet-1.11-1.2.el6.rf.i686.rpm
libdnet-devel-1.11-1.2.el6.rf.i686.rpm
Hoặc dành cho bản RHEL6 and CentOS-6 64bit:
libdnet-1.11-1.2.el6.rf.x86_64.rpm
libdnet-devel-1.11-1.2.el6.rf.x86_64.rpm   RHEL6 and CentOS-6 x86 64bit
Download file binary từ nguồn sau:
http://pkgs.repoforge.org/libdnet/
Hoặc từ http://pkgs.org
Cài đặt các gói tải về:.
yum install libdnet-1.11-1.2.el6.rf.i686.rpm
yum install libdnet-devel-1.11-1.2.el6.rf.i686.rpm
Bước 2: Cài đặt daq
download daq từ trang chủ snort, giải nén
cd /daq 
./configure && make && make install 
Bước 3. cài đặt snort
download file mã nguồn từ trang chủ snort, giải nén
cd  /snort 
./configure --prefix /usr/local/snort && make && make install

Bước 4: Cấu hình Snort
4.1 Tạo link shortcut cho snort
ln -s /usr/local/snort/bin/snort /usr/sbin/

4.2 Tạo thư mục ghi log
mkdir /var/log/snort
4.3 Download cấu hình cài đặt
Download snortrules-snapshot mới nhất trên trang chủ của Snort (Hoặc từ nguồn được cung cấp trong nội bộ)
Link có dạng như sau:
https://www.snort.org/downloads/registered/snortrules-snapshot-2970.tar.gz
Giải nén
tar –xvzf /usr/local/src/snort/snortrules-snapshot-2*
Cấu trúc thư mục:
Etc
Preproc_rules
Rules
So_rules
 
File cấu hình
Copy toàn bộ file và thư mục trong thư mục /usr/local/src/snort/snortrules-snapshot-2*/etc vừa giải nén vào thư mục /etc/snort trên máy (nếu chưa tồn tại thư mục này thì tạo thêm):
cp /usr/local/src/snort/snortrules-snapshot-2*/etc  /etc/snort
 
4.4 Tạo thư mục Snort_dynamicrules
mkdir /usr/local/snort/lib/snort_dynamicrules
 
copy toàn bộ thư viện dynamicrules vào thư mục snort_dynamicrules
 
cp /usr/local/snort/so_rules/precompiled/Centos-5-4/i386/2.9.7.0/*.so /usr/local/snort/snort_dynamicrules/
hoặc
cp /usr/local/snort/so_rules/precompiled/Centos-5-4/x86-64/2.9.7.0/*.so /usr/local/snort/snort_dynamicrules/
 
Để xác định đúng thư viện phù hợp với máy (bao gồm distro, và version), các bạn có thể check với
uname -a
Sau đó vào thư mục
/usr/local/snort/so_rules/precompiled/
để tìm đến phiên bản thích hợp với máy của mình (trong trường hợp này thì thư mục phù hợp với CentOS là Centos-5-4/i386)
4.5 Chỉnh sửa cấu hình của file config: /etc/snort/snort.conf
Thiết lập HOME_NET, EXTERNAL NET
ipvar HOME_NET <ipaddr>
<ipaddr>: là địa chỉ mạng sẽ giám sát, có thể thiết lập là các ip rời rạc: 10.0.0.1,10.0.0.2 hoặc cả dải mạng bao gồm subnet: 10.0.0.0/8, hoặc trong khoảng 10.0.0.2-10.0.0.100
EXTERNAL NET không phải là HOME NET
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

# If you are using reputation preprocessor set these
var WHITE_LIST_PATH /etc/snort/rules
var BLACK_LIST_PATH /etc/snort/rules

Cấu hình đường dẫn tới thư viện dynamic preprocessor, preprocessor engine, dynamic rules
# path to dynamic preprocessor libraries
dynamicpreprocessor directory /usr/local/lib/snort_dynamicpreprocessor/

# path to base preprocessor engine
dynamicengine /usr/local/lib/snort_dynamicengine/libsf_engine.so

# path to dynamic rules libraries
dynamicdetection directory /usr/local/lib/snort_dynamicrules
Thiết lập flowbit với giá trị 2048
# Configure maximum number of flowbit references.  For more information, see README.flowbits
 config flowbits_size: 2048
Bước 5: Rules snort
Copy toàn bộ các rules trong thư mục rules đi kèm trong bộ cài đặt được cung cấp. Nếu có chỉ dẫn khác thì sẽ nhận rules từ nguồn đó.
Bước 6: Test xem snort đã được cấu hình đúng và có thể chạy được chưa
snort -c /usr/local/snort/etc/snort.conf -T
nếu kết quả trả vê như sau:
Snort successfully validated the configuration!
Snort exiting
Thì đã thành công.
Bước 7. Tạo service cho Snort
Copy file snortd tại đường dẫn: /usr/local/src/snort/snort-2.9.7.0/rpm/snortd
cp /usr/local/src/snort/snort-2.9.7.0/rpm/snortd /etc/init.d
chkconfig --add snortd
Thay thế dòng sau trong file snortd:
/usr/sbin/snort/ bằng /usr/local/bin/snort
Bước 8: Cấu hình trong Sysconfig
Copy file snort.sysconfig vào thư mục /etc/sysconfig
cp /usr/local/src/snort/snort-2.9.7.0/rpm/snort.sysconfig /etc/sysconfig/snort
Cấu hình các interface mà Snort sẽ monitor
Tìm đến dòng INTERFACE=
Và thiết lập giá trị là ALL: INTERFACE=ALL
Cấu hình chế độ ghi alert của Snort
Tìm đến dòng: ALERTMODE=
Thiết lập giá trị là fast: ALERTMODE= fast
Bước 9: Phân quyền
Tạo nhóm snort và group snort:
groupadd -g 40000 snort
useradd snort -u 40000 -d $LOG_SNORT -s /sbin/nologin -c SNORT_IDS -g snort
Thiết lập quyền 700 và chủ sở hữu (owner) là snort, nhóm sở hữu (group) là snort cho các thư mục: /etc/sysconfig/snort, /usr/local/bin/daq-modules-config, /var/log/snort, /etc/snort, /usr/local/snort

chown -R snort:snort /var/log/snort
chmod 700 /var/log/snort
chown -R snort:snort /usr/local/snort
chmod -R 700 /usr/local/snort
chown snort:snort /usr/local/bin/daq-modules-config
chmod 700 /usr/local/bin/daq-modules-config
chown -R snort:snort /etc/snort
chmod -R 700 $ETC_SNORT
chown -R snort:snort /etc/sysconfig/snort
chmod 700 /etc/sysconfig/snort

Xử lý lỗi
Nếu bị lỗi: "libdnet.1: cannot open shared object file: No such file or directory"
=> ln -s /usr/local/lib/libdnet.1.0.1 libdnet.1
Nếu gặp lỗi: snort: error while loading shared libraries: libsfbpf.so.0: cannot open shared object file: No such file or directory
=>ldconfig
Nếu có lỗi khác thì cần check lại xem lỗi liên quan đến thư viện nào và cấu hình cho phù hợp.


 --- Jukai Helios ---