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

> Управление логами pfSense - просмотр системных журналов, настройка remote syslog, фильтрация событий файрвола и интеграция с SIEM

Source: https://opennix.org/docs/pfsense/monitoring/pfsense-system-logs/


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 журналирует только заблокированные пакеты. Для включения журналирования разрешённых пакетов необходимо:

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** - ограничение количества выводимых записей

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

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

```bash
# Просмотр журнала файрвола в реальном времени
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](/docs/pfsense/pfsense-wazuh-integration/).

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

```
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-диска для систем, требующих сохранения локальных логов

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

- [Графики мониторинга pfSense](/docs/pfsense/monitoring/pfsense-monitoring-graphs/) - визуализация метрик производительности для корреляции с событиями журналов
- [Инструменты диагностики pfSense](/docs/pfsense/monitoring/pfsense-diagnostics/) - утилиты для углублённого анализа проблем, зафиксированных в логах
- [Интеграция pfSense с Wazuh](/docs/pfsense/pfsense-wazuh-integration/) - пошаговая настройка отправки логов pfSense в Wazuh SIEM

