Системные логи 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 или state | match |
| Action | Действие: pass или block | block |
| Direction | Направление: in или out | in |
| IP version | Версия IP: 4 или 6 | 4 |
| Protocol | Протокол: TCP, UDP, ICMP и др. | TCP |
| Source IP | IP-адрес источника | 203.0.113.50 |
| Source port | Порт источника | 54321 |
| Destination IP | IP-адрес назначения | 192.168.1.1 |
| Destination port | Порт назначения | 443 |
| TCP flags | Флаги TCP (для TCP) | S (SYN) |
| Length | Длина пакета | 60 |
Включение журналирования правил
По умолчанию pfSense журналирует только заблокированные пакеты. Для включения журналирования разрешённых пакетов необходимо:
- Перейти в Firewall > Rules на вкладку нужного интерфейса
- Открыть правило для редактирования
- В секции Extra Options установить флажок Log packets that are handled by this rule
- Нажать 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 по протоколам:
| Протокол | Порт | Особенности |
|---|---|---|
| UDP | 514 | По умолчанию. Быстрый, без гарантии доставки |
| TCP | 514 | Гарантированная доставка, но возможна задержка при недоступности сервера |
Внимание:
Передача 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 IndexerGraylog
Для интеграции с Graylog необходимо:
- Создать Syslog UDP или TCP Input в Graylog на выделенном порту
- Настроить pfSense на отправку логов на IP:порт Graylog
- Создать экстракторы для разбора полей filterlog
ELK Stack (Elasticsearch, Logstash, Kibana)
Для интеграции с ELK Stack:
- Настроить Logstash с модулем syslog input
- Создать фильтр Logstash для разбора формата filterlog pfSense
- Направить логи 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
- Убедиться, что Enable Remote Logging включён в Status > System Logs > Settings
- Проверить правильность адреса и порта сервера syslog
- Убедиться, что правило файрвола разрешает исходящий трафик syslog (UDP/TCP 514) с интерфейса pfSense
- Проверить доступность сервера syslog: Diagnostics > Ping с указанием IP сервера
- На стороне сервера syslog убедиться, что сервис слушает на указанном порту и принимает подключения с IP pfSense
Журналы заполняются слишком быстро
- Отключить журналирование для правил с высоким трафиком
- Снять флажок Log Packets from Default Block Rules для уменьшения объёма записей о заблокированных bogon-пакетах
- Увеличить значение Log Rotation Size
- Увеличить значение Log Retention Count при необходимости хранения более длительной истории
Потеря логов при перезагрузке
При использовании RAM-диска для /var:
- Проверить, что включена опция периодического сохранения логов на постоянное хранилище
- Использовать remote syslog для гарантированного сохранения критических событий
- Рассмотреть отказ от RAM-диска для систем, требующих сохранения локальных логов
Связанные разделы
- Графики мониторинга pfSense - визуализация метрик производительности для корреляции с событиями журналов
- Инструменты диагностики pfSense - утилиты для углублённого анализа проблем, зафиксированных в логах
- Интеграция pfSense с Wazuh - пошаговая настройка отправки логов pfSense в Wazuh SIEM