Часть I содержит: общие сведения о suricata; требования к железу; описание режимов работы; описание, характеристики и возможности nDPI; описание движков.

Часть II содержит: установка suricata из исходных кодов.

Часть III содержит: подготовка к запуску и запуск suricata.

Часть IV содержит: примеры просмотра данных eve.json в консоли; просмотр лога, алертов и дропов через web-интерфес; простой пример использования suricata - блокировка торрентов; контроль работоспособности и используемых ресурсов.

Часть V содержит: подготовка к использованию.

В части VI будет рассмотрено:

13. Обзор бесплатных источников правил.

13.1 Обзор правил источника et/open.

13.2 Диапазоны номеров правил.

14. Использование правил.

14.1 Использование правил источника 'abuse.ch/urlhaus'.

14.2 Использование остальных необходимых правил.

15. Пример конфиг-файла suricata.yaml.

13. Обзор бесплатных источников правил.

Посмотреть какие существуют источники бесплатных правил можно выполнив команду:

sudo -u suricata suricata-update list-sources --free

Для того, чтобы вы примерно понимали насколько серьезную защиту предоставляет тот или иной источник правил, в скобках указано количество содержащихся в данном источнике правил.

et/open (более 63 тыс. правил) Разбит на 48 логических групп. Содержит правила для выявления самых разнообразных ситуаций. Является одним из основных источников бесплатных правил. Обновляется регулярно. Обязателен к использованию. Обозначается: «ET» в начале поля «msg». Сайт: https://rules.emergingthreats.net

oisf/trafficid(35 правил)  Создан в 2017г и с тех пор не обновлялся. Представляет попытку группировать трафик на основе данных буфера tls_sni. В настоящее время выглядит убого и к применению не рекомендуется. Обозначается: «SURICATA TRAFFIC‑ID:» в начале поля «msg». Подробнее: https://github.com/OISF/suricata‑trafficid

abuse.ch/sslbl-blacklist(более 9,7 тыс. правил) Это правила обнаружения вредоносных SSL‑соединений по черному списку SSL‑сертификатов, используемых серверами управления и контроля ботнетов. Обновляется регулярно. Обязателен к использованию. Обозначается: «SSLBL: Malicious SSL certificate detected». Подробнее: https://sslbl.abuse.ch

abuse.ch/sslbl-ja3 (97 правил) Это правила обнаружения вредоносных соединений по черному списку JA3 fingerprint. Последнее обновление: 03.08.2021. 43 хэша дублируются правилами et/open группы «JA3». Если хотите использовать данные правила, то выберите только те, которые не продублированы. Обозначается: «SSLBL: Malicious JA3 SSL‑Client Fingerprint detected». Подробнее: https://sslbl.abuse.ch

abuse.ch/feodotracker (5 правил) Содержит IP адреса источников «знаменитых» троянов. Самые свежие правила — от 2024г. Правила дублируются исочником et/open группы «CNC». Использовать не рекомендуется. Обозначается «Feodo Tracker:». Подробнее: https://feodotracker.abuse.ch

abuse.ch/urlhaus (более 38,4 тыс. правил) Список включает только те URL‑адреса вредоносного ПО, которые либо активны на данный момент, либо были добавлены в URLhaus за последние 10 дней. В базе более 3,7 млн. вредоносных URL‑адресов. Набор правил генерируется каждые 5 минут. Обязателен к использованию. Обозначается: «URLhaus Known malware download URL detected». Подробнее: https://urlhaus.abuse.ch/

etnetera/aggressive (14 правил) Это IP адреса, которые были замечены в агрессивном поведении: сканировании портов, попытках подбора паролей или активном распространении вредоносного ПО в последние часы или дни. Это очень динамичный список. IP‑адрес попадает туда быстро и так же быстро удаляется, если агрессия прекратилась. Обозначается: «ETN AGGRESSIVE IPs Group». Подробнее: https://security.etnetera.cz

tgreen/hunting (286 правил) Набор правил для поиска аномалий. На момент написания статьи не обновлялся 2 месяца. Правила не ориентированы на повышение производительности и могут демонстрировать низкую эффективность в сетях с высокой пропускной способностью. Обозначается: «TGI HUNT». Подробнее: https://github.com/travisbgreen/hunting‑rules

stamus/lateral (546 правил) Правила предназначены для обнаружения горизонтального перемещения в средах Microsoft Windows. Горизонтальное перемещение — этап кибератаки, когда хакер, уже взломав один компьютер в офисе, пытается пробраться на другие (серверы, рабочие станции админов), чтобы найти ценные данные или получить полный контроль над доменом. Не отдается для российских пользователей. Поскольку в нашей конфигурации трафик локальной сети не анализируется, то и список не нужен. Обозначается: «Stamus Networks». Подробнее: https://www.stamus‑networks.com/lateral‑movement‑ruleset‑for‑suricata

pawpatrules Набор правил позволяет обнаруживать множество событий в сети: подозрительные потоки, вредоносные инструменты, неподдерживаемые и уязвимые системы, известные субъекты угроз с различными индикаторами компрометации, горизонтальное перемещение, недобросовестная практика, теневые ИТ. Большая часть файлов была создана более 2 лет назад и не обновлялась. Самый свежий файл изменен 1,5 мес. назад. Не отдаются для российских пользователей. У меня данный набор вызвал очень много ложных срабатываний. Обозначается: «?». Подробнее: https://pawpatrules.fr

ptrules/open (402 правила) Правила предназначены для обнаружения самых разнообразных сетевых угроз. Последнее обновление — 2,5 мес назад. Обозначается: «[PTsecurity]». Подробнее: https://rules.ptsecurity.com

aleksibovellan/nmap (10 правил) Правила определяют сканирование NMAP. Последнее обновление — 2 года назад. Обозначается: «POSSBL». Подробнее: https://github.com/aleksibovellan/opnsense‑suricata‑nmaps

13.1 Обзор правил источника et/open.

ET ACTIVEX (533 правила) Предназначен для обнаружения эксплуатации уязвимостей в технологии ActiveX, которая использовалась в браузере Internet Explorer. Набор считается устаревшим для современных систем. Современные браузеры (Chrome, Edge, Firefox) не поддерживают ActiveX. Его стоит использовать только если в вашей сети есть старые сервера Windows или рабочие станции на Windows 7/XP с Internet Explorer и доступом в интернет. Правила могут срабатывать на легитимное старое корпоративное ПО. Этот набор нужно отключить, чтобы: снизить нагрузку на процессор; уменьшить время загрузки правил Suricata; освободить память под более актуальные правила.

ET ADWARE_PUP (1280 правил) Предназначен для обнаружения программ, которые не являются вирусами в чистом виде, но ведут себя навязчиво или подозрительно. Аббревиатура расшифровывается так: Adware — рекламное ПО (показывает баннеры, меняет поиск в браузере), PUP (Potentially Unwanted Programs) — потенциально нежелательные программы. Правила обнаруживают:

  • Трекеры и телеметрию: попытки приложений скрытно отправлять данные об активности пользователя.

  • Рекламные движки: запросы к серверам, которые подгружают баннеры или всплывающие окна.

  • Браузерные угонщики (Hijackers): изменение домашней страницы или перенаправление трафика на сомнительные поисковики.

  • Майнеры в браузере: скрипты, которые используют ресурсы ПК для добычи криптовалюты без ведома пользователя.

Присутствие таких программ в сети — плохой знак: через рекламные модули часто загружаются настоящие вирусы (техника Malvertising); PUP часто собирают информацию о конфигурации сети и передают её сторонним лицам; большое количество Adware создает лишний «мусорный» трафик.

ET ATTACK_RESPONSE (772 правил) Это «сигналы об успешном взломе». Они ищут не саму атаку, а ответ сервера, который подтверждает, что хакер добился цели. Обычные правила смотрят на входящий трафик (попытка взлома), а эти — на исходящий (результат). Правила обнаруживают:

  • Утечку данных: содержимое файлов /etc/passwd или конфигов Windows в ответах сервера.

  • Командные оболочки: строки вида root@, uid=0(root) или характерные приветствия терминала (Reverse Shell).

  • Ошибки СУБД: специфические ответы SQL‑серверов, которые подтверждают успешную SQL‑инъекцию.

  • Листинги директорий: ответы HTTP с содержимым папок, которые не должны быть публичными.

Срабатывание правила из этой категории — это сигнал тревоги высшего приоритета. Если сработало правило ATTACK_RESPONSE — атака удалась. Вам не нужно гадать, пробили вашу защиту или нет. Лог прямо говорит: «Сервер отдал злоумышленнику конфиденциальные данные».

Эти правила обязательны к включению. Они дают самый низкий уровень ложных срабатываний и самый высокий уровень уверенности в инциденте.

ET CHAT (59 правила) Предназначен для обнаружения трафика популярных мессенджеров и чат-протоколов. Правила обнаруживают:

  • Старые протоколы: IRC, ICQ, Jabber, MSN, GaduGadu.

  • Современные мессенджеры: Skype, Facebook, Yahoo.

  • Веб-чаты: активность встроенных чатов на сайтах.

Многие старые или специфические зловреды используют протокол IRC для получения команд от хакера. Оповещение в этой категории может указывать на работу ботнета. Эта категория часто генерирует огромное количество логов. Если вы не ищете ботнеты, использующие IRC, этот набор часто отключают или переводят в режим мониторинга только для подозрительных сегментов сети.

ET CINS (Collective Intelligence Network Security) (299 правил) Это «черный список» IP‑адресов с очень плохой репутацией. Правила создаются на основе данных проекта CINSscore, который собирает информацию с тысяч сенсоров по всему миру. Правила обнаруживают IP‑адреса, которые:

  • уже были замечены в атаках на другие сети.

  • массово сканируют порты в поисках уязвимостей.

  • были идентифицированы как узлы управления (C2).

У данных правил очень низкий процент ложных срабатываний. Это один из самых полезных наборов в et/open. Он работает как «вышибала» на входе, не пуская тех, кто уже в черном списке. Список правил обязателен к использованию. Поскольку IP‑адреса хакеров постоянно меняются, этот набор критически важно обновлять регулярно.

ET CNC (Command and Control) (5 правил) Дублирует правила источника abuse.ch/feodotracker.В настоящее время содержит 5 IP-адресов источников «знаменитых» банковских троянов.  Изначально список был предназначен для обнаружения трафика между зараженным компьютером и сервером управления хакера. Список обязателен к использованию.

ET COINMINER (28 правил) Предназначен для обнаружения скрытого майнинга. Он ищет следы работы программ, которые используют мощности ваших компьютеров или серверов для добычи криптовалюты в пользу злоумышленников. Правила обнаруживают:

  • Протоколы майнинга: чаще всего это Stratum (специфический протокол, через который общаются майнеры и пулы).

  • Подключения к пулам: запросы к известным адресам, где происходит коллективная добыча.

  • Веб‑майнеры: скрипты (типа CoinHive), которые запускаются в браузере пользователя при посещении зараженного или сомнительного сайта.

  • Wasm‑файлы: Передачу бинарного кода (WebAssembly), который часто используется для выполнения тяжелых вычислений майнера прямо в браузере.

Хотя майнинг сам по себе не крадет пароли, он опасен по следующим причинам: индикатор взлома — майнер редко попадает на сервер сам по себе. Если он есть — значит, в системе есть уязвимость, через которую хакер зашел и установил ПО; деградация ресурсов — процессоры загружены на 100%, всё тормозит, оборудование перегревается и быстрее выходит из строя; огромные счета — скрытый майнинг может стоить компании огромных денег за один месяц.

Эти правила очень полезны для гигиены сети. Они помогают выявлять как внешние угрозы, так и сотрудников, которые решили «подзаработать» на рабочем оборудовании. Но вряд ли 28 правил будет достаточно, чтобы полностью заблокировать майнинг.

ET COMPROMISED (12 правил) Это список IP‑адресов, которые прямо сейчас принадлежат взломанным серверам или хостам. В отличие от категории CINS (агрессоры) или CNC (управляющие центры), здесь содержатся адреса обычных, легитимных сайтов и серверов, которые были скомпрометированы и теперь используются для распространения вирусов или атак. Эти списки устаревают быстрее всего. Сервер может быть взломан утром и очищен к вечеру. Так как это легитимные ресурсы, блокировка может «сломать» доступ к какому‑то нужному сайту, если его еще не успели вычеркнуть из списка после очистки. Этот набор критически важно обновлять регулярно. Если ваш сервер внезапно начал активно общаться с IP из этого списка, это повод для немедленной проверки. Список правил обязателен к использованию.

ET CURRENT_EVENTS (238 правил) Это «горячие новости» кибербезопасности. В эту категорию попадают правила для самых свежих и активных угроз, которые происходят прямо сейчас. Как только в мире обнаруживают новую крупную атаку, уязвимость или масштабную кампанию вируса‑шифровальщика, правила для них первым делом попадают сюда. Правила обнаруживают:

  • Свежие эксплойты: защита от уязвимостей, которые были опубликованы в последние дни или недели.

  • Активные фишинговые кампании: правила для новых поддельных страниц банков, почтовых сервисов или логин‑форм.

  • Трендовые малвари: всплески активности конкретных вирусов, которые сейчас находятся в стадии активного распространения.

  • Временные индикаторы: здесь часто находятся правила с коротким сроком жизни, которые позже (через несколько месяцев) могут быть перенесены в профильные категории (например, в «ET CNC» или «ET EXPLOIT») или удалены.

Правила обязательны к использованию. Набор правил критически важно обновлять регулярно.

ET DNS (35 правил) Предназначен для обнаружения аномалий, злоупотреблений и атак, которые используют протокол DNS. Это критически важный уровень защиты, так как DNS часто является «слепой зоной», через которую хакеры незаметно общаются с зараженными машинами. Правила обнаруживают:

  • Связь с хакерами (C2 Detection): обнаруживают запросы к доменам, которые принадлежат управляющим серверам ботнетов. Даже если трафик вируса зашифрован (HTTPS), его DNS‑запрос на получение IP‑адреса хакера обычно остается открытым и заметным.

  • DNS‑туннелирование: попытки протащить данные (файлы или команды) внутри обычных DNS‑запросов. Это популярный способ обхода файрволов.

  • DGA (Domain Generation Algorithms): запросы к странным, случайно сгенерированным доменам, которые используют ботнеты для поиска своих серверов.

  • Отравление кэша (DNS Poisoning): попытки подменить настоящий IP‑адрес сайта на фальшивый.

  • Специфические записи: обнаружение необычно больших DNS‑ответов или редких типов записей (например, TXT‑записи, в которых часто прячут зашифрованные команды).

  • Обращения к опасным зонам: запросы к доменам в «плохих» зонах (например,.top,.bit,.onion), которые часто используются в криминальных целях.

Большинство систем безопасности разрешают DNS‑трафик безусловно. Часто DNS‑запрос — это самое первое действие вируса после попадания в сеть. Если заблокировать его на этом этапе, вирус не сможет скачать основной код. Эти правила очень полезны, но требуют внимания, так как некоторые легитимные программы (например, антивирусы или специфические сетевые инструменты) могут вести себя похоже на DNS‑туннели.

ET DOS (112 правил) Предназначен для обнаружения попыток отказа в обслуживании (Denial of Service). Эти правила фиксируют аномальный трафик, целью которого является перегрузка сервера, канала связи или конкретного приложения, чтобы сделать их недоступными. Правила обнаруживают:

  • Сетевой флуд: резкие всплески трафика определенных типов (SYN‑флуд, ICMP‑флуд, UDP‑флуд).

  • Атаки на исчерпание ресурсов: попытки открыть тысячи незавершенных соединений, чтобы «забить» память сервера (например, атака Slowloris).

  • Аномальные пакеты: использование специально сформированных «битых» пакетов, которые заставляют операционную систему или сервис аварийно завершать работу.

  • Амплификацию (усиление): попытки использовать ваш сервер как «усилитель» для атаки на кого‑то другого (например, через DNS или NTP).

Для случая когда suricata с движком nfqueue видит только трафик идущий от клиентов локальной сети в интернет и обратно, правила определяют когда клиенты локальной сети начинают участвовать в DOS‑атаках. Это тоже важно, так как если с вашего адреса пойдут атаки, ваш внешний IP быстро попадет в черные списки (Spamhaus, CINS), и у пользователей начнутся проблемы с доступом к сайтам и почте. Если нет проброшенных наружу портов от серверов, то можно отключить правила ищущие входящие атаки (например, на Apache/Nginx), так как трафик до них не доходит. Тогда необходимо оставить только правила направленные на исходящий трафик, чтобы контролировать чистоту своей сети.

Это одна из самых «шумных» категорий. Если у вас в сети идет активный обмен данными или бэкапы, правила DOS могут ошибочно принять это за атаку. Многие правила в этой категории работают по принципу «если больше X пакетов в секунду». Эти пороги иногда нужно подстраивать под ваши условия.

ET DROP (66 правил) Это «черный список» сетей и IP-адресов, которые официально признаны источниками вредоносной активности. В набор правил входят диапазоны сетей: от Spamhaus DROP (Don’t Route Or Peer) - список диапазонов адресов, которые были украдены хакерами или захвачены для рассылки спама и атак и расширенный список Spamhaus EDROP для подсетей, которыми управляют киберпреступники. В эти списки попадают только те сети, которые не имеют легитимных владельцев или полностью захвачены. Шанс заблокировать нормальный сайт крайне мал. Это фундаментальный слой защиты. Его всегда стоит держать включенным, так как он отсекает «грязный» трафик еще до того, как в дело вступят более сложные правила. Список обязателен к использованию. Набор правил критически важно обновлять регулярно.

ET DYN_DNS (5145 правил) Предназначен для мониторинга запросов к сервисам динамического DNS (таким как ddns.net, no‑ip.org, duckdns.org и другие). Хотя эти сервисы легитимны и удобны для домашних пользователей, в корпоративной среде они часто являются признаком угрозы. Злоумышленники обожают динамический DNS по трем причинам:

  • Скрытие реального IP: хакер может менять IP своего сервера управления (C2) хоть каждые пять минут, сохраняя одно и то же доменное имя.

  • Бесплатность и анонимность: для регистрации таких доменов обычно не нужны документы или оплата.

  • Обход черных списков: легко создать сотню новых поддоменов, если старые заблокировали.

Правила обнаруживают:

  • Обращения к DDNS‑доменам: любые попытки разрешить IP‑адрес через популярные динамические сервисы.

  • Специфические сигнатуры: поиск характерных паттернов в HTTP‑заголовках или DNS‑запросах, которые используют клиенты динамических имен.

В нормальной рабочей сети обращения к duckdns или no‑ip случаются редко. Если компьютер из бухгалтерии вдруг обратился к super‑hacker.ddns.net, это повод начать проверку.

ET EXPLOIT (6695 правил) Это база сигнатур для обнаружения попыток использования известных уязвимостей в программном обеспечении. Правила стараются поймать хакера в момент «взлома» — когда он только пытается пробить защиту вашего сервера или клиента. Правила обнаруживают:

  • RCE (Remote Code Execution): попытки удаленного запуска команд на ваших серверах.

  • Уязвимости в службах: атаки на конкретные версии веб‑серверов (Apache, Nginx), баз данных (MySQL, PostgreSQL) и почтовых серверов.

  • Клиентские эксплойты: атаки на браузеры, офисные пакеты (Word, Excel) или PDF‑ридеры ваших пользователей, когда они открывают вредоносный файл или сайт.

  • Известные CVE: Правила часто имеют в названии номер уязвимости (например, CVE-2023-XXXX), что позволяет сразу понять, какую «дыру» пытается использовать атакующий.

Срабатывание в этой категории означает прямую попытку взлома. Правила пишутся под конкретные технические артефакты эксплойта, поэтому ложных срабатываний обычно немного. В отличие от CURRENT_EVENTS, здесь хранятся сигнатуры и для старых уязвимостей (которым 5–10 лет). Это полезно, так как многие до сих пор не обновляют софт. Это фундаментальный набор для активной обороны. Если нет проброшенных наружу портов от серверов, то можно отключить правила ищущие входящие атаки, например, на Apache, Nginx, MySQL, PostgreSQL, так как трафик до них не доходит.

ET EXPLOIT_KIT (4715 правил) Предназначен для обнаружения связок эксплойтов (Exploit Kits, EK). В то время как обычная категория EXPLOIT ищет одну конкретную атаку на одну уязвимость, EXPLOIT_KIT ищет работу целых автоматизированных «комбайнов», которые используют хакеры. Exploit Kit это вредоносная платформа, которая работает по следующему сценарию: Пользователь заходит на сайт (взломанный или вредоносный). Скрипт EK сканирует браузер: проверяет версию Windows, браузера, наличие старых плагинов (Adobe, Java, Flash). Система автоматически выбирает из своей базы подходящую «отмычку» под найденную уязвимость. На компьютер жертвы без лишних вопросов скачивается и запускается вирус (шифровальщик или стилер). Правила обнаруживают:

  • Landing Pages (Посадочные страницы): Характерный код страниц, которые проводят «опрос» системы жертвы.

  • Обфусцированный JavaScript: Специфические методы упаковки кода, которые используют авторы связок для обхода антивирусов.

  • Запросы за полезной нагрузкой (Payload): Характерные URI и заголовки, по которым вредонос запрашивает основной файл вируса после успешного взлома.

Поскольку мы контролируем трафик «клиент <--> интернет», это одна из самых полезных категорий для защиты клиентов. Она защищает пользователей от скрытого заражения (Drive‑by download) при простом просмотре сайтов. Она ловит момент, когда браузер пользователя начинает «подозрительный диалог» с неизвестным сервером. Сейчас популярность связок эксплойтов снизилась из‑за повышения безопасности браузеров, но они всё еще активны в атаках на старые системы. Связки эксплойтов (такие как RIG, Magnitude, Purple Fox) постоянно меняют свои домены и методы шифрования трафика, поэтому набор правил необходимо регулярно обновлять.

ET FILE_SHARING (191 правило) Предназначен для обнаружения трафика сервисов обмена файлами и облачных хранилищ. Правила фиксируют использование легитимных, но часто нежелательных в корпоративной среде программ. Правила обнаруживают:

  • Имена файлообменников в TLS SNI.

  • Домены файлообменников в DNS и HTTP‑запросах.

  • Специфические пути в URL, которые характерны для загрузки (upload) или скачивания файлов с облаков.

  • API облаков — трафик к API‑хостам, который генерируют десктопные клиенты или скрипты.

Бесплатные файлообменники — одни из главных источников кряков, кейгенов и зашитых в них троянов. Они могут полностью «забить» интернет‑канал, мешая работе критических сервисов. Скачивание пиратского контента в сети компании может привести к правовым претензиям.

ET FTP (22 правила) Предназначены для мониторинга, обнаружения атак и аудита действий, связанных с протоколом передачи файлов FTP. Их основная цель — защитить FTP‑серверы от взлома и предотвратить утечку данных или несанкционированный доступ. Полезны только если анализируется входящий трафик на 21 порт FTP‑сервера.

ET GAMES (88 правил) Предназначены для идентификации трафика популярных онлайн-игр. Правила обнаруживают:

  • использование игровых платформ Steam, Battle.net, Origin.

  • трафик таких игр, как: Diablo 2, Minecraft, Solaris2, TrackMania, Warcraft 2,3, World of Warcraft и др.

  • трафик игровых чатов и программ общения TeamSpeak 2,3.

Полезны, если в компании строго запрещены игры.

ET HUNTING (1419 правил) Правила ищут не конкретные атаки, а подозрительные признаки, которые могут указывать на присутствие хакера в сети. Их цель — помочь специалистам по ИБ найти следы взлома, которые не детектируются обычными антивирусами или сигнатурами эксплойтов. Группа ориентирована на выявление тактик, которые используют злоумышленники для закрепления и перемещения внутри сети:

  • Нестандартное использование протоколов: передача данных через DNS (DNS Tunneling) для скрытного управления зараженным ПК; использование HTTP для обмена командами с управляющим сервером (C2) без явных признаков зловреда.

  • Специфическое поведение (Anomalies): запросы к подозрительным доменным зонам (например,.top,.xyz,.pw), часто используемым для ботнетов; необычные User‑Agent браузеров (например, пустые, слишком короткие или принадлежащие старым библиотекам программирования вроде Python‑urllib или Go‑http‑client).

  • Инструменты пентестинга и взлома: следы работы таких инструментов, как Metasploit, Cobalt Strike, PowerShell Empire или Mimikatz; специфические сетевые пакеты, характерные для сканеров уязвимостей.

  • Шифрование и скрытность: использование самоподписанных SSL‑сертификатов с подозрительными именами; попытки скрыть трафик внутри легитимных сервисов (например, через GitHub или Pastebin как каналы управления).

Правила используются для:

  • Проактивного поиска (Threat Hunting): выявление атак «нулевого дня» (0-day), для которых еще нет точных сигнатур.

  • Расследования инцидентов: если компьютер уже заражен, эти правила помогут понять, как вирус общается с «хозяином».

  • Контроля «теневых» ИТ: Обнаружение инструментов удаленного администрирования, которые сотрудники поставили в обход ИТ‑отдела.

Эта группа — «король» ложных срабатываний. Не ставьте их в режим блокировки — вы заблокируете много легитимного трафика (например, автообновления ПО или работу программистов). Правила предназначены для записи в логи и последующего анализа человеком. Вам придется вручную отключать правила для доверенных сервисов в вашей сети.

ET INAPPROPRIATE (17 правил) Набор правил предназначенных для обнаружения контента для взрослых в http трафике по ключевым словам. Если ваша цель — фильтрация контента, то Suricata с этими правилами — не самый эффективный инструмент. Для таких задач лучше использовать DNS-фильтрацию и/или прокси-серверы. Считаю эти правила бесполезными.

ET INFO (5170 правил) Предназначены для общего мониторинга сетевой активности. Они не ищут угрозы, а фиксируют факты использования различных сервисов, протоколов и приложений. Правила записывают нормальное поведение сети для последующего анализа. Группа фиксирует вполне легитимные, но важные для ИБ‑специалиста события:

  • Информация о софте (User‑Agents): какими браузерами или утилитами (curl, wget, python) пользуются в сети.

  • Использование облаков и сервисов: запросы к Google Drive, Dropbox, OneDrive, Slack или Telegram.

  • Сетевые инструменты: работа SSH, Telnet, использование динамических DNS (No‑IP и др.).

  • Версии протоколов: обнаружение старых или небезопасных версий TLS/SSL.

  • Специфические запросы: обращения к внешним IP‑чекерам (вроде ifconfig.me), что часто делают вирусы перед началом работы.

Данная группа правил используется для:

  • Получения информации: если сработал алерт на вирус (ET MALWARE), правила «ET INFO» помогут увидеть, что пользователь скачал перед этим или какие сайты посещал.

  • Инвентаризации: понимание того, какие ОС и приложения реально работают в вашей сети.

  • Поиска аномалий: если сервер базы данных вдруг начал обращаться к Google Drive (правило INFO), это повод для проверки.

Это самая шумная категория. Она создает записи практически на каждое действие пользователя. Правила имеют смысл, только если логи уходят в систему сбора данных (ELK, Splunk, Graylog), где их можно фильтровать. Никогда не ставьте данные правила в 'drop' - правила описывают разрешенное поведение, блокировка превратит работу сети в хаос. Включайте «ET INFO» выборочно, например, оставьте правила на динамические DNS. Посмотреть описание правил присутствующих в наборе:

grep "ET INFO" /var/lib/suricata/rules/suricata.rules  | grep -Po 'msg:"\K[^"]+' | 
  awk '{ print $1, $2, $3, $4 }' | sort -u | more
grep -i "ET INFO BitCoin" /var/lib/suricata/rules/suricata.rules | grep -Po 'msg:"\K[^"]+' | 
  sort -u | more

ET JA3 (116 правил) Предназначены для идентификации приложений и вредоносного ПО по «отпечатку» их TLS‑рукопожатия (SSL Handshake), даже если трафик полностью зашифрован. Это один из самых мощных способов обнаружения угроз без дешифровки трафика. JA3 — это метод создания уникального хэша (отпечатка) на основе того, как клиент (браузер, вирус, программа) представляется серверу при установке защищенного соединения. Каждое приложение выбирает свой набор шифров, версий TLS и расширений. Комбинация этих параметров уникальна для конкретного софта. Suricata вычисляет хэш этих параметров и сравнивает его с базой. Правила обнаруживают:

  • Вредоносное ПО (Malware): многие трояны и ботнеты (например, Emotet, TrickBot) используют свои собственные библиотеки для TLS. Их JA3-отпечатки известны и занесены в правила.

  • Инструменты хакеров: отпечатки Metasploit, Cobalt Strike, Empire; специфические утилиты для туннелирования трафика.

  • Легитимный, но подозрительный софт: Tor Browser, VPN‑клиенты, криптомайнеры; Стандартные библиотеки программирования (Python requests, Go http), которые часто используют авторы вирусов.

Использование хэша JA3 при анализе данных предоставляет следующие преимущества:

  • Правила работают без SSL‑инспекции — вам не нужно «вскрывать» трафик и подменять сертификаты. Достаточно проанализировать первый (открытый) пакет Client Hello.

  • Злоумышленнику сложнее обмануть проверки, так как труднее изменить параметры своей TLS‑библиотеки, чем просто поменять домен или IP‑адрес сервера управления.

  • Повышает точность проверки — позволяет отличить запрос из браузера Chrome от запроса, сделанного вредоносным скриптом, даже если они идут на один и тот же сайт.

При использовании необходимо учитывать, что правила могут давать срабатывание, если легитимный софт использует ту же библиотеку, что и вирус.

ET MALWARE (25963 правила) Самая критически важная категория, передовая линия обороны в Suricata. Содержит сигнатуры для обнаружения реально работающего вредоносного ПО прямо сейчас. Группа сфокусирована на поведении вирусов после того, как они попали в систему. Почти каждое срабатывание правил означает, что в сети есть зараженное устройство. Правила обнаруживают:

  • Общение с управляющими серверами (C2 — Command & Control): специфические запросы, которые вирус отправляет «хозяину» для получения команд; необычные форматы данных в HTTP/HTTPS трафике, характерные для ботнетов.

  • Активность программ‑вымогателей (Ransomware): обнаружение фаз подготовки к шифрованию данных; обращения к серверам для передачи ключей шифрования.

  • Кражу данных (Exfiltration): передача паролей, снимков экрана или файлов на подозрительные внешние узлы;

  • Загрузку дополнительных модулей: сигнатуры для перехвата момента, когда первичный вирус скачивает основной вредоносный софт.

Ключевые особенности данного набора:

  • Высокая точность: правила пишутся под конкретные семейства вирусов (например, Trickbot, Emotet, AgentTesla, RedLine Stealer).

  • Частые обновления: новые правила в этой группе появляются ежедневно, так как хакеры постоянно меняют инфраструктуру.

  • Низкий уровень ложных срабатываний: если правило сработало, вероятность реальной угрозы очень высока.

Эта группа должна быть включена первой в любой системе защиты. MALWARE — одна из немногих категорий, которую можно смело настраивать на блокировку трафика, так как легитимные программы не должны имитировать поведение ботнетов.

ET MISC (Miscellaneous) (1 правило) Это «сборная солянка» сигнатур, которые не подошли под узкие категории, но важны для безопасности. Сюда попадают подозрительные события, которые могут быть как частью атаки, так и просто опасной сетевой активностью. На момент составления обзора содержит 1 правило: 'tcp $EXTERNAL_NET any -> $HOME_NET 8000 msg:"ET MISC HP Web JetAdmin ExecuteFile admin access"'

ET MOBILE_MALWARE (1335 правил) Предназначены для обнаружения активности вредоносного ПО на мобильных устройствах (Android, iOS), когда они подключены к сети через Wi‑Fi. Поскольку мобильные вирусы часто используют те же методы, что и компьютерные, эта группа адаптирована под специфические протоколы и поведение смартфонов. Правила обнаруживают:

  • C2-коммуникации (Command & Control): запросы зараженных приложений к серверам управления; специфические для мобильных ОС способы передачи данных (например, через HTTP‑заголовки, характерные для рекламного ПО).

  • Шпионское ПО (Spyware): попытки отправки контактов, SMS, истории вызовов или координат GPS на внешние серверы; активность коммерческих программ‑шпионов (Stalkerware).

  • Рекламное ПО (Adware): агрессивные рекламные модули, которые встраиваются в бесплатные приложения и генерируют скрытый трафик.

  • Фейковые приложения и фишинг: обращения к доменам, имитирующим официальные магазины приложений (Google Play, App Store); активность «банковских троянов», нацеленных на кражу данных из мобильных банков.

Данный набор правил обеспечивает:

  • Контроль: если сотрудники приносят личные телефоны и подключают их к рабочей сети, эта группа — единственный способ узнать, что телефон сотрудника взломан.

  • Защиту гостевых сетей: мониторинг безопасности Wi‑Fi для посетителей.

  • Предотвращение утечек: мобильные устройства часто являются «точкой входа» в сеть компании.

Если вирус использует современное шифрование, Suricata увидит только домен (через SNI/DNS). Некоторые легитимные китайские или дешевые Android‑приложения ведут себя очень похоже на Adware (отправляют много аналитики), что может вызывать алерты. Правила часто ищут специфические строки идентификации мобильных браузеров и системных компонентов.

Если в вашей сети много мобильных клиентов, эту группу стоит держать включенной. Она помогает обнаружить заражение на ранней стадии, пока телефон не стал мостом для атаки на внутренние серверы.

ET NETBIOS (56 правил) Предназначены для мониторинга и защиты старых, но критически важных протоколов Windows, которые используются для общего доступа к файлам и принтерам в локальной сети. В современных сетях эти протоколы — главная цель для злоумышленников при перемещении внутри периметра. Правила обнаруживают:

  • Эксплуатацию уязвимостей (Exploits): поиск попыток взлома через классические «дыры» (например, легендарный EternalBlue/MS17-010, который использовался WannaCry); обнаружение атак на службу Server (SRV.SYS) и переполнения буфера в SMB‑командах.

  • Подозрительную активность SMB: попытки доступа к скрытым административным ресурсам (например, C, ADMIN, IPC$); необычные манипуляции с именами NetBIOS (поиск компьютеров в сети).

  • Перехват учетных данных: следы работы инструментов вроде Responder (атаки LLMNR/NBT‑NS Poisoning); попытки «сброса» паролей или удаленного выполнения кода через именованные каналы (Named Pipes).

  • Аномалии протокола: использование устаревших и небезопасных версий (SMBv1), которые должны быть отключены по соображениям безопасности.

Правила обеспечивают:

  • Остановку шифровальщиков: большинство Ransomware‑вирусов используют SMB для быстрого заражения всех компьютеров в офисе.

  • Контроль: позволяют видеть, кто и куда подключается в сети с правами админа.

  • Обнаружение перемещения: Если хакер попал на один компьютер, правила ET NETBIOS помогут заметить, как он пытается «прощупать» другие серверы.

Эти правила практически бесполезны на внешнем интерфейсе (так как порт 445 обычно закрыт снаружи), но жизненно необходимы для анализа трафика между сегментами сети (VLAN). В активной Windows‑сети SMB генерирует колоссальное количество трафика. Глубокий анализ SMB требует много ресурсов CPU.

Включайте эту группу обязательно, если у вас в сети есть Windows-серверы или рабочие станции. Это ваш основной радар против червей и хакеров, работающих внутри периметра. Для случая когда suricata видит только трафик идущий от клиентов локальной сети в интернет и обратно эти правила бесполезны.

ET P2P (Peer-to-Peer) (111 правил) Педназначены для обнаружения трафика децентрализованных сетей, таких как торренты, файлообменники и специфические протоколы прямой передачи данных. В корпоративной среде этот трафик обычно считается нежелательным из-за рисков безопасности и нагрузки на каналы связи. Правила обнаруживают:

  • BitTorrent-активность: запросы к трекерам и анонсы раздач; специфические рукопожатия (handshakes) протокола BitTorrent; использование DHT (Distributed Hash Table) для поиска пиров без центрального сервера.

  • Популярных клиентов и сети: следы работы µTorrent, Transmission, qBittorrent; устаревшие или специфические сети: eMule (eDonkey), Gnutella, SoulSeek.

  • Криптовалютные сети (иногда попадают сюда): синхронизация блокчейн-узлов (P2P-составная часть Bitcoin, Ethereum и др.).

Правила обеспечивают:

  • Борьбу с утечками данных: Через P2P-сети сотрудники могут случайно (или намеренно) «расшарить» конфиденциальные документы.

  • Соблюдение авторских прав: Защита организации от юридических претензий правообладателей за скачивание пиратского контента.

  • Экономию трафика: P2P-сессии могут забивать интернет-канал сотнями мелких соединений, что перегружает роутеры и мешает работе видеосвязи (Zoom, Teams).

  • Безопасность: Торрент-клиенты часто используются для доставки кряков и вареза, которые содержат вирусы из групп ET MALWARE.

Современные торрент-клиенты умеют шифровать трафик. В этом случае Suricata не сможет увидеть содержимое пакетов, но правила ET P2P всё равно могут сработать на характерные паттерны установления связи или DNS-запросы к трекерам. P2P-протоколы постоянно меняют порты, что делает обычные правила файрвола бесполезными без DPI-анализа который делает Suricata.

ET PHISHING (3165 правил) Предназначены для обнаружения: DNS запросов к фишинговым доменам; обращения к таким доменам с использованием доменных имен, шаблонов запросов или известных сигнатур по протоколам http и https или ответам от них. (Фишинг — вид интернет‑мошенничества, целью которого является получение доступа к конфиденциальным данным пользователей — логинам и паролям. Как правило рассылаются электронные письма со ссылками на вредоносные сайты.) Правила обнаруживают:

  • Запросы к фишинговым доменам: обращения к сайтам, которые имитируют страницы входа Google, Microsoft 365, PayPal или крупных банков; обнаружение доменов с тайпосквоттингом (например, g00gle.com вместо google.com).

  • Индикаторы в URL: поиск специфических путей в ссылках, которые характерны для фишинг‑китов (наборов инструментов для создания поддельных сайтов); обнаружение форм ввода данных на подозрительных, недавно созданных ресурсах.

  • Приземление на целевые страницы: сигнатуры страниц, которые «маскируются» под системные сообщения об ошибке или требование сбросить пароль.

  • Следы работы Phishing Kits: специфические скрипты и структуры папок на сервере, которые выдают инструменты хакеров.

Правила обеспечивают:

  • Защиту сотрудников: предотвращение перехода по вредоносным ссылкам из почты или мессенджеров.

  • Раннее обнаружение: часто фишинг — это первый этап целевой атаки. Остановка пользователя на этом этапе спасает всю сеть.

  • Борьбу с кражей аккаунтов: минимизация риска утечки корпоративных учетных записей (AD, почта).

Особенности использования:

  • Короткая жизнь правил: Фишинговые сайты живут от пары часов до пары дней. Правила этой группы быстро теряют актуальность, поэтому их нужно обновлять ежедневно.

  • Зависимость от DNS/HTTP: Как и в случае с другими категориями, Suricata эффективна здесь, анализируя DNS‑запросы или заголовки HTTP (SNI в случае HTTPS).

  • Ложные срабатывания: Редко, но могут срабатывать на легитимные сервисы рассылок или маркетинговые инструменты.

Для максимальной защиты используйте «ET PHISHING» вместе с «ET MOBILE_MALWARE» (фишинг часто нацелен на мобильные устройства) и «ET MALWARE». Эти правила отлично работают в связке с DNS‑фильтрацией. Если Suricata видит запрос к фишинговому домену, вы можете сразу идентифицировать зараженное или скомпрометированное устройство.

ET REMOTE_ACCESS (76 правил) Предназначены для обнаружения и контроля использования инструментов удаленного управления рабочим столом и администрирования. Эти инструменты часто легитимны, но их появление в корпоративной сети без ведома ИТ‑отдела — серьезный риск. Правила обнаруживают:

  • Популярные коммерческие инструменты: TeamViewer, AnyDesk, Zoho и др.

  • RDP (Remote Desktop Protocol) — особенно попытки подключения на нестандартных портах.

  • Специфические запросы к серверам координации (Relay‑серверам), которые помогают программам «пробивать» NAT и фаерволы.

Правила обеспечивают:

  • Предотвращение утечек: хакеры часто используют AnyDesk или TeamViewer для скрытного вывода данных, так как эти программы обычно разрешены антивирусами.

  • Борьбу с Shadow IT: обнаружение сотрудников, которые ставят программы удаленного доступа, чтобы работать из дома в обход VPN.

  • Контроль подрядчиков: отслеживание того, когда и как внешние специалисты подключаются к вашим серверам для обслуживания.

  • Обнаружение горизонтального перемещения: если злоумышленник уже внутри, он может использовать RDP для перемещения с одного компьютера на другой.

Большинство этих правил сигнализируют о нарушении политики, а не о взломе. Обычно эти правила не ставят в 'drop', чтобы не прервать работу админов, а используют для аудита в SIEM.

ET RETIRED (453 правила) Это архив сигнатур, которые были выведены из основного состава ET Open. Они больше не поддерживаются и не обновляются. В эту категорию попадают сигнатуры, которые:

  • Устарели: относятся к софту, который больше не существует или не используется (например, уязвимости в Internet Explorer 6 или старых версиях Windows).

  • Слишком шумные: создавали слишком много ложных срабатываний (False Positives) в современных сетях.

  • Заменены: были переписаны или объединены с новыми, более эффективными правилами в других группах.

  • Неактуальны: Описывают методы атак, которые больше не встречаются. Это «архив» или «кладбище» правил, которые были исключены из основных боевых категорий из‑за их неэффективности в современных условиях.

Правила могут понадобиться, если:

  • вы расследуете инцидент двухлетней давности, используя старые записи трафика (PCAP‑файлы).

  • злоумышленники используют старые фишинг‑киты или скрипты, которые они забыли обновить.

Правила нужны для истории и расследований, а не для активной защиты.

ET RPC (1 правило) Предназначены для мониторинга и защиты систем, использующих технологию удаленного вызова процедур. В основном это касается среды Windows (MS‑RPC) и систем NFS/Unix (ONC‑RPC). Это важная группа для защиты внутренней сети, так как через RPC реализуются базовые функции администрирования, управления службами и доступа к данным. В настоящее время группа содержит 1 правило: 'tcp any any -> $HOME_NET 135 msg:"ET RPC DCERPC SVCCTL - Remote Service Control Manager Access"'.

ET SCADA (92 правила) Предназначены для защиты промышленных систем управления (АСУ ТП). Они мониторят специфические протоколы, которые используются на заводах, электростанциях и водоканалах для управления физическим оборудованием (турбинами, клапанами, датчиками).В обычной офисной сети эти правила не нужны, но в технологическом сегменте они критически важны. Правила обнаруживают:

  • Промышленные протоколы: Modbus, DNP3, EtherNet/IP, Siemens S7, BACnet; обнаружение команд на чтение/запись регистров в контроллерах (ПЛК).

  • Эксплуатацию уязвимостей: поиск атак на ПО для мониторинга (SCADA‑панели); Обнаружение попыток взлома промышленных шлюзов и ПЛК (например, Schneider Electric, Rockwell Automation).

  • Критически опасные действия: команды на остановку процессора (CPU Stop) контроллера; попытки обнуления памяти или несанкционированной смены прошивки устройства; запросы на запись в диапазоны адресов, которые управляют критическими параметрами.

Правила обеспечивают:

  • Предотвращение диверсий — остановку выполнения команд, которые могут привести к физической поломке оборудования или аварии.

  • Предотвращение кражи данных о технологических процессах (рецептуры, режимы работы).

  • Защиту от специфических вирусов вроде Stuxnet, Industroyer или BlackEnergy.

  • Выполнение требований по защите критической информационной инфраструктуры (КИИ).

Включайте их только на сенсорах, которые видят трафик между инженерными станциями и контроллерами. Никогда не ставьте эти правила в режим 'drop' без глубокого тестирования. Ложное срабатывание может остановить работу завода.

ET SCAN (319 правил) Предназначены для обнаружения сканирования портов (сетевой разведки). Правила обнаруживают:

  • Сканирование портов и хостов: работу таких инструментов, как Nmap, Zgrab, Masscan; поиск открытых портов (TCP SYN/ACK сканирование); поиск активных устройств в подсети (ICMP/ARP сканирование).

  • Поиск уязвимых сервисов: сканирование на наличие открытых баз данных (MySQL, MSSQL, Redis); поиск интерфейсов управления (RDP, VNC, SSH); поиск специфических веб‑админок (phpMyAdmin, панели управления роутерами).

  • Брутфорс на ранней стадии: многочисленные попытки авторизации, которые выглядят как автоматизированный перебор.

  • Специфические инструменты: использование сканеров уязвимостей (Nessus, OpenVAS, Acunetix); запросы с характерными для сканеров заголовками User‑Agent

Правила обеспечивают:

  • Выявление подготовки к атаке: большинство взломов начинаются со сканирования. Обнаружив «разведчика», вы можете заблокировать его IP до того, как он найдет уязвимость.

  • Определение внутренних угроз: если сканирование идет от вашего внутреннего компьютера, это верный признак того, что он уже заражен и вирус пытается распространиться дальше (Lateral Movement).

В интернете сканирование происходит постоянно. Если ваш сервер смотрит наружу, логи будут забиты событиями ET SCAN. Системы мониторинга (Zabbix, Nagios, PRTG) часто ведут себя как сканеры. Их IP‑адреса нужно сразу вносить в исключения. Для этой группы критически важно настраивать правила подавления, чтобы не получать 1000 алертов от одного сканирующего хоста.

Для случая когда suricata видит только трафик идущий от клиентов локальной сети в интернет и обратно эти правила могут определить только сканирование проброшенных портов. Проще организовать защиту на серверах, чьи сервисы выведены наружу.

ET SHELLCODE (153 правила) Правила созданы для защиты серверов, которые слушают входящие соединения. Предназначены для обнаружения исполняемого машинного кода, который хакеры пытаются внедрить в память сервера через уязвимости. Шелл‑код (shellcode) — это полезная нагрузка эксплойта, которая после запуска обычно открывает злоумышленнику доступ к командной строке (shell). Правила обнаруживают низкоуровневые аномалии в потоке данных:

  • NOP‑Sled (NOP‑цепочки): обнаружение длинных последовательностей пустых инструкций (например, 0×90 в x86). Хакеры используют их, чтобы «приземлить» выполнение кода в нужное место памяти.

  • Специфические инструкции процессора: команды, которые редко встречаются в обычном трафике, но типичны для эксплойтов: манипуляции со стеком, специфические вызовы прерываний или попытки выяснить текущий адрес в памяти.

  • Известные сигнатуры шелл‑кодов: обнаружение стандартных нагрузок из фреймворков взлома (Metasploit, Canvas, Core Impact); обнаружение «реверс‑шеллов» (когда ваш сервер сам инициирует соединение с хакером для передачи управления).

  • Кодированный и обфусцированный код: поиск характерных признаков «упаковщиков», которые хакеры используют для сокрытия кода от простых антивирусов.

Правила обеспечивают:

  • Защиту от атак «нулевого дня» (0-day): даже если сама уязвимость еще не известна (нет сигнатуры в ET EXPLOIT), suricata может заметить подозрительный шелл‑код, который идет в комплекте с атакой.

  • Универсальность: шелл‑код для x86 или x64 архитектуры выглядит одинаково, вне зависимости от того, через какую дыру его пытаются просунуть.

  • Высокую критичность: если это правило сработало, значит, кто‑то прямо сейчас пытается (и, возможно, успешно) захватить контроль над вашим процессом.

Это одна из самых сложных групп. Бинарные данные в обычных файлах (картинки, сжатые архивы, зашифрованный трафик) могут случайно содержать последовательности байт, похожие на шелл‑код. Правила требуют глубокого анализа содержимого пакетов, что может нагружать процессор при больших объемах трафика. Чтобы понять алерт от этой группы, нужно обладать навыками реверс‑инжиниринга или понимать ассемблер.

Включайте эту группу обязательно для публичных серверов (Web, Mail, DNS) или если порты этих серверов проброшены наружу. Это лучший шанс заметить попытку взлома через неизвестную уязвимость. Полезно только если вы не обновляете свои сервера.

ET SMTP (13 правил) Предназначены для защиты почтовых серверов и мониторинга передачи электронных писем. Их главная задача — обнаружить распространение вредоносных вложений и соединения со скомпрометированными доменами.

ET SNMP (16 правил) Предназначены для защиты и аудита протокола SNMP (Simple Network Management Protocol), который используется для мониторинга и управления сетевыми устройствами (роутерами, коммутаторами, серверами, принтерами). В неумелых руках этот протокол — «золотая жила» для хакера, так как он позволяет удаленно узнать всё об устройстве или даже изменить его настройки. Правила обнаруживают:

  • Попытки подбора пароля: Использование стандартных паролей, таких как public, private, admin, manager.

  • Разведка и сбор данных: Запросы на получение системной информации (версия ОС, список пользователей, сетевые интерфейсы); попытки просканировать дерево OID (идентификаторов объектов) для поиска уязвимых мест.

  • Эксплуатация уязвимостей: поиск атак на переполнение буфера в различных реализациях SNMP‑агентов; обнаружение специфических эксплойтов для оборудования Cisco, HP, Linksys и др.

  • Подозрительные изменения конфигурации: попытки удаленной записи данных (SET‑запросы), которые могут изменить настройки устройства.

Правила обеспечивают:

  • Защиту от утечки данных: через SNMP можно выкачать всю топологию вашей сети и конфигурации оборудования.

  • Предотвращение захвата контроля: если хакер узнает write community string, он сможет отключить порты на коммутаторе или перенаправить трафик.

  • Контроль безопасности: помогают найти в сети устройства, на которых по ошибке включен старый и небезопасный протокол SNMP v1 или v2c без должной защиты.

Правила жизненно необходимы для мониторинга атак внутри периметра.

ET SQL (91 правило) Предназначены для обнаружения попыток взлома баз данных и защиты от атак типа SQL‑инъекция (SQL Injection).Это критически важная группа для защиты веб‑приложений и серверов, которые взаимодействуют с базами данных (MySQL, PostgreSQL, Microsoft SQL Server, Oracle). Правила обнаруживают:

  • SQL‑инъекции (SQLi): попытки внедрения вредоносного SQL‑кода в URL‑адреса, формы входа или поисковые запросы; использование команд UNION SELECT, OR 1=1, DROP TABLE для обхода авторизации или кражи данных.

  • Эксплуатацию уязвимостей СУБД: атаки на специфические «дыры» в движках баз данных (например, переполнения буфера в процедурах MS SQL); попытки удаленного выполнения кода через функции баз данных (например, xp_cmdshell в SQL Server).

  • Попытки авторизации: многократные неудачные попытки входа в консоль управления БД; использование стандартных учетных записей (sa, root) с пустыми или простыми паролями.

  • Разведку (Enumeration): Попытки выяснить версию базы данных, структуру таблиц или названия колонок через специфические ошибки ответов сервера.

Обычные поисковые запросы или специфические данные в формах на легитимных сайтах могут содержать слова SELECT или FROM, что может вызвать ложный алерт. Для корректной работы правил важно, чтобы переменные $HTTP_SERVERS и $SQL_SERVERS были правильно настроены в suricata.yaml. Используйте эти правила только если suricata видит трафик ваших серверов.

ET TA_ABUSED_SERVICES (122 правила) Для обнаружения DNS запросов поиска скомпрометированных доменных имен или обращения к ним. Фактически представляет черный список доменных имен.

ET TELNET (7 правил) Группа правил для мониторинга трафика одного из самых старых и небезопасных протоколов удаленного доступа — Telnet. Поскольку Telnet передает все данные (включая логины и пароли) в открытом виде, использование этих правил критически важно для предотвращения перехвата данных и взлома оборудования. Правила обнаруживают:

  • Попытки входа (Brute Force): перебор паролей к маршрутизаторам, коммутаторам и IoT‑устройствам; использование стандартных заводских паролей (например, admin/admin).

  • Перехват учетных данных: обнаружение передачи паролей в открытом виде.

  • Эксплуатация уязвимостей: поиск атак на переполнение буфера в Telnet‑серверах; сигнатуры атак, нацеленных на старое сетевое оборудование (Cisco, Linksys и др.).

  • Активность ботнетов: обнаружение действий вредоносного ПО (например, Mirai), которое сканирует сеть в поисках открытых Telnet‑портов для самораспространения.

Поскольку telnet — протокол без шифрования, то suricata видит всё содержимое пакетов (в отличие от SSH), поэтому правила работают очень точно. IoT‑устройства: камеры, умные розетки и дешевые роутеры — основные цели этих правил, так как на них telnet часто включен по умолчанию. В современных корпоративных сетях Telnet должен быть запрещен. Эти правила часто используются для подтверждения того, что политика запрета Telnet нарушается. Если ваша политика безопасности запрещает использование Telnet, вы можете перевести эти правила в режим 'drop' или настроить оповещения с высоким приоритетом.

ET TFTP (8 правил) Группа правил для мониторинга трафика протокола tftp (Trivial File Transfer Protocol) — максимально упрощенного протокола передачи файлов. В нем нет аутентификации (паролей) и шифрования, что делает его крайне опасным при использовании вне изолированных сегментов сети. Правила обнаруживают:

  • Утечку конфиденциальных данных: попытки скачивания файлов конфигурации сетевого оборудования (например, config, running‑config, ios.bin); запросы на получение системных файлов (например, /etc/passwd в Unix‑системах, если tftp‑сервер настроен некорректно).

  • Эксплуатацию уязвимостей: атаки типа «переполнение буфера» (Buffer Overflow); специфические эксплойты для старых tftp‑серверов.

  • Активность вредоносного ПО: использование tftp червями и ботнетами для скачивания своих модулей на зараженное устройство после взлома (часто используется в паре с эксплойтами для IoT‑устройств).

  • Аномалии и ошибки: нестандартные пути к файлам (например, использование …/ для выхода за пределы рабочей директории — Directory Traversal).

Правила обеспечивают обнаружение:

  • Взлома: tftp практически никогда не используется для легитимной работы в интернете. Если клиент из локальной сети инициирует tftp‑соединение с внешним IP, это почти наверняка признак работы малвари, которая пытается выкачать вредоносный код.

  • Ошибок настройки: обнаружение ситуаций, когда внутреннее оборудование (телефоны, коммутаторы) по ошибке пытается обновиться с публичного сервера без защиты.

В корпоративной сети трафик tftp должен быть строго ограничен или отключен. Группу «ET TFTP» стоит держать включенной для обнаружения «скрытой» активности вредоносов.

ET Threatview.io (22 правила) Набор правил, основанный на данных репутационного сервиса Threatview.io. Правила содержат черные списки IP‑адресов, их главная задача — блокировать или помечать трафик, идущий к серверам, которые уже были замечены в хакерской активности. Правила обнаруживают обращения к инфраструктуре злоумышленников:

  • C2-серверы (Command & Control): узлы, с которых хакеры управляют зараженными устройствами.

  • Хосты распространения малвари: сайты, замеченные в раздаче вирусов, стилеров или шифровальщиков.

  • Узлы для эксфильтрации: IP‑адреса, на которые вирусы «сливают» украденные пароли и файлы.

  • Активные сканеры: хосты, которые прямо сейчас занимаются брутфорсом или поиском уязвимостей в интернете.

Правила обеспечивают:

  • Защиту от зашифрованных угроз: если вирус общается с сервером по HTTPS, Suricata не увидит что передается. Но благодаря этим правилам она увидит куда идет запрос. Если IP сервера находится в базе Threatview.io, вы получите алерт.

  • Экономию времени: вам не нужно знать, как выглядит новый вирус внутри. Достаточно знать, что он обращается к «плохому» адресу.

  • Автоматизацию: эти списки динамические. При обновлении баз Suricata получает свежие адреса хакеров, которые появились буквально вчера.

Иногда в «черный список» могут попасть облачные адреса (например, AWS или Cloudflare), на которых временно находился сайт хакера. Это может привести к ложным срабатываниям на легитимные ресурсы. Эта группа теряет смысл без регулярного обновления, так как хакеры постоянно меняют серверы.

Список обязателен к использованию. Это один из самых простых и эффективных способов обнаружить «затаившийся» вирус в локальной сети, который периодически «стучится домой» на сервер управления.

ET TOR (866 правил) Предназначены для обнаружения активности, связанной с использованием анонимной сети Tor в вашем сетевом трафике. Они фиксируют как работу клиентских браузеров (Tor Browser), так и функционирование узлов сети (Entry, Relay, Exit nodes). Правила обнаруживают:

  • Использование Tor‑клиентов: обращения внутренних пользователей к сети Tor для обхода цензуры или скрытия своей активности.

  • Tor Onion Proxy: попытки установления соединения с входными узлами (Entry Nodes).

  • Трафик к Exit‑узлам: ответы от выходных узлов Tor, которые часто используются злоумышленниками для маскировки атак.

Правила обеспечивают:

  • Борьбу с вредоносным ПО: современные вирусы и шифровальщики часто используют Tor для скрытной связи с командными серверами (C2). Если обычный компьютер в сети (не пользователя Tor Browser) начал генерировать такой трафик — это критический признак заражения.

  • Соблюдение корпоративной политики: Tor часто используется для обхода контент‑фильтров (просмотра запрещенных сайтов, соцсетей). Вы сможете выявить сотрудников, которые пытаются скрыть свои действия от ИТ‑отдела.

  • Безопасность периметра: если ваш внутренний ресурс (например, веб‑сайт) получает много трафика из сети Tor, это может быть признаком анонимного сканирования или попытки взлома.

Suricata не видит, что именно передается внутри Tor, но она отлично видит факт подключения к этой сети. Списки узлов Tor постоянно меняются. Для точности работы необходимо регулярно обновлять правила.

Содержит 8660 адресов. Если вы хотите заблокировать сеть TOR, то не оставляйте IP‑адреса в правилах, вынесите их в nftables и используйте блокировку по протоколу nDPI.

ET USER_AGENTS (336 правил) Предназначены для идентификации приложений по их уникальной строке «подписи» (User‑Agent) в HTTP‑трафике. Это одна из самых полезных групп для мониторинга, так как она позволяет увидеть не куда идет трафик, а кто его генерирует (какая программа или скрипт). Правила обнаруживают:

  • Инструменты злоумышленников и пентестеров: специфические строки от Nmap, sqlmap, Dirbuster, Nikto; использование библиотек для автоматизации: Python‑urllib, Go‑http‑client, libwww‑perl. Обычные пользователи редко используют их напрямую.

  • Следы вредоносного ПО (Malware): многие вирусы имеют жестко прописанный User‑Agent (например, опечатки в слове Mozilla или странные наборы символов); обнаружение «пустых» или аномально коротких User‑Agent, что часто бывает у самописных троянов.

  • Нежелательное ПО (Grayware): следы работы рекламных модулей (Adware), тулбаров для браузеров и торрент‑клиентов; активность криптомайнеров и инструментов для накрутки кликов.

  • Старое и уязвимое ПО: обнаружение устаревших версий браузеров (например, Internet Explorer 6), которые опасны для использования.

Для локальной сети эта группа — отличный инструмент инвентаризации и профилирования:

  • Поиск «агентов» в сети: вы увидите, если на компьютере бухгалтера вдруг начал работать python‑requests. Это повод проверить устройство на наличие вредоносных скриптов.

  • Контекст атаки: если сработал алерт «ET MALWARE», то алерт «ET USER_AGENTS» подтвердит, что запрос действительно пришел от подозрительной утилиты, а не из браузера Chrome.

Правила работают в открытом трафике (порт 80). Злоумышленник может легко изменить User‑Agent в своем коде на «нормальный» (например, прикинуться последним Firefox). Поэтому отсутствие алертов в этой группе не гарантирует чистоту сети. Однако, если будет выдано оповещение от этой группы, то это серьезный повод разобраться в происходящем. Группа может выдавать оповещения на легитимные инструменты разработчиков или системных администраторов.

ET VOIP (17 правил) Предназначены для защиты и аудита систем IP‑телефонии (Voice over IP). Они мониторят специфические протоколы передачи голоса, такие как SIP, H.323, RTP и Skinny (SCCP). Их главная цель — предотвратить взлом телефонных станций (АТС), кражу связи и прослушивание разговоров. Правила обнаруживают:

  • Попытки взлома и перебора паролей: массовый подбор паролей к SIP‑аккаунтам (SIP Register Brute Force); поиск активных внутренних номеров (SIP Scan).

  • Фрод и кража связи: попытки совершить международные звонки через вашу АТС без авторизации; использование украденных учетных записей для рассылки голосового спама.

  • Эксплуатация уязвимостей: атаки на популярные АТС (Asterisk, FreePBX, Cisco CallManager); попытки вызвать отказ в обслуживании (DoS) путем отправки некорректных сигнальных пакетов.

  • Атаки на медиа‑трафик: попытки перехвата или внедрения в RTP‑поток (само аудио разговора); обнаружение аномалий в передаче голоса.

Правила обеспечивают:

  • Контроль устройств: вы увидите, если IP‑телефоны сотрудников или софтфоны (например, Zoiper) подключаются к внешним серверам.

  • Обнаружение заражения: если обычный компьютер (не телефон) начал генерировать SIP‑трафик в интернет, это признак того, что он стал частью ботнета для телефонного фрода.

  • Безопасность удаленщиков: помогают отследить попытки взлома ваших сотрудников, которые пользуются корпоративной связью из дома.

Стандартный SIP — это порт 5060/5061, но многие системы используют нестандартные порты. Проверьте их в suricata.yaml. Включайте эту группу, если в вашей компании используется любая форма IP‑телефонии. Даже если АТС находится внутри, правила помогут заметить попытки её атаки из интернет‑сегмента.

ET WEB_CLIENT (793 правила) Предназначены для защиты браузеров пользователей от атак, которые происходят в момент посещения веб‑сайтов, то есть защищает ваших сотрудников от вредоносного содержимого, которое прилетает к ним из интернета. Правила обнаруживают:

  • Эксплуатацию уязвимостей браузеров: попытки взлома Chrome, Firefox, Edge или старого Internet Explorer через специфические ошибки в их движках; атаки на плагины и расширения (Adobe Reader, Java, ActiveX).

  • Вредоносные скрипты (JavaScript): обнаружение кода, который пытается выполнить «переполнение буфера» на стороне клиента; обнаружение техник обфускации (скрытия) кода, часто используемых в эксплойт‑китах.

  • Межсайтовый скриптинг (XSS): попытки внедрения вредоносных сценариев в сессию пользователя для кражи куки (cookies) или данных авторизации.

  • Криптоджекинг: скрипты для скрытого майнинга криптовалют прямо в браузере пользователя при посещении зараженного сайта.

Правила обеспечивают:

  • Защиту при серфинге: даже если пользователь зашел на легитимный, но взломанный сайт, suricata может заметить эксплойт, который сайт пытается «подсунуть» браузеру.

  • Обнаружение Drive‑by атак: обнаружение скрытых загрузок вирусов, которые начинаются автоматически при открытии страницы.

  • Контроль устаревшего софта: если в вашей сети кто‑то использует старые версии браузеров, эти правила — единственный шанс предотвратить их мгновенный взлом.

Анализ тела HTTP‑ответов (HTML, JS) — очень тяжелая задача для процессора. Сложные скрипты на современных веб‑приложениях могут иногда напоминать паттерны атак.

ET WEB_SERVER (828 правила) Предназначены для защиты ваших веб‑серверов от атак со стороны внешних пользователей. Правила обнаруживают:

  • Уязвимости в CMS и фреймворках: атаки на WordPress, Joomla, Drupal, Magento; попытки эксплуатации дыр в PHP, Apache, Nginx, IIS.

  • Удаленное выполнение кода: попытки загрузить вредоносные скрипты (Web Shells) через формы загрузки файлов; использование команд типа cmd.exe или /bin/sh в HTTP‑запросах.

  • Обход путей (Directory Traversal): попытки прочитать системные файлы (например, GET /…/…/etc/passwd).

  • Атаки на веб‑приложения: специфические методы взлома API, панелей управления и административных интерфейсов.

Для корректной работы правил в suricata.yaml должна быть четко прописана переменная $HTTP_SERVERS. Без расшифровки трафика suricata увидит только URL (через SNI), но не увидит вредоносную нагрузку в теле запроса (POST data). Используйте эти правила только если suricata видит трафик вашего веб‑сервера.

ET WEB_SPECIFIC_APPS (6773 правил) Предназначены для защиты конкретных веб‑приложений, установленных на серверах. Эта группа сфокусирована на «дырах» в прикладном ПО. Правила обнаруживают:

  • Уязвимости в CMS: специфические эксплойты для WordPress, Joomla, Drupal, Magento.

  • Атаки на системы мониторинга и управления: попытки взлома Zabbix, Grafana, VMware vCenter, Webmin.

  • Дыры в бизнес‑софте: атаки на Jira, Confluence, Microsoft Exchange (через веб‑интерфейс), системы CRM и ERP.

  • Уязвимости плагинов: часто правила нацелены на конкретные дырявые дополнения (например, плагин слайдера в WordPress), через которые хакеры заливают шеллы.

Правила обеспечивают:

  • Обнаружение заражения: если компьютер вашего сотрудника начал атаковать чужой сервер Jira или WordPress в интернете, правила этой группы поднимут алерт. Это признак того, что на ПК клиента работает сканер уязвимостей или бот.

  • Виртуальный патчинг: если вы используете уязвимое приложение и не можете его обновить прямо сейчас, эти правила «прикроют» дыру на сетевом уровне.

  • Борьбу с направленными атаками: хакеры часто ищут конкретные версии софта. Эти правила блокируют специфические запросы, которые ищет эксплойт.

Используйте эти правила только если suricata видит трафик вашего веб‑сервера.

ET WORM (17 правил) Предназначены для обнаружения сетевых червей — вредоносных программ, которые самостоятельно распространяются от компьютера к компьютеру, используя дыры в сетевых службах. В отличие от обычных вирусов, червю не нужно, чтобы пользователь открывал файл, он атакует систему через открытые порты напрямую. Правила обнаруживают:

  • Фазу сканирования: попытки поиска уязвимых соседей по сети (часто по протоколам SMB, RPC, HTTP).

  • Процесс заражения: передача специфического кода (эксплойта) для захвата контроля над удаленной машиной.

  • Самокопирование: передача тела самого червя (исполняемого файла) после успешного взлома.

  • Активность известных червей: сигнатуры легендарных и современных угроз, таких как Conficker, WannaCry, NotPetya, Kido.

Правила обеспечивают:

  • Детекцию «Нулевого пациента»: если один компьютер в вашей сети заразился (например, через флешку), эта группа поднимет тревогу, как только он попытается заразить другие ПК или серверы в интернете.

  • Защиту от проникновения извне: если из интернета на ваш шлюз начнут поступать запросы от зараженных червями хостов, suricata заблокирует их.

Лучше всего эти правила работают, если Suricata видит трафик между сегментами вашей локальной сети. Именно там черви распространяются активнее всего. «ET WORM» часто пересекается с «ET SCAN» и «ET EXPLOIT», так как черви используют сканирование и эксплойты для своей работы. Обязательно оставьте эту группу включенной. Даже старые правила на червей 10-летней давности до сих пор актуальны, так как в сетях часто встречаются непропатченные устройства (принтеры, старые серверы).

13.2 Диапазоны номеров правил.

В настоящее время многие составляют правила самостоятельно или распространяют наборы таких правил. Если вы где-то в интернете наткнетесь на такой непонятный вам набор правил, то идентифицировать из каких источников правил он составлен вам может помочь официальный документ по распределению номеров правил: https://sidallocation.org

14. Использование правил.

В стратегии по защите сети я бы выделил 3 главных направления:

  1. Предотвращение вторжений вирусов из вне, предотвращение закрепления и блокировки возможности работы из локальной сети: не позволить проникнуть в локальную сеть; не позволить вирусу докачать свое тело и связаться с командным центром, заблокировать возможность распространения на другие серверы в интернете или ведения деструктивной деятельности из вашей локальной сети.

  2. Блокировка работы нежелательных программ, обеспечение гигиены сети.

  3. Контроль локальной сети.

1.1 Для предотвращения вторжений из вне будем использовать правила содержащие:

  • Списки известных вредоносных IP‑адресов: источник et/open, группы: «ET CINS», «ET CNС», «ET COMPROMISED», «ET DROP», «ET Threatview.io»; источник etnetera/aggressive.

  • Списки скомпрометированных SSL‑сертификатов и JA3 fingerprint: источник abuse.ch/sslbl‑blacklist, источник et/open, группа «ET JA3», источник abuse.ch/sslbl‑ja3 —  частично:  только те правила, которые не вошли в «ET JA3».

  • Списки вредоносных URL‑адресов: источник abuse.ch/urlhaus.

  • Определения самых свежих и активных угроз: «ET CURRENT_EVENTS»

  • Сигнатуры для обнаружения работающего вредоносного ПО прямо сейчас: «ET MALWARE»

  • Определения атак браузеров пользователей, которые происходят в момент посещения веб‑сайтов: «ET WEB_CLIENT»

  • Определения вредоносных DNS запросов и скомпрометированных доменов: «ET DNS»

  • Определения запросов скомпрометированных доменных имен или обращения к ним: «ET TA_ABUSED_SERVICES».

  • Определения для обнаружения DNS запросов к фишинговым доменам; обращения к таким доменам с использованием доменных имен или ответов от них: «ET PHISHING»

Правила из списка «предотвращения вторжений» содержат уже известные IP‑адреса, доменные имена, сертификаты, fingerprints, url‑адреса, определения вредоносного ПО и типов атак. Они должны быть использованы в первую очередь. Если вы ограничены в использовании ресурсов, то вы можете остановиться на использовании этих правил, или, в крайнем случае, части этих правил.

1.2 Для предотвращения закрепления и блокировки возможности работы из локальной сети будем использовать правила определяющие:

  • Успешность взлома. Они ищут не саму атаку, а ответ сервера, который подтверждает, что хакер добился цели: «ET ATTACK_RESPONSE»

  • Работу связок эксплойтов: «ET EXPLOIT_KIT»

  • Запросы к сервисам динамического DNS: «ET DYN_DNS»

  • Активность вредоносного ПО на мобильных устройствах: «ET MOBILE_MALWARE»

  • Вредоносные приложения по их уникальной строке подписи (User‑Agent) в HTTP‑трафике: «ET USER_AGENTS»

  • Активность клиентов локальной сети для группы правил «ET DOS»

  • Активность клиентов локальной сети для группы правил «ET EXPLOIT»

  • Деструктивные действия в протоколах ftp, smtp, snmp, telnet, tftp: «ET FTP», «ET SMTP», «ET SNMP», «ET TELNET», «ET TFTP».

2. Для блокировки работы нежелательных программ, обеспечения гигиены сети будем использовать правила определяющие:

  • Программы, которые не являются вирусами в чистом виде, но ведут себя навязчиво или подозрительно: «ET ADWARE_PUP».

  • Скрытый майнинг: «ET COINMINER».

  • Трафик популярных онлайн‑игр: «ET GAMES».

  • Трафик децентрализованных сетей, таких как торренты, файлообменники и специфические протоколы прямой передачи данных: «ET P2P».

  • Трафик сервисов обмена файлами и облачных хранилищ: «ET FILE_SHARING» - с действиями алерт.

  • Использование инструментов удаленного управления: «ET REMOTE_ACCESS» - с действиями алерт.

3. Для контроля локальной сети (горизонтального перемещения) используйте правила от источников stamus/lateral, pawpatrules, ptrules/open, et/open: «ET NETBIOS», «ET RPC», «ET WORM»

Если нужна информация по общему мониторингу сетевой активности, то помогут группы «ET HUNTING», «ET INFO» источника et/open и правила источника tgreen/hunting.

14.1 Использование правил источника 'abuse.ch/urlhaus'.

Источник abuse.ch/urlhaus содержит более 38,4 тыс. правил. Из них более 20,5 тыс. правил с IP-адресами и более 17,8 тыс. правил с доменными именами. Данный набор правил определяет обращения по протоколу HTTP к вредоносным URL адресам, расположенным на определенных доменах (т.е. должны совпасть URL-адрес и доменное имя). Но если злоумышленникам удалось внедрить вредоносный контент по одному URL адресу (что определили и подтвердили пользователи), то где гарантии, что через какое-то время вредоносный контент не появится и на других URL адресах того же самого домена? Ведь вполне возможно, что злоумышленники получили полный контроль над используемым ими ресурсом. Поэтому я считаю правильным блокировать доступ к зараженным доменам полностью, а не только к тем URL адресам, куда внедрено вредоносное содержимое.

Для этого добавим IP адреса из этого набора правил в наш черный список ( описано в Части V пункт "12.3 Исключение правил проверок IP-адресов", а доменные имена - в набор данных и заблокируем их своим правилом. Это позволит нам использовать информацию, полученную из данного набора для защиты и в то же время сэкономить ресурсы при использовании такого большого набора правил.

Добавим определение нового набора данных в конфиг-файл suricata.yaml:

datasets:
  urlhaus:
    type: string
    state: urlhaus.b64
    hashsize: 8192

Создадим в файле /etc/suricata/rules/local.rules правила для блокировки доменов из правил «URLhaus»:

drop http any any -> any any (msg:"URLhaus HTTP Domain Block"; http.host; dataset:isset, urlhaus; sid:1000014; rev:1;)
drop tls any any -> any any (msg:"URLhaus TLS Domain Block"; tls.sni; dataset:isset, urlhaus; sid:1000015; rev:1;)

Проверим конфигурацию suricata:

sudo suricata -T --user suricata --group suricata

Создадим файл для списка доменов urlhaus, в который будем помещать строки доменов и использовать его для синхронизации:

sudo -u suricata -g suricata touch /var/lib/suricata/data/urlhaus.txt

Включим использование источника abuse.ch/urlhaus и обновим списки правил:

sudo -u suricata suricata-update enable-source abuse.ch/urlhaus
sudo -u suricata suricata-update --no-reload 

Убедимся, что новые правила выключены (закомментированы). Команда выведет не закомментированные правила:

grep "URLhaus" /var/lib/suricata/rules/suricata.rules | grep -vE "^#"

Используйте скрипт suricata_urlhaus для синхронизации набора данных со списками доменов, полученных из правил.

suricata_urlhaus
#!/usr/bin/bash
# 20260518
# В файле /var/lib/suricata/data/urlhaus.txt хранятся в текстовом формате
# имена доменов добавленных в dataset urlhaus по 1 имени на строку.
#
# Скрипт удаляет из набора данных urlhaus домены, которых нет
# во вновь полученном списке /tmp/blacklist/urlhaus_domains
# и записывает в набор данных urlhaus домены из нового списка,
# которых нет в текущем наборе данных (/var/lib/suricata/data/urlhaus.txt).
#

if ! /usr/bin/cmp -s /tmp/blacklist/urlhaus_domains /var/lib/suricata/data/urlhaus.txt; then

# Если это не первый запуск ( размер файла urlhaus.txt > 0 )
if [ -s /var/lib/suricata/data/urlhaus.txt ]; then
    # Читаем /var/lib/suricata/data/urlhaus.txt
    while read -r line; do
        # Если домена нет в новом списке /tmp/blacklist/urlhaus_domains
        # то удаляем его из набора и из файла.
        if ! /usr/bin/grep -qxF "$line" /tmp/blacklist/urlhaus_domains; then
        /usr/bin/suricatasc -c "dataset-remove urlhaus string `/usr/bin/echo -n $line | /usr/bin/base64`" > /dev/null
        /usr/bin/sed -i "/^$line$/d" /var/lib/suricata/data/urlhaus.txt
#       /usr/bin/echo "Удален домен $line"
        fi
    done < /var/lib/suricata/data/urlhaus.txt

    # Читаем /tmp/blacklist/urlhaus_domains
    while read -r line; do
        # Если домена нет в наборе данных /var/lib/suricata/data/urlhaus.txt
        # то добавляем его в набор и в файл.
        if ! /usr/bin/grep -qxF "$line" /var/lib/suricata/data/urlhaus.txt; then
        /usr/bin/suricatasc -c "dataset-add urlhaus string `/usr/bin/echo -n $line | /usr/bin/base64`" > /dev/null
        /usr/bin/echo "$line" >> /var/lib/suricata/data/urlhaus.txt
#       /usr/bin/echo "Добавлен домен $line"
        fi
    done < /tmp/blacklist/urlhaus_domains

else
# Если первый запуск, то записываем все домены из /tmp/blacklist/urlhaus_domains
# в набор urlhaus и в файл /var/lib/suricata/data/urlhaus.txt
    while read -r line; do
    /usr/bin/suricatasc -c "dataset-add urlhaus string `/usr/bin/echo -n $line | /usr/bin/base64`" > /dev/null
    /usr/bin/echo "$line" >> /var/lib/suricata/data/urlhaus.txt
    /usr/bin/echo "Добавлен домен $line"
    done < /tmp/blacklist/urlhaus_domains
fi

/usr/bin/sleep 1
# Записываем данные из набора urlhaus в файл, чтобы при некорректном
# завершении работы suricata данные не потерялись.
/usr/bin/suricatasc -c "dataset-dump urlhaus" > /dev/null

# Сортируем файл с именами доменов для удобства.
/usr/bin/sort /var/lib/suricata/data/urlhaus.txt -o /var/lib/suricata/data/urlhaus.txt

# Итоговый вывод
/usr/bin/echo "Набор urlhaus содержит `/usr/bin/cat /var/lib/suricata/data/urlhaus.txt | /usr/bin/wc -l` доменов."
/usr/bin/echo ""

fi

Используйте новую версию скрипта suricata_ip_to_nft:

suricata_ip_to_nft
#!/usr/bin/bash
# 20260518
# примеры просмотра сета и таблицы:
# nft list set netdev filter blacklist | more
# nft list table netdev filter
# сколько блокировок было правилами @blacklist:
# nft list chain netdev filter ingress_wan; nft list chain netdev filter ingress_lan
# для работы скрипта требуются: dig, aggregate, grepcidr, proxychains4

URL_ET_CINS="https://cinsscore.com/list/ci-badguys.txt"
URL_SPAMHAUS="https://www.spamhaus.org/drop/drop_v4.json"
URL_ET_THREATVIEW="https://threatview.io/Downloads/High-Confidence-CobaltStrike-C2%20-Feeds.txt"
URL_ETN_AGGRESSIVE="https://security.etnetera.cz/feeds/etn_aggressive.txt"
# конфиг сета blacklist
BLACKLIST_CONF="/etc/nftables/blacklist.conf"
# содержимое сета blacklist
BLACKLIST_IP="/etc/nftables/blacklist.ip"
OUT_DIR="/tmp/blacklist"

sudo -u suricata /usr/bin/suricata-update -q > /dev/null

if [ -d "$OUT_DIR" ]; then
  /usr/bin/rm -f $OUT_DIR/*
else
/usr/bin/mkdir $OUT_DIR
fi

# получаем ip адреса, содержащиеся в правилах "ET CINS", с $URL_ET_CINS
/usr/bin/curl --connect-timeout 10 --max-time 60 -Ls $URL_ET_CINS -o $OUT_DIR/et_cins
if [ ! -s "$OUT_DIR/et_cins" ]; then
    /usr/bin/echo "Пиндосы не отдают данные с cinsscore.com. Получаю ip адреса из правил."
    /usr/bin/grep 'msg:"ET CINS ' /var/lib/suricata/rules/suricata.rules | /usr/bin/grep -Po '\[\K[^\]]+' | /usr/bin/tr ',' '\n' > $OUT_DIR/et_cins
fi

# получаем ip адреса из правил "ET CNС"
/usr/bin/grep 'msg:"ET CNC ' /var/lib/suricata/rules/suricata.rules | /usr/bin/grep -Po -- '->\s+\[?\K[^\]\s]+' > $OUT_DIR/et_cnc

# получаем ip адреса из правил "ET COMPROMISED"
/usr/bin/grep 'msg:"ET COMPROMISED ' /var/lib/suricata/rules/suricata.rules | /usr/bin/grep -Po '\[\K[^\]]+' | /usr/bin/tr ',' '\n' > $OUT_DIR/et_compromised

# получаем диапазоны ip адресов, содержащиеся в правилах "ET DROP", со www.spamhaus.org
/usr/bin/curl --connect-timeout 10 --max-time 60 -Ls $URL_SPAMHAUS -o $OUT_DIR/drop_v4.json
if [ ! -s "$OUT_DIR/drop_v4.json" ]; then
    /usr/bin/echo "Пиндосы не отдают данные со spamhaus.org. Получаю диапазоны сетей из правил."
    /usr/bin/grep 'msg:"ET DROP ' /var/lib/suricata/rules/suricata.rules | /usr/bin/grep -Po '\[\K[^\]]+' | /usr/bin/tr ',' '\n' > $OUT_DIR/et_drop.txt
else
/usr/bin/jq -r 'select(.cidr != null) | .cidr' "$OUT_DIR/drop_v4.json" > $OUT_DIR/et_drop.txt
fi

# получаем ip адреса, содержащиеся в правилах "ETN AGGRESSIVE", с $URL_ETN_AGGRESSIVE
/usr/bin/curl --connect-timeout 10 --max-time 60 -Ls $URL_ETN_AGGRESSIVE -o $OUT_DIR/etn_aggressive.txt
if [ ! -s "$OUT_DIR/etn_aggressive.txt" ]; then
    /usr/bin/echo "Пиндосы не отдают данные с etnetera.cz. Получаю ip адреса из правил."
    /usr/bin/grep 'msg:"ETN AGGRESSIVE ' /var/lib/suricata/rules/suricata.rules | /usr/bin/grep -Po '\[\K[^\]]+' | /usr/bin/tr ',' '\n' | /usr/bin/grep -v ":" > $OUT_DIR/etn_aggressive
else
/usr/bin/cat $OUT_DIR/etn_aggressive.txt | /usr/bin/grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' > $OUT_DIR/etn_aggressive
fi

# получаем списки известных вредоносных ip адресов, содержащихся в правилах "ET Threatview.io", с $URL_ET_THREATVIEW
# нужен рабочий прокси, т.к. не отдают для России напрямую.
/usr/bin/proxychains4 -q /usr/bin/curl --connect-timeout 10 --max-time 60 -Ls $URL_ET_THREATVIEW -o $OUT_DIR/et_threatview.txt

if [ ! -s "$OUT_DIR/et_threatview.txt" ]; then
    /usr/bin/echo "Пиндосы не отдают данные с threatview.io. Получаю ip адреса из правил."
    /usr/bin/grep 'msg:"ET Threatview.io ' /var/lib/suricata/rules/suricata.rules | /usr/bin/grep -Po '\[\K[^\]]+' | /usr/bin/tr ',' '\n' > $OUT_DIR/et_threatview
else
    # обрабатываем файл со списками ip адресов от "ET THREATVIEW"
#    /usr/bin/echo "Обрабатываю сложный файл со списками ip адресов от \"ET THREATVIEW\". ЖДИТЕ!!!"
    /usr/bin/grep -v '^#' $OUT_DIR/et_threatview.txt | /usr/bin/cut -d',' -f1 | while read -r host; do
        if [[ $host =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
            /usr/bin/echo "$host"
        else
            # Резолвим домен, берем только IPv4 и подавляем ошибки, если домен сдох
            /usr/bin/dig @8.8.8.8 +short A "$host" 2>/dev/null
        fi
    done | /usr/bin/grep -E '^[0-9.]+$' >> $OUT_DIR/et_threatview
fi

# Получаем значения http.host из правил "URLhaus"
/usr/bin/grep "URLhaus Known malware download URL" /var/lib/suricata/rules/suricata.rules | /usr/bin/grep -Po 'http.host; content:"\K[^"]+' | /usr/bin/sort -u > $OUT_DIR/urlhaus.txt
# Выделяем IP-адреса
/usr/bin/cat $OUT_DIR/urlhaus.txt | /usr/bin/grep -E '^[0-9.]+$|^[0-9a-f:]+$' > $OUT_DIR/urlhaus
# Выделяем доменные имена
/usr/bin/cat $OUT_DIR/urlhaus.txt | /usr/bin/grep -vE '^[0-9.]+$|^[0-9a-f:]+$' > $OUT_DIR/urlhaus_domains

# убираем пересекающиеся диапазоны сетей из списка www.spamhaus.org
/usr/bin/cat $OUT_DIR/et_drop.txt | /usr/bin/aggregate -p 32 -m 32 -o 32 -t -q > $OUT_DIR/et_drop

# собираем все ip адреса в один файл
/usr/bin/cat $OUT_DIR/et_cins $OUT_DIR/et_cnc $OUT_DIR/et_compromised $OUT_DIR/etn_aggressive $OUT_DIR/et_threatview $OUT_DIR/urlhaus > $OUT_DIR/blacklist.txt

# сортируем и избавляемся от дубликатов
/usr/bin/cat $OUT_DIR/blacklist.txt | /usr/bin/sort -h | /usr/bin/sort -u  > $OUT_DIR/blacklist_sort

# находим ip адреса непринадлежащие диапазонам сетей от www.spamhaus.org
/usr/bin/grepcidr -v -f $OUT_DIR/et_drop $OUT_DIR/blacklist_sort > $OUT_DIR/blacklist

# добавляем адреса сетей к тем адресам, которые не принадлежат данным сетям
/usr/bin/cat $OUT_DIR/et_drop >> $OUT_DIR/blacklist

# выводим адреса в конфиг-файл set-а nftables
/usr/bin/echo "elements = {" > "$BLACKLIST_IP"
/usr/bin/cat $OUT_DIR/blacklist | /usr/bin/sed 's/$/,/' >> "$BLACKLIST_IP"
/usr/bin/sed -i '$ s/,$//' "$BLACKLIST_IP"
/usr/bin/echo "}" >> "$BLACKLIST_IP"

# проверяем корректность набора blacklist
if ! /usr/sbin/nft -c -f "$BLACKLIST_CONF" 2>"$OUT_DIR/nft_error.log"; then
    /usr/bin/echo "Ошибка при проверке набора blacklist! Выход."
    /usr/bin/cat $OUT_DIR/nft_error.log
    exit
fi

/usr/bin/echo -n `/usr/bin/date +"%d.%m.%Y %H:%M:%S"` "Загружаю новые данные в набор blacklist."

/usr/sbin/nft flush set netdev filter blacklist
if ! /usr/sbin/nft -f "$BLACKLIST_CONF" 2>"$OUT_DIR/nft_error.log"; then
    /usr/bin/echo " Ошибка! Выход."
    /usr/bin/cat $OUT_DIR/nft_error.log
    exit
fi
/usr/bin/echo " Успех!"
/usr/bin/echo "Всего загружено" `/usr/bin/cat $OUT_DIR/blacklist | /usr/bin/wc -l` "элементов (адресов и диапазонов сетей)."

# удаляем промежуточные результаты
#/usr/bin/rm -rf $OUT_DIR

# Изменяем dataset urlhaus в соответствии с новыми данными
/root/scripts/#!/usr/bin/bash
# 20260512
# примеры просмотра сета и таблицы:
# nft list set netdev filter blacklist | more
# nft list table netdev filter
# сколько блокировок было правилами @blacklist:
# nft list chain netdev filter ingress_wan; nft list chain netdev filter ingress_lan
# для работы скрипта требуются: dig, aggregate, grepcidr, proxychains4

URL_ET_CINS="https://cinsscore.com/list/ci-badguys.txt"
URL_SPAMHAUS="https://www.spamhaus.org/drop/drop_v4.json"
URL_ET_THREATVIEW="https://threatview.io/Downloads/High-Confidence-CobaltStrike-C2%20-Feeds.txt"
URL_ETN_AGGRESSIVE="https://security.etnetera.cz/feeds/etn_aggressive.txt"
# конфиг сета blacklist
BLACKLIST_CONF="/etc/nftables/blacklist.conf"
# содержимое сета blacklist
BLACKLIST_IP="/etc/nftables/blacklist.ip"
OUT_DIR="/tmp/blacklist"

sudo -u suricata /usr/bin/suricata-update -q > /dev/null

if [ -d "$OUT_DIR" ]; then
  /usr/bin/rm -f $OUT_DIR/*
else
/usr/bin/mkdir $OUT_DIR
fi

# получаем ip адреса, содержащиеся в правилах "ET CINS", с $URL_ET_CINS
/usr/bin/curl --connect-timeout 10 --max-time 60 -Ls $URL_ET_CINS -o $OUT_DIR/et_cins
if [ ! -s "$OUT_DIR/et_cins" ]; then
    /usr/bin/echo "Пиндосы не отдают данные с cinsscore.com. Получаю ip адреса из правил."
    /usr/bin/grep 'msg:"ET CINS ' /var/lib/suricata/rules/suricata.rules | /usr/bin/grep -Po '\[\K[^\]]+' | /usr/bin/tr ',' '\n' > $OUT_DIR/et_cins
fi

# получаем ip адреса из правил "ET CNС"
/usr/bin/grep 'msg:"ET CNC ' /var/lib/suricata/rules/suricata.rules | /usr/bin/grep -Po -- '->\s+\[?\K[^\]\s]+' > $OUT_DIR/et_cnc

# получаем ip адреса из правил "ET COMPROMISED"
/usr/bin/grep 'msg:"ET COMPROMISED ' /var/lib/suricata/rules/suricata.rules | /usr/bin/grep -Po '\[\K[^\]]+' | /usr/bin/tr ',' '\n' > $OUT_DIR/et_compromised

# получаем диапазоны ip адресов, содержащиеся в правилах "ET DROP", со www.spamhaus.org
/usr/bin/curl --connect-timeout 10 --max-time 60 -Ls $URL_SPAMHAUS -o $OUT_DIR/drop_v4.json
if [ ! -s "$OUT_DIR/drop_v4.json" ]; then
    /usr/bin/echo "Пиндосы не отдают данные со spamhaus.org. Получаю диапазоны сетей из правил."
    /usr/bin/grep 'msg:"ET DROP ' /var/lib/suricata/rules/suricata.rules | /usr/bin/grep -Po '\[\K[^\]]+' | /usr/bin/tr ',' '\n' > $OUT_DIR/et_drop.txt
else
/usr/bin/jq -r 'select(.cidr != null) | .cidr' "$OUT_DIR/drop_v4.json" > $OUT_DIR/et_drop.txt
fi

# получаем ip адреса, содержащиеся в правилах "ETN AGGRESSIVE", с $URL_ETN_AGGRESSIVE
/usr/bin/curl --connect-timeout 10 --max-time 60 -Ls $URL_ETN_AGGRESSIVE -o $OUT_DIR/etn_aggressive.txt
if [ ! -s "$OUT_DIR/etn_aggressive.txt" ]; then
    /usr/bin/echo "Пиндосы не отдают данные с etnetera.cz. Получаю ip адреса из правил."
    /usr/bin/grep 'msg:"ETN AGGRESSIVE ' /var/lib/suricata/rules/suricata.rules | /usr/bin/grep -Po '\[\K[^\]]+' | /usr/bin/tr ',' '\n' | /usr/bin/grep -v ":" > $OUT_DIR/etn_aggressive
else
/usr/bin/cat $OUT_DIR/etn_aggressive.txt | /usr/bin/grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' > $OUT_DIR/etn_aggressive
fi

# получаем списки известных вредоносных ip адресов, содержащихся в правилах "ET Threatview.io", с $URL_ET_THREATVIEW
# нужен рабочий прокси, т.к. не отдают для России напрямую.
/usr/bin/proxychains4 -q /usr/bin/curl --connect-timeout 10 --max-time 60 -Ls $URL_ET_THREATVIEW -o $OUT_DIR/et_threatview.txt

if [ ! -s "$OUT_DIR/et_threatview.txt" ]; then
    /usr/bin/echo "Пиндосы не отдают данные с threatview.io. Получаю ip адреса из правил."
    /usr/bin/grep 'msg:"ET Threatview.io ' /var/lib/suricata/rules/suricata.rules | /usr/bin/grep -Po '\[\K[^\]]+' | /usr/bin/tr ',' '\n' > $OUT_DIR/et_threatview
else
    # обрабатываем файл со списками ip адресов от "ET THREATVIEW"
#    /usr/bin/echo "Обрабатываю сложный файл со списками ip адресов от \"ET THREATVIEW\". ЖДИТЕ!!!"
    /usr/bin/grep -v '^#' $OUT_DIR/et_threatview.txt | /usr/bin/cut -d',' -f1 | while read -r host; do
        if [[ $host =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
            /usr/bin/echo "$host"
        else
            # Резолвим домен, берем только IPv4 и подавляем ошибки, если домен сдох
            /usr/bin/dig @8.8.8.8 +short A "$host" 2>/dev/null
        fi
    done | /usr/bin/grep -E '^[0-9.]+$' >> $OUT_DIR/et_threatview
fi

# Получаем значения http.host из правил "URLhaus"
/usr/bin/grep "URLhaus Known malware download URL" /var/lib/suricata/rules/suricata.rules | /usr/bin/grep -Po 'http.host; content:"\K[^"]+' | /usr/bin/sort -u > $OUT_DIR/urlhaus.txt
# Выделяем IP-адреса
/usr/bin/cat $OUT_DIR/urlhaus.txt | /usr/bin/grep -E '^[0-9.]+$|^[0-9a-f:]+$' > $OUT_DIR/urlhaus
# Выделяем доменные имена
/usr/bin/cat $OUT_DIR/urlhaus.txt | /usr/bin/grep -vE '^[0-9.]+$|^[0-9a-f:]+$' > $OUT_DIR/urlhaus_domains

# убираем пересекающиеся диапазоны сетей из списка www.spamhaus.org
/usr/bin/cat $OUT_DIR/et_drop.txt | /usr/bin/aggregate -p 32 -m 32 -o 32 -t -q > $OUT_DIR/et_drop

# собираем все ip адреса в один файл
/usr/bin/cat $OUT_DIR/et_cins $OUT_DIR/et_cnc $OUT_DIR/et_compromised $OUT_DIR/etn_aggressive $OUT_DIR/et_threatview $OUT_DIR/urlhaus > $OUT_DIR/blacklist.txt

# сортируем и избавляемся от дубликатов
/usr/bin/cat $OUT_DIR/blacklist.txt | /usr/bin/sort -h | /usr/bin/sort -u  > $OUT_DIR/blacklist_sort

# находим ip адреса непринадлежащие диапазонам сетей от www.spamhaus.org
/usr/bin/grepcidr -v -f $OUT_DIR/et_drop $OUT_DIR/blacklist_sort > $OUT_DIR/blacklist

# добавляем адреса сетей к тем адресам, которые не принадлежат данным сетям
/usr/bin/cat $OUT_DIR/et_drop >> $OUT_DIR/blacklist

# выводим адреса в конфиг-файл set-а nftables
/usr/bin/echo "elements = {" > "$BLACKLIST_IP"
/usr/bin/cat $OUT_DIR/blacklist | /usr/bin/sed 's/$/,/' >> "$BLACKLIST_IP"
/usr/bin/sed -i '$ s/,$//' "$BLACKLIST_IP"
/usr/bin/echo "}" >> "$BLACKLIST_IP"

# проверяем корректность набора blacklist
if ! /usr/sbin/nft -c -f "$BLACKLIST_CONF" 2>"$OUT_DIR/nft_error.log"; then
    /usr/bin/echo "Ошибка при проверке набора blacklist! Выход."
    /usr/bin/cat $OUT_DIR/nft_error.log
    exit
fi

/usr/bin/echo -n `/usr/bin/date +"%d.%m.%Y %H:%M:%S"` "Загружаю новые данные в набор blacklist."

/usr/sbin/nft flush set netdev filter blacklist
if ! /usr/sbin/nft -f "$BLACKLIST_CONF" 2>"$OUT_DIR/nft_error.log"; then
    /usr/bin/echo " Ошибка! Выход."
    /usr/bin/cat $OUT_DIR/nft_error.log
    exit
fi
/usr/bin/echo " Успех!"
/usr/bin/echo "Всего загружено" `/usr/bin/cat $OUT_DIR/blacklist | /usr/bin/wc -l` "элементов (адресов и диапазонов сетей)."

# удаляем промежуточные результаты
#/usr/bin/rm -rf $OUT_DIR

# Изменяем dataset urlhaus в соответствии с новыми данными
/root/scripts/suricata_urlhaus

Измените путь к файлу suricata_urlhaus в последней строке скрипта.

Перезапустите suricata:

sudo systemctl restart suricata

Подождите пока suricata перезагрузится и выполните скрипт suricata_ip_to_nft, предварительно проверив, что запуск скрипта не произойдет во время его работы при запуске изcrontab.

sudo crontab -l
sudo /root/scripts/suricata_ip_to_nft

Для проверки выберите из файла /var/lib/suricata/data/urlhaus.txt домен, IP адрес которого распознается (если у домена нет IP адреса, то и не будет попытки установить с ним соединение). В браузере обратитесь к нему по протоколу http, например: http://zycdjz.com Тогда в evebox вы увидите блокировку с пояснением «URLhaus Domain Block».

Примеры работы с набором данных описаны в Части V пункте "12.2 Исключение доверенных сайтов из проверок".

14.2 Использование остальных необходимых правил.

Существует 2 способа включения правил:

  1. Отключить все правила, добавлять только нужные. Лучший способ для начала работы с правилами. Позволяет подключать любые источники, разбираться с назначением правил и отлаживать фильтры включения не беспокоясь о том как это скажется на общем списке правил — правила не будут включены до тех пор, пока вы не укажете необходимый шаблон соответствия в файле /etc/suricata/enable.conf.

  2. Отключать только неиспользуемые правила. Все остальные правила будут активны и загружены в suricata. Позволяет более гибко управлять включением правил. Дело в том, что составители списка правил предоставляют свои списки с некоторыми отключенными правилами. Например, они могут отключить правила содержащие обнаружения: старых протоколов обмена данными p2p, которыми уже никто не пользуется; древних уязвимостей, к которым давным-давно уже вышли патчи и поэтому уже нет возможности ими воспользоваться; сигнатуры древних вирусов, которые уже содержит любой антивирус и т.д. И если вы укажете, например, шаблон включения 're:ET P2P' для enable.conf, то все правила данной группы будут включены. А если не укажете, то по умолчанию будут включены только те правила, которые включили разработчики.

Рассмотрим использование правил на основе первого способа. Для отключения всех правил добавим в файл /etc/suricata/disable.confнеобходимый шаблон:

re:.*

Будем использовать необходимые нам источники правил: et/open, etnetera/aggressive, abuse.ch/urlhaus, abuse.ch/sslbl-blacklist, abuse.ch/sslbl-ja3. Посмотрите какие источники правил используются у вас сейчас и включите недостающие:

sudo -u suricata suricata-update list-sources --enabled
sudo -u suricata suricata-update enable-source abuse.ch/sslbl-blacklist
sudo -u suricata suricata-update enable-source abuse.ch/sslbl-ja3

Предполагается, что вы выполнили пункт "12.3 Исключение правил проверок IP-адресов" Части V и пункт "14.1 Использование правил источника 'abuse.ch/urlhaus'" текущей части. Поэтому использованные наборы правил не должны быть активны. В файле /etc/suricata/enable.confвключим только необходимые нам правила:

enable.conf
# enable.conf

# Включаем правила от разработчиков suricata
# Не ставьте их в 'drop'
re:.*\(msg:\"SURICATA

# 1.
# 1.1 Для предотвращения вторжений из вне
#========================================
re:SSLBL: Malicious SSL certificate detected
re:ET JA3
re:ET CURRENT_EVENTS
re:ET MALWARE
re:ET WEB_CLIENT
re:ET DNS
re:ET TA_ABUSED_SERVICES
re:ET PHISHING

# Для правил из "abuse.ch/sslbl-ja3" не вошедших в "ET JA3".
re:\bsid:(906200002|906200003|906200006|906200008|906200009|906200013|906200017|906200018|906200022);
re:\bsid:(906200024|906200027|906200028|906200029|906200030|906200033|906200038|906200045|906200048);
re:\bsid:(906200049|906200051|906200053|906200054|906200055|906200056|906200057|906200061|906200068);
re:\bsid:(906200069|906200070|906200071|906200072|906200073|906200074|906200075|906200076|906200077);
re:\bsid:(906200078|906200079|906200080|906200081|906200082|906200083|906200084|906200085|906200086);
re:\bsid:(906200087|906200088|906200089|906200090|906200091|906200092|906200093|906200095|906200096);

# 1.2 Для предотвращения закрепления и блокировки возможности работы из локальной сети
#=====================================================================================
re:ET ATTACK_RESPONSE
re:ET EXPLOIT_KIT
re:ET DYN_DNS
re:ET MOBILE_MALWARE
re:ET USER_AGENTS
re:ET SMTP
re:ET SNMP
re:ET TELNET
re:ET TFTP

# Для правил "ET DOS": клиенты локальной сети -> внешняя сеть.
re:ET DOS Possible NTP DDoS
re:ET DOS Likely NTP DDoS
re:ET DOS DNS Amplification Attack
re:ET DOS User-Agent used in known DDoS Attacks
re:\bsid:(2018977|2011511|2011512|2014141|2014385|2014384);
re:\bsid:(2034095|2034096|2025402|2009701|2012048|2012050|2021170);

# Для "ET EXPLOIT": 'any * -> any *' и '$HOME_NET * -> * *'
re:^\w+\s+\w+\s+any\s+\w+\s+->\s+any\s+\w+\s+\(msg:\"ET EXPLOIT
re:^\w+\s+\w+\s+\$HOME_NET\s+\w+\s+->\s+\w+\s+\w+\s+\(msg:\"ET EXPLOIT

# Для "ET FTP":
# ET FTP USER login flowbit
re:2002850
# ET FTP Outbound Java Anonymous FTP Login
re:2016687
# ET FTP Vulnerable WS_FTP Version in FTP Banner Response (CVE-2023-40044)
re:2048464

# 2. Для блокировки работы нежелательных программ, обеспечения гигиены сети
#==========================================================================
re:ET ADWARE_PUP
re:ET COINMINER
re:ET GAMES
re:ET P2P
re:ET FILE_SHARING
re:ET REMOTE_ACCESS

В файле /etc/suricata/drop.confукажем наборы правил для которых действие в правилах изменится на 'drop':

drop.conf
# drop.conf

# 1.
# 1.1 Для предотвращения вторжений из вне
#========================================
re:SSLBL
re:ET JA3
re:ET CURRENT_EVENTS
re:ET MALWARE
re:ET WEB_CLIENT
re:ET DNS
re:ET TA_ABUSED_SERVICES
re:ET PHISHING

# 1.2 Для предотвращения закрепления и блокировки возможности работы из локальной сети
#=====================================================================================
re:ET ATTACK_RESPONSE
re:ET EXPLOIT_KIT
re:ET DYN_DNS
re:ET MOBILE_MALWARE
re:ET USER_AGENTS
re:ET DOS
re:ET EXPLOIT
re:ET FTP
re:ET SMTP
re:ET SNMP
re:ET TELNET
re:ET TFTP

# 2. Для блокировки работы нежелательных программ, обеспечения гигиены сети
#==========================================================================
re:ET ADWARE_PUP
re:ET COINMINER
re:ET GAMES
re:ET P2P

Окончательная настройка списка правил производится в файле /etc/suricata/modify.conf:

modify.conf
# suricata-update - modify.conf

# Отключаем неиспользуемые протоколы:
re:"^\w+\s+(ipv6|rdp|smb)\b" "^" "#"

# Отключаем блокировку телеметрии
# ET JA3 Hash - Possible SoftEther Windows Client SSTP Traffic
re:2068224 "^drop" "alert"

# $HOME_NET any -> $HOME_NET 42 "ET EXPLOIT Possible WINS Server Remote Memory Corruption Vulnerability"
re:2024435 "^" "#"

В конфиг-файле /etc/suricata/suricata.yaml включаем парсеры протоколов ftp, smtp, snmp, ssh, telnet, tftp:

app-layer:
  protocols:
    ftp: { enabled: yes }
    smtp: { enabled: yes, mime: { decode-mime: yes } }
    snmp: { enabled: yes }
    ssh: { enabled: yes }
    telnet: { enabled: yes }
    tftp: { enabled: yes }
 

Проверяем конфигурацию suricata:

sudo suricata -T --user suricata --group suricata

Если ошибок нет, то запускаем suricata-update:

sudo -u suricata suricata-update

В результате ее работы итоговый список правил будет модифицирован в соответствии с шаблонами в файлах: disable.conf, enable.conf, drop.conf, modify.conf (именно в таком порядке). Итоговый список правил будет протестирован и, при отсутствии ошибок, загружен в suricata. В выводе команды будет указано сколько правил загружено для использования (enabled):

 Writing rules to /var/lib/suricata/rules/suricata.rules: total: 109304; enabled: 55086;

Если вы решите изменить один из файлов disable.conf, enable.conf, drop.conf, modify.conf,то для отладки изменений используйте команду:

sudo -u suricata suricata-update --no-reload --offline --force

Если текущего набора правил вам не хватает для решения какой-либо задачи, то, прежде чем что-либо изобретать, проанализируйте возможности набора «ET INFO» и протоколы nDPI.

Некоторые правила содержат переменные, например ‘$HTTP_SERVERS’. Для работы таких правил необходимо, чтобы эти переменные были установлены.

Правила с ‘flowbits:set’ не переводятся в drop и не выключаются с помощью disable.conf или modify.conf.

Для отключения единичных правил или перевода их в алерт используйте примеры описанные в modify.conf.

Некоторые правила не получается выключить с помощью disable.conf или с помощью modify.conf.

15. Пример конфиг-файла suricata.yaml

Формат получился необычный, но это единственный способ уменьшить количество строк.

suricata.yaml
%YAML 1.1
---
# Создан на основе v8.0.4
suricata-version: "8.0"
vars:
  address-groups:
    HOME_NET: "192.168.124.0/24"
    EXTERNAL_NET: "!$HOME_NET"
    HTTP_SERVERS: "$HOME_NET"
    SMTP_SERVERS: "$HOME_NET"
    SQL_SERVERS: "$HOME_NET"
    DNS_SERVERS: "$HOME_NET"
    TELNET_SERVERS: "$HOME_NET"
    AIM_SERVERS: "$EXTERNAL_NET"
    DC_SERVERS: "$HOME_NET"
    DNP3_SERVER: "$HOME_NET"
    DNP3_CLIENT: "$HOME_NET"
    MODBUS_CLIENT: "$HOME_NET"
    MODBUS_SERVER: "$HOME_NET"
    ENIP_CLIENT: "$HOME_NET"
    ENIP_SERVER: "$HOME_NET"
  port-groups:
    HTTP_PORTS: "80,3128"
    SHELLCODE_PORTS: "!80"
    ORACLE_PORTS: 1521
    SSH_PORTS: 22
    DNP3_PORTS: 20000
    MODBUS_PORTS: 502
    FILE_DATA_PORTS: "$HTTP_PORTS,110,143"
    FTP_PORTS: 21
    GENEVE_PORTS: 6081
    VXLAN_PORTS: 4789
    TEREDO_PORTS: 3544
stats: { enabled: yes, interval: 15 }
default-log-dir: /var/log/suricata/
pid-file: /run/suricata/suricata.pid
daemon-directory: /run/suricata/
packet-alert-max: 5
unix-command:
  enabled: yes
  filename: /run/suricata/suricata-command.socket
nfq: { mode: accept, batchcount: 20, fail-open: no }
max-pending-packets: 1024
default-packet-size: 1514
runmode: workers
threading:
  stack-size: 8 MiB
  set-cpu-affinity: no
  autopin: yes
host-mode: router
mpm-algo: hs
spm-algo: hs
detect:
  profile: low
  sgh-mpm-caching: yes
  sgh-mpm-caching-path: /var/lib/suricata/cache/hs
  sgh-mpm-caching-max-age: 7d
  sgh-mpm-context: auto
  custom-values: { toclient-groups: 3, toserver-groups: 25 }
  prefilter: { default: auto }
  inspection-recursion-limit: 3000
  stream-tx-log-limit: 4
  guess-applayer-tx: no
  delayed-detect: no
  prefilter: { default: auto }
  grouping:
    tcp-priority-ports: 53, 80, 443, 3128
    udp-priority-ports: 53
  thresholds: { hash-size: 16384, memcap: 16mb }
  profiling:
    grouping:
      dump-to-disk: false
      include-rules: false
      include-mpm-stats: false
plugins:
  - /usr/lib/suricata/ndpi.so:
      enabled: yes
outputs:
  - fast:
      enabled: yes
      filename: fast.log
      append: yes
  - eve-log:
      enabled: yes
      filetype: regular
      filename: eve.json
      threaded: false
      buffer-size: 0
      pcap-file: false
      community-id: false
      xff:
        enabled: yes
        mode: extra-data
        deployment: forward
        header: X-Forwarded-For
      types:
        - alert:
            enabled: yes
            payload: no
            packet: no
            http-body: no
            http-body-printable: no
            websocket-payload: no
            websocket-payload-printable: no
            tagged-packets: no
            metadata: yes
            metadata:
              app-layer: true
#              flow: true
        - anomaly:
            enabled: yes
            types:
              applayer: yes
        - drop: { enabled: yes, alerts: yes, flows: all }
        - files: { force-magic: no }
        - flow: { enabled: yes, metadata: yes }
        - frame: { enabled: no }
        - stats: { enabled: no }
        - bittorrent-dht: { enabled: yes }
        - dns: { enabled: yes }
        - http: { enabled: yes, extended: no }
        - http2: { enabled: yes, extended: no }
        - quic: { enabled: yes }
        - tls: { enabled: yes, extended: yes, session-resumption: yes }
        - websocket: { enabled: yes }
        - arp: { enabled: no }
        - dcerpc: { enabled: no }
        - dhcp: { enabled: no }
        - dnp3: { enabled: no }
        - doh2: { enabled: no }
        - ftp: { enabled: no }
        - ike: { enabled: no }
        - krb5: { enabled: no }
        - ldap: { enabled: no }
        - mdns: { enabled: no }
        - mqtt: { enabled: no }
        - nfs: { enabled: no }
        - ntp: { enabled: no }
        - pop3: { enabled: no }
        - pgsql: { enabled: no }
        - rdp: { enabled: no }
        - rfb: { enabled: no }
        - sip: { enabled: no }
        - smb: { enabled: no }
        - smtp: { enabled: no }
        - snmp: { enabled: no }
        - ssh: { enabled: yes }
        - tftp: { enabled: no }
  - alert-debug: { enabled: no }
  - file-store: { enabled: no }
  - http-body-data: { enabled: no }
  - http-log: { enabled: no }
  - lua: { enabled: no }
  - tcp-data: { enabled: no }
  - tls-log: { enabled: no }
  - tls-store: { enabled: no }
  - pcap-log: { enabled: no }
  - stats: { enabled: no }
  - syslog: { enabled: no }
logging:
  default-log-level: notice
  default-output-filter:
  outputs:
  - console: { enabled: yes }
  - syslog: { enabled: no }
  - file: { enabled: yes, level: info, filename: suricata.log }
app-layer:
  error-policy: drop-packet
  protocols:
    bittorrent-dht: { enabled: yes }
    dns:
      enabled: yes
      tcp:
        enabled: yes
        detection-ports:
          dp: 53
      udp:
        enabled: yes
        detection-ports:
          dp: 53
    ftp: { enabled: yes }
    http:
      enabled: yes
      memcap: 100 MiB
      detection-ports:
        dp: 80, 3128
      libhtp:
         default-config:
           personality: IDS
           request-body-limit: 50kb
           response-body-limit: 50kb
           request-body-minimal-inspect-size: 32kb
           request-body-inspect-window: 4kb
           response-body-minimal-inspect-size: 40kb
           response-body-inspect-window: 16kb
           response-body-decompress-layer-limit: 2
           http-body-inline: auto
           swf-decompression:
             enabled: no
             type: both
             compress-depth: 100kb
             decompress-depth: 100kb
           double-decode-path: yes
           double-decode-query: yes
         server-config:
    http2: { enabled: yes, response-body-decompress-limit: 1mb, detection-ports: [ 80, 443, 3128 ] }
    proxy: { enabled: yes }
    quic: { enabled: yes }
    smtp: { enabled: yes, mime: { decode-mime: yes } }
    snmp: { enabled: yes }
    ssh: { enabled: yes }
    telnet: { enabled: yes }
    tftp: { enabled: yes }
    tls: { enabled: yes, detection-ports: [ 443, 3128 ] }
    websocket: { enabled: yes }
    dcerpc: { enabled: no }
    dhcp: { enabled: no }
    dnp3: { enabled: no }
    doh2: { enabled: no }
    enip: { enabled: no }
    ike: { enabled: no }
    imap: { enabled: no }
    krb5: { enabled: no }
    ldap:
      tcp: { enabled: no }
      udp: { enabled: no }
    mdns: { enabled: no }
    modbus: { enabled: no }
    mqtt: { enabled: no }
    nfs: { enabled: no }
    ntp: { enabled: no }
    pgsql: { enabled: no }
    pop3: {  enabled: no }
    rdp: { enabled: no }
    rfb: { enabled: no }
    sip: { enabled: no }
    smb: { enabled: no }
asn1-max-frames: 256
datasets:
  domains-wl:
    type: string
    state: domains_wl.b64
    hashsize: 4096
  urlhaus:
    type: string
    state: urlhaus.b64
    hashsize: 8192
security:
  limit-noproc: true
  landlock:
    enabled: yes
    directories:
      read:
        - /etc/suricata/
        - /usr/lib/
        - /usr/share/suricata/
        - /var/log/suricata/
        - /var/lib/suricata/rules
      write:
        - /var/log/suricata/
        - /var/lib/suricata/cache/
        - /run/suricata/
coredump: { max-dump: 0 }
legacy: { uricontent: enabled }
exception-policy: auto
engine-analysis: { rules-fast-pattern: yes, rules: yes }
pcre: { match-limit: 3500, match-limit-recursion: 1500 }
host-os-policy:
  bsd: []
  bsd-right: []
  old-linux: []
  linux: [192.168.124.13, 192.168.1.13]
  windows: [0.0.0.0/0]
  macos: []
  vista: []
  windows2k3: []
defrag:
  memcap: 32mb
  memcap-policy: drop-packet
  hash-size: 65536
  trackers: 65535
  max-frags: 65535
  prealloc: yes
  timeout: 60
flow:
  memcap: 128mb
  memcap-policy: drop-packet
  hash-size: 65536
  prealloc: 10000
  emergency-recovery: 30
vlan: { use-for-tracking: true }
livedev: { use-for-tracking: true }
flow-timeouts:
  default:
    new: 30
    established: 300
    closed: 0
    bypassed: 100
    emergency-new: 10
    emergency-established: 100
    emergency-closed: 0
    emergency-bypassed: 50
  tcp:
    new: 60
    established: 600
    closed: 60
    bypassed: 100
    emergency-new: 5
    emergency-established: 100
    emergency-closed: 10
    emergency-bypassed: 50
  udp:
    new: 30
    established: 300
    bypassed: 100
    emergency-new: 10
    emergency-established: 100
    emergency-bypassed: 50
  icmp:
    new: 30
    established: 300
    bypassed: 100
    emergency-new: 10
    emergency-established: 100
    emergency-bypassed: 50
stream:
  memcap: 64mb
  memcap-policy: drop-packet
  checksum-validation: yes
  prealloc-session: 2048
  midstream: true
  midstream-policy: ignore
  async-oneside: true
  inline: yes
  drop-invalid: yes
  max-syn-queued: 10
  max-synack-queued: 5
  bypass: no
  liberal-timestamps: true
  udp: { timeout: 15 }
  reassembly:
    memcap: 128mb
    memcap-policy: drop-flow
    depth: 256kb
    toserver-chunk-size: 2560
    toclient-chunk-size: 2560
    randomize-chunk-size: yes
    randomize-chunk-range: 10
    raw: yes
    segment-prealloc: 2048
    check-overlap-different-data: true
    max-regions: 8
host: { hash-size: 4096, prealloc: 1000, memcap: 32mb }
luajit: { states: 128 }
profiling:
  rules: { enabled: no }
  keywords: { enabled: no }
  prefilter: { enabled: no }
  rulegroups: { enabled: no }
  packets: { enabled: no, csv: { enabled: no } }
  locks: { enabled: no }
  pcap-log: { enabled: no }
decoder:
  teredo: { enabled: false }
  vxlan: { enabled: false }
  geneve: { enabled: false }
  recursion-level: { use-for-tracking: false }
default-rule-path: /var/lib/suricata/rules
rule-files:
  - /etc/suricata/rules/local.rules
  - /var/lib/suricata/rules/suricata.rules
classification-file: /var/lib/suricata/rules/classification.config
reference-config-file: /usr/share/suricata/reference.config
magic-file: /usr/lib/file/magic.mgc

Комментарии (1)


  1. slavius
    22.05.2026 13:13

    Спасибо за полезную и понятно изложенную информацию, собранную в одном месте.