Рецепты безопасности pfSense - харденинг и IDS
В этом разделе собраны рецепты повышения безопасности pfSense: от базового харденинга и двухфакторной аутентификации до развертывания IDS/IPS, автоматической блокировки угроз и обеспечения соответствия стандартам PCI DSS и CIS.
Перед выполнением рецептов создайте резервную копию конфигурации: Diagnostics - Backup & Restore. Основные сведения о правилах файрвола описаны в разделе правила файрвола pfSense .
Харденинг pfSense
Базовое укрепление pfSense включает отключение неиспользуемых сервисов, переход на SSH-ключи, принудительное использование HTTPS и ограничение поверхности атаки.
Пошаговая настройка
Обновите pfSense до актуальной версии: System - Update
Настройте HTTPS-доступ к веб-интерфейсу:
- Перейдите в System - Advanced - Admin Access
- Protocol - HTTPS
- SSL/TLS Certificate - используйте сертификат, выпущенный внутренним CA (не самоподписанный по умолчанию)
- TCP Port - измените порт по умолчанию (например, 8443)
- WebGUI Login Autocomplete - отключить
- Login page color - измените цвет (визуальная индикация production-среды)
Настройте SSH:
- Secure Shell Server - включите SSH только при необходимости
- SSHd Key Only - Public Key Only (отключает аутентификацию по паролю)
- SSH Port - измените стандартный порт 22
- Добавьте публичные ключи администраторов: System - User Manager - редактирование пользователя - Authorized SSH Keys
Отключите неиспользуемые сервисы:
- Проверьте Status - Services и остановите ненужные
- Отключите UPnP: Services - UPnP & NAT-PMP - снимите флаг Enable
- Отключите SNMP если не используется: Services - SNMP
Защитите консольный доступ:
- System - Advanced - Admin Access - Console Options
- Password protect the console menu - включить
Настройте блокировку при неудачных попытках входа:
- System - Advanced - Login Protection
- Threshold - 5 попыток
- Blocktime - 1800 секунд (30 минут)
- Detection time - 300 секунд (5 минут)
Отключите DNS Rebinding Check при необходимости или оставьте включенным:
- System - Advanced - Admin Access - DNS Rebind Check включен по умолчанию
Настройте NTP:
- Services - NTP - Settings
- Укажите надежные NTP-серверы (pool.ntp.org)
- Привяжите NTP к внутренним интерфейсам
Двухфакторная аутентификация с Google Authenticator
TOTP-аутентификация через Google Authenticator добавляет второй фактор при входе в веб-интерфейс и VPN. Для реализации используется пакет FreeRADIUS с модулем TOTP.
Пошаговая настройка
Установите пакет FreeRADIUS: System - Package Manager - Available Packages - freeradius3
Перейдите в Services - FreeRADIUS - Interfaces:
- Добавьте интерфейс:
- Interface IP - 127.0.0.1
- Port - 1812
- Interface Type - Authentication
- Добавьте интерфейс:
Перейдите в Services - FreeRADIUS - NAS/Clients:
- Добавьте клиента:
- Client IP - 127.0.0.1
- Shared Secret - сгенерируйте надежный секрет
- Добавьте клиента:
Перейдите в Services - FreeRADIUS - Users и добавьте пользователя:
- Username - имя пользователя
- Password - пароль
- One-Time Password Configuration - Enable
- OTP Auth Method - Google Authenticator
- Init-Secret - сгенерируется автоматически
- PIN - числовой PIN (вводится перед TOTP-кодом)
- Запишите или отсканируйте QR-код для настройки Google Authenticator
Перейдите в System - User Manager - Authentication Servers и добавьте RADIUS:
- Type - RADIUS
- Hostname or IP - 127.0.0.1
- Shared Secret - секрет из шага 3
- Authentication Port - 1812
Для защиты веб-интерфейса:
- System - User Manager - Settings
- Authentication Server - выберите RADIUS-сервер
Для VPN: в настройках OpenVPN-сервера выберите RADIUS как Backend for authentication
При входе пользователь вводит:
PIN + TOTP-кодв поле пароля (например, 1234567890 где 1234 - PIN, 567890 - TOTP)
IDS/IPS с Suricata в Inline-режиме
Suricata в inline-режиме не только обнаруживает, но и блокирует вредоносный трафик в реальном времени. В отличие от пассивного режима IDS, inline (IPS) активно предотвращает атаки.
Пошаговая настройка
Установите Suricata: System - Package Manager - Available Packages - suricata
Перейдите в 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 - включить
Нажмите Update для загрузки наборов правил
Перейдите в Services - Suricata - Interfaces и добавьте интерфейс:
- Interface - WAN
- Enable - включить
- IPS Mode - включить (Inline mode)
- Block Offenders - включить
- Kill States - включить
- Block Duration - 3600 (1 час)
Перейдите во вкладку WAN Categories и выберите наборы правил:
- ET Open Rules - включите категории: emerging-attack_response, emerging-exploit, emerging-malware, emerging-scan, emerging-trojan
- Отключите категории с высоким уровнем ложных срабатываний (emerging-info, emerging-games)
Перейдите во вкладку WAN Rules для тонкой настройки отдельных правил
Добавьте WAN-интерфейс для мониторинга входящего трафика и LAN для мониторинга исходящего
Перейдите в Services - Suricata - Logs для просмотра событий
Настройте подавление ложных срабатываний: WAN - SID Mgmt - добавьте SID правил в Suppress List
Важно: первоначально рекомендуется запустить Suricata в режиме IDS (без блокировки) для выявления ложных срабатываний. После настройки Suppress List переключите в IPS-режим. Подробнее о зеркалировании трафика для IDS описано в сетевых рецептах .
Автоматическая блокировка IP с pfBlockerNG
pfBlockerNG автоматически обновляет списки известных угроз и блокирует трафик с вредоносных IP-адресов. Поддерживает множество источников threat intelligence.
Пошаговая настройка
Установите пакет: System - Package Manager - Available Packages - pfBlockerNG-devel
Перейдите в Firewall - pfBlockerNG - General:
- Enable pfBlockerNG - включить
- Keep Settings - включить
- CRON Settings - Every hour
Перейдите в Firewall - pfBlockerNG - IP:
- Вкладка IPv4 - добавьте фиды:
| Название | URL | Действие |
|---|---|---|
| Spamhaus DROP | https://www.spamhaus.org/drop/drop.txt | Deny Inbound |
| Spamhaus EDROP | https://www.spamhaus.org/drop/edrop.txt | Deny Inbound |
| DShield Block | https://feeds.dshield.org/block.txt | Deny Inbound |
| Emerging Threats | https://rules.emergingthreats.net/fwrules/emerging-Block-IPs.txt | Deny Both |
| Abuse.ch Feodo | https://feodotracker.abuse.ch/downloads/ipblocklist.txt | Deny Both |
Для каждого фида настройте:
- Action - Deny Inbound (блокировка входящего) или Deny Both (входящий и исходящий)
- Update Frequency - Every 1 hour
Перейдите в Firewall - pfBlockerNG - Update и нажмите Run
Проверьте созданные алиасы и правила: Firewall - Rules - pfBlockerNG
Мониторинг блокировок: Firewall - pfBlockerNG - Reports
Для добавления пользовательских списков: создайте текстовый файл с IP/CIDR и укажите URL
Отправка логов в SIEM
Централизованный сбор логов pfSense в SIEM-системе (Wazuh, ELK, Graylog) обеспечивает корреляцию событий, долгосрочное хранение и анализ инцидентов безопасности.
Пошаговая настройка для Syslog
Перейдите в 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
Для передачи через TLS (рекомендуется):
- Установите пакет syslog-ng через Package Manager
- Настройте TLS-транспорт в конфигурации syslog-ng
Настройка для Wazuh
- Установите Wazuh Agent на pfSense (FreeBSD-версия):
pkg install wazuh-agent- Настройте
/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>- Запустите агент:
service wazuh-agent start- На Wazuh Manager проверьте подключение агента
Подробности интеграции pfSense с Wazuh описаны в разделе интеграция pfSense с Wazuh .
Настройка для ELK/Graylog
- Настройте Remote Logging как описано выше (порт Logstash или Graylog input)
- На стороне ELK создайте Logstash pipeline для парсинга логов pfSense (filterlog format)
- Используйте готовый Graylog Content Pack для pfSense при использовании Graylog
Чек-лист PCI DSS для pfSense
PCI DSS требует соблюдения определенных требований к сетевой безопасности. pfSense может быть настроен для соответствия основным требованиям стандарта.
Пошаговая настройка
Требование 1 - Установка и поддержка конфигурации файрвола:
- Документируйте все правила файрвола с описаниями
- Создайте правило deny-all в конце каждого списка правил (pfSense делает это по умолчанию)
- Ограничьте входящий и исходящий трафик минимально необходимым
- Разделите сети с данными карт через DMZ или отдельный VLAN
Требование 2 - Изменение параметров по умолчанию:
- Измените пароль администратора
- Измените порты веб-интерфейса и SSH
- Отключите неиспользуемые сервисы (UPnP, SNMP, если не нужны)
Требование 4 - Шифрование передачи данных:
- Включите HTTPS для веб-интерфейса с надежным сертификатом
- Настройте VPN для удаленного доступа с шифрованием AES-256
- Отключите слабые протоколы TLS: System - Advanced - Admin Access - минимум TLS 1.2
Требование 6 - Обновление систем:
- Обновляйте pfSense и все пакеты до актуальных версий
- Подпишитесь на уведомления безопасности pfSense
Требование 8 - Идентификация и аутентификация:
- Настройте индивидуальные учетные записи для каждого администратора
- Включите двухфакторную аутентификацию (рецепт выше)
- Настройте блокировку при неудачных попытках входа
Требование 10 - Отслеживание и мониторинг доступа:
- Включите логирование всех событий
- Настройте отправку логов в SIEM (рецепт выше)
- Обеспечьте хранение логов минимум 1 год (90 дней онлайн)
- Синхронизируйте время через NTP
Требование 11 - Тестирование систем безопасности:
- Установите IDS/IPS (Suricata, рецепт выше)
- Проводите периодическое сканирование уязвимостей
Харденинг по CIS Benchmark
CIS (Center for Internet Security) предоставляет детальные рекомендации по безопасной конфигурации. Следующие пункты основаны на CIS-практиках для сетевых устройств.
Пошаговая настройка
Управление доступом:
- Создайте именованные учетные записи для каждого администратора: System - User Manager
- Назначьте минимально необходимые привилегии через группы
- Отключите учетную запись admin и создайте именованную с правами администратора
- Включите аудит действий администраторов
Сетевые сервисы:
- Отключите IPv6 если не используется: System - Advanced - Networking - Allow IPv6
- Отключите IGMP Proxy если не нужен
- Отключите UPnP и NAT-PMP
Криптографические настройки:
- System - Advanced - Admin Access:
- SSL/TLS Certificate - RSA 2048+ или ECDSA
- Отключите HTTP Redirect (только HTTPS)
- Для VPN используйте AES-256-GCM и SHA-256
- Отключите поддержку DES и 3DES в IPsec
- System - Advanced - Admin Access:
Логирование и аудит:
- Включите логирование по умолчанию для всех правил файрвола: System - Advanced - Firewall & NAT - Log packets matched from the default block rules
- Настройте удаленный syslog с TLS
- Включите логирование изменений конфигурации
Сетевая безопасность:
- Включите Anti-Lockout Rule только на управляющем интерфейсе
- Включите защиту от IP-spoofing: System - Advanced - Firewall & NAT - включите Bogon Networks blocking на всех WAN-интерфейсах
- Настройте Rate Limiting через Firewall - Traffic Shaper для защиты от DDoS
Резервное копирование:
- Настройте автоматическое резервное копирование конфигурации через AutoConfigBackup
- Храните резервные копии в зашифрованном виде
Блокировка Tor Exit Nodes и анонимайзеров
Блокировка выходных узлов Tor и известных анонимайзеров предотвращает обход корпоративных политик безопасности и снижает риск анонимных атак.
Пошаговая настройка
- Через pfBlockerNG (рекомендуется):
- Перейдите в Firewall - pfBlockerNG - IP - IPv4
- Добавьте фиды:
| Название | URL | Действие |
|---|---|---|
| Tor Exit Nodes | https://check.torproject.org/torbulkexitlist | Deny Both |
| dan.me.uk Tor | https://www.dan.me.uk/torlist/?exit | Deny Both |
- Настройте Update Frequency - Every 1 hour (список узлов Tor меняется часто)
Через Firewall Aliases (альтернатива без pfBlockerNG):
- Перейдите в Firewall - Aliases
- Создайте алиас:
- Name - Tor_Exit_Nodes
- Type - URL Table (IPs)
- URL - https://check.torproject.org/torbulkexitlist
- Update Freq - 1
Создайте правила блокировки на 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Для блокировки VPN-анонимайзеров добавьте дополнительные списки известных VPN-провайдеров в pfBlockerNG
Логируйте заблокированные попытки подключения для анализа: включите logging в правилах блокировки
Для комплексной защиты рекомендуется комбинировать блокировку Tor с DNS sinkhole и IDS/IPS (Suricata).