DataLife Engine > Настройка > Контора пишет - syslog

Контора пишет - syslog


26-10-2010. Разместил: synergix Сегодня мы поговорим о очень полезном и важном приложении - syslog.

Краткий экскурс в историю и справка:

Syslog был разработан в 1980 году Эриком Оллманом (Eric Allman) как часть проекта Sendmail, и использовался первоначально только для Sendmail. Зарекомендовав себя как стабильное и удобное решение, Syslog был использован и в других приложениях, став стандартом ведения журналов в системах UNIX и GNU/Linux. Позднее появились реализации и под другие операционные системы.

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

syslog — стандарт отправки сообщений о происходящих в системе событиях (логов), использующийся в компьютерных сетях, работающих по протоколу IP.

Протокол syslog прост: отправитель посылает короткое текстовое сообщение, размером меньше 1024 байт получателю сообщения. Получатель при этом носит имя «syslogd», «syslog daemon», либо же, «syslog server». Сообщения могут отправляться как по UDP, так и по TCP. Как правило, такое сообщение отсылается в открытом виде. Тем не менее, используя специальные средства (такие, как Stunnel, sslio или sslwrap), возможно шифрование сообщений и отправка их по SSL/TLS.

Syslog используется для удобства администрирования и обеспечения информационной безопасности. Он реализован под множество платформ и используется в множестве устройств. Поэтому, использование syslog позволяет обеспечить сбор информации с разных мест и хранение её в едином репозитории.

Командный интерфейс к syslog — logger.

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

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

Это syslog.conf по умолчанию, поставляемый с FreeBSD:

#     Spaces are NOT valid field separators in this file.
#     Consult the syslog.conf(5) manpage.
*.err;kern.debug;auth.notice;mail.crit          /dev/console
*.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
mail.info                                       /var/log/maillog
lpr.info                                        /var/log/lpd-errs
cron.*                                          /var/cron/log
*.err                                           root
*.notice;news.err                               root
*.alert                                         root
*.emerg                                         *
# uncomment these if you're running inn
# news.crit                                     /var/log/news/news.crit
# news.err                                      /var/log/news/news.err
# news.notice                                   /var/log/news/news.notice
!startslip
*.*                                             /var/log/slip.log
!ppp
*.*                                             /var/log/ppp.log


А это немного подредактированный syslog.conf:

*.*;mail.none;cron.none;kern.none;local0.none;
ftp.none;auth.none;authpriv.none /var/log/messages
mail.*                                          /var/log/maillog
cron.*                                          /var/cron/log
kern.*                                          /var/log/kernel.log
auth.*;authpriv.*                               /var/log/auth.log

# uncomment these if you're running inn
# news.crit                                     /var/log/news/news.crit
# news.err                                      /var/log/news/news.err
# news.notice                                   /var/log/news/news.notice

local0.*                                        /var/log/tcpd.log
local0.info;local0.debug                        /var/log/firewall.log
local0.err                                      /var/log/firewall.err

ftp.*                                           /var/log/ftp.log

!startslip
*.*                                             /var/log/slip.log

!ppp
*.*                                             /var/log/ppp.log

!popper
 *.*                                             /var/log/popper.log



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

Займемся настройкой:

Настраиваем машины с которых будут посылаться логи.
Добавляем в /etc/syslog.conf:
mail.*                                                  /var/log/maillog
mail.*                                                  @mail.test.ru



Настройка syslog на сервере для приема логов с удаленных syslog машин.
Изменяем /etc/syslog.conf:

# Общий блок для всех машин
*.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/all.log
security.*                                      /var/log/security
lpr.info                                        /var/log/lpd-errs
cron.*                                          /var/log/cron
# Суммарный почтовый лог со всех серверов.
mail.*                                          /var/log/maillog_summ

# Выборка логов только локальной машины, +@ - только логи с текущей машины.
+@
*.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
# Лог почтового сервера на локальной машине
mail.info                                       /var/log/maillog

# Логи с почтового сервера relay1.test.ru
+relay1.test.ru
mail.*                                          /var/log/maillog_relay1

# Логи с почтового сервера relay2.test.ru
+relay2.test.ru
mail.*                                          /var/log/maillog_relay2

# +* - конец привязки к хосту
+*

# Сохранение логов c выборкой по имени программы
!inetd
*.*                                             /var/log/inetd.log
!ftpd
*.*                                             /var/log/ftpd.log


Исправляем параметры запуска syslog в /etc/rc.conf,:
по умолчанию syslogd_flags="-s", для некоторых syslog нужно добавить -r:

syslogd_flags=""

Для обеспечения безопасности нужно перечислить хосты с которых можно принимать логи
через опцию -a, т.е.:

syslogd_flags="-a 192.168.1.0/24 -a relay1.test.ru -a 192.168.2.1"


Но лучше прикрыть доступ к syslog пакетным фильтром, /etc/rc.firewall:

${fwcmd} add 500 pass udp from 192.168.2.1 to any 514 via ${oif}
${fwcmd} add 510 pass udp from 192.168.1.0/24 to any 514 via ${oif}
${fwcmd} add 520 deny log udp from any to ip_сервера 514 via ${oif}


Вот собственно и все :)
Вернуться назад