📜 Syslog : Полное руководство |

📜 Syslog : Полное руководство

Мануал

Если вы системный администратор или просто обычный пользователь Linux, есть очень большая вероятность, что вы хотя бы однажды работали с Syslog.

В вашей системе Linux практически все, что связано с протоколированием системы, связано с протоколом Syslog.

Разработанный в начале 80-х годов Эриком Оллманом (из университета Беркли), протокол syslog – это спецификация, определяющая стандарт для регистрации сообщений в любой системе.

Да… на любой системе.

Syslog не привязан к операционным системам Linux, он также может быть использован в Windows или любой другой операционной системе, которая реализует протокол syslog.

Если вы хотите узнать больше о syslog и о протоколировании в Linux в целом, это руководство, которое вам стоит прочитать.

Здесь собрано все, что вам нужно знать о Syslog.

Какова цель Syslog?

Syslog используется в качестве стандарта для создания, пересылки и сбора логов, создаваемых на Linux.

Syslog определяет уровни серьезности, а также уровни возможностей, помогая пользователям лучше понимать журналы, создаваемые на их компьютерах.

В дальнейшем логи могут быть проанализированы и визуализированы на серверах, называемых Syslog-серверами.

Вот еще несколько причин, по которым протокол syslog был разработан в первую очередь:

  • Определение архитектуры: это будет подробно описано позже, но если syslog является протоколом, то он, вероятно, будет частью полной сетевой архитектуры, с множеством клиентов и серверов. Как следствие, нам необходимо определить роли, короче говоря: вы собираетесь получать, производить или передавать данные?
  • Формат сообщений: syslog определяет способ форматирования сообщений. Очевидно, что это необходимо стандартизировать, поскольку журналы часто анализируются и хранятся в различных системах хранения. Как следствие, нам необходимо определить, что клиент syslog сможет производить и что сервер syslog сможет получать;
  • Определение надежности: syslog должен определить, как он обрабатывает сообщения, которые не могут быть доставлены. Будучи частью стека TCP/IP, syslog, очевидно, будет иметь мнение о том, какой сетевой протокол (TCP или UDP) выбрать;
  • Работа с аутентификацией или подлинностью сообщений: syslog нужен надежный способ убедиться, что клиенты и серверы общаются безопасным способом и что полученные сообщения не изменены.

Теперь, когда мы знаем, зачем вообще нужен Syslog, давайте посмотрим, как работает архитектура Syslog.

Что такое архитектура Syslog?

При проектировании архитектуры протоколирования, например, централизованного сервера протоколирования, весьма вероятно, что несколько экземпляров будут работать вместе.

Некоторые из них будут генерировать сообщения журнала, и они будут называться “устройствами” или “клиентами syslog”.

Некоторые будут просто пересылать полученные сообщения, они будут называться “релеями”.

Наконец, есть несколько экземпляров, которые будут получать и хранить данные логов, они называются “коллекторами” или “серверами syslog”.

Зная эти понятия, мы уже можем утверждать, что автономная машина Linux сама по себе действует как “клиент-сервер syslog”: она производит данные журнала, они собираются rsyslog и сохраняются прямо в файловой системе.

Вот набор примеров архитектуры, основанной на этом принципе.

В первом примере у вас есть одно устройство и один коллектор.

Это самая простая форма архитектуры ведения логов.

Добавьте еще несколько клиентов в вашу инфраструктуру, и вы получите основу архитектуры централизованного протоколирования.

📜 Настройка централизованного сервера логов с помощью Rsyslog в CentOS / RHEL 8

Несколько клиентов производят данные и отправляют их на централизованный сервер syslog, который отвечает за агрегацию и хранение данных клиентов.

Если мы хотим усложнить нашу архитектуру, мы можем добавить “релей”.

Примерами ретрансляторов могут быть, например, экземпляры Logstash, но они также могут быть правилами rsyslog на стороне клиента.

Эти релеи в большинстве случаев действуют как “маршрутизаторы на основе содержимого”

Это означает, что на основе содержимого журнала данные будут перенаправлены в разные места.

Данные также могут быть полностью отброшены, если они вас не интересуют.

Теперь, когда мы подробно рассмотрели компоненты Syslog, давайте посмотрим, как выглядит сообщение Syslog.

Какой формат сообщений Syslog?

Формат syslog делится на три части:

  • Часть PRI: в которой подробно описываются уровни приоритета сообщения (от отладочного сообщения до экстренного), а также уровни средств (mail, auth, core);
  • Часть HEADER: состоит из двух полей – TIMESTAMP и HOSTNAME, имя хоста – это имя машины, которая отправляет лог;
  • часть MSG: эта часть содержит фактическую информацию о произошедшем событии. Она также делится на поле TAG и поле CONTENT.

Перед тем как подробно описать различные части формата syslog, давайте кратко рассмотрим уровни серьезности syslog, а также уровни объектов syslog.

 Что такое уровни объектов Syslog?

Вкратце, уровень объекта используется для определения программы или части системы, которая создала журналы.

По умолчанию некоторые части вашей системы имеют уровни объектов, например, ядро использует объект kern, или ваша почтовая система использует объект mail.

Если сторонний пользователь хочет выпустить журнал, он, вероятно, будет использовать зарезервированный набор уровней объектов с 16 по 23, называемый “локальным использованием”.

В качестве альтернативы, они могут использовать объект “уровень пользователя”, что означает, что они будут выдавать журналы, относящиеся к пользователю, который выдавал команды.

Короче говоря, если мой сервер Apache запущен пользователем “apache”, то журналы будут храниться в файле под названием “apache.log” (<user>.log).

Ниже приведены уровни Syslog, описанные в таблице:

Числовой код Ключевое слово Название объекта
0 kern Сообщения ядра
1 user Сообщения на уровне пользователя
2 mail Почтовая система
3 daemon Системные демоны
4 auth Сообщения о безопасности
5 syslog Сообщения Syslogd
6 lpr Подсистема линейного принтера
7 news Подсистема сетевых новостей
8 uucp Подсистема UUCP
9 cron Часовой демон
10 authpriv Сообщения о безопасности
11 ftp FTP демон
12 ntp Подсистема NTP
13 security Аудит журнал безопасности
14 console Предупреждения журнала консоли
15 solaris-cron Журналы планирования
16-23 local0 to local7 Объекты местного использования

В системе Linux, по умолчанию, файлы разделяются по имени объекта, что означает, что у вас будет файл для auth (auth.log), файл для ядра (kernel.log) и так далее.

Пример на Kali Linux:

Теперь, когда мы рассмотрели уровни объектов syslog, давайте опишем, что такое уровни серьезности syslog.

Что такое уровни серьезности Syslog?

Уровни серьезности Syslog используются для определения степени серьезности события журнала и варьируются от отладочных, информационных сообщений до аварийных уровней.

Аналогично уровням объектов Syslog, уровни серьезности делятся на числовые категории от 0 до 7, причем 0 – это самый критический аварийный уровень.

Ниже приведены уровни серьезности Syslog, описанные в таблице:

Значение Серьезность Ключевое слово
0 Emergency emerg
1 Alert alert
2 Critical crit
3 Error err
4 Warning warning
5 Notice notice
6 Informational info
7 Debug debug

Даже если по умолчанию журналы хранятся по имени объекта, вы вполне можете решить, что вместо этого они будут храниться по уровням серьезности.

Если вы используете rsyslog в качестве сервера по умолчанию, вы можете проверить свойства rsyslog, чтобы настроить способ разделения логов.

Теперь, когда вы знаете немного больше об объектах и уровнях серьезности, давайте вернемся к формату сообщений syslog.

Что такое часть PRI?

Часть PRI – это первая часть, которую вы сможете прочитать в сообщении формата syslog.

PRI хранит “Значение приоритета” между угловыми скобками.

Если вы возьмете номер объекта сообщения, умножите его на восемь и добавите уровень серьезности, вы получите “Значение приоритета” вашего сообщения syslog.

Запомните это, если вы захотите расшифровать сообщение syslog в будущем.

Что такое часть HEADER?

Как уже говорилось, часть HEADER состоит из двух важнейших данных: части TIMESTAMP и части HOSTNAME (которая иногда может быть преобразована в IP-адрес).

Часть HEADER следует непосредственно за частью PRI, сразу после угловой скобки.

Следует отметить, что часть TIMESTAMP имеет формат “Mmm dd hh:mm:ss”, “Mmm” – это первые три буквы месяца года.

Когда речь идет о HOSTNAME, оно часто задается при вводе команды hostname.

Если оно не найдено, ему будет присвоен либо IPv4, либо IPv6 хоста.

Как работает доставка сообщений Syslog?

При выдаче сообщения syslog вы хотите быть уверены, что используете надежные и безопасные способы доставки данных журнала.

Конечно, Syslog имеет свое мнение на этот счет, и вот несколько ответов на эти вопросы.

Что такое пересылка syslog?

Syslog forwarding заключается в отправке журналов клиентов на удаленный сервер для их централизации, что облегчает анализ и визуализацию журналов.

В большинстве случаев системные администраторы следят не за одной машиной, а за десятками машин, как на месте, так и вне его.

Как следствие, очень распространена практика отправки журналов на удаленную машину, называемую централизованным сервером регистрации, с использованием различных протоколов связи, таких как UDP или TCP.

Syslog использует TCP или UDP?

Как указано в спецификации RFC 3164, клиенты syslog используют UDP для доставки сообщений на серверы syslog.

Более того, Syslog использует порт 514 для связи по UDP.

Однако в последних реализациях syslog, таких как rsyslog или syslog-ng, у вас есть возможность использовать TCP (Transmission Control Protocol) в качестве безопасного канала связи.

Например, rsyslog использует порт 10514 для связи по TCP, гарантируя, что ни один пакет не будет потерян по пути.

Более того, вы можете использовать протокол TLS/SSL поверх TCP для шифрования пакетов Syslog, что гарантирует, что никакие атаки типа “человек посередине” не смогут подсмотреть ваши журналы.

Каковы текущие реализации Syslog?

Syslog – это спецификация, но не фактическая реализация в системах Linux.

Вот список текущих реализаций Syslog в Linux:

  • Демон Syslog: опубликованный в 1980 году, демон syslog, вероятно, является первой реализацией, которая поддерживает только ограниченный набор функций (таких как передача UDP). В Linux он наиболее известен как демон sysklogd;
  • Syslog-ng: опубликованный в 1998 году, syslog-ng расширяет набор возможностей оригинального демона syslog, включая TCP-пересылку (что повышает надежность), шифрование TLS и фильтры на основе содержимого. Вы также можете сохранять журналы в локальных базах данных для дальнейшего анализа.
    Презентационная карта Syslog-ng
  • Rsyslog: выпущенный в 2004 году Райнером Герхардсом, rsyslog поставляется как реализация syslog по умолчанию в большинстве актуальных дистрибутивов Linux (Ubuntu, RHEL, Debian и т.д.). Он предоставляет тот же набор функций, что и syslog-ng для пересылки, но позволяет разработчикам получать данные из большего количества источников (например, Kafka, файл или Docker).

Заключение

Протокол Syslog, безусловно, является классикой для системных администраторов или инженеров Linux, желающих глубже понять, как работает протоколирование на сервере.

Однако есть время для теории, а есть время для практики.

Так куда же вам двигаться дальше? У вас есть несколько вариантов.

Вы можете начать с установки сервера syslog на вашем экземпляре, например, сервера Kiwi Syslog, и начать сбор данных с него.

см. также:

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий