Syslog и логирование в VyOS

Syslog - это стандартный протокол для передачи сообщений журналов (логов) в IP-сетях. VyOS поддерживает полнофункциональную систему логирования, включая локальные журналы, удаленные syslog-серверы, буферизованные логи и фильтрацию по уровням важности.

Обзор

VyOS использует rsyslog в качестве демона системного журнала. Система syslog позволяет:

  • Централизованно собирать логи с множества устройств
  • Разделять сообщения по facility (источникам) и severity (уровням важности)
  • Отправлять логи на удаленные серверы для анализа и архивирования
  • Настраивать ротацию и хранение логов
  • Интегрироваться с SIEM-системами (Splunk, ELK, Graylog)

Архитектура логирования VyOS

VyOS поддерживает несколько направлений для логов:

  • Локальные файлы: Логи записываются в файлы в /var/log/
  • Консоль: Сообщения выводятся на физическую консоль
  • Буфер: Логи хранятся в памяти (ring buffer)
  • Удаленные серверы: Пересылка на внешние syslog-серверы
  • Пользователи: Отправка критических сообщений залогиненным пользователям

Базовая конфигурация

Локальное логирование в файл

# Логи всех уровней в файл /var/log/messages
set system syslog global facility all level info

# Отдельные логи для различных facility
set system syslog file messages facility all level info
set system syslog file auth.log facility auth level info
set system syslog file auth.log facility authpriv level info

Консольное логирование

# Вывод критических сообщений на консоль
set system syslog console facility all level err

Логирование в буфер

# Circular buffer размером 10000 сообщений
set system syslog global facility all level info
set system syslog global archive size 10000

Удаленный syslog-сервер

# Отправка всех логов на удаленный сервер
set system syslog host 192.168.1.100 facility all level info

# Использование TCP вместо UDP
set system syslog host 192.168.1.100 facility all protocol tcp

# Нестандартный порт
set system syslog host 192.168.1.100 port 5140

Facility (источники)

VyOS поддерживает стандартные facility syslog:

FacilityОписаниеПримеры
allВсе источникиОбщее логирование
authАутентификацияSSH login, sudo
authprivПриватная аутентификацияPAM, локальные логины
cronПланировщик задачЗадачи cron
daemonСистемные демоныСервисы (DHCP, DNS, NTP)
kernЯдро системыKernel messages
mailПочтовая системаMail subsystem
syslogSyslog-демонRsyslog сообщения
userПользовательские процессыКоманды пользователей
local0-local7ПользовательскиеКастомные приложения

Severity Levels (уровни важности)

Уровни важности в порядке убывания:

LevelNumericОписаниеИспользование
emerg0Система неработоспособнаКритическая авария
alert1Требуется немедленное действиеСерьезная ошибка
crit2Критические условияОтказ оборудования
err3Условия ошибкиОшибки операций
warning4Предупреждающие условияПредупреждения
notice5Нормальные, но важныеИзменения конфигурации
info6Информационные сообщенияСтандартная работа
debug7Отладочные сообщенияДетальная информация

При настройке уровня записываются все сообщения данного уровня и выше. Например, level warning будет записывать warning, err, crit, alert, emerg.

Расширенная конфигурация

Множественные удаленные серверы

# Основной syslog-сервер (все логи)
set system syslog host 192.168.1.100 facility all level info

# Резервный сyslog-сервер
set system syslog host 192.168.1.101 facility all level info

# Специализированный сервер только для security events
set system syslog host 192.168.1.200 facility auth level info
set system syslog host 192.168.1.200 facility authpriv level info

Селективное логирование

# Только критические сообщения ядра в отдельный файл
set system syslog file kernel.log facility kern level err

# Только логи аутентификации
set system syslog file auth.log facility auth level info
set system syslog file auth.log facility authpriv level info

# Логи DHCP-сервера
set system syslog file dhcpd.log facility daemon level info

Логирование с протоколом TLS (зашифрованный syslog)

VyOS 1.5+ поддерживает TLS для безопасной передачи логов:

# Настройка TLS для удаленного сервера
set system syslog host 192.168.1.100 facility all level info
set system syslog host 192.168.1.100 protocol tcp
set system syslog host 192.168.1.100 port 6514

# Использование сертификата для проверки сервера
set pki ca ca-syslog certificate 'MIIDXTCCAkWg...'

Настройка архивирования и ротации

# Архивирование с ротацией логов
set system syslog global archive size 10000
set system syslog global archive file 10

# Размер файла логов перед ротацией (в байтах)
set system syslog file messages archive size 10485760
set system syslog file messages archive file 5

Примеры конфигураций

Пример 1: Базовое локальное логирование

# Общие логи
set system syslog file messages facility all level info
set system syslog file messages archive size 10485760
set system syslog file messages archive file 5

# Логи аутентификации отдельно
set system syslog file auth.log facility auth level info
set system syslog file auth.log facility authpriv level info

# Критические сообщения на консоль
set system syslog console facility all level err

# Commit и сохранение
commit
save

Пример 2: Централизованное логирование (Enterprise)

# Локальные логи (для быстрой диагностики)
set system syslog file messages facility all level info

# Основной удаленный syslog-сервер
set system syslog host 192.168.1.100 facility all level info

# Резервный syslog-сервер
set system syslog host 192.168.1.101 facility all level warning

# Отдельный сервер безопасности (только auth)
set system syslog host 192.168.10.50 facility auth level info
set system syslog host 192.168.10.50 facility authpriv level info

# Консоль только для критических сообщений
set system syslog console facility all level crit

commit
save

Пример 3: Высоконагруженная среда с TCP

# TCP для гарантированной доставки
set system syslog host 192.168.1.100 facility all level info
set system syslog host 192.168.1.100 protocol tcp
set system syslog host 192.168.1.100 port 514

# Буферизованное логирование
set system syslog global facility all level info
set system syslog global archive size 50000

# Локальное логирование минимизировано
set system syslog file messages facility all level warning

commit
save

Пример 4: Отладка конкретного сервиса (DHCP)

# Детальное логирование DHCP
set system syslog file dhcpd.log facility daemon level debug
set system syslog host 192.168.1.100 facility daemon level debug

# Обычные логи для остальных сервисов
set system syslog file messages facility all level info

commit
save

# После отладки - вернуть уровень info
delete system syslog file dhcpd.log facility daemon level debug
set system syslog file dhcpd.log facility daemon level info
commit
save

Пример 5: Интеграция с ELK Stack (Elasticsearch/Logstash/Kibana)

# Отправка JSON-форматированных логов в Logstash
set system syslog host 192.168.1.150 facility all level info
set system syslog host 192.168.1.150 port 5140
set system syslog host 192.168.1.150 protocol tcp

# Локальные логи для резервирования
set system syslog file messages facility all level info

commit
save

Конфигурация Logstash (на стороне сервера):

input {
  syslog {
    port => 5140
    type => "vyos"
  }
}

filter {
  if [type] == "vyos" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:timestamp} %{SYSLOGHOST:hostname} %{DATA:program}(?:\[%{POSINT:pid}\])?: %{GREEDYDATA:log_message}" }
    }
    date {
      match => [ "timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

output {
  elasticsearch {
    hosts => ["localhost:9200"]
    index => "vyos-logs-%{+YYYY.MM.dd}"
  }
}

Пример 6: Интеграция со Splunk

# Отправка всех логов в Splunk через TCP
set system syslog host splunk.example.com facility all level info
set system syslog host splunk.example.com port 514
set system syslog host splunk.example.com protocol tcp

# Локальное резервирование
set system syslog file messages facility all level info

commit
save

Конфигурация Splunk (inputs.conf):

[tcp://514]
connection_host = ip
sourcetype = syslog
index = network_devices

[syslog]
TRANSFORMS-routing = route_vyos_logs

# Создание поля для VyOS устройств
[vyos-sourcetype]
REGEX = vyos
FORMAT = sourcetype::vyos_syslog
DEST_KEY = MetaData:Sourcetype

Мониторинг и диагностика

Просмотр локальных логов

# Просмотр текущих логов в реальном времени
monitor log

# Последние 50 строк
show log tail 50

# Логи аутентификации
show log auth tail 50

# Логи ядра
show log kernel tail 50

# Фильтрация по ключевому слову
show log | match DHCP
show log | match failed

# Логи конкретного файла
tail -f /var/log/messages
tail -f /var/log/auth.log

Проверка конфигурации syslog

# Показать активную конфигурацию syslog
show configuration system syslog

# Показать в формате commands
show configuration commands | match syslog

Проверка статуса rsyslog

# Статус демона rsyslog
show system syslog

# Проверка процесса
ps aux | grep rsyslog

# Проверка сетевых соединений (если используются удаленные серверы)
netstat -an | grep :514
ss -tulpn | grep rsyslog

Тестирование отправки логов

# Генерация тестового сообщения
logger -t test-message "This is a test syslog message from VyOS"

# С указанием priority
logger -p local0.info "Test message to local0 facility"

# Проверка доставки на удаленный сервер (с сервера логов)
tail -f /var/log/syslog | grep vyos

Проверка сетевой доступности syslog-сервера

# Ping до syslog-сервера
ping 192.168.1.100 count 3

# Проверка порта UDP 514
nc -vzu 192.168.1.100 514

# Проверка порта TCP 514
nc -vz 192.168.1.100 514

# Telnet (для TCP)
telnet 192.168.1.100 514

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

Проблема: Логи не отправляются на удаленный сервер

Диагностика:

# 1. Проверка конфигурации
show configuration system syslog host

# 2. Проверка сетевой связности
ping 192.168.1.100 count 5

# 3. Проверка firewall на VyOS
show firewall

# 4. Проверка открытого порта на сервере (если есть доступ)
nc -vzu 192.168.1.100 514  # UDP
nc -vz 192.168.1.100 514   # TCP

# 5. Проверка логов rsyslog
grep -i error /var/log/messages | grep rsyslog
journalctl -u rsyslog -n 50

Решение:

# Проверка правил firewall (разрешить исходящий трафик)
set firewall name WAN_LOCAL rule 100 action accept
set firewall name WAN_LOCAL rule 100 description 'Allow syslog to remote server'
set firewall name WAN_LOCAL rule 100 destination address 192.168.1.100
set firewall name WAN_LOCAL rule 100 destination port 514
set firewall name WAN_LOCAL rule 100 protocol udp

# Или использовать TCP
delete system syslog host 192.168.1.100 protocol
set system syslog host 192.168.1.100 protocol tcp

commit
save

Проблема: Логи слишком объемные, диск заполняется

Диагностика:

# Проверка использования диска
show system storage

# Размер файлов логов
ls -lh /var/log/

# Самые большие лог-файлы
du -h /var/log/ | sort -rh | head -10

Решение:

# Настройка ротации и архивирования
set system syslog file messages archive size 5242880    # 5 MB
set system syslog file messages archive file 3          # Хранить 3 архива

# Уменьшение уровня логирования
delete system syslog file messages facility all level debug
set system syslog file messages facility all level warning

# Отправка на удаленный сервер вместо локального хранения
set system syslog host 192.168.1.100 facility all level info
delete system syslog file messages

commit
save

# Ручная очистка старых логов
sudo rm /var/log/messages.*.gz

Проблема: Не видны логи определенного сервиса

Диагностика:

# Проверка, что facility настроен
show configuration system syslog | match daemon

# Проверка работы сервиса (например DHCP)
show service dhcp-server statistics

# Поиск логов сервиса
grep -i dhcp /var/log/messages

Решение:

# Добавление специфичного facility и level debug
set system syslog file dhcpd.log facility daemon level debug

# Или повышение детализации для всех
set system syslog file messages facility all level debug

commit
save

# После отладки - вернуть info
set system syslog file messages facility all level info
commit
save

Проблема: Время в логах некорректное

Диагностика:

# Проверка системного времени
show date

# Проверка NTP
show ntp

# Проверка timezone
show configuration system time-zone

Решение:

# Установка правильной timezone
set system time-zone Europe/Moscow

# Настройка NTP (если не настроен)
set system ntp server 0.pool.ntp.org
set system ntp server 1.pool.ntp.org

commit
save

# Перезапуск rsyslog
sudo systemctl restart rsyslog

Проблема: Дублирование сообщений в логах

Причина: Часто возникает при неправильной конфигурации facility.

Решение:

# Проверка дублирующих правил
show configuration system syslog

# Пример некорректной конфигурации (дублирование)
# set system syslog file messages facility all level info
# set system syslog file messages facility kern level info  # Дублирует, т.к. all включает kern

# Удаление избыточных правил
delete system syslog file messages facility kern

commit
save

Проблема: Логи не пишутся после изменения конфигурации

Решение:

# Перезапуск rsyslog
sudo systemctl restart rsyslog

# Проверка статуса
sudo systemctl status rsyslog

# Проверка синтаксиса конфигурации rsyslog
sudo rsyslogd -N1

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

Graylog

# Настройка отправки в Graylog (GELF UDP input)
set system syslog host graylog.example.com facility all level info
set system syslog host graylog.example.com port 12201

commit
save

Конфигурация Graylog:

  1. System → Inputs → Select “Syslog UDP”
  2. Launch new input на порту 514 или 12201
  3. Создать extractors для парсинга VyOS логов

Syslog-ng (на стороне сервера)

source s_vyos {
    udp(ip(0.0.0.0) port(514));
    tcp(ip(0.0.0.0) port(514));
};

filter f_vyos {
    host("vyos-*");
};

destination d_vyos {
    file("/var/log/vyos/$HOST/$YEAR-$MONTH-$DAY.log"
        create_dirs(yes)
        owner("root")
        group("root")
        perm(0640)
    );
};

log {
    source(s_vyos);
    filter(f_vyos);
    destination(d_vyos);
};

Rsyslog (на стороне сервера)

# /etc/rsyslog.d/10-vyos.conf

# UDP input
module(load="imudp")
input(type="imudp" port="514")

# TCP input
module(load="imtcp")
input(type="imtcp" port="514")

# Шаблон для VyOS логов
template(name="VyOSLogFormat" type="string"
         string="/var/log/vyos/%HOSTNAME%/%$YEAR%-%$MONTH%-%$DAY%.log")

# Правило для VyOS устройств (по hostname)
if $hostname startswith 'vyos-' then {
    action(type="omfile" dynaFile="VyOSLogFormat")
    stop
}

Лучшие практики

1. Централизованное логирование

  • Всегда отправляйте логи на централизованный syslog-сервер
  • Используйте резервный сервер для критичных сред
  • Храните локальные логи минимального уровня (warning и выше) для быстрой диагностики

2. Выбор протокола

  • UDP (514): Быстрее, но без гарантии доставки. Подходит для большинства случаев
  • TCP (514/601): Гарантированная доставка, медленнее. Используйте для критичных логов
  • TLS (6514): Шифрованная передача для чувствительной информации

3. Уровни логирования

  • Production: info для обычных сервисов, warning для высоконагруженных
  • Development/Testing: debug для отладки конкретных проблем
  • Security critical: info для auth/authpriv на отдельный сервер

4. Ротация и архивирование

  • Настройте ротацию для всех локальных логов
  • Размер файла: 5-10 MB для роутеров с ограниченным хранилищем
  • Количество архивов: 3-5 для истории

5. Мониторинг логов

  • Настройте алерты на критические сообщения (crit, alert, emerg)
  • Мониторьте доступность syslog-сервера
  • Проверяйте размер локальных логов (disk space)

6. Безопасность

  • Ограничьте доступ к syslog-серверу с помощью firewall
  • Используйте TLS для передачи логов через ненадежные сети
  • Регулярно проверяйте логи аутентификации

7. Производительность

  • В высоконагруженных средах минимизируйте локальное логирование
  • Используйте буферизацию для снижения нагрузки на диск
  • Рассмотрите использование TCP для стабильности

8. Время и синхронизация

  • Всегда настраивайте NTP для корректных временных меток
  • Используйте одинаковый timezone на всех устройствах
  • Проверяйте синхронизацию времени регулярно

9. Документирование

  • Документируйте схему логирования (какие логи куда идут)
  • Указывайте facility для каждого типа сообщений
  • Ведите журнал изменений конфигурации syslog

10. Тестирование

  • Тестируйте изменения конфигурации syslog с помощью logger
  • Проверяйте доставку логов после настройки
  • Имейте план восстановления при сбое централизованного логирования

Полезные команды

# Просмотр логов в реальном времени
monitor log

# Последние N строк
show log tail 100

# Поиск по ключевому слову
show log | match "keyword"

# Логи аутентификации
show log auth tail 50

# Логи ядра
show log kernel tail 50

# Генерация тестового сообщения
logger -t test "Test syslog message"

# Проверка статуса rsyslog
show system syslog

# Перезапуск rsyslog (если необходимо)
sudo systemctl restart rsyslog

# Проверка синтаксиса конфигурации rsyslog
sudo rsyslogd -N1

# Просмотр конфигурации
show configuration system syslog

# Список файлов логов
ls -lh /var/log/

# Использование диска
show system storage
df -h

# Поиск по всем логам
sudo grep -r "search term" /var/log/

Заключение

Правильная настройка syslog критична для мониторинга, аудита и устранения неполадок в сетевой инфраструктуре. VyOS предоставляет гибкую систему логирования с поддержкой централизованных серверов, различных уровней важности и интеграции с современными SIEM-системами.

Централизованное логирование позволяет:

  • Коррелировать события с множества устройств
  • Проводить анализ безопасности
  • Обеспечивать соответствие требованиям compliance
  • Быстро диагностировать проблемы

Для production-сред рекомендуется использовать централизованный syslog-сервер с резервированием, настроить ротацию локальных логов и мониторить доступность системы логирования.

Проверено OpenNix LLC · Обновлено