Система регистрации событий: Syslog
Категория: Система Syslog и журнальные файлы | Автор: admin | 23-12-2009, 03:06 | Просмотров: 7006

Syslog — это полноценная система регистрации событий, написанная Эриком Оллманом (Eric Allman). Многие поставщики пользуются ею для управления информацией, которую генерируют ядро и системные утилиты.

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

Данная система отличается высокой гибкостью. Она позволяет сортировать сообщения по источникам и степени важности ("уровню серьезности” в терминологии системы Syslog) и направлять их в различные пункты назначения: в журнальные файлы, на терминалы пользователей и даже на другие машины. Одной из самых ценных особенностей этой системы является ее способность централизовать процедуру регистрации событий в сети.

Система Syslog состоит из трех компонентов:

  • syslogd — демон, который осуществляет регистрацию (его конфигурационный файл называется /etc/syslog.conf);
  • openlog(), syslog(), closelog() — библиотечные функции, которые передают сообщения демону syslogd;
  • logger — команда пользовательского уровня, которая принимает регистрационные сообщения от интерпретатора команд.

Демон syslogd запускается во время начальной загрузки системы и работает непрерывно. Программы, взаимодействующие с системой Syslog, записывают регистрационные сообщения (с помощью библиотечной функции syslog()) в специальный файл /dev/log (иногда /var/run/log), который, в зависимости от системы, представляет собой сокет, именованный канал или потоковый модуль. Демон syslogd читает сообщения из этого файла, сверяете; со своим конфигурационным файлом и пересылает каждое сообщение соответствующему адресату. Во многих системах демон, кроме того, читает сообщения ядра из устройства /dev/klog.

По сигналу "отбой" (HUP, сигнал 1) демон syslogd закрывает своии файлы регистрации, перечитывает конфигурационный файл и вновь запускает процесс регистрации. Если изменяется файл syslog.conf, нужно послать демону syslogd сигнал HUP, иначе изменения не вступят в силу. Сигнал TERM приводит к завершению работы демона.

Демон syslogd записывает свой идентификатор процесса (PID) в файл /var/run/syslog.pid (в некоторых системах — в файл /etc/syslog.pid). Это облегчает передачу демону сигналов из сценариев. Например, следующая команда выдает сигнал отбоя:

% kill -HUP '/bin/cat /var/run/syslog.pid'

 

Попытки сжать или заменить файл регистрации, который был открыт демоном syslogd для записи, неразумны и приводят к непредсказуемым последствиям. Некоторые поставщики предлагают заготовку сценария (часто она находится в каталоге /usr/lib/newsyslog), назначение которой — ротация журнальных файлов. Улучшенная версия сценария, называющаяся rotz, доступна на Web-узле www.admin.com.

 

Конфигурирование демона syslogd

 

Действия демона syslogd зависят от содержимого файла /etc/syslog.conf. Это текстовый файл относительно простого формата. Пустые строки и строки. начинающиеся со знака решетки (#), игнорируются. Базовый формат этого файла таков:

селектор <Таb> действие

 

Например, строка

mail.info     /var/log/maillog

 

обеспечивает сохранение сообщений, поступающих от почтовой системы, в файле /var/log/maillog. Поля селектор и действие должны быть разделены одним или несколькими знаками табуляции; пробелы не используются в качестве разделителей и становятся невидимыми ошибками, которые бывает очень тяжело отследить. Один из способов внесения таких ошибок — операции вырезания и вставки текста при работе с многооконным графическим интерфейсом.

Селектор обозначает программу ("средство" в терминологии системы Syslog), которая посылает регистрационное сообщение, и уровень серьезности этого сообщения. Формат селектора такой:

средство.уровень

 

Имена средств и уровни серьезности следует выбирать из стандартного списка значений; программы не могут составлять собственных списков. Есть средства, определенные для ядра, для группы общих программ и для локальных программ. Все остальное проходит под общим именем "user" (т.е. пользователь).

Селекторы могут содержать ключевые слова * и none, которые обозначают соответственно "все" и "ничего". Селектор может включать группу средств, разделенных запятыми. Допускается также разделение с помощью символов точки с запятой.

В общем случае селекторы объединяются методом логического ИЛИ; для сообщения, соответствующего любому из селекторов, будет выполняться действие, указанное в одноименном поле. Селектор уровня none означает исключение перечисленных в нем средств независимо от того, что указано в остальных селекторах этой же строки.

Ниже приведены примеры селекторов:

средство.уровень                      действие

средство1,средство2.уровень           действие

средство1.уровень1;средство2.уровень2 действие

*.уровень                             действие

*.уровень;плохое средство.none        действие

 

В табл. 11.2 перечислены допустимые имена средств. В большинстве версий системы Syslog определено 18 средств (в самой последней версии — 21). Отдельные имена зарезервированы для будущего использования.

Демон syslogd сам выдает сообщения о временных метках, которые регистрируются, если в файле syslog.conf для них указан селектор со средством "mark". Временные метки помогают точно определить, когда машина вышла из строя: не просто "сегодня ночью", а "между 3:00 и 3:20 ночи". Это очень полезно при устранении проблем, которые возникают регулярно. Например, в нескольких организациях системы таинственным образом сбоили, пока не оказалось, что уборщицы поздно вечером включали пылесосы, отключая при этом компьютеры.

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

Уровни серьезности перечислены в порядке убывания важности в табл. 11.3.

Таблица 11.2. Имена средств Syslog

Средство

Программы или сообщения, которые его используют

kern

user

 mail

daemon

auth

1рг

news

uucp

сгоп

mark

1оса10-7

syslog1

authpriv1

ftpl

*

Ядро

Пользовательские процессы (по умолчанию, если не указано иное

Система sendmail и другие почтовые программы

Системные демоны

Команды, связанные с безопасностью и авторизацией

Система буферизации печати в BSD

Система телеконференций Usenet

Зарезервировано для системы UUCP, которая его не использует

Демон cron

Метки времени, генерируемые через одинаковые промежутки

Восемь разновидностей локальных сообщений

Внутренние сообщения демона syslogd

Частные (не системные) авторизационные сообщения

FTP-демон ftpd

Все средства, кроме "mark"

1 Новые средства в версии 8.1 от Беркли

 

Таблица 11.3. Уровни серьезности сообщений Syslog

Уровень

Приблизительное значение

emerg

Экстренные ситуации

alert

Срочные ситуации

crit

Критические состояния

err

Другие ошибочные состояния

warning

Предупреждающие сообщения

notice

Необычные события, которые заслуживают внимания

info

Информационные сообщения

debug

Отладочные сообщения

 

Уровень сообщения определяет его важность. В файле syslog.conf уровни обозначают минимальную важность, которую сообщение должно иметь для того, чтобы быть зарегистрированным. Например, сообщение почтовой системы с уровнем серьезности "warning" будет соответствовать селектору mail.warning, а также селекторам mail.notice, mail.info, mail.debug, *.warning, *.notice, *.info и *.debug. Если в файле syslog.conf указано, что сообщения mail.info должны регистрироваться в файле, то сообщения mail.warning тоже будут направляться туда.

Поле действие определяет, что нужно делать с сообщением. Возможные варианты перечислены в табл. 11.4.

 

Таблица 11.4. Действия Syslog

Действие

Описание

имя_файла

@имя_машины

@1Р_адрес

пользователь!,

пользователь2,

*

Записать сообщение в файл на локальной машине

Переслать сообщение демону syslogd на машину с указанным именем

Переслать сообщение машине с заданным IP-адресом

Вывести сообщение на экраны терминалов указанных пользователей, если они зарегистрированы в системе

 

Вывести сообщение на экраны всех зарегистрированных пользователей

 

Если в качестве действия задано имя файла, то необходимо, чтобы это было абсолютное путевое имя. Указанный файл должен существовать; демон syslogd не будет создавать его. Если задается не IP-адрес, а имя машины, оно должно быть известно одной из систем преобразования имен, например DNS или NIS.

 

Некоторые версии системы Syslog используют при работе с конфигурационным файлом препроцессор макрокоманд m4. Изучите имеющуюся документацию, чтобы узнать, как правильно пользоваться кавычками. Например, нужно брать в кавычки ключевые слова m4 или выражения, включающие запятые. Ниже приведен образец строки конфигурационного файла, рассчитанной на обработку препроцессором m4:

auth.notice     ifdef('LOGHOST',   /var/log/authlog',   ‘@loghost')

 

Обратите внимание на употребление как обратных, так и одиночных кавычек. Эта строка направляет сообщения в файл /var/log/authlog, если определено значение переменной LOGHOST. В противном случае сообщения пересылаются на машину loghost. Инструкции ifdef препроцессора m4 очень эффективны. Они позволяют администратору системы создать один файл syslog.conf. который будет затем использоваться на всех машинах.

Хотя в селекторе допускается указывать сразу несколько средств и уровней, выполнение нескольких действий не предусмотрено. Для того чтобы послать сообщение в два места (например, в локальный файл и на центральную регистрационную машину), нужно включить в конфигурационный файл две строки с одинаковыми селекторами.

 

Улучшения системы Syslog в Red Hat

 

В Red Hat имеется улучшенная версия демона syslogd. Разрешается направлять регистрационные сообщения в именованные каналы и употреблять пробелы в качестве разделителей в файле syslog.conf.

В файле syslog.conf перед названиями уровней могут ставиться символы '=' и '!', обозначающие "только этот приоритет" и "за исключением этого и более высоких приоритетов" (табл. 11.5).

Таблица 11.5. Примеры использования квалификаторов в файле syslog.conf в Red Hat

Селектор

Значение

mail.info

mail.=info

mail.info;mail.!err

mail.debug; mail.!-warning

Выбор почтовых сообщений уровня "info" и выше

Выбор почтовых сообщений только уровня "info'

Выбор почтовых сообщений уровней "info" "notice" и "warning"

Выбор почтовых сообщений любого уровня, кроме "warning"

 

В Red Hat демон syslogd особенно осторожен при работе в сети. Если отсутствует флаг -r, демон не станет принимать сообщения от других компьютеров. По умолчанию он также отказывается выступать в роли маршрутизатора сторонних сообщений: сообщения, поступающие от сетевого узла, не могут быть пересланы на другой узел. Флаг -h отменяет такое поведение демона. (Если нужно, чтобы эти опции были установлены всегда модифицируйте сценарий /etc/rc.d/init.d/syslog.)

В Red Hat имеется отдельный демон, klogd, принимающий сообщения от ядра и вставляющий их в поток сообщений Syslog. Модифицировать err работу не рекомендуется.

 

Улучшений системы Syslog во FreeBSD

 

Как и Red Hat, FreeBSD поддерживает дополнительные способы задания уровней серьезности в файле syslog.conf (табл. 11.6).

Таблица 11.6. Примеры использования квалификаторов в файле syslog.conf во FreeBSD

Селектор

Значение

mail.info

Выбор почтовых сообщений уровня «info» и выше

mail.>=info

То же, что и предыдущее

mail.=info

Выбор почтовых сообщений только уровня «info»

mail.<=info

Выбор почтовых сообщений уровня «info» и ниже

mail.<info

Выбор почтовых сообщений уровней ниже «info»

mail.>info

Выбор почтовых сообщений уровней выше «info»

 

В отличие от общепринятой схемы классификации сообщений, FreeBSD позволяет выбирать сообщения на основании имени программы, от которой они поступают, а не расплывчато-неопределенного имени средства. К сожалению, демон syslogd не владеет информацией о программах, поэтому вынужден просматривать сообщения на предмет того, начинаются ли они с имени программы и двоеточия. Например, сообщение

named: starting. named 4.9.7 Sat Sep   2 09:39:12 GMT 1998 PHNE_14618

 

будет распознано как поступившее от демона named. В файле syslog.conf секции, относящиеся к сообщениям, которые поступают от конкретных программ, предваряются восклицательным знаком и именем программы. Например, строки:

!named

*.*       /var/log/named.log

 

заставляют демона syslogd посылать все сообщения демона named в файл /var/log/named.log.

Распределение сообщений на основании имен программ — не самый лучший способ управления регистрацией. Он базируется на определенных правилах формирования сообщений, которым следуют далеко не все программы.

Демону syslogd во FreeBSD необходимо сообщить посредством опции , от каких удаленных узлов следует принимать сообщения. Набор узлов может быть задан в виде списка IP-адресов с масками (например, -а 128.138.192.0.20) или списка доменных имен (например, -а *.cs.colorado.edu). Чтобы запретить прием сетевых сообщений, нужно с помощью опции -ss дать демону syslogd указание не открывать свой сетевой порт.

Аргументы командной строки демона syslogd можно поместить в файл /etc/rc.conf, чтобы они автоматически активизировались во время начальной загрузки системы. Например:

syslogd_flags="-a 128.138.192.0/20 –а *.cs.colorado.edu"

 

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

 

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

 

Автономный компьютер

 

Ниже показана базовая конфигурация для автономного компьютера:

# Файл syslog.conf для малых сетей и автономных систем

#экстренные сообщения направляются всем зарегистрированным #пользователям

*.emerg                        *

#важные сообщения

*.warning/daemon,auth.info,user.none    /var/adm/messages

# ошибки принтера

lpr.debug                               /var/adm/lpd-errs

 

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

Вторая значащая строка обеспечивает запись важных сообщений в файл /var/adm/messages. Уровень "info" ниже уровня "warning", поэтому выражение daemon,auth.info включает дополнительную регистрацию сообщений из программ passwd, su и всех демонов. Третья строка предназначена для записи сообщений об ошибках принтера в файл /var/adm/lpd-errs.

 

Сетевой клиент

 

Машина-клиент обычно пересылает серьезные сообщения на центральный регистрационный узел.

# Файл syslog.conf факультета вычислительной техники для клиентских

# машин

# экстренные сообщения направляются всем зарегистрированным

# пользователе

*.emerg;user.none             *

# важные сообщения пересылаются на центральный компьютер *.warning;lpr,locall.none     @netloghost

daemon,auth.info              @netloghost

# сообщения от локальных программ также идут на центральный компьютер localO,1оса12,1оса17.debug    @netloghost

# демон cardd регистрируется через средства locall —

# направляем сообщения на машину boulder

locall.debug                  @boulder.colorado.edu

# сообщения об ошибках принтера хранятся локально

lpr.debug                     /var/adm/lpd-errs

# пользователи программы sudo регистрируются через средство

# "1оса12" — сохраняем копии сообщений

local2.info                   /var/adm/sudolog

# сообщения ядра также хранятся локально

kern.info                     /var/adm/kern.log

 

В этой конфигурации не очень много информации хранится локально. Следует учесть, что если компьютер netloghost выключен или недоступен, регистрационные сообщения будут безвозвратно утеряны. На этот случай можно создавать локальные копии важных сообщений.

В организации, где инсталлирован большой объем локального программного обеспечения, неоправданно много сообщений может регистрироваться с помощью средства "user" на уровне "emerg". В показанном примере такая ситуация заведомо исключается с помощью выражения user.none в первой строке.

Вторая и третья строки служат для пересылки всех важных сообщений на центральный регистрационный сервер; сообщения подсистемы печати и университетской системы доступа по карточкам направляются в другое место. Четвертая строка организует отправку локальной регистрационной информации также на центральный компьютер. В пятой строке регистрационная информация системы доступа по карточкам отправляется на центральную машину boulder. Последние две строки обеспечивают хранение локальных копий сообщений об ошибках принтера и регистрационных сообщений программы sudo.

 

Центральный регистрационный узел

 

Это пример для компьютера netloghost — центрального высоконадежного регистрационного узла сети среднего размера, включающей 400—500 машин.

# Файл syslog.conf факультета вычислительной техники

# для главного регистрационного узла

# экстренные сообщения направляются на консоль и в журнальный файл,

# записываются метки времени

*.emerg                               /dev/console

*.err;kern,mark.debug;auth.notice     /dev/console

*.err;kern,mark.debug;user.none       /var/adm/console.log

auth.notice                           /var/adm/console.log

 

# сообщения, не являющиеся экстренными, записываются в обычные

# журнальные файлы

*.err;user.none;kern.debug            /var/adm/messages

daemon,auth.notice;mail.crit          /var/adm/messages

lpr.debug                             /var/adm/lpd-errs

mail.debug                            /var/adm/mail.log

 

# в следующих строках обрабатываются сообщения локальных программ

# авторизации, таких как sudo и npasswd

1оса12.debug                          /var/adm/sudo.log

1оса12.alert                          /var/adm/sudo-errs.log

auth.info                             /var/adm/auth.log

 

# другие локальные программы

Local0.info                           /var/adm/netblazer.log

local4.notice                         /var/adm/da.log

local6.debug                          /var/adm/annex-isn.log

local7.debug                          /var/adm/tcp.log

 

# пользовательские процессы

user.info                             /var/adm/user.log

 

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

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

 

Пример выходной информации системы Syslog

 

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

 

Dec 18 15:12:42 avl8.cs.colorado.edu sbatchd[495]: sbatchd/main: ls_info() failed: LIM is down; try later; trying ...

Dec 18 15:14:28 proxy-l.cs.colorado.edu pop-proxy[27283]: Connection from 128.138.198.84

Dec 18 15:14:30 mroe.cs.colorado.edu pingem[271]: maltese-office.cs.colorado.edu has not answered 42 times

Dec 18 15:15:05 schwarz.cs.colorado.edu vmunix: Multiple softer-rors: Seen 100 Corrected Softerrors from SIMM J0201

Dec 18 15:15:05 schwarz.cs.colorado.edu vmunix: AFSR = 0x4c21, AFARO =

0x87ffdd30, AFAR1 = oxb8f8a0

Dec 18 15:15:48 proxy-l.cs.colorado.edu pop-proxy[27285]: Connection from 12.2.209.183

Dec 18 15:15:50 avl8.cs.colorado.edu last message repeated 100 times

 

 

В этом примере представлена информация, поступившая с несколько машин (avl8, proxy-1, more и schwarz) и от нескольких программ: sbatchd, pop-proxy, pingem и vmunix (ядра). Обратите внимание на последнюю строку, в которой говорится о сообщении, повторившемся 100 раз. Чтобы сократить объем журнальных файлов, система Syslog обычно пытается объединять дублирующиеся сообщения и заменять их резюмирующей строкой. Однако компьютер, с которого был взят этот файл, принимает регистрационные сообщения от множества других компьютеров, поэтому данное конкретное сообщение может немного сбить читателя с толку. Оно ссылается на предыдущее сообщение от компьютера avl8, а не на предыдущее сообщение в журнальном файле.

Рекомендуем регулярно просматривать свои журнальные файлы. Установите, какое их состояние является нормальным, чтобы в случае отклонение от нормы сразу заметить это. А еще лучше установить программу обработки журнальных файлов, такую как swatch, которая будет делать то же самое автоматически (см. параграф 11.6).

 

Разработка схемы регистрации для конкретной организации

 

Для небольшой организации достаточной будет такая конфигурации системы регистрации, при которой важные системные ошибки и предупреждения хранятся в отдельном файле на каждом компьютере. В основном так было до появления системы Syslog. Файл syslog.conf можно адаптировать для каждой конкретной машины.

В большой сети необходима централизованная регистрация. Такой подход позволяет контролировать информационные потоки и — если повезет — скрывать получаемые в результате проверки данные от лица, взломавшего систему защиты какого-либо компьютера в сети. Хакеры часто изменяют системные журнальные файлы, чтобы замести следы; если регистрационную информацию сразу же скрыть, то подделать ее будет гораздо труднее. Помните, однако, о том, что каждый может вызвать систему Syslog и создать регистрационные записи, якобы посланные каким-либо демоном или утилитой. Кроме того, система Syslog пользуется протоколом UDP, который не является надежным, так как не гарантирует доставку сообщений. Имеющийся в сети брандмауэр должен запрещать внешним узлам передавать сообщения демону syslogd.

В качестве сервера-регистратора выбирайте стабильно работающую машину, лучше такую, доступ физических лиц к которой ограничен и хорошо контролируется и где мало зарегистрированных пользователей. Другие компьютеры сети могут пользоваться базовым конфигурационным файлом, который хранится на центральном узле. Таким образом, нужно вести лишь две версии файла syslog.conf. Это обеспечивает полноту регистрации, не превращая ее в кошмар для администратора.

 

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

 

Программы, использующие систему Syslog

 

В табл. 11.7 перечислены некоторые программы, работающие с системой Syslog, средства и уровни, на которых они регистрируются, а также дано краткое описание каждой программы.

 

Таблица 11.7. Программы, использующие систему Syslog

Программа

Средство

Уровни

Описание

amd

daemon

err-info

Программа автомонтирования NFS

date

auth

notice

Установка даты и времени

ftpd

daemon

err-debug

Демон FTP

gated

daemon

alert-info

Демон маршрутизации

halt/reboot

auth

crit

Программы останова системы

inetd

daemon

err, warning

Демон Internet

login/rlogind

auth

crit-info

Программы входа в систему

lpd

lpr

crit-info

Демон принтера в BSD

named

daemon

crit-info

Сервер имен (DNS)

nnrpd

news

crit-notice

Программы чтения новосте INN

ntpd

daemon, user

crit-info

Сетевой демон времени

passwd

auth

err

Программа установки паролей

popper

local0

notice, debug

Программа электронной почты для Macintosh и ПК

sendmail

mail

alert-debug

Система доставки почты

su

auth

crit, notice

Программа подстановки идентифекаторов пользователей

sudo

local2

alert, notice

Ограниченная версия программы su

syslogd

syslog, mark

err-info

Демон обработки внутренних ошибок, меток времени и др.

tcpd

local7

err-debug

ТСР-демон для демона inetd

cron

cron, daemon

info

Демон планирования заданий

vmunix

kern

изменяются 

Ядро

 



 (голосов: 0)
Версия для печати | Комментариев: 0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.


 
Логин
Пароль
 

 
Locations of visitors to this page