Настройка удалённого логирования в rsyslog выполняется путём изменения конфигурационного файла сервера и добавления правил маршрутизации логов на удалённый хост через UDP или TCP. Процесс занимает не более 10 минут и не требует перезагрузки системы при правильном синтаксисе.
Зачем нужна настройка удалённого логирования
- Централизация логов с нескольких серверов на одном хранилище для упрощения мониторинга
- Защита логов от удаления или модификации при компрометации локального сервера
- Снижение нагрузки на диск локальной системы за счёт отправки больших объёмов логов на специализированный сервер
- Ускорение анализа инцидентов безопасности благодаря единой точке доступа к логам всей инфраструктуры
- Соответствие требованиям регулирования (GDPR, HIPAA, PCI DSS) по сохранению аудит-логов
Процесс настройки удалённого логирования rsyslog
Подготовка удалённого сервера логов
- Подключитесь по SSH на сервер, который будет принимать логи:
ssh user@remote-log-server - Откройте конфигурационный файл rsyslog командой:
sudo nano /etc/rsyslog.conf - Найдите строки, начинающиеся с
#$ModLoad imudpи#$UDPServerRun 514 - Удалите символы комментария
#в начале обеих строк для включения UDP-приёма на порт 514 - Если используется TCP вместо UDP, раскомментируйте строки
#$ModLoad imtcpи#$TCPServerRun 514 - Сохраните файл сочетанием клавиш
Ctrl+O, затемEnter, затемCtrl+X - Перезагрузите сервис rsyslog командой:
sudo systemctl restart rsyslog - Проверьте, что rsyslog слушает на порту 514 командой:
sudo netstat -tulpn | grep rsyslog
Настройка клиентского сервера на отправку логов
- Подключитесь по SSH на клиентский сервер, который будет отправлять логи
- Откройте конфигурационный файл rsyslog командой:
sudo nano /etc/rsyslog.d/50-default.conf - Перейдите в конец файла нажатием
Ctrl+End - Добавьте новую строку с правилом маршрутизации для отправки всех логов на удалённый сервер:
*.* @@remote-log-server:514(использование @@ означает TCP, @ означает UDP) - Если требуется отправлять только определённые приложения, добавьте селективное правило, например:
kern.* @@remote-log-server:514для ядра илиauth,authpriv.* @@remote-log-server:514для логов аутентификации - Сохраните файл нажатием
Ctrl+O, затемEnter, затемCtrl+X - Проверьте синтаксис конфигурации командой:
sudo rsyslogd -N1 - Если ошибок не выявлено, перезагрузите rsyslog:
sudo systemctl restart rsyslog - Убедитесь, что rsyslog запущен:
sudo systemctl status rsyslog
Проверка доставки логов
- На клиентском сервере отправьте тестовое сообщение в логи командой:
logger -t TEST "Проверка удалённого логирования" - На удалённом сервере логов откройте файл получаемых логов:
sudo tail -f /var/log/syslog - Убедитесь, что тестовое сообщение появилось в логах удалённого сервера в течение нескольких секунд
- Если сообщение не появилось, проверьте открытость портов командой:
sudo ufw statusи разрешите порт 514 командой:sudo ufw allow 514/tcpилиsudo ufw allow 514/udp - Если firewall отключен, проверьте сетевую доступность удалённого сервера:
ping remote-log-server
Часто задаваемые вопросы
Какой протокол выбрать: TCP или UDP?
TCP более надёжен и гарантирует доставку всех логов, но требует больше ресурсов; UDP быстрее, но может потерять отдельные сообщения при перегрузке сети — для критичных систем используйте TCP (@@).
Как ограничить объём отправляемых логов на удалённый сервер?
Используйте селективные правила вместо *.*, например kern,auth,authpriv.* @@remote-log-server:514 для отправки только критичных логов ядра и аутентификации.
Что делать, если логи не доходят до удалённого сервера?
Проверьте доступность удалённого хоста командой ping, откройте брандмауэр на порту 514, убедитесь в правильности IP-адреса в конфигурации и проверьте синтаксис нажатием sudo rsyslogd -N1.