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

Тест фаервола с FTester: практическое руководство

5 min read Сетевая безопасность Обновлено 27 Nov 2025
Тест фаервола с FTester: руководство
Тест фаервола с FTester: руководство

Что такое FTester

FTester (Firewall Tester) — набор из двух Perl-скриптов: инжектора пакетов (ftest) и сниффера (ftestd). Инжектор посылает помеченные пакеты, сниффер ищет эти метки и пишет лог. Сравнение логов показывает, какие пакеты не дошли из-за правил фаервола или были изменены (например, NAT). Есть утилита freport для автоматического парсинга и отчёта.

Коротко:

  • ftest — генерирует тестовые пакеты по конфигурации (ftest.conf)
  • ftestd — прослушивает и фиксирует полученные пакеты
  • freport — сравнивает логи и выводит результат

Важно: для работы требуются низкоуровневые Perl-модули и права root для отправки/прослушивания «сырого» трафика.

Основные возможности

  • Тестирование правил фаервола
  • Тестирование IDS (включая stateful-inspection)
  • Эмуляция реальных TCP-соединений
  • Спуфинг соединений для stateful-файрволов
  • Фрагментация IP и сегментация TCP
  • Приёмы обхода IDS

Требования и установка модулей Perl

Необходимые модули:

  • Net::RawIP
  • Net::PcapUtils
  • NetPacket

Возможно понадобится Net::Pcap, так как Net::PcapUtils зависит от него. Если на машине установлен CPAN, то модули можно поставить из shell командой:

# perl -MCPAN -e "install Net::RawIP"

# perl -MCPAN -e "install Net::Pcap"

# perl -MCPAN -e "install Net::PcapUtils"

# perl -MCPAN -e "install NetPacket"

После успешной установки модулей можно переходить к загрузке и распаковке FTester.

Загрузка и распаковка

Скачать релиз (пример для версии 1.0):

# wget http://dev.inversepath.com/ftester/ftester-1.0.tar.gz

Распаковать:

# tar -xzf ftester-1.0.tar.gz

После распаковки появится папка ftester-1.0 со скриптами и примерами конфигурации.

Конфигурация ftest.conf — синтаксис и примеры

Файл конфигурации ftest.conf определяет какие пакеты отправлять. Основной синтаксис строк для TCP/UDP:

Source Address:Source Port:Destination Address:Destination Port:Flags:Protocol:Type of Service

Для ICMP:

Source Address:Source Port:Destination Address:Destination Port:Flags:ICMP:icmp_type:icmp_pre

Примеры строк:

# SYN packet to 10.1.7.1 port 80 
192.168.0.10:1024:10.1.7.1:80:S:TCP:0
# PSH,ACK reply from 192.168.0.10
192.168.0.10:20:10.1.7.1:1022:AP:TCP:22
# UDP packet
192.168.0.10:53:10.1.7.1:53::UDP:0
# ICMP packet type 3 pre 5
192.168.0.10::10.1.7.1:::ICMP:3:5

Поддерживаются диапазоны и CIDR для адресов и портов:

192.168.0.1-255:1024:10.1.7.1:22:S:TCP:0
192.168.0.1:1024:10.1.7.1:1-65535:S:TCP:0
192.168.0.1:1-1024:10.7.0.1:20-25:S:TCP:22
192.168.3.0/24:1-1024:10.7.0.1:20-25:S:TCP:0
192.168.0.0/22:1024:10.7.0.1:80:S:TCP:0

Stop signal

Чтобы сообщить ftestd, что тест завершён, добавьте стоп-сигнал:

stop_signal=192.168.0.1:666:10.1.7.1:666:S:TCP:

Stop signal может быть TCP, UDP или ICMP. После получения этого пакета ftestd завершит работу и не увидит пакеты, описанные после директивы stop_signal.

Практический пример ftest.conf (фрагмент)

# checking privileged ports (<1025)
192.168.0.10:1025:10.1.7.1:1-1025:S:TCP:0
# checking proxy port
192.168.0.10:1025:10.1.7.1:3128:S:TCP:0
stop_signal=192.168.0.10:80:10.1.7.1:1025:AP:TCP:0

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

Запуск теста — пошагово

  1. Выполните настройку и убедитесь, что модули Perl установлены.
  2. Запустите ftestd на хосте, который должен принимать пакеты (обычно с правами root):
# ./ftestd -i eth0
  1. На другой стороне запустите инжектор ftest с конфигом:
# ./ftest -f ftest.conf
  1. Скопируйте ftest.log и ftestd.log на одну машину и запустите freport:
# ./freport ftest.log ftestd.log

Пример вывода freport:

Authorized packets:
-------------------
21 - 192.168.0.10:1025 > 10.1.7.1:21 S TCP 0
22 - 192.168.0.10:1025 > 10.1.7.1:22 S TCP 0
23 - 192.168.0.10:1025 > 10.1.7.1:23 S TCP 0
25 - 192.168.0.10:1025 > 10.1.7.1:25 S TCP 0
80 - 192.168.0.10:1025 > 10.1.7.1:80 S TCP 0
110 - 192.168.0.10:1025 > 10.1.7.1:110 S TCP 0
113 - 192.168.0.10:1025 > 10.1.7.1:113 S TCP 0
1027 - 192.168.0.10:80 > 10.1.7.1:1025 PA TCP 0

Modified packets (probably NAT):
--------------------------------
443 - 192.168.0.10:1025 > 10.1.7.1:443 S TCP 0
443 - 192.168.0.10:1025 > 10.1.7.5:443 S TCP 0

Filtered or dropped packets:
----------------------------
1 - 192.168.0.10:1025 > 10.1.7.1:1 S TCP 0
2 - 192.168.0.10:1025 > 10.1.7.1:2 S TCP 0
3 - 192.168.0.10:1025 > 10.1.7.1:3 S TCP 0
...
...
...
1026 - 192.168.0.10:1025 > 10.1.7.1:3128 S TCP 0

Интерпретация результатов

  • Authorized packets — прошли через фаервол без изменений.
  • Modified packets — скорее всего NAT или изменение заголовков (следует проверить правила NAT и маршрутизацию).
  • Filtered or dropped packets — заблокированы правилами. Это и есть основной индикатор корректно работающих запрещающих правил.

Совет: при обнаружении неожиданных разрешений проверьте политики входа/исхода, правила состояния соединения и цепочки NAT.

Когда тест может не показать реальную картину (ограничения)

  • Stateful-файрвол может корректно работать только в случае «реального» трёхстороннего TCP; эмуляция может не полностью повторять реальную сессию. Используйте connection spoofing, если требуется.
  • NAT и балансировщики нагрузки могут изменять адреса/порты и «ломать» соответствие между логами.
  • IDS с эвристической логикой может реагировать по-особому на тонкие различия в нагрузке; эмуляция не всегда выявит ложные срабатывания.
  • Виртуализованные или облачные сетевые стеки (SR-IOV, overlay сети) могут мешать корректной отправке/прослушиванию «сырых» пакетов.

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

  • nmap для проверки открытых портов и сканирования сервисов
  • hping3 для гибкой генерации TCP/UDP/ICMP пакетов и тестов по скорости/флагам
  • bro/Zeek или Suricata как дополнение к проверке IDS-логики

Методика тестирования — мини-план

  1. Подготовка окружения: отдельные хосты для инжектора и сниффера, права root, резервная копия конфигов фаервола.
  2. Базовый прогон: отправка набора тестов (привилегированные порты, прокси, общие службы).
  3. Анализ freport: классификация пакетов и поиск неожиданностей.
  4. Целевые тесты: при обнаружении пробелов — подробнее про конкретные сервисы/диапазоны.
  5. Ретест после изменений правил.

Плейбук для проверки фаервола (роль-based)

  • Сетевой инженер:
    • Подготовить хосты для теста, настроить маршруты
    • Запустить ftestd и ftest
    • Сохранить логи и запустить freport
  • Администратор безопасности:
    • Проанализировать результаты freport
    • Сопоставить с политиками безопасности
    • Внести изменения в ACL/правила
  • Аудитор:
    • Проверить репрезентативность набора тестов
    • Подтвердить устранение нарушений после изменений

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

  • Все разрешённые сервисы отображаются в разделе Authorized packets.
  • Нет неожиданных записей в Authorized для сервисов, которые должны быть заблокированы.
  • Изменённые пакеты документированы (NAT/балансировка).
  • Повторный тест после правки правил подтверждает исправления.

Шаблон для быстрой проверки (чеклист)

  • Установлены модули Perl
  • ftest.conf содержит тесты для основных сервисов
  • ftestd запущен на стороне приёма
  • ftest запущен на стороне отправки
  • freport выполнен и результаты сохранены
  • Проведён анализ и внесены изменения при необходимости

Отладка и частые проблемы

  • ftestd не запускается — проверьте права root и наличие интерфейса (-i eth0).
  • Пакеты не доходят, хотя правило есть — проверьте маршрут и ARP/или MAC-фильтрацию.
  • Модуль Net::PcapUtils не устанавливается — сначала установите Net::Pcap через CPAN или пакетную систему дистрибутива.
  • Различия в логах из-за NAT — используйте дополнительный лог NAT-правил на пограничном устройстве.

Короткий глоссарий (1 строка)

  • ftest — генератор тестовых пакетов.
  • ftestd — сниффер/приёмник тестовых пакетов.
  • freport — утилита для сравнения логов ftest и ftestd.
  • Stop signal — пакет, который завершает работу ftestd.

Резюме

FTester — простой и эффективный инструмент для регрессионного тестирования правил фаервола и проверки поведения IDS. Он особенно полезен для систематических проверок после изменения конфигурации или при регулярном аудите безопасности. Используйте его как часть большего набора тестов (nmap, hping3, Suricata) для всесторонней оценки защиты сети.

Важно: всегда тестируйте на контролируемой среде и заранее предупредите владельцев сервисов — генерация большого числа пакетов может повлиять на производительность сети и сервисов.

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

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

Восстановление .NET Framework в Windows 10
Windows

Восстановление .NET Framework в Windows 10

Создать тип данных в Excel — пошагово
Excel

Создать тип данных в Excel — пошагово

Icegram для WordPress: обзор и руководство
WordPress

Icegram для WordPress: обзор и руководство

ImagePullBackOff в Kubernetes: причины и решение
Kubernetes

ImagePullBackOff в Kubernetes: причины и решение

Как очистить Timeline в Windows 10
Windows 10

Как очистить Timeline в Windows 10

Кастомный циферблат Apple Watch из фото
Руководство

Кастомный циферблат Apple Watch из фото