- 3. Installation¶
- 3.1. Source¶
- 3.1.1. Common configure options¶
- 3.1.2. Dependencies¶
- 3.1.2.1. Ubuntu/Debian¶
- 3.1.2.2. CentOS, AlmaLinux, RockyLinux, Fedora, etc¶
- 3.1.2.3. Compilation¶
- 3.2. Binary packages¶
- 3.2.1. Ubuntu¶
- 3.2.2. Debian¶
- 3.2.3. CentOS, AlmaLinux, RockyLinux, Fedora, etc¶
- 3.2.3.1. Installing From Package Repositories¶
- 3.2.3.2. Additional Notes for RPM Installations¶
- 3.2.4. Arch Based¶
- 3.3. Advanced Installation¶
- Установка и использование Suricata на Linux Ubuntu
- Перехват трафика и режимы работы
- Настройка времени
- Установка
- Из репозитория
- Из исходников
- 1. Подготовка к сборке
- 2. Сборка и установка
- 3. Завершение установки
- Базовая настройка
- 1. Обновление правил
- 2. Настройка рабочего сетевого интерфейса
3. Installation¶
Before Suricata can be used it has to be installed. Suricata can be installed on various distributions using binary packages: Binary packages .
For people familiar with compiling their own software, the Source method is recommended.
Advanced users can check the advanced guides, see Arch Based .
3.1. Source¶
Installing from the source distribution files gives the most control over the Suricata installation.
tar xzvf suricata-6.0.0.tar.gz cd suricata-6.0.0 ./configure make make install
This will install Suricata into /usr/local/bin/ , use the default configuration in /usr/local/etc/suricata/ and will output to /usr/local/var/log/suricata
3.1.1. Common configure options¶
Do not optimize the binary for the hardware it is built on. Add this flag if the binary is meant to be portable or if Suricata is to be used in a VM.
Installs the Suricata binary into /usr/bin/. Default /usr/local/
Installs the Suricata configuration files into /etc/suricata/. Default /usr/local/etc/
Setups Suricata for logging into /var/log/suricata/. Default /usr/local/var/log/suricata
Enables Lua support for detection and output.
Enables GeoIP support for detection.
Enables DPDK packet capture method.
3.1.2. Dependencies¶
For Suricata’s compilation you’ll need the following libraries and their development headers installed:
libjansson, libpcap, libpcre2, libyaml, zlib
The following tools are required:
make gcc (or clang) pkg-config rustc cargo
rustc, cargo Some distros don't provide or provide outdated Rust packages. Rust can also be installed directly from the Rust project itself:: 1) Install Rust https://www.rust-lang.org/en-US/install.html 2) Install cbindgen - if the cbindgen is not found in the repository or the cbindgen version is lower than required, it can be alternatively installed as: cargo install --force cbindgen 3) Make sure the cargo path is within your PATH environment e.g. echo 'export PATH=”$ :~/.cargo/bin”' >> ~/.bashrc e.g. export PATH="$ :/root/.cargo/bin"
3.1.2.1. Ubuntu/Debian¶
# Installed Rust and cargo as indicated above apt-get install build-essential git libjansson-dev libpcap-dev \ libpcre2-dev libtool libyaml-dev make pkg-config zlib1g-dev # On most distros installing cbindgen with package manager should be enough apt-get install cbindgen # alternative: cargo install --force cbindgen
# Installed Rust and cargo as indicated above apt-get install autoconf automake build-essential ccache clang curl git \ gosu jq libbpf-dev libcap-ng0 libcap-ng-dev libelf-dev \ libevent-dev libgeoip-dev libhiredis-dev libjansson-dev \ liblua5.1-dev libmagic-dev libnet1-dev libpcap-dev \ libpcre2-dev libtool libyaml-0-2 libyaml-dev m4 make \ pkg-config python3 python3-dev python3-yaml sudo zlib1g \ zlib1g-dev cargo install --force cbindgen
Extra for iptables/nftables IPS integration:
apt-get install libnetfilter-queue-dev libnetfilter-queue1 \ libnetfilter-log-dev libnetfilter-log1 \ libnfnetlink-dev libnfnetlink0
3.1.2.2. CentOS, AlmaLinux, RockyLinux, Fedora, etc¶
To install all minimal dependencies, it is required to enable extra package repository in most distros. You can enable it possibly by one of the following ways:
dnf -y update dnf -y install dnf-plugins-core # AlmaLinux 8 dnf config-manager --set-enabled powertools # AlmaLinux 9 dnf config-manager --set-enable crb # Oracle Linux 8 dnf config-manager --set-enable ol8_codeready_builder # Oracle Linux 9 dnf config-manager --set-enable ol9_codeready_builder
# Installed Rust and cargo as indicated above dnf install -y gcc gcc-c++ git jansson-devel libpcap-devel libtool \ libyaml-devel make pcre2-devel which zlib-devel cargo install --force cbindgen
# Installed Rust and cargo as indicated above dnf install -y autoconf automake diffutils file-devel gcc gcc-c++ git \ jansson-devel jq libcap-ng-devel libevent-devel \ libmaxminddb-devel libnet-devel libnetfilter_queue-devel \ libnfnetlink-devel libpcap-devel libtool libyaml-devel \ lua-devel lz4-devel make nss-devel pcre2-devel pkgconfig \ python3-devel python3-sphinx python3-yaml sudo which \ zlib-devel cargo install --force cbindgen
3.1.2.3. Compilation¶
Follow these steps from your Suricata directory:
./scripts/bundle.sh ./autogen.sh ./configure # you may want to add additional parameters here # ./configure --help to get all available parameters make -j8 # j is for paralleling, you may de/increase depending on your CPU make install # to install your Suricata compiled binary
3.2. Binary packages¶
3.2.1. Ubuntu¶
For Ubuntu, the OISF maintains a PPA suricata-stable that always contains the latest stable release.
sudo apt-get install software-properties-common sudo add-apt-repository ppa:oisf/suricata-stable sudo apt-get update sudo apt-get install suricata
3.2.2. Debian¶
In Debian 9 (stretch) and later do:
sudo apt-get install suricata
In the «stable» version of Debian, Suricata is usually not available in the latest version. A more recent version is often available from Debian backports, if it can be built there.
To use backports, the backports repository for the current stable distribution needs to be added to the system-wide sources list. For Debian 10 (buster), for instance, run the following as root :
echo "deb http://http.debian.net/debian buster-backports main" > \ /etc/apt/sources.list.d/backports.list apt-get update apt-get install suricata -t buster-backports
3.2.3. CentOS, AlmaLinux, RockyLinux, Fedora, etc¶
RPMs are provided for the latest release of Enterprise Linux. This includes CentOS Linux and rebuilds such as AlmaLinux and RockyLinux. Additionally, RPMs are provided for the latest supported versions of Fedora.
RPMs specifically for CentOS Stream are not provided, however the RPMs for their related version may work fine.
3.2.3.1. Installing From Package Repositories¶
3.2.3.1.1. CentOS, RHEL, AlmaLinux, RockyLinux, etc Version 8+¶
dnf install epel-release dnf-plugins-core dnf copr enable @oisf/suricata-7.0 dnf install suricata
3.2.3.1.2. CentOS 7¶
yum install epel-release yum-plugin-copr yum copr enable @oisf/suricata-7.0 yum install suricata
3.2.3.1.3. Fedora¶
dnf install dnf-plugins-core dnf copr enable @oisf/suricata-7.0 dnf install suricata
3.2.3.2. Additional Notes for RPM Installations¶
- Suricata is pre-configured to run as the suricata user.
- Command line parameters such as providing the interface names can be configured in /etc/sysconfig/suricata .
- Users can run suricata-update without being root provided they are added to the suricata group.
- Directories:
- /etc/suricata : Configuration directory
- /var/log/suricata : Log directory
- /var/lib/suricata : State directory rules, datasets.
3.2.3.2.1. Starting Suricata On-Boot¶
The Suricata RPMs are configured to run from Systemd.
To have Suricata start on-boot:
systemctl enable suricata
systemctl reload suricata
3.2.4. Arch Based¶
The ArchLinux AUR contains Suricata and suricata-nfqueue packages, with commonly used configurations for compilation (may also be edited to your liking). You may use makepkg, yay (sample below), or other AUR helpers to compile and build Suricata packages.
3.3. Advanced Installation¶
Various installation guides for installing from GIT and for other operating systems are maintained at: https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Suricata_Installation
© Copyright 2016-2023, OISF Revision 690b65ae .
Установка и использование Suricata на Linux Ubuntu
Опубликовано: 09.06.2022
Используемые термины: Suricata, Linux, Ubuntu. Данная инструкция протестирована на Linux Ubuntu от 16.04 до 20.04. Установка suricata будет выполнена как из репозиториев, так и исходников.
Перехват трафика и режимы работы
- IDS — обнаружение вторжений.
- IPS — предотвращение вторжений.
- NSM — мониторинг безопасности.
Для организации IPS/IDS/NSM необходимо пропускать сетевой трафик через сервер suricata. Как правило, последний ставится на границе с Интернет. На основе правил и анализа система принимает решение, пропускать трафик или нет. В данном режиме под Linux есть два варианта фильтрации трафика — NFQUEUE и AF_PACKET. Первый работает медленнее, он использует встроенный сетевой фильтр операционной системы. Режим AF_PACKET требует нескольких интерфейсов, а система должна работать в качестве шлюза, при блокировки пакета он не будет передан на второй интерфейс.
При установке suricata из репозитория, работает режим NFQUEUE. Для возможности использования AF_PACKET необходима сборка из исходников.
Для настройки сурикаты в качестве IDS/NSM сервер не обязательно должен находиться на пути сетевого трафика — мы можем зеркалировать пакеты от сетевого оборудования в сторону сурикаты.
В данной инструкции мы рассмотрим пример настройки IDS/NSM.
Настройка времени
Система, крайне, чувствительна ко времени и может начать работать некорректно, если оно не будет настроено правильно.
Для начала настроим часовой пояс:
timedatectl set-timezone Europe/Moscow
* в данном примере мы выставим московское время. Список всех доступных зон можно посмотреть командой timedatectl list-timezones.
Затем установим утилиту для синхронизации времени:
Установка
Установку можно выполнить двумя способами:
- Из репозитория. Быстрый и удобный способ, но мы получим стандартную сборку без экзотических функций.
- Из исходников. Данный метод сложнее, но позволит собрать пакет с дополнительными опциями, например, CUDA для возможности использовать GPU.
Из репозитория
apt-get install software-properties-common
Press [ENTER] to continue or ctrl-c to cancel adding it
. нажимаем Enter.
Разрешаем автозапуск сервиса:
systemctl enable suricata
Из исходников
Рассмотрим пример установки пакета безопасности с поддержкой использования AF_PACKET. Процедуру разобьем на несколько этапов.
1. Подготовка к сборке
Устанавливаем необходимые для сборки пакеты:
apt-get install libpcre3 libpcre3-dbg libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libcap-ng-dev libcap-ng0 make libmagic-dev libjansson-dev libjansson4 pkg-config rustc cargo
Если необходимо использовать Suricata в качестве IPS, также ставим пакеты:
apt-get install libnetfilter-queue-dev libnetfilter-queue1 libnfnetlink-dev libnfnetlink0
Переходим по ссылке https://openinfosecfoundation.org/download/ и копируем ссылку на последнюю (или нужную) версию пакета:
Используя скопированную ссылку, скачиваем архив на сервер:
Переходим в каталог с распакованным архивом:
2. Сборка и установка
По умолчанию, suricata собирается как IDS. Рассмотрим оба варианта для конфигурирования.
а) если собираем для режима IDS:
./configure —prefix=/usr —sysconfdir=/etc —localstatedir=/var
б) если собираем для режима IPS:
./configure —enable-af-packet —prefix=/usr —sysconfdir=/etc —localstatedir=/var
* для возможности работы в режиме IPS необходимо включить опции —enable-af-packet или —enable-nfqueue.
После конфигурирования собираем пакет:
После установим конфигурационный файлы:
Для установки и обновления suricata ставим пакеты:
pip install —upgrade suricata-update
3. Завершение установки
Для полного завершения установки, создадим конфиг по умолчанию и сервис для автозапуска.
RUN=yes
RUN_AS_USER=
SURCONF=/etc/suricata/suricata.yaml
LISTENMODE=af-packet
IFACE=eth0
NFQUEUE=»-q 0″
CUSTOM_NFQUEUE=»-q 0 -q 1 -q 2 -q 3″
PIDFILE=/var/run/suricata.pidЗагружаем скрипт автозапуска командой:
wget https://www.dmosk.ru/files/suricata -P /etc/init.d
Перечитываем конфигурацию systemd:
Разрешаем автозапуск suricata и стартуем ее сервис:
systemctl enable suricata
Базовая настройка
Для запуска нашего приложения осталось выполнить несколько настроек.
1. Обновление правил
Система выполнит загрузку правил и сравнит их с текущими. При необходимости, обновит файлы.
Также необходимо обновить индекс источника правил:
2. Настройка рабочего сетевого интерфейса
После установки, в настройках suricata прописан интерфейс eth0, на котором должен принимать запросы сервер. Однако, рабочий интерфейс может быть другой — посмотреть его можно командой:
Например, в моем случае это ens32:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32 : mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:50:56:81:07:a0 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.15/24 brd 192.168.0.255 scope global ens32
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:fe81:7a0/64 scope link
valid_lft forever preferred_lft foreverИ так, меняем по очереди интерфейс в двух файлах.
Сначала в настройках по умолчанию: