Короткий ответ
Если после включения inline IPS (Suricata nfqueue / TAP inline / пакет на периметре в IPS mode) отвалился легитимный сервис, найдите SID в eve.json с action drop/reject на этот 5-tuple. Переведите это правило в detect (alert) или exception на src/dst. Не systemctl stop suricata навсегда, не iptables -D ... NFQUEUE с оставлением дыры, не nft flush. Firewall filter должен продолжать drop по матрице.
Сначала докажите, что виноват IPS, а не обычный filter.
WAN 203.0.113.10, LAN 10.0.10.0/24, DMZ 10.0.30.0/24.
Симптомы и как отличить
Включили IPS — 1С/обмен/TLS-инспекция/крупный upload умер. Выключили Suricata — ожило. В eve: alert.action drop, тот же timestamp. Counters nftables на allow растут (пакет до IPS дошёл).
| Проверка | IPS | Filter |
|---|---|---|
| stop только suricata, nft active, сервис ожил | да | нет |
| nft drop counter растёт | нет | да |
| eve drop SID | да | нет |
| GeoIP/limit | другие статьи | — |
MikroTik не делает Suricata IPS на коробке. Если «IPS» = layer7/raw drop — смотрите filter, не eve. Не выдумывайте пакеты RouterOS.
Возможные причины
- Сигнатура на «подозрительный» User-Agent/сканер ловит ваше ПО.
- HOME_NET неверный, внутренний обмен = exploit kit.
- MTU/stream reassembly, ложный match на бинарный протокол.
- Ruleset только что обновился — устаревшие/новые.
- IPS на LAN-интерфейсе, а не на WAN, режет SMB.
- Rate-limit рядом, путают с IPS.
Диагностика
- Зафиксируйте 5-tuple и время.
- На сенсоре:
sudo jq 'select(.event_type=="alert" and .alert.action!=null)' /var/log/suricata/eve.json | tail
# уточните фильтр по src_ip клиента
sudo grep -F '10.0.10.50' /var/log/suricata/eve.json | tailВыпишите signature_id, signature, src_ip, dest_ip, alert.action.
- Режим:
sudo grep -nE 'nfqueue|af-packet|ips' /etc/suricata/suricata.yaml
sudo nft list ruleset | grep -i queueЕсть queue в nft — inline. Нет queue, только SPAN — это IDS, drop в eve не должен резать (тогда виноват не IPS).
-
Параллельно counters filter — чтобы не лечить не то.
-
Концептуальный GUI периметра: alert с blocked=yes, правило SID, интерфейс WAN. Скрин в заявку. Не выключайте весь «IPS package».
Не воспроизводите эксплойт. Не ищите CVE. Достаточно SID и потока.
Решение
Сценарий A. Точечный exception (предпочтительно)
Если поток легитимный (свой app 10.0.10.20 → API):
- suppress/pass lists по документации Suricata для данного SID и IP.
- либо
insert passперед drop в local.rules — только если понимаете синтаксис вашей версии.
Проверка -T, reload. Заявка: SID, IP, срок пересмотра 30 дней.
Сценарий B. Перевести правило в detect
В disable.conf / convert drop→alert для одного SID через механизм suricata-update (modify.conf: drop→alert для sid).
sudo cp -a /etc/suricata /root/suricata.bak.$(date +%F)
# modify.conf: пример директивы convert — сверьте man suricata-update вашей версии
sudo suricata-update
sudo suricata -T -c /etc/suricata/suricata.yaml
sudo systemctl restart suricataТрафик больше не режется этим SID, алерт остаётся — потом решите, нужен ли exception или сигнатура мусор.
Сценарий C. IPS только на WAN
Не гоняйте nfqueue на интерфейсе LAN с SMB/AD. WAN ens18 к 203.0.113.10 — типичное место. Внутренний обмен не должен попадать в exploit-классы.
nft: queue только iifname wan / oifname wan для new+established по политике, не iif lo.
Сценарий D. Аварийно сервис лежит
Краткий rollback:
# вернуть nft без queue из bak, filter drop/allow сохранить
sudo nft -f /root/nftables.conf.bak.pre-ips
sudo systemctl start nftablesSuricata можно оставить в IDS (af-packet) без queue. Не systemctl stop nftables.
Сценарий E. Ложное на TLS/VPN
Не отключайте IPS на 443 целиком. Exception на IP VPN-концентратора / конкретный SID «encrypted suspicious». Параллельно проверьте rate limit.
Как не перепутать stall NFQUEUE и drop SID
Если пакеты «висят» (timeout везде, eve пустой), это очередь без потребителя, не сигнатура. Проверьте systemctl is-active suricata и nft list ruleset | grep -i queue. Мёртвый suricata + queue без bypass = сетевой простой. Аварийный nft из bak без queue, filter drop/allow как в матрице. Потом поднимите Suricata в af-packet (detect) и разберите SID уже без nfqueue.
Если eve показывает drop SID на TLS к 10.0.30.10:443 с LAN 10.0.10.50, скопируйте полный JSON алерта в тикет: signature, flow_id, payload не нужен. Exception пишите на этот dst/port/SID, не на весь VLAN. Через неделю exception без обоснования — на пересмотр: либо приложение изменили, либо сигнатура полезна и ловит реально плохое.
MikroTik рядом: не FastTrack'айте тот же поток, который Linux IPS должен видеть — иначе картина «IPS молчит, сайт мёртв» будет из-за другого ящика.
Как проверить, что проблема устранена
- Бизнес-поток проходит при работающем Suricata.
- В eve этот SID либо alert без drop, либо не срабатывает на 5-tuple.
- Чужой шум на WAN (свой контролируемый скан своего IP) всё ещё детектится другими SID.
nft listpolicy drop на input/forward на месте.- Пользователи 1С/сайт подтверждают.
Повторите тот же клиент 10.0.10.50, тот же URL/порт.
Если не помогло
- Другой SID сразу подхватил тот же поток — смотрите новый топ.
- Filter/GeoIP.
- MTU, не IPS.
- Кластер: правили один узел.
- Приложение реально вредоносное — тогда exception нельзя, чините app.
Профилактика
- IPS сначала в detect недели, потом drop на проверенных классах.
- Lab-replay своего трафика перед promote ruleset.
- Каждое convert/exception — тикет и expiry.
- Мониторинг: drop-alerts vs тикеты «не открывается».
- Не включать «все policy drop» с первого дня.
FAQ
Выключить IPS навсегда проще?
Проще и слепее. Оставьте detect. Filter всё равно нужен.
Можно ли whitelist весь 10.0.10.0/24 в IPS?
Тогда IPS не видит заражённый ПК, идущий в WAN. Whitelist узкий 5-tuple.
nfqueue и FastTrack MikroTik
Разные коробки. Не FastTrack'айте то, что должно идти в IPS на Linux. На MikroTik IPS в этом стеке нет — не ищите.
SID из блога про CVE
Игнор. Только ваш eve. CVE не выдумываем и не копируем «на всякий».
GUI «false positive» кнопка
Допустима, если пишет тот же suppress. Проверьте, что не disable entire ET DROP.