Гид по технологиям

Как настроить IPS (Intrusion Prevention System) на Fedora 17

5 min read Безопасность Обновлено 24 Sep 2025
Настройка IPS на Fedora 17
Настройка IPS на Fedora 17

Краткое описание и определения

  • Vuurmuur — менеджер брандмауэра для Linux с человеко-понятным синтаксисом правил; переводит правила в iptables и поддерживает логирование, просмотр логов и управление интерфейсами.
  • Suricata — сетевой IDS/IPS, многопоточный для высокой производительности; поддерживает режимы IDS и IPS, извлечение файлов из HTTP и обработку потоков.

Определения: IDS — система обнаружения вторжений (passive, не блокирует трафик). IPS — система предотвращения вторжений (inline, может блокировать/сбрасывать трафик).

Important: всегда сначала запускайте Suricata в IDS-режиме, чтобы убедиться, что правила и логирование работают корректно, прежде чем переводить в IPS и начинать блокировку трафика.

Что понадобитcя

  • Fedora 17 с доступом к репозиторию.
  • Интерфейс сети (например, eth0) для мониторинга/инспекции.
  • Права root для установки пакетов и изменения конфигурации.

Установка Vuurmuur и Suricata

Установите оба пакета через yum:

yum install suricata Vuurmuur-daemon Vuurmuur-tui

Запуск Suricata в режиме IDS (тестовый режим)

Поскольку IPS блокирует трафик при ошибках конфигурации, сначала тестируем пассивно.

Скачиваем бесплатные правила Emerging Threats, оптимизированные для Suricata, и размещаем их в /etc/suricata/rules/:

cd /etc/suricata/  
curl -O https://rules.emergingthreatspro.com/open/suricata/emerging.rules.tar.gz  
tar xzvf emerging.rules.tar.gz  
ln -s /etc/suricata/rules/reference.config /etc/suricata/reference.config  
ln -s /etc/suricata/rules/classification.config /etc/suricata/classification.config  
cp /etc/suricata/rules/suricata-1.2-prior-open.yaml /etc/suricata/suricata.yaml

Тестируем Suricata на интерфейсе eth0 с указанным конфигом:

suricata -c /etc/suricata/suricata.yaml -i eth0

Оставьте процесс на несколько минут и проверьте /var/log/suricata/stats.log и /var/log/suricata/http.log, чтобы подтвердить работу. Для генерации трафика откройте браузер и посетите сайты.

Подготовка Vuurmuur для передачи трафика в Suricata

Чтобы Suricata могла инспектировать трафик в inline-режиме, iptables должен передавать пакеты дальше через NFQUEUE. Для управления правилами используем Vuurmuur.

  1. Откройте vuurmuur_conf и в разделе Правила добавьте правило:
accept service any from any to any log

Изображение интерфейса с примером правила:

Правило Vuurmuur: accept service any from any to any log

  1. Добавьте интерфейс в конфигурацию Vuurmuur: раздел Интерфейсы -> добавить интерфейс, в поле Device укажите eth0.

Добавление интерфейса eth0 в Vuurmuur

  1. Для корректной работы логирования Vuurmuur отредактируйте /etc/rsyslog.conf и добавьте строку:
*.debug /var/log/debug

Примените изменения перезапуском rsyslog:

service rsyslog restart
  1. Запустите Vuurmuur и включите автозапуск:
service vuurmuur start
systemctl enable vuurmuur.service

Откройте vuurmuur_conf → Logviewer и убедитесь, что трафик отображается:

Просмотр логов трафика в Vuurmuur

Если трафик виден, переходите к передаче пакетов в Suricata.

Передача трафика в Suricata через NFQUEUE

Измените правило в Vuurmuur на передачу в NFQUEUE:

nfqueue service any from any to any

В интерфейсе правило выглядит так:

Правило Vuurmuur: nfqueue service any from any to any

Нажмите «apply changes», чтобы обновить firewall. Лог-вьювер начнёт показывать передачу в nfqueue:

Логи: пакеты передаются в NFQUEUE

Запустите Suricata в режиме, где она читает NFQUEUE (пример для очереди 0):

suricata -c /etc/suricata/suricata.yaml -q0

Откройте браузер и проверьте, что трафик проходит. Просматривайте /var/log/suricata/stats.log и /var/log/suricata/http.log для проверки работы.

Пример вывода stats.log и http.log (оставляем содержимое журналов как есть для диагностики):

-------------------------------------------------------------------
Date: 10/8/2012 -- 17:20:08 (uptime: 0d, 01h 39m 02s)
-------------------------------------------------------------------
Counter                   | TM Name                   | Value
-------------------------------------------------------------------
decoder.pkts              | Decode1                   | 3147
...
detect.alert              | Detect                    | 0
10/08/2012-17:24:02.447292 www.howtoforge.com [] / [] Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1 [] 192.168.122.48:48396 -> 188.40.16.205:80
...

Завершите процесс Suricata (Ctrl-C), затем настройте автоматический запуск через /etc/sysconfig/suricata:

# В /etc/sysconfig/suricata установите:
OPTIONS="-q 0 -D --pidfile /var/run/suricata.pid"

Запустите сервис и включите автозапуск:

service suricata start
systemctl enable suricata.service

Настройка блокировки (dropping)

По умолчанию правила Emerging Threats используют действие alert — они только предупреждают, но не блокируют. Чтобы Suricata блокировал трафик, включите inline stream reassembly и добавьте правила с drop.

  1. Откройте /etc/suricata/suricata.yaml и в секции stream установите inline: yes:
stream:
  memcap: 32mb
  checksum_validation: yes      # reject wrong csums
  inline: yes
  1. Убедитесь, что загружаются ваши правила, добавьте local.rules в список rule-files:
default-rule-path: /etc/suricata/rules/
rule-files:
 - local.rules
 - emerging-ftp.rules
 - emerging-policy.rules
  1. Создайте файл /etc/suricata/rules/local.rules с правилом, которое будет дропать доступ к facebook.com:
drop tcp any any -> any any (msg:"facebook is blocked"; content:"facebook.com"; http_header; nocase; classtype:policy-violation; sid:1;)
  1. Перезапустите Suricata и проверьте, что доступ к http://www.facebook.com/ таймаутится, а в /var/log/suricata/fast.log появляются записи о сбросах:
10/06/2012-11:40:49.018377  [Drop] [] [1:1:0] facebook is blocked [**] [Classification: Potential Corporate Privacy Violation] [Priority: 1] {TCP} 192.168.122.48:57113 -> 173.252.100.16:80
...

Мини-методология развёртывания (шаги)

  1. Установите пакеты и скачайте правила.
  2. Запустите Suricata в IDS-режиме и проверьте логи.
  3. Настройте Vuurmuur и убедитесь, что трафик виден в логах Vuurmuur.
  4. Переведите правило на nfqueue и запустите Suricata, читающую очередь.
  5. Настройте inline в suricata.yaml и добавьте осторожные drop-правила в local.rules.
  6. Мониторинг: проверяйте fast.log, stats.log, http.log, а также системные логи.

Роль‑ориентированные чеклисты

  • Системный администратор:
    • Установил пакеты и зависимости.
    • Настроил автозапуск служб и права доступа к логам.
  • Сетевой инженер:
    • Добавил интерфейс в Vuurmuur и проверил проход трафика.
    • Настроил NFQUEUE и протестировал латентность.
  • Безопасник/аналитик:
    • Проверил правила, настроил sid/классификацию, протестировал false positives.

Критерии приёмки

  • Suricata корректно запускается в IDS-режиме и записывает логи.
  • Vuurmuur отображает трафик и передаёт пакеты в NFQUEUE.
  • Suricata в inline-режиме видит и инспектирует трафик без существенной деградации (латентность в пределах допустимого для сети).
  • Drop-правила корректно блокируют тестовый трафик и логируются в fast.log.

Когда этот подход не подходит (ограничения)

  • TLS/HTTPS: без TLS-termination Suricata не видит содержимое HTTPS и не сможет блочить по содержимому.
  • Высоконагруженные сегменты сети: inline-IPS добавляет задержки и требует достаточного CPU/IO.
  • Сложные региональные правила/законодательство: блокировка трафика может нарушать внутренние правила или регуляции.

Альтернативные подходы

  • Snort вместо Suricata — зрелая система, большая база правил, но менее многопоточная.
  • Zeek (Bro) для пассивного мониторинга и сложного анализа трафика (не для inline-блокировок).
  • Использование специализированных аппаратных решений (NGFW) для высоконагруженных сетей.

Риски и смягчающие меры

  • Риск false positive → внедрять правила в IDS-режиме, иметь быстрый rollback-процесс.
  • Производительность → тестировать нагрузку и распределять Suricata на отдельные ядра/серверы.
  • Логирование и диск → обеспечить ротацию логов и мониторинг места на диске.

Тестовые сценарии и приёмо-сдаточные проверки

  • Тест 1: Запуск в IDS → убедиться, что http-запросы логируются в http.log.
  • Тест 2: Переключение на nfqueue → проверить, что Vuurmuur пересылает пакеты и Suricata их получает.
  • Тест 3: Включение inline + drop-правило → попытка доступа к тестовому ресурсу должна быть заблокирована и записана в fast.log.

Короткий план отката (rollback)

  1. В Vuurmuur верните правило nfqueue обратно на accept либо временно отключите его.
  2. Перезапустите Suricata в режиме IDS или остановите сервис: service suricata stop.
  3. Верните изменения в suricata.yaml (inline: no) при необходимости.

Рекомендованная литература и дальнейшее чтение

  • Suricata User Guide
  • Управление правилами с oinkmaster
  • Руководство пользователя Vuurmuur

Итог

Это руководство показывает базовый путь развертывания IPS на Fedora 17 с Vuurmuur и Suricata: от установки и тестирования в IDS-режиме до включения inline и добавления drop-правил. Основные принципы — тестировать перед блокировкой, мониторить производительность и иметь план отката.

Notes: планируйте тестирование нагрузки и анализ ложных срабатываний перед переводом в боевой режим.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как просмотреть и удалить историю просмотров YouTube
Конфиденциальность

Как просмотреть и удалить историю просмотров YouTube

Как читать и организовать комиксы на ПК
Чтение комиксов

Как читать и организовать комиксы на ПК

Как исправить ошибку «Something Went Wrong» в Prime Video
Техподдержка

Как исправить ошибку «Something Went Wrong» в Prime Video

Ответить на звонок не выходя из приложения
Android.

Ответить на звонок не выходя из приложения

Hazel Sky вылетает при запуске — исправление
Игры

Hazel Sky вылетает при запуске — исправление

Лучшие ресурсы по узлам — галстуки, рыбалка, походы
Обучение

Лучшие ресурсы по узлам — галстуки, рыбалка, походы