Системные логи pfSense - журналы и remote syslog

pfSense ведёт детализированные журналы событий для всех системных компонентов - от файрвола и маршрутизации до VPN и сервисов DHCP/DNS. Журналы хранятся локально в каталоге /var/log/ в текстовом формате с периодической ротацией. Начиная с pfSense Plus 21.02 и CE 2.5.0, используется формат обычных текстовых файлов с ротацией и сжатием. В более ранних версиях применялся бинарный формат clog (circular log), который имел ограничения по гибкости и был подвержен повреждениям.

Просмотр журналов осуществляется через Status > System Logs. Каждая категория логов представлена отдельной вкладкой, что упрощает навигацию и снижает информационный шум.

Категории логов

pfSense разделяет журналы по категориям, каждая из которых доступна на отдельной вкладке:

КатегорияСодержание
SystemОбщесистемные события: запуск/остановка сервисов, обновления, ошибки ядра
FirewallЗаписи о пропущенных и заблокированных пакетах (основной журнал безопасности)
DHCPСобытия DHCP сервера: выдача аренд, запросы, отказы
DNS ResolverЗапросы и ответы Unbound DNS resolver
DNS ForwarderЗапросы DNS Forwarder (dnsmasq)
AuthАутентификация пользователей: вход в веб-интерфейс, SSH, Captive Portal
IPsecУстановка и разрыв IPsec туннелей, ошибки согласования
OpenVPNПодключения и отключения OpenVPN клиентов, ошибки сертификатов
WireGuardСобытия WireGuard VPN (при наличии настроенных интерфейсов)
L2TPПодключения L2TP VPN
PPPСобытия PPP-подключений (PPPoE, PPTP)
GatewayМониторинг шлюзов: изменения статуса, потеря связи, восстановление
RoutingИзменения в таблице маршрутизации, события протоколов динамической маршрутизации
NTPСинхронизация времени: смещение, выбор сервера
Captive PortalАутентификация и активность Captive Portal
WirelessСобытия беспроводных интерфейсов
PackagesУстановка и обновление пакетов

Журнал файрвола

Журнал файрвола - наиболее востребованный источник данных для анализа безопасности. Каждая запись содержит подробную информацию о решении файрвола по конкретному пакету.

Формат записей filterlog

Записи файрвола генерируются компонентом filterlog и содержат следующие поля:

ПолеОписаниеПример
Rule numberНомер правила, обработавшего пакет5
Sub rule numberНомер подправила (для NAT)0
AnchorПривязка к anchor (для плагинов)-
TrackerУникальный идентификатор правила1000000103
InterfaceИнтерфейс, на котором обработан пакетem0
ReasonПричина: match или statematch
ActionДействие: pass или blockblock
DirectionНаправление: in или outin
IP versionВерсия IP: 4 или 64
ProtocolПротокол: TCP, UDP, ICMP и др.TCP
Source IPIP-адрес источника203.0.113.50
Source portПорт источника54321
Destination IPIP-адрес назначения192.168.1.1
Destination portПорт назначения443
TCP flagsФлаги TCP (для TCP)S (SYN)
LengthДлина пакета60

Включение журналирования правил

По умолчанию pfSense журналирует только заблокированные пакеты. Для включения журналирования разрешённых пакетов необходимо:

  1. Перейти в Firewall > Rules на вкладку нужного интерфейса
  2. Открыть правило для редактирования
  3. В секции Extra Options установить флажок Log packets that are handled by this rule
  4. Нажать Save и Apply Changes

Внимание:

Включение журналирования для правил с высокой интенсивностью трафика (например, правила Allow All на LAN) создаёт значительную нагрузку на систему и быстро заполняет журналы. Следует журналировать только правила, требующие мониторинга.

Фильтрация журнала файрвола

Вкладка Firewall в Status > System Logs предоставляет расширенные фильтры:

  • Interface - фильтрация по интерфейсу (WAN, LAN, OPTx)
  • Action - Pass, Block или Reject
  • Direction - In или Out
  • Protocol - TCP, UDP, ICMP и другие
  • Source / Destination IP - фильтрация по адресам
  • Source / Destination Port - фильтрация по портам

Просмотр и фильтрация логов

Расширенный фильтр

Панель Advanced Log Filter доступна на каждой вкладке логов и поддерживает следующие критерии:

  • Message - текстовый поиск или регулярное выражение по содержимому записи
  • Time - поиск по временной метке
  • Process - фильтрация по имени процесса или службы
  • PID - фильтрация по идентификатору процесса
  • Quantity - ограничение количества выводимых записей

Просмотр из командной строки

Журналы доступны непосредственно через файловую систему:

# Просмотр журнала файрвола в реальном времени
tail -f /var/log/filter.log

# Поиск заблокированных пакетов с определённого IP
grep "block" /var/log/filter.log | grep "203.0.113.50"

# Просмотр системного журнала
tail -100 /var/log/system.log

Настройки журналирования

Общие параметры логов настраиваются через Status > System Logs > Settings:

Параметры отображения

  • Forward/Reverse Display - порядок отображения записей (новые сверху или снизу)
  • GUI Log Entries - количество записей, отображаемых в веб-интерфейсе (по умолчанию 500)
  • Log Firewall Default Blocks - журналирование пакетов, заблокированных правилом implicit deny
  • Log Packets from Default Pass Rules - журналирование пакетов, пропущенных автоматическими правилами (anti-lockout, private networks)
  • Log Packets from Default Block Rules - журналирование пакетов bogon-сетей и зарезервированных адресов

Ротация и хранение

  • Log Rotation Size - максимальный размер файла журнала перед ротацией (в байтах)
  • Log Retention Count - количество ротированных копий для хранения
  • Log Compression - сжатие ротированных файлов (включено по умолчанию, кроме ZFS)

При стандартной установке (не RAM-диск) журналы сохраняются между перезагрузками. При использовании RAM-диска для /var система выполняет резервное копирование и восстановление логов при корректном завершении работы и запуске.

Настройка Remote Syslog

Для долгосрочного хранения и централизованного анализа логов pfSense поддерживает отправку журналов на удалённые серверы syslog. Настройка выполняется через Status > System Logs > Settings в секции Remote Logging Options.

Параметры подключения

  • Enable Remote Logging - активация отправки логов на удалённый сервер
  • Source Address - IP-адрес или интерфейс, используемый как источник syslog-пакетов. По умолчанию используется адрес интерфейса, через который проходит маршрут к серверу syslog
  • IP Protocol - выбор протокола транспорта: IPv4 или IPv6
  • Remote Log Servers - до трёх адресов серверов syslog в формате ip:port (по умолчанию порт 514)

Протокол передачи

pfSense поддерживает отправку syslog по протоколам:

ПротоколПортОсобенности
UDP514По умолчанию. Быстрый, без гарантии доставки
TCP514Гарантированная доставка, но возможна задержка при недоступности сервера

Внимание:

Передача syslog по TLS (шифрованный канал) не поддерживается в стандартной конфигурации pfSense. Для защиты трафика syslog следует использовать VPN-туннель между pfSense и сервером syslog или установить пакет syslog-ng.

Выбор категорий для отправки

В секции Remote Syslog Contents следует выбрать категории логов для передачи на удалённый сервер:

  • Everything - все журналы (создаёт значительный трафик)
  • System Events - системные события
  • Firewall Events - события файрвола (наиболее востребованная категория для SIEM)
  • DNS Events - запросы и ответы DNS
  • DHCP Events - события DHCP
  • Auth Events - события аутентификации
  • VPN Events - события IPsec, OpenVPN, WireGuard
  • Gateway Events - события мониторинга шлюзов
  • Routing Events - события маршрутизации

Формат сообщений

pfSense отправляет сообщения syslog в формате BSD (RFC 3164). Этот формат поддерживается большинством серверов syslog и SIEM-систем. Формат включает:

<priority>timestamp hostname process[pid]: message

Пример записи файрвола:

<134>Apr 06 10:15:23 pfsense filterlog[12345]: 5,,,1000000103,em0,match,block,in,4,0x0,,64,12345,0,none,6,tcp,60,203.0.113.50,192.168.1.1,54321,443,0,S,12345678,,65535,,mss;nop;wscale

Интеграция с SIEM-системами

Wazuh

pfSense интегрируется с Wazuh SIEM через механизм remote syslog. Wazuh включает встроенные декодеры и правила для разбора логов pfSense, включая записи filterlog. Подробная инструкция представлена в разделе Интеграция pfSense с Wazuh .

Типовая схема интеграции:

pfSense (syslog UDP/TCP) --> Wazuh Manager (ossec-remoted) --> Wazuh Indexer

Graylog

Для интеграции с Graylog необходимо:

  1. Создать Syslog UDP или TCP Input в Graylog на выделенном порту
  2. Настроить pfSense на отправку логов на IP:порт Graylog
  3. Создать экстракторы для разбора полей filterlog

ELK Stack (Elasticsearch, Logstash, Kibana)

Для интеграции с ELK Stack:

  1. Настроить Logstash с модулем syslog input
  2. Создать фильтр Logstash для разбора формата filterlog pfSense
  3. Направить логи pfSense на адрес Logstash

Альтернативный вариант - использование Filebeat с модулем pfSense (доступен начиная с Filebeat 7.x).

Циклическое поведение логов

В текущих версиях pfSense (Plus 21.02+, CE 2.5.0+) логи хранятся в обычных текстовых файлах с ротацией:

  • При достижении файлом максимального размера он переименовывается с суффиксом .0, предыдущий .0 становится .1 и так далее
  • Ротированные файлы сжимаются (кроме ZFS)
  • Количество хранимых копий ограничивается параметром Log Retention Count
  • Самые старые копии удаляются автоматически

В устаревших версиях использовался формат clog (circular log), при котором новые записи перезаписывали старые в циклическом буфере фиксированного размера. Этот формат не поддерживал сжатие и был подвержен повреждениям при сбоях.

Устранение неполадок

Логи не передаются на remote syslog

  1. Убедиться, что Enable Remote Logging включён в Status > System Logs > Settings
  2. Проверить правильность адреса и порта сервера syslog
  3. Убедиться, что правило файрвола разрешает исходящий трафик syslog (UDP/TCP 514) с интерфейса pfSense
  4. Проверить доступность сервера syslog: Diagnostics > Ping с указанием IP сервера
  5. На стороне сервера syslog убедиться, что сервис слушает на указанном порту и принимает подключения с IP pfSense

Журналы заполняются слишком быстро

  • Отключить журналирование для правил с высоким трафиком
  • Снять флажок Log Packets from Default Block Rules для уменьшения объёма записей о заблокированных bogon-пакетах
  • Увеличить значение Log Rotation Size
  • Увеличить значение Log Retention Count при необходимости хранения более длительной истории

Потеря логов при перезагрузке

При использовании RAM-диска для /var:

  • Проверить, что включена опция периодического сохранения логов на постоянное хранилище
  • Использовать remote syslog для гарантированного сохранения критических событий
  • Рассмотреть отказ от RAM-диска для систем, требующих сохранения локальных логов

Связанные разделы

Last updated on