Установка и настройка Suricata 8 на Ubuntu: IDS/IPS для защиты сети
Suricata — современный движок сетевой безопасности, который умеет работать в режимах IDS (обнаружение вторжений), IPS (предотвращение) и NSM (мониторинг безопасности). Он использует правила в стиле Snort и обрабатывает трафик в многопоточном режиме — это быстрый и бесплатный вариант для защиты периметра. Разберём установку из репозитория и из исходников, настройку правил и рабочего интерфейса.
Режимы работы и принципы перехвата
Чтобы понять, какая установка нужна, важно различать режимы:
- IDS — следит за трафиком и только обнаруживает атаки, не блокируя их.
- IPS — активно блокирует вредоносный трафик.
- NSM — полноценный мониторинг безопасности с записью и анализом.
Для полноценной работы Suricata должна стоять на пути трафика — как правило, на границе с интернетом (шлюз). Под Linux есть два способа перехвата:
- NFQUEUE — работает через сетевой фильтр ядра (iptables/nftables). Проще в установке, но медленнее.
- AF_PACKET — пакетный режим, требует прямой доступ к сетевым интерфейсам. Быстрее, но система должна быть шлюзом.
Из репозитория Ubuntu Suricata по умолчанию работает через NFQUEUE. Для AF_PACKET обычно нужна сборка из исходников, хотя в современных версиях (7.x/8.x) AF_PACKET включён в пакет из репозитория.
Для IDS/NSM системы не обязательно ставить на путь трафика — можно зеркалировать пакеты через SPAN-порт коммутатора.
Настройка времени
Suricata чувствительна к точному времени: корреляция событий и timestamps строятся на нём.
timedatectl set-timezone Europe/Moscow
# список зон: timedatectl list-timezones
apt-get install chrony
systemctl enable chrony
Установка из репозитория
Рекомендуемый способ на Ubuntu 24.04/26.04:
apt-get install software-properties-common
add-apt-repository ppa:oisf/suricata-stable
При запросе нажимаем Enter, затем:
apt-get update
apt-get install suricata
systemctl enable suricata
На момент написания статьи актуальная стабильная версия — Suricata 8.0.6 (июль 2026). Из репозитория Ubuntu 24.04 ставится версия 7.x из официального дистрибутива — она также поддерживается, но для новых функций лучше PPA-канал.
Сборка из исходников
Нужен вариант с расширенными опциями: CUDA (использование GPU для ускорения), специфические режимы перехвата или кастомные патчи.
1. Подготовка к сборке
apt-get install libpcre3 libpcre3-dev build-essential autoconf automake libtool
libpcap-dev libnet1-dev libyaml-dev zlib1g-dev libcap-ng-dev make
libmagic-dev libjansson-dev pkg-config rustc cargo
Для режима IPS также:
apt-get install libnetfilter-queue-dev libnetfilter-queue1 libnfnetlink-dev libnfnetlink0
Скачиваем исходники последней версии с openinfosecfoundation.org/download/:
wget https://openinfosecfoundation.org/download/suricata-8.0.6.tar.gz
tar zxvf suricata-8.0.6.tar.gz
cd suricata-8.0.6
2. Конфигурирование и установка
Для 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.
make
make install
make install-conf
Утилиты для обновления правил:
apt-get install python3-pip
pip3 install --upgrade suricata-update
Настройка после установки
1. Файл окружения
vi /etc/default/suricata:
RUN=yes
RUN_AS_USER=suricata
SURCONF=/etc/suricata/suricata.yaml
LISTENMODE=af-packet
IFACE=enp0s3
NFQUEUE="-q 0"
CUSTOM_NFQUEUE="-q 0 -q 1 -q 2 -q 3"
PIDFILE=/var/run/suricata.pid
2. Обновление и выбор правил
# обновить индекс источников
suricata-update update-sources
# загрузить/обновить сами правила
suricata-update
По умолчанию подтягивается набор Emerging Threats (Open). Дополнительные наборы правил подключаются через enable-source.
3. Сетевой интерфейс
Узнаём имя интерфейса:
ip a
Прописываем его в двух местах. В vi /etc/default/suricata:
IFACE=enp0s3
В vi /etc/suricata/suricata.yaml укажите интерфейс в секциях перехвата:
af-packet:
- interface: enp0s3
pcap:
- interface: enp0s3
4. Запуск
systemctl daemon-reload
systemctl restart suricata
Проверка статуса и журнала:
systemctl status suricata
journalctl -u suricata -f
Проверка работы
Посмотреть обработку трафика:
suricata -T -c /etc/suricata/suricata.yaml # тест конфигурации
suricata-update check # проверка актуальности правил
Cтатистика по событиям пишется в каталог логов (/var/log/suricata/): файлы fast.log, eve.json (структурированный JSON, удобен для Grafana/Loki из наших статей).
Тонкости, подводные камни
- Suricata 8 и старые правила — наборы правил Emerging/ET Open требуют актуального движка; при переезде с 7.x на 8.0 обновите
suricata-update. - Устройство в NFQUEUE — если IPS работает медленно, переходите на AF_PACKET: он даёт существенный прирост скорости на больших интерфейсных скоростях.
- Два интерфейса для шлюза — в AF_PACKET перехват идёт на интерфейсах, а не через маршрутизацию. Для домашнего шлюза удобнее режим NFQUEUE.
- Безопасность времени — регулярная сверка часов обязательна; снос времени ломает корреляцию событий.
- Правила не обновляются сами — добавьте
suricata-updateв cron или systemd-timer, иначе набор правил устаревает.
Автозапуск обновления правил (cron)
crontab -e
# раз в сутки
0 4 * * * suricata-update && systemctl reload suricata
Шпаргалка
add-apt-repository ppa:oisf/suricata-stable
apt-get update && apt-get install suricata
suricata-update update-sources
suricata-update
vi /etc/suricata/suricata.yaml # af-packet -> interface
systemctl restart suricata
# статус: systemctl status suricata
Проверено на: Ubuntu 22.04/24.04/26.04 + Suricata 8.0.6.
Дата: Сентябрь 2026.