Syslog

Syslog (от англ. system log — системный журнал) — стандартный протокол для отправки и регистрации сообщений о событиях, происходящих в компьютерных системах (журналирования событий), используемый в компьютерных сетях[1], работающих по протоколу IP. Термин «syslog» может обозначать как стандартизованный сетевой протокол, так и программное обеспечение (приложения, библиотеки), реализующее отправку и получение системных сообщений.

Впервые syslog был реализован на платформе BSD Эриком Оллманом как часть проекта Sendmail[2], и благодаря простоте и масштабируемости получил широкое распространение на Unix- и Linux-системах, а также во многих сетевых устройствах.

Общие сведения
syslog
Тип сетевой протокол
Разработчик IETF
Лицензия открытый стандарт
Сайт datatracker.ietf.org/wg/…

Механизм

Согласно стандарту, источники событий формируют простые текстовые сообщения о происходящем и передают их для обработки серверу Syslog (также называемому «syslogd», «syslog daemon» или «syslog server»), используя один из сетевых протоколов семейства IP (UDP или TCP). Формирование и передача сообщений происходят по определённым правилам — протоколу Syslog. Обычно размер сообщения невелик (до 1024 байт[3]) и оно отправляется в открытом виде. Однако с помощью специальных средств (таких как Stunnel, sslio или sslwrap) возможна передача сообщений в зашифрованном виде по SSL/TLS.

Поскольку отправитель сообщения и сервер Syslog могут находиться на разных машинах, это позволяет централизованно собирать сообщения от множества географически распределённых источников. Такой подход особенно важен для сетевых администраторов, не имеющих непосредственного доступа ко всем устройствам.

Серверы Syslog не только регистрируют сообщения, но и могут пересылать их другим серверам на основании уровня важности (Severity) и категории источника (Facility), создавая тем самым иерархическую структуру журналов. Эта система облегчает мониторинг критических событий — например, сообщения о критических ошибках могут автоматически пересылаться на центральный сервер для быстрого реагирования.

В новых версиях протокола Syslog описан расширенный формат сообщений с точной отметкой времени, возможностью однозначной идентификации источника и поддержкой кодировки UTF-8, что решает проблему интернационализации. Дополнительные (структурированные) поля могут содержать данные о времени, языке сообщения, состоянии синхронизации часов и так далее. Также протокол поддерживает различные транспортные механизмы, описанные в специализированных RFC, однако предпочтение часто отдаётся транспортам на базе TLS.

Стандартизация

Долгое время syslog оставался стандартом де-факто, не имевшим формальных спецификаций, что приводило к несовместимости между реализациями. Первое формальное описание появилось в 2001 году (RFC 3164), а стандартизация структуры сообщений и механизмов передачи — в 2005 году.

В августе 2001 года опубликован информационный RFC 3164 («The BSD Syslog Protocol», протокол BSD Syslog), где описано текущее на тот момент положение дел. Анализ существующих реализаций позволил формализовать структуру сообщений, базовые модели внедрения и возможные угрозы безопасности. В качестве транспорта был утверждён UDP (порт 514) семейства IPv4 с соответствующими ограничениями.

В ноябре 2001 года RFC 3195 («Reliable Delivery for Syslog») предложил повысить надёжность доставки с помощью каркаса BEEP[4] и TCP (порт 601) как транспорта.

В марте 2009 года принята серия RFC с существенными усовершенствованиями протокола Syslog:

  • RFC 5424 («The Syslog Protocol») снял жёсткую привязку протокола к транспорту, задал новый формат сообщений с поддержкой структурированных данных, идентификаций через IANA и расширенной поддержкой UTF-8.
  • RFC 5425 («Transport Layer Security (TLS) Transport Mapping for Syslog») описал механизм безопасной передачи сообщений по TLS/TCP (порт 6514).
  • RFC 5426 («Transmission of Syslog Messages over UDP») регулирует передачу сообщений по UDP (порт 514), не использующему TLS.
  • RFC 5427 («Textual Conventions for Syslog Management») определил соглашения о важности и категориях сообщений протокола Syslog в формате MIB.

В октябре 2009 года вышла новая группа RFC, связавшая Syslog с механизмами SNMP и аварийными сигналами:

  • RFC 5674 («Alarms in Syslog») определяет использование Alarm MIB в syslog-сообщениях.
  • RFC 5675 («Mapping Simple Network Management Protocol (SNMP) Notifications to SYSLOG Messages») и RFC 5676 («Definitions of Managed Objects for Mapping SYSLOG Messages to Simple Network Management Protocol (SNMP) Notifications») стандартизируют трансляцию уведомлений SNMP в сообщения Syslog и обратно.

В мае 2010 года RFC 5848 («Signed Syslog Messages») описал применение цифровой подписи.

RFC 6012 (октябрь 2010, «Datagram Transport Layer Security (DTLS) Transport Mapping for Syslog») добавил поддержку защищённой передачи по DTLS/UDP, а RFC 6587 (апрель 2012, «Transmission of Syslog Messages over TCP») закрепил детали работы поверх TCP, не использующего TLS.

Итак, протокол syslog описан следующими стандартами RFC, опубликованными IETF[5]:

  • RFC 3164 — The BSD Syslog Protocol, август 2001 (отменён RFC 5424);
  • RFC 3195 — Reliable Delivery for Syslog, ноябрь 2001;
  • RFC 5424[6] — The Syslog Protocol, март 2009;
  • RFC 5425 — Transport Layer Security (TLS) Transport Mapping for Syslog, март 2009;
  • RFC 5426[7] — Transmission of Syslog Messages over UDP, март 2009;
  • RFC 5427 — Textual Conventions for Syslog Management, март 2009;
  • RFC 5674 — Alarms in Syslog, октябрь 2009;
  • RFC 5675 — Mapping Simple Network Management Protocol (SNMP) Notifications to SYSLOG Messages, октябрь 2009;
  • RFC 5676 — Definitions of Managed Objects for Mapping SYSLOG Messages to Simple Network Management Protocol (SNMP) Notifications, октябрь 2009;
  • RFC 5848 — Signed Syslog Messages, май 2010;
  • RFC 6012 — Datagram Transport Layer Security (DTLS) Transport Mapping for Syslog, октябрь 2010;
  • RFC 6587 — Transmission of Syslog Messages over TCP, апрель 2012.

Коды уровней важности сообщений

Коды уровней важности сообщений (RFC 5424)
Код Название (англ.) Описание
0 Emergency Система не работоспособна
1 Alert Требуется немедленное вмешательство
2 Critical Критическое состояние системы
3 Error Сообщения об ошибках
4 Warning Предупреждения о возможных проблемах
5 Notice Сообщения о нормальных, но важных событиях
6 Informational Информационные сообщения
7 Debug Отладочные сообщения

Категории источников сообщений (Facility)

Коды категорий источников сообщений (Facility)
Код Назначение
0 Ядро операционной системы
1 Программное обеспечение пользователя
2 Почтовая система
3 Системные службы (daemons)
4 Сообщения безопасности (авторизации)
5 Собственные сообщения syslogd
6 Подсистема печати
7 Подсистема новостных групп (NNTP)
8 Подсистема UUCP
9 Службы времени
10 Сообщения безопасности (авторизации)
11 Служба FTP
12 Подсистема NTP
13 Журнал аудита
14 Аварийный журнал
15 Службы времени
16 Локальный 0
17 Локальный 1
18 Локальный 2
19 Локальный 3
20 Локальный 4
21 Локальный 5
22 Локальный 6
23 Локальный 7

Примечания