Рецепты безопасности pfSense - харденинг и IDS

В этом разделе собраны рецепты повышения безопасности pfSense: от базового харденинга и двухфакторной аутентификации до развертывания IDS/IPS, автоматической блокировки угроз и обеспечения соответствия стандартам PCI DSS и CIS.

Перед выполнением рецептов создайте резервную копию конфигурации: Diagnostics - Backup & Restore. Основные сведения о правилах файрвола описаны в разделе правила файрвола pfSense .

Харденинг pfSense

Базовое укрепление pfSense включает отключение неиспользуемых сервисов, переход на SSH-ключи, принудительное использование HTTPS и ограничение поверхности атаки.

Пошаговая настройка

  1. Обновите pfSense до актуальной версии: System - Update

  2. Настройте HTTPS-доступ к веб-интерфейсу:

    • Перейдите в System - Advanced - Admin Access
    • Protocol - HTTPS
    • SSL/TLS Certificate - используйте сертификат, выпущенный внутренним CA (не самоподписанный по умолчанию)
    • TCP Port - измените порт по умолчанию (например, 8443)
    • WebGUI Login Autocomplete - отключить
    • Login page color - измените цвет (визуальная индикация production-среды)
  3. Настройте SSH:

    • Secure Shell Server - включите SSH только при необходимости
    • SSHd Key Only - Public Key Only (отключает аутентификацию по паролю)
    • SSH Port - измените стандартный порт 22
    • Добавьте публичные ключи администраторов: System - User Manager - редактирование пользователя - Authorized SSH Keys
  4. Отключите неиспользуемые сервисы:

    • Проверьте Status - Services и остановите ненужные
    • Отключите UPnP: Services - UPnP & NAT-PMP - снимите флаг Enable
    • Отключите SNMP если не используется: Services - SNMP
  5. Защитите консольный доступ:

    • System - Advanced - Admin Access - Console Options
    • Password protect the console menu - включить
  6. Настройте блокировку при неудачных попытках входа:

    • System - Advanced - Login Protection
    • Threshold - 5 попыток
    • Blocktime - 1800 секунд (30 минут)
    • Detection time - 300 секунд (5 минут)
  7. Отключите DNS Rebinding Check при необходимости или оставьте включенным:

    • System - Advanced - Admin Access - DNS Rebind Check включен по умолчанию
  8. Настройте NTP:

    • Services - NTP - Settings
    • Укажите надежные NTP-серверы (pool.ntp.org)
    • Привяжите NTP к внутренним интерфейсам

Двухфакторная аутентификация с Google Authenticator

TOTP-аутентификация через Google Authenticator добавляет второй фактор при входе в веб-интерфейс и VPN. Для реализации используется пакет FreeRADIUS с модулем TOTP.

Пошаговая настройка

  1. Установите пакет FreeRADIUS: System - Package Manager - Available Packages - freeradius3

  2. Перейдите в Services - FreeRADIUS - Interfaces:

    • Добавьте интерфейс:
      • Interface IP - 127.0.0.1
      • Port - 1812
      • Interface Type - Authentication
  3. Перейдите в Services - FreeRADIUS - NAS/Clients:

    • Добавьте клиента:
      • Client IP - 127.0.0.1
      • Shared Secret - сгенерируйте надежный секрет
  4. Перейдите в Services - FreeRADIUS - Users и добавьте пользователя:

    • Username - имя пользователя
    • Password - пароль
    • One-Time Password Configuration - Enable
    • OTP Auth Method - Google Authenticator
    • Init-Secret - сгенерируется автоматически
    • PIN - числовой PIN (вводится перед TOTP-кодом)
    • Запишите или отсканируйте QR-код для настройки Google Authenticator
  5. Перейдите в System - User Manager - Authentication Servers и добавьте RADIUS:

    • Type - RADIUS
    • Hostname or IP - 127.0.0.1
    • Shared Secret - секрет из шага 3
    • Authentication Port - 1812
  6. Для защиты веб-интерфейса:

    • System - User Manager - Settings
    • Authentication Server - выберите RADIUS-сервер
  7. Для VPN: в настройках OpenVPN-сервера выберите RADIUS как Backend for authentication

  8. При входе пользователь вводит: PIN + TOTP-код в поле пароля (например, 1234567890 где 1234 - PIN, 567890 - TOTP)

IDS/IPS с Suricata в Inline-режиме

Suricata в inline-режиме не только обнаруживает, но и блокирует вредоносный трафик в реальном времени. В отличие от пассивного режима IDS, inline (IPS) активно предотвращает атаки.

Пошаговая настройка

  1. Установите Suricata: System - Package Manager - Available Packages - suricata

  2. Перейдите в Services - Suricata - Global Settings:

    • Install ETOpen Emerging Threats rules - включить
    • Install Snort rules - включить (требуется Oink Code с snort.org)
    • Update Interval - 12 hours
    • Remove Blocked Hosts Interval - 1 hour
    • Log to System Log - включить
  3. Нажмите Update для загрузки наборов правил

  4. Перейдите в Services - Suricata - Interfaces и добавьте интерфейс:

    • Interface - WAN
    • Enable - включить
    • IPS Mode - включить (Inline mode)
    • Block Offenders - включить
    • Kill States - включить
    • Block Duration - 3600 (1 час)
  5. Перейдите во вкладку WAN Categories и выберите наборы правил:

    • ET Open Rules - включите категории: emerging-attack_response, emerging-exploit, emerging-malware, emerging-scan, emerging-trojan
    • Отключите категории с высоким уровнем ложных срабатываний (emerging-info, emerging-games)
  6. Перейдите во вкладку WAN Rules для тонкой настройки отдельных правил

  7. Добавьте WAN-интерфейс для мониторинга входящего трафика и LAN для мониторинга исходящего

  8. Перейдите в Services - Suricata - Logs для просмотра событий

  9. Настройте подавление ложных срабатываний: WAN - SID Mgmt - добавьте SID правил в Suppress List

Важно: первоначально рекомендуется запустить Suricata в режиме IDS (без блокировки) для выявления ложных срабатываний. После настройки Suppress List переключите в IPS-режим. Подробнее о зеркалировании трафика для IDS описано в сетевых рецептах .

Автоматическая блокировка IP с pfBlockerNG

pfBlockerNG автоматически обновляет списки известных угроз и блокирует трафик с вредоносных IP-адресов. Поддерживает множество источников threat intelligence.

Пошаговая настройка

  1. Установите пакет: System - Package Manager - Available Packages - pfBlockerNG-devel

  2. Перейдите в Firewall - pfBlockerNG - General:

    • Enable pfBlockerNG - включить
    • Keep Settings - включить
    • CRON Settings - Every hour
  3. Перейдите в Firewall - pfBlockerNG - IP:

    • Вкладка IPv4 - добавьте фиды:
НазваниеURLДействие
Spamhaus DROPhttps://www.spamhaus.org/drop/drop.txtDeny Inbound
Spamhaus EDROPhttps://www.spamhaus.org/drop/edrop.txtDeny Inbound
DShield Blockhttps://feeds.dshield.org/block.txtDeny Inbound
Emerging Threatshttps://rules.emergingthreats.net/fwrules/emerging-Block-IPs.txtDeny Both
Abuse.ch Feodohttps://feodotracker.abuse.ch/downloads/ipblocklist.txtDeny Both
  1. Для каждого фида настройте:

    • Action - Deny Inbound (блокировка входящего) или Deny Both (входящий и исходящий)
    • Update Frequency - Every 1 hour
  2. Перейдите в Firewall - pfBlockerNG - Update и нажмите Run

  3. Проверьте созданные алиасы и правила: Firewall - Rules - pfBlockerNG

  4. Мониторинг блокировок: Firewall - pfBlockerNG - Reports

  5. Для добавления пользовательских списков: создайте текстовый файл с IP/CIDR и укажите URL

Отправка логов в SIEM

Централизованный сбор логов pfSense в SIEM-системе (Wazuh, ELK, Graylog) обеспечивает корреляцию событий, долгосрочное хранение и анализ инцидентов безопасности.

Пошаговая настройка для Syslog

  1. Перейдите в Status - System Logs - Settings:

    • Log Message Format - syslog (RFC 5424) или BSD (RFC 3164) в зависимости от SIEM
    • Enable Remote Logging - включить
    • Source Address - LAN интерфейс
    • IP Protocol - IPv4
    • Remote Log Servers - IP:port SIEM-сервера (например, 192.168.1.100:514)
    • Remote Syslog Contents - выберите типы логов:
      • System Events
      • Firewall Events
      • DNS Events
      • DHCP Events
      • Authentication Events
      • VPN Events
      • Gateway Monitor Events
  2. Для передачи через TLS (рекомендуется):

    • Установите пакет syslog-ng через Package Manager
    • Настройте TLS-транспорт в конфигурации syslog-ng

Настройка для Wazuh

  1. Установите Wazuh Agent на pfSense (FreeBSD-версия):
pkg install wazuh-agent
  1. Настройте /var/ossec/etc/ossec.conf:
<ossec_config>
  <client>
    <server>
      <address>192.168.1.100</address>
      <port>1514</port>
      <protocol>tcp</protocol>
    </server>
  </client>
  <localfile>
    <log_format>syslog</log_format>
    <location>/var/log/filter.log</location>
  </localfile>
  <localfile>
    <log_format>syslog</log_format>
    <location>/var/log/system.log</location>
  </localfile>
</ossec_config>
  1. Запустите агент:
service wazuh-agent start
  1. На Wazuh Manager проверьте подключение агента

Подробности интеграции pfSense с Wazuh описаны в разделе интеграция pfSense с Wazuh .

Настройка для ELK/Graylog

  1. Настройте Remote Logging как описано выше (порт Logstash или Graylog input)
  2. На стороне ELK создайте Logstash pipeline для парсинга логов pfSense (filterlog format)
  3. Используйте готовый Graylog Content Pack для pfSense при использовании Graylog

Чек-лист PCI DSS для pfSense

PCI DSS требует соблюдения определенных требований к сетевой безопасности. pfSense может быть настроен для соответствия основным требованиям стандарта.

Пошаговая настройка

  1. Требование 1 - Установка и поддержка конфигурации файрвола:

    • Документируйте все правила файрвола с описаниями
    • Создайте правило deny-all в конце каждого списка правил (pfSense делает это по умолчанию)
    • Ограничьте входящий и исходящий трафик минимально необходимым
    • Разделите сети с данными карт через DMZ или отдельный VLAN
  2. Требование 2 - Изменение параметров по умолчанию:

    • Измените пароль администратора
    • Измените порты веб-интерфейса и SSH
    • Отключите неиспользуемые сервисы (UPnP, SNMP, если не нужны)
  3. Требование 4 - Шифрование передачи данных:

    • Включите HTTPS для веб-интерфейса с надежным сертификатом
    • Настройте VPN для удаленного доступа с шифрованием AES-256
    • Отключите слабые протоколы TLS: System - Advanced - Admin Access - минимум TLS 1.2
  4. Требование 6 - Обновление систем:

    • Обновляйте pfSense и все пакеты до актуальных версий
    • Подпишитесь на уведомления безопасности pfSense
  5. Требование 8 - Идентификация и аутентификация:

    • Настройте индивидуальные учетные записи для каждого администратора
    • Включите двухфакторную аутентификацию (рецепт выше)
    • Настройте блокировку при неудачных попытках входа
  6. Требование 10 - Отслеживание и мониторинг доступа:

    • Включите логирование всех событий
    • Настройте отправку логов в SIEM (рецепт выше)
    • Обеспечьте хранение логов минимум 1 год (90 дней онлайн)
    • Синхронизируйте время через NTP
  7. Требование 11 - Тестирование систем безопасности:

    • Установите IDS/IPS (Suricata, рецепт выше)
    • Проводите периодическое сканирование уязвимостей

Харденинг по CIS Benchmark

CIS (Center for Internet Security) предоставляет детальные рекомендации по безопасной конфигурации. Следующие пункты основаны на CIS-практиках для сетевых устройств.

Пошаговая настройка

  1. Управление доступом:

    • Создайте именованные учетные записи для каждого администратора: System - User Manager
    • Назначьте минимально необходимые привилегии через группы
    • Отключите учетную запись admin и создайте именованную с правами администратора
    • Включите аудит действий администраторов
  2. Сетевые сервисы:

    • Отключите IPv6 если не используется: System - Advanced - Networking - Allow IPv6
    • Отключите IGMP Proxy если не нужен
    • Отключите UPnP и NAT-PMP
  3. Криптографические настройки:

    • System - Advanced - Admin Access:
      • SSL/TLS Certificate - RSA 2048+ или ECDSA
      • Отключите HTTP Redirect (только HTTPS)
    • Для VPN используйте AES-256-GCM и SHA-256
    • Отключите поддержку DES и 3DES в IPsec
  4. Логирование и аудит:

    • Включите логирование по умолчанию для всех правил файрвола: System - Advanced - Firewall & NAT - Log packets matched from the default block rules
    • Настройте удаленный syslog с TLS
    • Включите логирование изменений конфигурации
  5. Сетевая безопасность:

    • Включите Anti-Lockout Rule только на управляющем интерфейсе
    • Включите защиту от IP-spoofing: System - Advanced - Firewall & NAT - включите Bogon Networks blocking на всех WAN-интерфейсах
    • Настройте Rate Limiting через Firewall - Traffic Shaper для защиты от DDoS
  6. Резервное копирование:

    • Настройте автоматическое резервное копирование конфигурации через AutoConfigBackup
    • Храните резервные копии в зашифрованном виде

Блокировка Tor Exit Nodes и анонимайзеров

Блокировка выходных узлов Tor и известных анонимайзеров предотвращает обход корпоративных политик безопасности и снижает риск анонимных атак.

Пошаговая настройка

  1. Через pfBlockerNG (рекомендуется):
    • Перейдите в Firewall - pfBlockerNG - IP - IPv4
    • Добавьте фиды:
НазваниеURLДействие
Tor Exit Nodeshttps://check.torproject.org/torbulkexitlistDeny Both
dan.me.uk Torhttps://www.dan.me.uk/torlist/?exitDeny Both
  • Настройте Update Frequency - Every 1 hour (список узлов Tor меняется часто)
  1. Через Firewall Aliases (альтернатива без pfBlockerNG):

  2. Создайте правила блокировки на WAN и LAN:

# Блокировка входящего трафика от Tor
Action: Block
Interface: WAN
Source: Tor_Exit_Nodes
Destination: any

# Блокировка исходящего трафика к Tor
Action: Block
Interface: LAN
Source: LAN net
Destination: Tor_Exit_Nodes
  1. Для блокировки VPN-анонимайзеров добавьте дополнительные списки известных VPN-провайдеров в pfBlockerNG

  2. Логируйте заблокированные попытки подключения для анализа: включите logging в правилах блокировки

Для комплексной защиты рекомендуется комбинировать блокировку Tor с DNS sinkhole и IDS/IPS (Suricata).

Last updated on