IDS и IPS: Snort, Suricata

Урок объясняет, как системы обнаружения и предотвращения вторжений видят атаку в трафике, чем IDS отличается от IPS и как писать и тюнинговать правила, чтобы они работали в реальной сети.

IDS (Intrusion Detection System) наблюдает за трафиком и сообщает о подозрительной активности; IPS (Intrusion Prevention System) стоит «в разрыв» и может заблокировать такой трафик в реальном времени.

Файрвол решает, кому разрешён доступ, но не разбирается, что именно происходит внутри разрешённых соединений. Эту задачу берут на себя IDS/IPS — глаза и (в случае IPS) руки Blue Team на уровне сетевого содержимого. Snort и Suricata — два самых известных открытых движка; понимание их логики даёт фундамент для любой системы детектирования.

Зачем это знать защитнику

IDS/IPS — основной источник сетевых алертов в SOC (центре мониторинга безопасности). Если вы не понимаете, как устроены сигнатуры и почему возникают ложные срабатывания, вы получите либо «тихую» систему, которая пропускает атаки, либо «кричащую», которой никто не верит. Хороший инженер обнаружения умеет читать правило, понимать, на что оно реагирует, и осознанно его настраивать.

Два подхода к обнаружению

Сигнатурное (signature-based)

Движок сравнивает трафик с базой сигнатур — описаний известных атак (характерные байты, строки в payload, последовательности). Это как антивирус: точно ловит известное, почти не даёт ложных срабатываний на хорошо написанных правилах, но слеп к новому (zero-day) и к небольшим вариациям, если сигнатура слишком жёсткая. Snort и Suricata в первую очередь сигнатурные.

Поведенческое / аномалийное (anomaly-based)

Система строит профиль нормального поведения (baseline) и поднимает тревогу на отклонениях: внезапный всплеск трафика на нетипичный порт, хост, который вдруг начал сканировать сеть, аномальный объём DNS-запросов. Такой подход способен заметить неизвестную атаку, но платит ложными срабатываниями: «необычное» не всегда «вредоносное». Часто оба подхода комбинируют.

КритерийСигнатурноеПоведенческое
Ловит известные атакиОтличноСредне
Ловит zero-dayНетДа, потенциально
Ложные срабатыванияМало (при хороших правилах)Больше
Требует baselineНетДа

Как читается правило Snort/Suricata

Правило имеет понятную грамматику: действие, протокол, источник/назначение и блок опций в скобках. Разберём учебный пример (детектирование строки в HTTP-трафике лабораторного стенда):

alert tcp any any -> $HOME_NET 80 ( \
    msg:"LAB Suspicious user-agent observed"; \
    flow:to_server,established; \
    content:"User-Agent|3a| BadScanner"; http_header; \
    classtype:web-application-activity; \
    sid:1000001; rev:1; )

Читается так: alert — действие (только уведомить); tcp any any -> $HOME_NET 80 — любой источник к нашей сети на порт 80; flow:to_server,established — только установленные соединения к серверу; content:"..." — что искать в payload (|3a| — шестнадцатеричный код двоеточия); sid — уникальный идентификатор правила. Это иллюстрация синтаксиса, а не боевая сигнатура.

Действия задают режим работы: alert — уведомить (IDS-поведение), drop — отбросить пакет (IPS), reject — отбросить и разорвать соединение.

IDS против IPS: где стоит и что делает

IDS обычно подключают пассивно: трафик зеркалируется на неё через SPAN-порт или TAP, она анализирует копию и шлёт алерты. Она не в состоянии остановить атаку, но и не может ничего сломать — нулевой риск для доступности.

IPS стоит инлайн (in-line), весь трафик физически идёт через неё, поэтому она может блокировать пакет в реальном времени. Цена — риск: если IPS заблокирует легитимный трафик (ложное срабатывание в режиме блокировки), пострадает работа бизнеса; а ещё она становится точкой отказа и узким местом по производительности. Поэтому новые правила сначала запускают в режиме alert и только после проверки переводят в drop.

Как это работает под капотом

Движок реассемблирует TCP-потоки и нормализует протоколы (например, раскодирует URL-encoding в HTTP), чтобы атакующий не спрятался за разным представлением одних и тех же данных — это называется защитой от evasion. Затем нормализованные данные прогоняются через скомпилированный набор правил с помощью быстрого многошаблонного поиска (Aho-Corasick и подобные алгоритмы). Suricata вдобавок многопоточна и умеет извлекать файлы и метаданные (JA3-отпечатки TLS, логи HTTP/DNS), что делает её одновременно IDS и сетевым сенсором для SIEM.

Как защититься (правильно эксплуатировать IDS/IPS)

  • Начинайте в режиме обнаружения. Любое новое правило — сперва alert; смотрите неделю, какие срабатывания реальны, и лишь потом включайте блокировку.
  • Тюнингуйте против ложных срабатываний. Отключайте или сужайте правила, которые шумят на вашем легитимном трафике (suppress, пороги threshold, списки исключений). Цель — высокое отношение сигнал/шум.
  • Поддерживайте сигнатуры свежими. Подписки на наборы правил (например, ET Open для Suricata) обновляются часто — устаревшая база слепа к новым угрозам.
  • Покрывайте внутренний трафик, не только периметр: латеральное перемещение атакующего видно именно внутри сети.
  • Соединяйте с SIEM. Один алерт малоинформативен; ценность — в корреляции событий.

Юридическое напоминание: разворачивать и тестировать IDS/IPS, а также прогонять атакующие пейлоады для проверки правил можно только в своей сети или в разрешённой лаборатории. Несанкционированное вмешательство в чужие системы наказуемо (УК РФ ст. 272–274).

Итоги

  • IDS обнаруживает и уведомляет (пассивно, без риска); IPS стоит инлайн и может блокировать (мощнее, но рискованнее).
  • Сигнатурное обнаружение точно ловит известное, поведенческое способно заметить новое ценой ложных срабатываний.
  • Правило Snort/Suricata = действие + протокол + поток + опции (content, flow, sid).
  • Новые правила запускают в alert и только после проверки переводят в drop.
  • Тюнинг, свежие сигнатуры, покрытие внутреннего трафика и интеграция с SIEM — обязательны.
Проверьте себя
1. В чём ключевое различие между IDS и IPS?
AIDS работает только с UDP, а IPS только с TCP
BIDS обнаруживает и уведомляет (пассивно), а IPS стоит инлайн и может заблокировать трафик
CIDS шифрует трафик, а IPS его расшифровывает
DМежду ними нет разницы, это синонимы
2. Чем сигнатурное обнаружение отличается от поведенческого (аномалийного)?
AСигнатурное ловит известные атаки по базе шаблонов, поведенческое ищет отклонения от профиля нормального трафика
BСигнатурное работает только в IPS, поведенческое только в IDS
CПоведенческое не даёт ложных срабатываний вообще
DСигнатурное способно ловить только zero-day атаки
3. Почему новое правило IPS сначала запускают в режиме alert, а не сразу drop?
AРежим alert работает быстрее
BЧтобы проверить, не блокирует ли правило легитимный трафик, прежде чем включать блокировку
CПотому что drop запрещён законом
DAlert автоматически удаляет вредоносные файлы