Протоколирование в сети
Как было сказано, сообщения системы протоколирования могут отправляться демоном syslogd на удаленный хост, но там его кто-то должен принять. Оказывается, делает это такой же демон syslogd, запущенный на этом удаленном хосте. Точнее, syslogd на любом компьютере может прослушивать не только сокет /dev/log (принимая тем самым сообщения от местных источников), но еще и порт 514/UDP, что обеспечивает прием сообщений с других компьютеров локальной сети (и последующую запись их в локальный файл). Тем самым обеспечивается возможность создания , что может оказаться очень удобно для системного администратора (в одном месте отслеживаются все события в сети), а также повышается безопасность, поскольку сообщения о проникновении хакера на один из хостов сети не могут быть тут же этим хакером удалены из протокола. Однако для организации такого необходимо предпринять некоторые дополнительные усилия.
Во-первых, поскольку для приема и отправки сообщений по сети используется порт 514/UDP, он должен быть доступен на обоих компьютерах (клиенте и сервере). Для этого в файле /etc/services на обоих компьютерах должна присутствовать строка
syslog 514/udp.
Если такая строка отсутствует, syslogd не может ни принимать сообщения, ни отправлять их в сеть, поскольку не может открыть UDP-порт. Если такая ситуация возникает, syslogd немедленно прекращает записывать какие-либо сообщения даже в локальный протокол. При этом, как показывает команда ps, он остается в памяти и даже сохраняет сообщения в каких-то буферах, поскольку, если указанную строку восстановить в файле /etc/services на клиенте, то, по крайней мере часть сообщений все же появляется в протоколе (после перезапуска syslogd). Во-вторых, при запуске демона syslogd на сервере должна быть указана опция -r, которая обеспечивает возможность приема сообщений из сети (по умолчанию демон syslogd ждет сообщения только от локального сокета). В-третьих, должны быть соответствующим образом исправлены настройки в файлах /etc/syslog.conf на обоих компьютерах. Например, если вы хотите все сообщения перенаправить на сервер протоколирования, необходимо на компьютере-клиенте прописать в файле /etc/syslog.conf строку вида:
*.* @hostname
Если в вашей сети несколько доменов, которые обслуживаются одним сервером протоколирования, то не удивляйтесь, что в протоколе на сервере будут указаны полные имена клиентов (с указанием домена). Правда, при запуске syslogd можно использовать опции -s список_доменов или -l список_хостов, которые обеспечивают замену в протоколе полных имен хостов на их краткие имена (без указания домена). Не забудьте после корректировки опций запуска и файла /etc/syslog.conf перезапустить демон, поскольку sysklogd не перечитывает конфигурационные файлы автоматически.