Suricata и Snort - это системы обнаружения и предотвращения вторжений (IDS/IPS), которые используют сигнатуры для детектирования атак. Однако стандартные правила могут не покрывать все возможные угрозы, поэтому часто требуется писать собственные сигнатуры.
▪️ Основы сигнатур в Snort и Suricata. Сигнатура состоит из:
Заголовка (определяет тип трафика)
Опций (описывают условия срабатывания)
Пример базовой сигнатуры:
alert tcp any any -> any 80 (msg:"Possible Web Exploit"; content:"cmd="; nocase; sid:1000001; rev:1;)
alert - срабатывает как оповещение
tcp any any -> any 80 - трафик по TCP с любого IP и порта на любой IP, но только на порт 80
content:"cmd="; nocase; - ищет в пакете строку "cmd=", регистр не учитывается
sid:1000001; - уникальный ID сигнатуры
▪️ Создание кастомных правил. Пример обнаружения возможной атаки SQL Injection:
alert tcp any any -> any 80 (msg:"SQL Injection Attempt"; content:"UNION SELECT"; nocase; sid:1000002; rev:1;)
Если в HTTP-трафике будет найдено UNION SELECT, правило сработает.
Пример сигнатуры для обнаружения SSH-брутфорса (5 неудачных попыток за 60 секунд):
alert tcp any any -> any 22 (msg:"SSH Brute Force Attempt"; flags:S; threshold:type threshold, track by_src, count 5, seconds 60; sid:1000003; rev:1;)
▪️ Добавление сигнатур в Suricata. Открываем файл правил:
nano /etc/suricata/rules/custom.rules
Добавляем сигнатуры и обновляем конфигурацию:
suricata-update
Перезапускаем сервис:
systemctl restart suricata
▪️ Добавление правил в Snort. Открываем файл правил Snort:
nano /etc/snort/rules/local.rules
Добавляем сигнатуру и проверяем конфигурацию:
snort -T -c /etc/snort/snort.conf
Перезапускаем Snort:
systemctl restart snort
#network #security
🧑💻 NetworkAdmin