Короткий ответ
IDS без свежих сигнатур — музей. Обновите ruleset штатным suricata-update (или документированным механизмом Snort) с подписанного источника. Проверьте дату файлов, не кладите *.rules из чатов. После обновления — suricata -T, короткий просмотр шума, в IPS mode сначала detect. nftables и RouterOS не обновляют IDS сами: это отдельная процедура. Firewall не выключать.
Не вставляйте в статью и в прод конкретные CVE «которые сейчас модно» — смотрите vendor bulletin своего ruleset.
Симптомы и как отличить
ls -l /var/lib/suricata/rules/ | head
sudo grep -i last /var/log/suricata/suricata-update.log | tailФайлы старше политики (например >7 дней при ежедневном update). suricata-update в cron падает. В SIEM нет алертов, которые коллеги видят на свежем стенде.
Отличие от шума: там слишком много событий. Здесь слишком мало или «дыры известны миру, вам нет». Отличие от мёртвого сенсора: process active, но rules old.
Возможные причины
- Cron
suricata-updateне установлен / не root на каталог. - Источник выключен, ET/OISF URL 403 без регистрации.
- Протухла подпись, не обновлён ключ — update отказался (это хорошо, не обходите
--no-check-certificateвслепую). - Нет исходящего 443 с сенсора — egress без allow к update.
- IPS боятся обновлять после прошлого ложного drop.
- На edge MikroTik ждут «автоматических сигнатур» — их нет.
Диагностика
sudo systemctl is-active suricata
sudo suricata-update --version
sudo suricata-update list-enabled-sources
sudo suricata-update list-sources | head
ls -l --time-style=long-iso /var/lib/suricata/rules/*.rules | head
sudo suricata -T -c /etc/suricata/suricata.yamlСмотрите лог update:
sudo tail -n 80 /var/log/suricata/suricata-update.logОшибки TLS, 404, GPG — читайте буквально. Не --nocheck.
Проверьте, что сенсор ходит на HTTPS источника: с самого хоста curl -I документированного URL из list-sources, не на случайный IP.
Egress: если default deny с 10.0.99.0/24/DMZ сенсора — нужен allow 443 к vendor. Не any.
Концепция пакета на pfSense/OPNsense: дата Last rule update в GUI, подпись/хеш если GUI показывает. Не придумывайте CLI opnsense-update-ids.
RouterOS: не ruleset IDS. Обновление RouterOS ≠ Suricata.
Решение
Сценарий A. Штатный update Ubuntu
Backup текущих rules:
sudo tar -C /var/lib/suricata -czf /root/suricata-rules-$(date +%F).tgz rules
sudo cp -a /etc/suricata /root/etc-suricata-$(date +%F)
sudo suricata-update
sudo suricata -T -c /etc/suricata/suricata.yaml
sudo systemctl restart suricataЕсли unit reload умеет — reload. Проверьте eve.json на всплеск шума.
Сценарий B. Источник не включён
sudo suricata-update list-sources
# enable только те, что организация выбрала (ET Open / подписка)
# sudo suricata-update enable-source <имя_из_list-sources>
sudo suricata-updateИмена берите из вывода на этой машине, не из памяти статьи. Не включайте всё подряд: получите шум и CPU.
Сценарий C. Подпись / TLS не сходятся
Не отключайте проверку. Обновите пакет suricata-update/ca-certificates:
sudo apt-get update
sudo apt-get install --only-upgrade ca-certificates suricata suricata-updateЕсли vendor сменил ключ — инструкция с сайта проекта, не gist. После фикса ключа повторите update.
Сценарий D. IPS режим
Обновляйте сначала на копии в detect или в нерабочее окно. Смотрите IPS ложные. Имейте bak rules tgz для отката:
sudo tar -C /var/lib/suricata -xzf /root/suricata-rules-ДАТА.tgz
sudo systemctl restart suricataFilter nft в это время не трогайте.
Сценарий E. Сенсор без интернета
Выгружайте ruleset на mgmt-хосте с проверкой подписи, копируйте scp в 10.0.99.0/24. Не USB с «папкой с торрента».
Таймер systemd:
systemctl list-timers | grep -i suricataЕсли пусто — добавьте vendor unit или cron раз в сутки, лог в syslog.
Контроль свежести без слепого auto-promote в IPS
Заведите два каталога или два режима: nightly suricata-update на сенсоре detect, promote в inline только после окна. Метрики в заявке: mtime *.rules, exit code update, число SID до/после (grep -c '^alert' /var/lib/suricata/rules/*.rules как грубая оценка — не догма), всплеск eve drop за час.
Если update пишет, что source disabled — не «докачивайте zip». Включите source из list-sources той версии, что стоит. Подпись: при ошибке GPG сначала ca-certificates и пакет, потом документация OISF/ET, не gist.
Egress с сенсора в 10.0.99.0/24 к HTTPS vendor должен быть в матрице исходящих. Иначе «устарели сигнатуры» — на самом деле default deny, а не лень. RouterOS 7 не лечит этот класс: не ищите там ET ruleset и не подменяйте обновление RouterOS обновлением IDS.
Как проверить, что проблема устранена
- Дата файлов rules сегодняшняя/в пределах SLA.
suricata -Tуспех.suricata-updateexit 0, в логе проверка подписи без bypass.- Нет всплеска drop IPS на бизнес-потоках (15–60 мин наблюдение).
- Firewall counters как вчера.
- Контроль: свой скан своего
203.0.113.10даёт ожидаемые scan-alert (не доказательство новизны всех SID, но сенсор жив).
На стенде сравните suricata --build-info с требованиями свежего ruleset (версия engine в release notes пакета Ubuntu). Не смешивайте ruleset от Suricata 7 с бинарём 6 «на удачу». После удачного -T подождите появления новых файлов в stats.log: uptime растёт, capture не 0. Если capture 0 — вы обновили правила, но сенсор не видит трафик (неверный iface в yaml), это не успех update.
Если не помогло
- Диск read-only / inode — update «ок», файлы старые.
- Два каталога rules, yaml указывает не туда.
- SELinux/AppArmor на запись — смотрите журнал, не disable MAC навсегда.
- Кластер сенсоров, обновили один.
- Ждали, что MikroTik начнёт ловить exploit — нужен отдельный сенсор.
Профилактика
- Timer daily + алерт если mtime rules > 48 ч.
- Только подписанные sources, список в SCM.
- Стенд detect перед IPS.
- Ретеншн eve, чтобы сравнить до/после.
- Запрет ручных rules без code review.
FAQ
ET Open достаточно?
Для многих SMB — да как база. Подписка — решение организации. Главное — регулярность и подпись, не «секретные SID с форума».
Обновлять Suricata engine вместе с rules?
По compat: новая ruleset может требовать версию engine. Читайте release notes пакета Ubuntu, не мешайте major вслепую.
Можно ли git clone правил?
Только если это официальный репозиторий и вы проверяете коммиты/подписи как в их доке. Случайный fork — нет.
Ruleset жрёт CPU после update
Вернитесь к tgz, отключите тяжёлые категории, затем выборочно. Не stop nft.
Нужны ли сигнатуры на RouterOS?
Нет замены. Держите filter + отдельный IDS.