Установка и настройка системы обнаружения вторжений Suricata на шлюзе
- Необходимость обнаружения сетевых аномалий, эксплойтов, активности ботнетов и сканирований портов в реальном времени.
- Высокий процент ложных срабатываний (False Positives) при базовой конфигурации сигнатур.
- Высокая утилизация CPU и задержки пакетов при анализе высокоскоростного транзитного трафика (10 Gbps+).
- Пропуск атак из-за некорректно настроенного режима сброса контрольных сумм сетевой карты (Hardware Offloading).
1. Установка Suricata
# Ubuntu / Debian
add-apt-repository ppa:oisf/suricata-stable -y
apt-get update && apt-get install -y suricata jq
# RHEL / Rocky Linux
dnf install -y epel-release
dnf install -y suricata jq2. Отключение аппаратных Offload-функций сетевой карты
Аппаратные оффлоады искажают размер и контрольные суммы пакетов перед их попаданием в движок IDS:
ethtool -K eth0 rx off tx off
ethtool -K eth0 gro off gso off tso off3. Конфигурация /etc/suricata/suricata.yaml
vars:
address-groups:
HOME_NET: "[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]"
EXTERNAL_NET: "!$HOME_NET"
default-rule-path: /var/lib/suricata/rules
rule-files:
- suricata.rules
# Захват трафика в высокопроизводительном многопоточном режиме AF_PACKET
af-packet:
- interface: eth0
threads: auto
cluster-id: 99
cluster-type: cluster_flow
defrag: yes
use-mmap: yes
tpacket-v3: yes4. Обновление сигнатур угроз Emerging Threats (ET Open)
suricata-update
suricata-update list-sources
suricata-update enable-source et/open
suricata-update5. Запуск службы и мониторинг событий EVE-JSON
systemctl enable --now suricata
# Мониторинг алертов в реальном времени
tail -f /var/log/suricata/eve.json | jq 'select(.event_type=="alert") | {src_ip: .src_ip, dest_ip: .dest_ip, alert: .alert.signature}' Частые вопросы (FAQ)
В чем разница между режимами IDS и IPS?
IDS (Intrusion Detection System) работает пассивно через SPAN/TAP зеркало портов и только оповещает об угрозах. IPS (Intrusion Prevention System) работает 'в разрыв' (inline через NFQUEUE или AF_PACKET IPS) и активно блокирует вредоносные пакеты (drop).
Почему Suricata выдает предупреждения 'SURICATA STREAM bad-checksum'?
Причина в включенном RX Checksum Offload на сетевом адаптере. Сетевая карта не считает контрольную сумму до передачи в ядро, поэтому Suricata считает ее невалидной. Отключите оффлоад через ethtool -K <iface> rx off.
Как перевести сигнатуру из режима оповещения (alert) в режим блокировки (drop)?
Создайте файл /etc/suricata/drop.conf с шаблонами SID или классификаций и укажите его в suricata-update: suricata-update --drop-conf /etc/suricata/drop.conf.
Какой движок производительнее на многоядерных серверах: Snort 3 или Suricata?
Suricata изначально разрабатывалась с нативной многопоточной архитектурой и поддержкой масштабирования очередей потоков (Flow-based threading) через AF_PACKET/DPDK, опережая по масштабируемости однопоточные инстансы.