Snort: Часть 2. Установка Snort
В данной статье рассмотрим пример установки и первичной настройки Snort для ОС Debian. А также рассмотрим конфигурацию сетевого интерфейса, рекомендуой для Snort.
Установка и первичная настройка Snort для ОС Debian
Установка необходимых пререквизитов для Snort
В данной статье разберём подробно установку из исходных кодов и первичную настройку Snort в ОС Debian.
Для начала устанавливаем обновления для ОС:
sudo apt-get update && sudo apt-get upgrade
- apt-get update - обновление индекса пакетов
- apt-get upgrade - обновление пакетов
Устанавливаем обязательные пререквизиты для Snort:
sudo apt-get -y install build-essential libpcap-dev libpcre3-dev libdumbnet-dev zlib1g-dev
- build-essential - предоставляет инструменты, необходимых для сборки пакетов Debian;
- libpcap-dev - библиотека для захвата сетевого трафика, необходима для Snort;
- libpcre3-dev - библиотека функций для поддержки регулярных выражений, необходима для Snort;
- libdumbnet-dev - библиотека, ещё известная как libdnet-dev, предоставляющая упрощённый, портативный интерфейс для различных низкоуровневых (interface to several low-level networking routines);
- zlib1g-dev - библиотека, реализующая метод сжатия deflate, необходима для Snort.
Устанавливаем необходимые для DAQ парсеры:
sudo apt-get -y install bison flex
- bison - генератор анализаторов синтаксиса (parser) выражений;
- flex - инструмент для генерации программ, распознающих заданные образцы в тексте.
Устанавливаем дополнительные (рекомендуемые) программы:
sudo apt-get -y install liblzma-dev openssl libssl-dev iptables-dev libnfnetlink-dev libmnl-dev libnet1-dev libnetfilter-queue-dev pkg-config autotools-dev checkinstall cmake cpputest
Для сборки документации (не является обязательным) понадобиться установить следующие пакеты:
sudo apt-get -y install w3m dblatex asciidoc source-highlight
Для поддержки HTTP/2 траффика необходимо установить библиотеку Nghttp2: HTTP/2 C библиотека, которая реализует алгоритм сжатия заголовков HPAC.
Устанавливаем её из исходного кода:
sudo apt-get install -y autoconf libtool pkg-config
cd ~/snort_src
wget https://github.com/nghttp2/nghttp2/releases/download/v1.19.0/nghttp2-1.19.0.tar.gz
tar -xzvf nghttp2-1.19.0.tar.gz
rm nghttp2-1.19.0.tar.gz
cd nghttp2-1.19.0
autoreconf -i --force
automake
autoconf
./configure --enable-lib-only
make
sudo make install
Сборка DAQ и Snort из исходного кода
Создадим каталог snort_src, куда сохраним загружаемые архивы с программами: mkdir ~/snort_src
Snort использует библиотеку Data Acquisition library (DAQ), которую можно скачать с официального сайта Snort. Скачиваем архив с исходным кодом, создаём бинарный пакет с помощью checkinstall и устанавливаем его:
cd ~/snort_src/
wget https://www.snort.org/downloads/snort/daq-2.0.6.tar.gz -O daq-2.0.6.tar.gz
tar -xvzf daq-2.0.6.tar.gz
rm daq-2.0.6.tar.gz
cd daq-2.0.6
./configure
make
sudo checkinstall
sudo dpkg -i daq_2.0.6-1_amd64.deb
Обновляем пути для разделяемых библиотек:
sudo sh -c "echo >> /etc/ld.so.conf /usr/lib"
sudo sh -c "echo >> /etc/ld.so.conf /usr/local/lib"
sudo ldconfig
Далее устанавливаем Snort из исходного кода:
cd ~/snort_src/
wget https://www.snort.org/downloads/snort/snort-2.9.9.0.tar.gz -O snort-2.9.9.0.tar.gz
tar -xvzf snort-2.9.9.0.tar.gz
rm snort-2.9.9.0.tar.gz
cd snort-2.9.9.0
./configure --enable-sourcefire
make
sudo checkinstall
sudo dpkg -i snort_2.9.9.0-1_amd64.deb
В случае каких-либо ошибок во время сборки необходимо их устранить прежде чем двигаться дальше.
И создаём символьную ссылку
sudo ln -s /usr/local/bin/snort /usr/sbin/snort
sudo ldconfig
Следует проверить, правильно ли установился Snort. Для этого достаточно запустить команду snort -V
. Если вывод команды будет примерно следующий (номер версии может отличаться), то это будет означать, что Snort успешно установлен:
,,_ -*> Snort! <*-
o" )~ Version 2.9.9.0 GRE (Build 56)
'''' By Martin Roesch & The Snort Team: http://www.snort.org/contact#team
Copyright (C) 2014-2016 Cisco and/or its affiliates. All rights reserved.
Copyright (C) 1998-2013 Sourcefire, Inc., et al.
Using libpcap version 1.6.2
Using PCRE version: 8.35 2014-04-04
Using ZLIB version: 1.2.8
Также с помощью команды snort --daq-list
можно посмотреть список доступным DAQ-модулей.
Устранение возможных ошибок
Во время выполнения команды checkinstall могут возникнуть ошибки вида:
ranlib: could not create temporary file whilst writing archive: No more archived files
, которые можно исправить, одним из следующих способов:
-
Установкой и удалением программы при помощи make:
make install make uninstall
-
Добавлением вручную каталогов, необходимых для сборки и установки пакета, которые не может создать checkinstall самостоятельно:
sudo mkdir /usr/local/lib/snort_dynamicengine sudo mkdir /usr/local/include/snort sudo mkdir /usr/local/lib/snort sudo mkdir /usr/local/include/snort/dynamic_preproc sudo mkdir /usr/local/lib/snort/dynamic_preproc sudo mkdir /usr/local/lib/snort_dynamicpreprocessor sudo mkdir /usr/local/lib/snort/dynamic_output sudo mkdir /usr/local/share/doc
После чего вновь собираем и устанавливаем Snort:
sudo checkinstall sudo dpkg -i snort_2.9.8.0-1_amd64.deb
Конфигурация сетевого интерфейса, рекомендуемая для Snort
Согласно рекомендациям из руководства Snort следует убедиться, что сетевая карта не обрезает слишком большие пакеты (в сетях Ethernet длина которых превышает 1518 байт). Для этого произведём оптимизацию сетевых интерфейсов с помощью утилиты ethtool. Если нужно, устанавливаем ethtool (sudo apt-get -y install ethtool
) и для настройки параметров выполняет в терминале следующие команды:
ethtool -K eth0 rx off
- освобождение ОС от расчёт контрольных суммы TCP/IP (rx-checksumming) для входящих пакетов;ethtool -K eth0 tx off
- освобождение ОС от расчёт контрольных суммы TCP/IP (tx-checksumming) для исходящих пакетов;ethtool -K eth0 gso off
- отключение функции (generic-segmentation-offload) фрагментации пакетов без участия CPU;ethtool -K eth0 gro off
- отключение функции (generic-receive-offload) сборки пакетов сетевым интерфейсом без участия CPU;ethtool -K eth0 lro off
- отключение функции (large-receive-offload) сборки пакетов сетевым интерфейсом без участия CPU.
Но в данном случае настройки будут оставаться в силе только до перезагрузки ОС, поэтому лучшим вариантом будет добавить команды настройки сетевого интерфейса одним из следующих способов:
-
Открываем файл /etc/network/interfaces (
sudo gedit /etc/network/interfaces
) с настройками конфигурации сети Ethernet и добавляем в конец файла следующие команды для сетевого интерфейса eth0, который Snort будет слушать:# The primary network interface auto eth0 iface eth0 inet dhcp post-up ethtool --offload eth0 rx off tx off post-up ethtool -K eth0 gso off post-up ethtool -K eth0 gro off post-up ethtool -K eth0 lro off
-
Либо открываем файл /etc/rc.local (
sudo gedit /etc/rc.local
) с автозагрузками и добавляем следующие строчки до “exit 0”:ethtool --offload eth0 rx off tx off ethtool -K eth0 gso off ethtool -K eth0 gro off ethtool -K eth0 lro off
Текущие значения параметров можно посмотреть с помощью команды ethtool -k eth0
. Если параметр обозначен как [fixed], то это означает, что значение параметра нельзя изменить с помощью ethtool. Часто многие параметры обозначены [fixed], когда ОС запушена в виртуальной машине (например, VMWare или VirtualBox) и гостевая ОС не в состоянии изменить параметры хостовой ОС.
Конфигурация ниже не рабочая:
# 1
allow-hotplug eth0
auto eth0
iface eth0 inet dhcp
# 2
allow-hotplug eth1
auto eth1
iface eth1 inet static
address 192.168.0.22
netmask 255.255.255.0
gateway 192.168.0.1
Установка Snort для для других ОС
На ОС Raspbian (Raspberry Pi 3) Snort устанавливается с помощью такой же последовательности команд.
Оставить комментарий