Как настроить IPS (Intrusion Prevention System) на 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.
- Откройте vuurmuur_conf и в разделе Правила добавьте правило:
accept service any from any to any log
Изображение интерфейса с примером правила:
- Добавьте интерфейс в конфигурацию Vuurmuur: раздел Интерфейсы -> добавить интерфейс, в поле Device укажите eth0.
- Для корректной работы логирования Vuurmuur отредактируйте /etc/rsyslog.conf и добавьте строку:
*.debug /var/log/debug
Примените изменения перезапуском rsyslog:
service rsyslog restart
- Запустите Vuurmuur и включите автозапуск:
service vuurmuur start
systemctl enable vuurmuur.service
Откройте vuurmuur_conf → Logviewer и убедитесь, что трафик отображается:
Если трафик виден, переходите к передаче пакетов в Suricata.
Передача трафика в Suricata через NFQUEUE
Измените правило в Vuurmuur на передачу в NFQUEUE:
nfqueue service any from any to any
В интерфейсе правило выглядит так:
Нажмите «apply changes», чтобы обновить firewall. Лог-вьювер начнёт показывать передачу в 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.
- Откройте /etc/suricata/suricata.yaml и в секции stream установите inline: yes:
stream:
memcap: 32mb
checksum_validation: yes # reject wrong csums
inline: yes
- Убедитесь, что загружаются ваши правила, добавьте local.rules в список rule-files:
default-rule-path: /etc/suricata/rules/
rule-files:
- local.rules
- emerging-ftp.rules
- emerging-policy.rules
- Создайте файл /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;)
- Перезапустите 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 ...
Мини-методология развёртывания (шаги)
- Установите пакеты и скачайте правила.
- Запустите Suricata в IDS-режиме и проверьте логи.
- Настройте Vuurmuur и убедитесь, что трафик виден в логах Vuurmuur.
- Переведите правило на nfqueue и запустите Suricata, читающую очередь.
- Настройте inline в suricata.yaml и добавьте осторожные drop-правила в local.rules.
- Мониторинг: проверяйте 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)
- В Vuurmuur верните правило nfqueue обратно на accept либо временно отключите его.
- Перезапустите Suricata в режиме IDS или остановите сервис: service suricata stop.
- Верните изменения в suricata.yaml (inline: no) при необходимости.
Рекомендованная литература и дальнейшее чтение
- Suricata User Guide
- Управление правилами с oinkmaster
- Руководство пользователя Vuurmuur
Итог
Это руководство показывает базовый путь развертывания IPS на Fedora 17 с Vuurmuur и Suricata: от установки и тестирования в IDS-режиме до включения inline и добавления drop-правил. Основные принципы — тестировать перед блокировкой, мониторить производительность и иметь план отката.
Notes: планируйте тестирование нагрузки и анализ ложных срабатываний перед переводом в боевой режим.
Похожие материалы

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

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

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

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

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