Лучшие практики файрвола pfSense - правила и миграция
Грамотно спроектированная политика межсетевого экрана определяет уровень защищённости всей сети. pfSense предоставляет гибкие инструменты фильтрации на основе pf, однако сама по себе платформа не гарантирует безопасность - результат зависит от того, как администратор организует правила, контролирует их актуальность и адаптирует политику к изменяющимся требованиям. В этом руководстве рассмотрены принципы построения надёжной политики файрвола, типичные ошибки, процедура аудита правил и детальные инструкции по миграции с Cisco ASA, FortiGate и MikroTik RouterOS.
Организация правил
Порядок правил в pfSense определяет результат фильтрации: действует принцип first match wins - первое совпавшее правило завершает обработку пакета. Неправильная организация правил приводит к тому, что трафик блокируется или пропускается вопреки намерениям администратора. Подробное описание механизма обработки приведено в разделе правила файрвола pfSense .
Рекомендуемый порядок правил на интерфейсе
Для каждого интерфейса (LAN, DMZ, OPT и т.д.) следует придерживаться единой структуры:
Anti-lockout - pfSense создаёт это правило автоматически на LAN-интерфейсе. Если правило отключено вручную, необходимо создать явное разрешение для административного доступа (HTTPS/SSH к IP-адресу интерфейса) и разместить его первым.
Явные запреты для известных угроз - блокировка трафика от источников из чёрных списков (bogon-сети, GeoIP-списки, списки известных вредоносных адресов). Для этих правил рекомендуется использовать алиасы типа URL Table , которые обновляются автоматически.
Разрешающие правила для легитимного трафика - конкретные правила, разрешающие необходимые протоколы и направления. Каждое правило должно быть максимально специфичным: указан протокол, порт назначения, адрес источника и назначения.
Неявный запрет (default deny) - pfSense автоматически отбрасывает весь трафик, не совпавший ни с одним правилом. Создавать явное правило блокировки в конце списка не обязательно, но рекомендуется для двух целей: ведение журнала отклонённого трафика и визуальное подтверждение того, что политика default deny действует.
Использование разделителей
pfSense позволяет создавать цветные разделители (separators) между правилами в веб-интерфейсе. Разделители не влияют на обработку трафика, но существенно упрощают навигацию при большом количестве правил.
Рекомендуемая схема именования разделителей:
| Разделитель | Назначение |
|---|---|
--- ADMIN ACCESS --- | Правила управления |
--- BLOCK LISTS --- | Правила блокировки по спискам |
--- SERVERS --- | Доступ к серверам (по группам) |
--- USER TRAFFIC --- | Правила для рабочих станций |
--- DEFAULT DENY --- | Финальное правило запрета |
Описания правил
Каждое правило файрвола должно содержать осмысленное описание в поле Description. Описание является единственным способом понять назначение правила без анализа его параметров. Рекомендуемый формат:
[TICKET/CR] Назначение - срок действия (если временное)Примеры:
CR-2024-031 VPN access for partner ExampleCorp - until 2024-12-31Allow DNS to internal resolversBlock outbound SMTP from workstations (relay prevention)
Правила без описания превращают набор правил в нечитаемый список, который невозможно сопровождать при смене администратора.
Минимизация количества правил через алиасы
Большое количество правил усложняет аудит и повышает вероятность ошибок. Вместо создания отдельного правила для каждого сервера или порта следует использовать алиасы :
Неоптимально - три отдельных правила:
| Действие | Источник | Порт назначения | Описание |
|---|---|---|---|
| Pass | LAN net | 80 | HTTP to web server 1 |
| Pass | LAN net | 443 | HTTPS to web server 1 |
| Pass | LAN net | 8443 | Alt HTTPS to web server 2 |
Оптимально - одно правило с алиасами:
| Действие | Источник | Назначение | Порт | Описание |
|---|---|---|---|---|
| Pass | LAN net | Alias: WebServers | Alias: WebPorts | Access to web servers |
Алиас WebServers содержит IP-адреса серверов, алиас WebPorts - порты 80, 443, 8443. При добавлении нового сервера или порта достаточно обновить алиас, а не создавать новое правило.
Типичные ошибки
Избыточно разрешающие правила (any/any)
Правило Pass * * * * * (разрешить всё со всех адресов на все адреса по всем протоколам) - наиболее распространённая и опасная ошибка. Такие правила создаются для быстрой отладки и забываются в рабочей конфигурации. pfSense создаёт правило default allow на LAN по умолчанию - после первоначальной настройки его необходимо заменить набором специфичных разрешений.
Внимание:
Правило any/any на LAN-интерфейсе позволяет любому устройству в сети обращаться к произвольным адресам по любым протоколам, включая прямой доступ в интернет в обход прокси-серверов и средств контроля.
Отсутствие фильтрации исходящего трафика
Администраторы часто сосредоточены на входящем трафике и полностью игнорируют исходящий. Отсутствие egress-фильтрации позволяет скомпрометированным хостам свободно устанавливать обратные соединения (reverse shell), эксфильтровать данные и взаимодействовать с командными серверами (C2). Минимальный набор ограничений для исходящего трафика:
- Разрешить DNS только к внутренним серверам или конкретным публичным резолверам
- Разрешить HTTP/HTTPS через прокси-сервер (при наличии)
- Разрешить SMTP только с почтового сервера
- Заблокировать прямой выход на нестандартные порты (IRC, Tor, P2P)
Отсутствие журналирования запрещённого трафика
pfSense по умолчанию журналирует трафик, совпавший с неявным правилом deny. Однако при добавлении явных правил блокировки (например, для чёрных списков) журналирование необходимо включать вручную - по умолчанию оно отключено для явных правил. Без логов администратор не видит заблокированных атак и не может оценить эффективность политики.
Затенённые правила (shadowed rules)
Затенённое правило - это правило, которое никогда не совпадает с трафиком, потому что выше расположено более широкое правило, перехватывающее весь подходящий трафик. Пример:
| # | Действие | Источник | Назначение | Порт |
|---|---|---|---|---|
| 1 | Pass | LAN net | * | * |
| 2 | Block | LAN net | 10.0.0.5 | 22 |
Правило 2 никогда не сработает, потому что правило 1 разрешает весь трафик из LAN, включая SSH к 10.0.0.5. Для исправления необходимо переместить правило блокировки выше разрешающего:
| # | Действие | Источник | Назначение | Порт |
|---|---|---|---|---|
| 1 | Block | LAN net | 10.0.0.5 | 22 |
| 2 | Pass | LAN net | * | * |
Неиспользование алиасов
Указание IP-адресов и портов непосредственно в правилах (hardcoded values) приводит к дублированию данных: при изменении адреса сервера приходится обновлять каждое правило, в котором он упоминается. Алиасы решают эту проблему - подробное описание их возможностей приведено в разделе алиасы pfSense .
Забытые временные правила
Временные правила, созданные для диагностики или краткосрочных задач, остаются в конфигурации на неопределённый срок. Рекомендации:
- Указывать срок действия в описании правила (например,
until 2024-06-30) - Включать журналирование для временных правил для контроля их использования
- Проводить ежемесячную проверку наличия временных правил
Миграция с Cisco ASA
Миграция с Cisco ASA на pfSense требует понимания фундаментальных различий в архитектуре и терминологии. Оба межсетевых экрана работают по принципу stateful inspection и first match wins, однако подходы к организации правил, объектов и NAT существенно отличаются.
Соответствие терминологии
| Cisco ASA | pfSense | Примечания |
|---|---|---|
| Access Control List (ACL) | Firewall Rules (per interface) | В pfSense правила привязаны к интерфейсам напрямую, отдельная привязка ACL к интерфейсу не требуется |
| Object Group (network) | Alias (Host / Network) | Функционально идентичны - именованные группы адресов |
| Object Group (service) | Alias (Port) | Группы портов |
| Security Level (0-100) | Нет аналога | pfSense не использует уровни безопасности, всё определяется правилами |
| Security Zone | Interface | В pfSense каждый интерфейс - отдельная зона, zone-based firewall не поддерживается |
| Global ACL | Floating Rules | Floating rules применяются к нескольким интерфейсам |
| NAT exemption (identity NAT) | Manual Outbound NAT (no NAT rule) | Настраивается в Firewall > NAT > Outbound |
| Twice NAT | Manual Outbound NAT + Port Forward | pfSense разделяет inbound и outbound NAT |
| Packet Tracer | Packet Capture + States | Диагностика через Diagnostics > Packet Capture |
Преобразование ACL в правила pfSense
ACL на Cisco ASA представляют собой упорядоченные списки ACE (Access Control Entries), которые привязываются к интерфейсу командой access-group. В pfSense каждое правило уже привязано к интерфейсу - промежуточный шаг привязки отсутствует.
Cisco ASA:
object-group network WEBSERVERS
network-object host 10.0.1.10
network-object host 10.0.1.11
object-group service WEBPORTS tcp
port-object eq www
port-object eq https
access-list INSIDE_IN extended permit tcp any object-group WEBSERVERS object-group WEBPORTS
access-group INSIDE_IN in interface insidepfSense - эквивалентная конфигурация:
- Создать алиас
WEBSERVERS(тип Host):10.0.1.10,10.0.1.11 - Создать алиас
WEBPORTS(тип Port):80,443 - Создать правило на вкладке LAN:
| Действие | Протокол | Источник | Назначение | Порт | Описание |
|---|---|---|---|---|---|
| Pass | TCP | LAN net | WEBSERVERS | WEBPORTS | HTTP/HTTPS to web servers |
Различия в обработке NAT
На Cisco ASA NAT и правила фильтрации (ACL) обрабатываются как связанные, но отдельные конструкции. Порядок обработки зависит от версии ASA и типа NAT (auto NAT, manual NAT, twice NAT). В pfSense NAT и правила файрвола обрабатываются последовательно:
- Входящий пакет проходит через правила NAT (Destination NAT / Port Forward)
- После трансляции адресов пакет оценивается правилами файрвола с уже транслированными адресами
Это означает, что в правилах файрвола pfSense необходимо указывать транслированные (внутренние) адреса назначения, а не публичные. Это отличие часто вызывает ошибки при миграции.
Пример - port forward с фильтрацией:
NAT: WAN:443 -> 10.0.1.10:443
Rule: Pass TCP * -> 10.0.1.10:443 (on WAN interface)На Cisco ASA правило ACL ссылается на публичный адрес (если не используется nat control), в pfSense - на внутренний адрес сервера.
Security Levels vs. правила интерфейсов
Cisco ASA присваивает каждому интерфейсу уровень безопасности (security level, 0–100). Трафик от интерфейса с более высоким уровнем безопасности к интерфейсу с более низким уровнем разрешён по умолчанию. Трафик в обратном направлении запрещён без явного ACL.
pfSense не поддерживает концепцию security levels. Каждый интерфейс обрабатывается независимо: разрешён только тот трафик, который явно указан в правилах (за исключением правила default allow на LAN, которое следует заменить после первоначальной настройки). Это упрощает модель безопасности, но требует создания явных правил для каждого направления трафика.
Пошаговый план миграции с Cisco ASA
- Инвентаризация объектов - выгрузить все object-groups командой
show running-config object-groupи создать соответствующие алиасы в pfSense - Экспорт ACL - выгрузить ACL командой
show access-listи преобразовать каждый ACE в правило pfSense на соответствующем интерфейсе - Проверка порядка - убедиться, что порядок правил сохранён (first match wins на обеих платформах)
- NAT - преобразовать конфигурацию NAT, учитывая различия в порядке обработки
- Тестирование - проверить критичные потоки трафика, используя Diagnostics > Packet Capture и журналы файрвола
- Удаление правила default allow на LAN - заменить его набором специфичных разрешений
Миграция с FortiGate
FortiGate использует zone-based firewall с политиками безопасности (security policies), которые связывают зоны источника и назначения. pfSense применяет per-interface модель без зон. Миграция требует перепроектирования структуры правил с учётом этого различия.
Соответствие терминологии
| FortiGate | pfSense | Примечания |
|---|---|---|
| Security Policy | Firewall Rule | Политика FortiGate содержит больше параметров (UTM-профили, расписание) |
| Address Object | Alias (Host / Network) | Функционально идентичны |
| Address Group | Alias (содержащий вложенные алиасы) | pfSense поддерживает вложенные алиасы |
| Service Object | Alias (Port) | Группы портов |
| Zone | Interface / Interface Group | pfSense не поддерживает зоны, используются интерфейсы |
| VDOM | Отдельный экземпляр pfSense | VDOM не имеет аналога - для изоляции требуется отдельная инсталляция |
| Security Profile (AV, IPS, Web Filter) | Пакеты: Suricata/Snort, pfBlockerNG, SquidGuard | Реализуется через дополнительные пакеты |
| Central NAT | Firewall > NAT | Аналогичная структура |
| FortiView | Status > Dashboard + pfSense logs | Ограниченная аналитика без дополнительных инструментов |
Преобразование политик в правила
FortiGate политика определяет: зону источника, зону назначения, адреса, сервисы, действие, UTM-профили и расписание. В pfSense эквивалент - правило на вкладке интерфейса с указанием протокола, адресов и портов.
FortiGate:
config firewall policy
edit 10
set name "LAN to WAN Web"
set srcintf "lan"
set dstintf "wan1"
set srcaddr "LAN_SUBNET"
set dstaddr "all"
set action accept
set schedule "always"
set service "HTTP" "HTTPS" "DNS"
set utm-status enable
set av-profile "default"
set ips-sensor "default"
set ssl-ssh-profile "certificate-inspection"
set logtraffic all
next
endpfSense - эквивалентная конфигурация:
- Создать алиас
WebAndDNS_Ports(тип Port):80,443,53 - Создать правило на вкладке LAN:
| Действие | Протокол | Источник | Назначение | Порт | Gateway | Описание |
|---|---|---|---|---|---|---|
| Pass | TCP/UDP | LAN net | * | WebAndDNS_Ports | * | LAN to WAN Web + DNS |
- Установить пакеты Suricata или Snort для замены UTM-профилей (AV, IPS)
- Установить SquidGuard или pfBlockerNG для веб-фильтрации
Зоны FortiGate vs. интерфейсы pfSense
FortiGate позволяет объединять несколько интерфейсов в зону и создавать политики между зонами. В pfSense такая абстракция отсутствует. Варианты решения:
- Interface Groups - pfSense позволяет группировать интерфейсы и создавать общие правила для группы. Это наиболее близкий аналог зон, но с ограничениями: правила группы обрабатываются до правил отдельных интерфейсов и не могут быть переопределены на уровне интерфейса.
- Floating Rules - позволяют применять одно правило к нескольким интерфейсам. Подходят для глобальных политик (например, блокировка определённых протоколов на всех интерфейсах).
VDOM и мультитенантность
FortiGate поддерживает Virtual Domains (VDOM) - виртуальные экземпляры файрвола в рамках одного устройства. Каждый VDOM имеет собственные интерфейсы, таблицу маршрутизации, политики и административный доступ.
pfSense не поддерживает аналог VDOM. Для мультитенантных сценариев необходимо использовать:
- Отдельные экземпляры pfSense (физические или виртуальные)
- Разделение через VLAN и отдельные наборы правил для каждого VLAN-интерфейса (ограниченная изоляция, единая таблица маршрутизации)
Security Profiles и их аналоги в pfSense
FortiGate предлагает интегрированные профили безопасности (UTM), которые применяются непосредственно в политике. pfSense реализует аналогичную функциональность через отдельные пакеты:
| Функция FortiGate | Пакет pfSense | Особенности |
|---|---|---|
| Antivirus Profile | ClamAV (через Squid) | Сканирование HTTP-трафика через прокси |
| IPS Sensor | Suricata / Snort | Полноценный IDS/IPS, требует настройки правил |
| Web Filter | SquidGuard / pfBlockerNG-devel | Фильтрация по категориям и спискам |
| Application Control | Suricata (Application Layer rules) | Ограниченная поддержка по сравнению с FortiGate |
| SSL Inspection | Squid (SSL Bump) | Требует установки корневого сертификата на клиентах |
| DNS Filter | pfBlockerNG-devel (DNSBL) | Блокировка по DNS-спискам |
Внимание:
UTM-функции FortiGate глубоко интегрированы в обработку политик и работают на аппаратном уровне (ASIC). Пакеты pfSense выполняются программно и требуют дополнительных ресурсов CPU/RAM. При миграции высоконагруженных инсталляций необходимо проводить нагрузочное тестирование.
Пошаговый план миграции с FortiGate
- Экспорт конфигурации - выгрузить полную конфигурацию через
execute backup full-config - Маппинг зон на интерфейсы - определить, какие интерфейсы pfSense соответствуют зонам FortiGate; при необходимости использовать Interface Groups
- Создание алиасов - преобразовать Address Objects и Address Groups в алиасы pfSense
- Создание правил - преобразовать каждую Security Policy в правило pfSense на соответствующем интерфейсе
- Установка пакетов безопасности - установить Suricata/Snort, pfBlockerNG и другие пакеты для замены UTM-профилей
- Миграция NAT - преобразовать VIP и Central NAT в Port Forward и Outbound NAT
- Тестирование - проверить все потоки трафика, особенно межзонные, которые в pfSense реализованы через правила на нескольких интерфейсах
Миграция с MikroTik RouterOS
MikroTik RouterOS использует цепочки (chains) для организации правил фильтрации, NAT и манипуляции пакетами. Модель существенно отличается от pfSense: в RouterOS администратор работает с таблицами filter, NAT и mangle, каждая из которых содержит цепочки (input, forward, output). В pfSense все правила привязаны к интерфейсам и обрабатываются на входе.
Соответствие терминологии
| MikroTik RouterOS | pfSense | Примечания |
|---|---|---|
/ip firewall filter | Firewall > Rules | Основные правила фильтрации |
| Chain: input | Правила интерфейса (к самому pfSense) | Фильтрация трафика к самому устройству |
| Chain: forward | Правила интерфейса (транзитный трафик) | В pfSense нет разделения input/forward - все правила на вкладке интерфейса |
| Chain: output | Floating Rules (outbound) | Исходящий трафик от pfSense фильтруется через floating rules |
| Address List | Alias | Функционально идентичны |
/ip firewall nat | Firewall > NAT | Разделяется на Port Forward и Outbound NAT |
/ip firewall mangle | Нет прямого аналога | Частично заменяется floating rules с DSCP/Queue |
| Connection Tracking | State Table | pf использует state table аналогично conntrack |
| Action: jump (custom chain) | Нет аналога | pfSense не поддерживает пользовательские цепочки |
| Default policy: accept | Default policy: deny | Критическое различие при миграции |
Критическое различие: default policy
Внимание:
MikroTik RouterOS по умолчанию разрешает весь трафик (default accept). pfSense по умолчанию запрещает весь трафик (default deny) на всех интерфейсах, кроме LAN (где создаётся начальное правило allow all). При миграции необходимо убедиться, что все необходимые разрешения созданы явно, иначе трафик будет заблокирован.
Преобразование цепочек в правила интерфейсов
В MikroTik правила распределены по цепочкам (input, forward, output). В pfSense все правила находятся на вкладках интерфейсов. Принцип маппинга:
MikroTik - filter/forward:
/ip firewall filter
add chain=forward src-address=192.168.1.0/24 dst-address=10.0.0.0/24 \
dst-port=80,443 protocol=tcp action=accept comment="LAN to DMZ web"
add chain=forward src-address=192.168.1.0/24 dst-address=0.0.0.0/0 \
dst-port=53 protocol=udp action=accept comment="LAN DNS"
add chain=forward src-address=192.168.1.0/24 action=drop \
comment="Block all other LAN forward"pfSense - правила на вкладке LAN:
| # | Действие | Протокол | Источник | Назначение | Порт | Описание |
|---|---|---|---|---|---|---|
| 1 | Pass | TCP | 192.168.1.0/24 | DMZ_SERVERS | 80, 443 | LAN to DMZ web |
| 2 | Pass | UDP | 192.168.1.0/24 | * | 53 | LAN DNS |
| 3 | Block | * | 192.168.1.0/24 | * | * | Block all other LAN |
Address Lists vs. алиасы
MikroTik Address Lists и pfSense алиасы выполняют одну и ту же функцию - группировку адресов для использования в правилах. Основные различия:
| Характеристика | MikroTik Address List | pfSense Alias |
|---|---|---|
| Динамическое добавление | Да (action=add-src-to-address-list) | Нет (только через URL Table) |
| Timeout (TTL записи) | Да (timeout=1h) | Нет |
| Вложенные списки | Нет | Да (алиас может ссылаться на другие алиасы) |
| URL-источники | Нет (только scripting) | Да (URL Table, обновление по расписанию) |
| FQDN | Нет (только через scripting) | Да (автоматическое разрешение DNS) |
Динамическое добавление адресов через action=add-src-to-address-list (например, для автоматической блокировки сканеров) не имеет прямого аналога в pfSense. Аналогичная функциональность реализуется через пакеты:
- pfBlockerNG - автоматическая блокировка по IP-спискам и GeoIP
- Suricata/Snort - автоматическая блокировка при обнаружении атак
NAT: RouterOS vs. pfSense
MikroTik объединяет все типы NAT в одной таблице /ip firewall nat с разделением по цепочкам srcnat и dstnat. pfSense разделяет NAT на три раздела:
| MikroTik NAT | pfSense NAT | Описание |
|---|---|---|
chain=srcnat action=masquerade | Outbound NAT (Automatic) | Маскарадинг для исходящего трафика |
chain=srcnat action=src-nat | Outbound NAT (Manual) | Статический Source NAT |
chain=dstnat action=dst-nat | Port Forward | Перенаправление входящих соединений |
chain=dstnat action=redirect | Port Forward (redirect) | Перенаправление на localhost |
В MikroTik правила NAT и filter - отдельные таблицы, обрабатываемые независимо. В pfSense при создании Port Forward автоматически создаётся связанное правило файрвола (если не отключено). При миграции следует проверить, что для каждого dstnat-правила существует соответствующее разрешающее правило в pfSense.
Mangle и расширенная обработка пакетов
Таблица mangle в MikroTik используется для маркировки пакетов, соединений и маршрутов, а также для изменения полей заголовков (TTL, DSCP, TOS). pfSense не имеет прямого аналога mangle. Частичная замена:
| Функция mangle | Решение в pfSense |
|---|---|
| Connection mark + policy routing | Floating rules с указанием Gateway |
| DSCP marking | Floating rules с limiter (traffic shaping) |
| Packet mark для QoS | Traffic Shaper (ALTQ или Limiters) |
| Change MSS | System > Advanced > Firewall/NAT > MSS Clamping |
| Route mark (PBR) | Policy Routing через multiple gateways |
Connection Tracking
MikroTik RouterOS использует модуль connection tracking (conntrack) с явными matcher’ами состояний:
/ip firewall filter
add chain=forward connection-state=established,related action=accept
add chain=forward connection-state=invalid action=dropВ pfSense state table управляется автоматически: каждое разрешающее правило создаёт запись в таблице состояний, и ответный трафик пропускается без явных правил. Явное правило для established/related не требуется. Однако рекомендуется включить опцию Scrub (System > Advanced > Firewall/NAT) для отбрасывания фрагментированных и некорректных пакетов.
Пошаговый план миграции с MikroTik
- Экспорт конфигурации - выполнить
/exportдля получения текстовой конфигурации - Инвентаризация Address Lists - преобразовать в алиасы pfSense
- Маппинг цепочек:
chain=input- правила на интерфейсах для доступа к pfSense (WebGUI, SSH, DNS)chain=forward- правила на интерфейсах для транзитного трафикаchain=output- floating rules (при необходимости)
- Удаление правил conntrack - в pfSense established/related обрабатывается автоматически
- Преобразование NAT - разделить srcnat и dstnat на Outbound NAT и Port Forward
- Замена mangle - определить, какие функции mangle необходимы, и реализовать через floating rules, traffic shaper или system settings
- Проверка default policy - убедиться, что все разрешения созданы явно (pfSense = default deny)
- Тестирование - проверить все потоки трафика; особое внимание - правилам, которые в MikroTik работали через custom chains (jump), так как pfSense не поддерживает эту конструкцию
Аудит правил
Регулярный аудит правил файрвола - обязательная практика для поддержания безопасности и соответствия нормативным требованиям. Без аудита набор правил деградирует: накапливаются устаревшие разрешения, теряется логика организации, растёт поверхность атаки.
Счётчики срабатываний
pfSense отображает количество срабатываний (hit counters) для каждого правила в списке правил интерфейса. Счётчики позволяют:
- Выявить правила с нулевым счётчиком - потенциальные кандидаты на удаление
- Определить наиболее нагруженные правила для оптимизации их позиции (перемещение выше для ускорения обработки)
- Обнаружить аномалии - резкое увеличение срабатываний может указывать на атаку или изменение в сетевой инфраструктуре
Внимание:
Счётчики сбрасываются при перезагрузке pfSense и при применении изменений в правилах файрвола. Для долгосрочного анализа необходимо использовать внешние системы сбора логов.
Выявление неиспользуемых правил
Процедура выявления неиспользуемых правил:
- Сбросить счётчики всех правил: Diagnostics > pfTop > Reset States
- Дождаться полного бизнес-цикла (минимум 30 дней для типичной организации, чтобы учесть ежемесячные процессы)
- Проверить счётчики: правила с нулевым значением - кандидаты на удаление
- Перед удалением изменить действие правила на Block с журналированием и выждать дополнительный период
- Если блокировка не вызвала инцидентов - удалить правило
Регулярность аудита
| Тип сети | Рекомендуемая периодичность |
|---|---|
| Стабильная инфраструктура, малые изменения | Каждые 6 месяцев |
| Динамичная среда, частые изменения | Ежемесячно |
| Сеть в процессе миграции | Еженедельно |
| Соответствие PCI DSS (Requirement 1.1.7) | Каждые 6 месяцев (минимум) |
Соответствие нормативным требованиям
PCI DSS
PCI DSS Requirement 1 требует:
- Документирования всех разрешённых сервисов, протоколов и портов с обоснованием (1.1.6)
- Пересмотра правил файрвола и маршрутизатора не реже чем раз в шесть месяцев (1.1.7)
- Запрета прямого публичного доступа к среде данных держателей карт (1.3)
- Установки персональных файрволов на всех мобильных и принадлежащих сотрудникам устройствах (1.4)
Для выполнения Requirement 1.1.7 необходимо:
- Вести реестр правил с описанием назначения каждого правила
- Фиксировать дату последнего пересмотра
- Хранить результаты аудита в виде документированного отчёта
CIS Benchmarks
CIS Critical Security Controls (v8) включают:
- Control 4.4: Implement and Manage a Firewall on Servers - обязательна фильтрация на уровне серверов
- Control 4.5: Implement and Manage a Firewall on End-User Devices - фильтрация на конечных устройствах
- Control 13.4: Perform Traffic Filtering Between Network Segments - сегментация с контролем трафика
pfSense обеспечивает реализацию этих контролей через VLAN-сегментацию и правила файрвола на каждом интерфейсе.
Чеклист аудита
[ ] Все правила имеют описание
[ ] Нет правил any/any (кроме обоснованных исключений)
[ ] Нет правил с нулевым счётчиком старше 90 дней
[ ] Временные правила удалены или продлены с обоснованием
[ ] Алиасы актуальны (не содержат адреса удалённых серверов)
[ ] Журналирование включено для правил блокировки
[ ] Egress-фильтрация настроена
[ ] Правило default deny присутствует явно (с логированием)
[ ] Разделители актуализированы
[ ] Результаты аудита задокументированыИнтеграция с IDS/IPS
pfSense поддерживает установку систем обнаружения и предотвращения вторжений (IDS/IPS) через дополнительные пакеты - Suricata и Snort. Эти системы анализируют содержимое трафика на уровне приложений и дополняют правила файрвола, которые работают на сетевом и транспортном уровнях.
Взаимодействие IDS/IPS и файрвола
Правила файрвола и IDS/IPS работают на разных этапах обработки пакета:
- Файрвол (pf) - принимает решение Pass/Block на основании заголовков пакета (IP, порт, протокол)
- IDS/IPS (Suricata/Snort) - анализирует содержимое (payload) трафика, прошедшего через файрвол
Если файрвол заблокировал пакет, IDS/IPS его не видит. Это означает, что IDS/IPS защищает только от угроз в разрешённом трафике - например, эксплойты в HTTP-запросах, SQL-инъекции, вредоносные DNS-запросы.
Автоматическая блокировка
Suricata и Snort в режиме IPS могут автоматически блокировать трафик при обнаружении угрозы. Механизм блокировки:
- Suricata/Snort добавляет IP-адрес атакующего в таблицу snort2c
- pf проверяет таблицу snort2c до обработки правил файрвола
- Все пакеты от заблокированного IP отбрасываются до истечения timeout
Администратор управляет параметрами блокировки: длительность бана, белые списки (pass lists), категории правил.
Интеграция с Wazuh
Для централизованного мониторинга событий файрвола и IDS/IPS рекомендуется интеграция pfSense с Wazuh. Wazuh собирает журналы pfSense (filterlog, Suricata/Snort alerts), коррелирует события и генерирует оповещения. Подробная инструкция по настройке приведена в разделе интеграция pfSense с Wazuh .
Связанные разделы
- Правила файрвола pfSense - создание и управление правилами, иерархия обработки, floating rules
- Алиасы pfSense - группировка адресов, сетей и портов для упрощения правил
- Интеграция pfSense с Wazuh - мониторинг событий безопасности pfSense в SIEM