Syslogd Linux и Unix Command

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

Ведение журнала обеспечивается версией Syslogd(8) получены из фондовых источников BSD. Поддержка ведения журнала ядра обеспечивается Klogd(8) утилита, которая позволяет вести журнал ядра автономно или в качестве клиента syslogd.

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

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

Основной файл конфигурации /etc/syslog.conf или альтернативный файл, указанный в  опция, читается при запуске. Любые строки, начинающиеся с хеш-метки (« # ») и пустые строки, игнорируются. Если при синтаксическом анализе возникает ошибка, вся строка игнорируется.

конспект

Syslogd [ — разъем ] [ -d ] [ -е файл конфигурации] [ -час ] [ -Lсписок хостов] [ -м интервал] [ -N ] [ -п разъем ] [ -р ] [ -sсписок доменов] [ -v ] [ -Икс ]

Параметры

— разъем

Используя этот аргумент, вы можете указать дополнительные сокеты из этого Syslogd должен слушать. Это необходимо, если вы хотите, чтобы какой-нибудь демон работал в среде chroot (). Вы можете использовать до 19 дополнительных розеток. Если вашей среде нужно еще больше, вы должны увеличить символ MAXFUNIX в исходном файле syslogd.c. Пример демона chroot () описан людьми из OpenBSD по адресу http://www.psionic.com/papers/dns.html.

-d

Включает режим отладки. При использовании этого демон не будет вилка(2) установить себя в фоновом режиме, но, напротив, остаться на переднем плане и написать много отладочной информации о текущем tty. См. Раздел ОТЛАДКИ для получения дополнительной информации.

-е файл конфигурации

Укажите альтернативный файл конфигурации вместо /etc/syslog.conf, который используется по умолчанию.

-час

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

-L Список_адресов

Укажите имя хоста, которое должно регистрироваться только с помощью простого имени хоста, а не fqdn. Несколько хостов могут быть указаны с помощью разделителя двоеточия (`: »).

-м интервал

 Syslogd регулярно регистрирует метку времени Интервал по умолчанию между двумя линиями MARK — 20 минут. Это можно изменить с помощью этой опции. Установка интервала на ноль полностью отключает его.

-N

Избегайте авто-фона. Это необходимо, особенно если Syslogd запускается и контролируется в этом(8).

-п разъем

Вы можете указать альтернативный сокет домена unix вместо / dev / log.

Эта опция позволит средству получать сообщение из сети, используя сокет домена Интернета со службой системного журнала (см. (5)). По умолчанию не принимается никаких сообщений из сети.

Эта опция представлена ​​в версии 1.3 пакета sysklogd. Обратите внимание, что поведение по умолчанию противоположно поведению старых версий, поэтому вам, возможно, придется включить его.

-s domainlist

Укажите доменное имя, которое должно быть удалено перед входом в систему. Несколько доменов могут быть указаны с помощью разделителя двоеточия (`: »). Обратите внимание, что никакие субдомены не могут быть указаны, а только целые домены. Например, если -с севера.де и ведение журнала хоста преобразуется в satu.infodrom.north.de домен не будет вырезан, вам нужно будет указать два домена, например -s north.de:infodrom.north.de.

-v

Версия для печати и выход.

-Икс

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

сигналы

Syslogd реагирует на набор сигналов. Вы можете легко отправить сигнал Syslogd используя следующее:

kill -SIGNAL `cat / var / run / syslogd.pid`

SIGHUP

Это позволяет Syslogd выполнить повторную инициализацию. Все открытые файлы закрываются, файл конфигурации (по умолчанию /etc/syslog.conf) будет перечитан и системный журнал(3) объект запущен снова.

SIGTERM

 Syslogd умрет.

SIGINTSIGQUIT

Если отладка включена, они игнорируются, в противном случае Syslogd умрет.

SIGUSR1

Включить / выключить отладку. Эта опция может быть использована только если Syslogd начинается с -d опция отладки.

SIGCHLD

Ждите детей, если некоторые родились, из-за сообщений на стене.

Различия в синтаксисе файла конфигурации

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

Например, следующая строка вызвала ВСЕ выходные данные от демонов, использующих средства демона (отладка является самым низким приоритетом, поэтому каждый более высокий также будет совпадать), чтобы перейти в / usr / adm / daemons:

 # Пример syslog.conf
daemon.debug / usr / adm / daemons

По новой схеме это поведение остается прежним. Разница заключается в добавлении четырех новых спецификаторов, звездочка (*) подстановочный знак, знак уравнения (знак равно), восклицательный знак (!) и знак минус ().

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

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

Например, следующая строка в syslog.conf будет направлять сообщения отладки из всех источников в файл / usr / adm / debug.

 # Пример syslog.conf
*. = debug / usr / adm / debug

 ! используется для исключения регистрации указанных приоритетов. Это влияет на все (!) Возможности определения приоритетов.

Например, в следующих строках будут записываться все сообщения почты объекта, кроме сообщений с информацией о приоритете в файл / usr / adm / mail. И все сообщения от news.info (включая) на news.crit (исключая) будут записываться в файл / usr / adm / news.

 # Пример syslog.conf
mail. *; mail.! = info / usr / adm / mail
news.info; новости.! crit / usr / adm / news

Вы можете использовать его интуитивно в качестве спецификатора исключения. Вышеупомянутая интерпретация просто перевернута. Делая, что вы можете использовать,

 mail.none

или же,

 почта.! *

или же,

 почта.! отлаживать

пропустить каждое сообщение, которое идет с почтовым средством. Есть много места, чтобы играть с ним.

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

Это может занять некоторую акклиматизацию для тех людей, которые привыкли к чистому поведению BSD, но тестеры показали, что этот синтаксис несколько более гибкий, чем поведение BSD. Обратите внимание, что эти изменения не должны влиять на стандарт syslog.conf(5) файлы. Вы должны специально изменить файлы конфигурации, чтобы получить расширенное поведение.

Поддержка удаленной регистрации

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

Чтобы включить это, вы должны указать  опция в командной строке. Поведение по умолчанию таково, что Syslogd не буду слушать сеть.

Стратегия заключается в том, чтобы syslogd прослушивал сокет домена unix для локально генерируемых сообщений журнала. Такое поведение позволит syslogd взаимодействовать с syslog, найденным в стандартной библиотеке C. В то же время syslogd прослушивает на стандартном порте syslog сообщения, пересылаемые с других хостов. Для правильной работы Сервисы(5) файлы (обычно находятся в / etc) должны иметь следующую запись:

 системный журнал 514 / UDP

Если эта запись отсутствует Syslogd не может ни получать удаленные сообщения, ни отправлять их, потому что порт UDP не может быть открыт. Вместо, Syslogd умрет немедленно, выдав сообщение об ошибке.

Чтобы пересылать сообщения на другой хост, замените обычную строку файла в файле syslog.conffile именем хоста, на который должны быть отправлены сообщения, с добавлением символа @.

Например, переслать ВСЕ сообщения на удаленный хост, используя следующую запись syslog.conf:

 # Пример файла конфигурации syslogd для
# сообщения на удаленный хост перенаправляют все.
*. * @hostname

Переслать все ядро Сообщения для удаленного хоста файла конфигурации будут выглядеть следующим образом:

 # Пример файла конфигурации для пересылки всего ядра
# сообщения на удаленный хост.
kern. * @hostname

Если имя удаленного хоста не может быть разрешено при запуске, поскольку сервер имен может быть недоступен (он может быть запущен после syslogd), вам не о чем беспокоиться. Syslogd повторю попытку разрешить имя десять раз, а затем пожалуюсь. Другой возможностью избежать этого является размещение имени хоста в / etc / hosts.

С нормальным Syslogds вы получите syslog-loop, если будете отправлять сообщения, полученные с удаленного хоста на тот же хост (или более сложный, на третий хост, который отправляет его обратно на первый и т. д.). В моем домене (Infodrom Oldenburg) мы случайно получили один и наши диски были заполнены одним и тем же сообщением.

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

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

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

С помощью -L Также есть возможность определить отдельные хосты как локальные машины. Это также приводит к регистрации только их простых имен хостов, а не fqdns.

Сокет UDP, используемый для пересылки сообщений на удаленные узлы или для получения сообщений от них, открывается только тогда, когда это необходимо. В выпусках до 1.3-23 он открывался каждый раз, но не открывался для чтения или пересылки соответственно.

Вывод в именованные каналы (FIFO)

Эта версия syslogd имеет поддержку для записи выходных данных в именованные каналы (fifos). Канал fifo или именованный канал можно использовать в качестве места назначения для сообщений журнала, добавляя символ pipy (« | ») к имени файла. Это удобно для отладки. Обратите внимание, что fifo должен быть создан с помощью команды mkfifo перед запуском syslogd.

Следующий файл конфигурации направляет сообщения отладки из ядра в fifo:

 # Пример конфигурации для маршрутизации отладки ядра
# сообщения ТОЛЬКО для / usr / adm / debug, который является
# именованная труба.
kern. = debug | / usr / adm / debug

Проблемы с установкой

При установке этой версии syslogd, вероятно, есть одно важное соображение. Эта версия syslogd зависит от правильного форматирования сообщений функцией syslog. Функционирование функции системного журнала в общих библиотеках изменилось где-то в области libc.so.4. [2-4] .n. Конкретное изменение заключалось в том, чтобы завершить сообщение нулем перед его передачей в сокет / dev / log. Правильное функционирование этой версии syslogd зависит от нулевого завершения сообщения.

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

Оба Syslogd(8) и Klogd(8) может быть запущен из init (8) или запущен как часть последовательности rc. *. Если он запускается из init, должен быть задан параметр -n, иначе вы запустите тонны демонов syslog. Это потому что в этом(8) зависит от идентификатора процесса.

Угрозы безопасности

Существует возможность использования демона syslogd в качестве канала для атаки типа «отказ в обслуживании». Мошенническая программа (mer) может очень легко заполнить демон syslogd сообщениями syslog, в результате чего файлы журнала будут занимать все оставшееся пространство в файловой системе. Активация регистрации через доменные сокеты inet, конечно, подвергнет систему риску вне программ или отдельных лиц на локальном компьютере.

Существует несколько способов защиты машины:

  1. Внедрите брандмауэр ядра, чтобы ограничить доступ хостов или сетей к сокету 514 / UDP.
  2. Ведение журнала может быть направлено в изолированную или некорневую файловую систему, которая, если она заполнена, не повредит машине.
  3. Можно использовать файловую систему ext2, которая может быть сконфигурирована так, чтобы ограничивать определенный процент файловой системы только для пользователя root. Обратите внимание, что для этого потребуется запуск syslogd от имени пользователя без полномочий root. Также обратите внимание, что это предотвратит использование удаленной регистрации, поскольку syslogd не сможет привязаться к сокету 514 / UDP.
  4. Отключение сокетов домена inet ограничит риск для локальной машины.

отладка

Когда отладка включена с помощью -d вариант тогда Syslogd будет очень многословным, написав большую часть того, что он делает на стандартный вывод. Всякий раз, когда файл конфигурации перечитывается и повторно анализируется, вы увидите табличную таблицу, соответствующую внутренней структуре данных. Эта таблица состоит из четырех полей:

номер

Это поле содержит серийный номер, начинающийся с нуля. Это число представляет позицию во внутренней структуре данных (то есть массив). Если пропустить одно число, возможно, в соответствующей строке в /etc/syslog.conf может быть ошибка.

шаблон

Это поле сложно и точно представляет внутреннюю структуру. Каждый столбец обозначает объект (см. системный журнал(3)). Как вы можете видеть, некоторые объекты остаются свободными для прежнего использования, только самые левые. Каждое поле в столбце представляет приоритеты (см. системный журнал(3)).

действие

В этом поле описывается конкретное действие, которое происходит при получении сообщения, соответствующего шаблону. Обратитесь к syslog.conf(5) man-страница для всех возможных действий.

аргументы

В этом поле отображаются дополнительные аргументы к действиям в последнем поле. Для регистрации файлов это имя файла журнала; для регистрации пользователей это список пользователей; для удаленной регистрации это имя хоста машины, на которую нужно войти; для ведения консоли это используемая консоль; для tty-logging это указанный tty; У стены нет дополнительных аргументов.

Смотрите также

лесоруб(1), системный журнал(2), (5)

соавторы

Syslogd взято из источников BSD, Грег Веттштайн выполнил перенос на Linux, Мартин Шульце исправил некоторые ошибки и добавил несколько новых функций. Klogd изначально был написан Стивом Лордом (lord@cray.com), Грег Веттштайн внес значительные улучшения.

Доктор Грег Веттштайн
Разработка Энгельских Систем

Отделение онкологических исследований вычислительного комплексаРак-центр им. Роджера Мариса, Фарго, Нью-Йорк
greg@wind.enjellic.com

Стивен Твиди, Кафедра компьютерных наук, Эдинбургский университет, Шотландия
sct@dcs.ed.ac.uk

Юха Виртанен
jiivee@hut.fi

Шейн Олдертон
shane@ion.apana.org.au

Мартин ШульцеИнфодром Ольденбург
joey@linux.de

Используйте команду man (% man), чтобы увидеть, как команда используется на вашем компьютере.

Ссылка на основную публикацию