Зачем настраивать rsyslog отдельно
Хотя современные дистрибутивы Linux активно используют systemd-journald, rsyslog остаётся отраслевым стандартом для надёжного сбора, фильтрации и пересылки системных событий. Его главное преимущество — гибкая маршрутизация. Вы можете отправлять логи ядра, сетевых служб и приложений в разные файлы, менять формат записей или перенаправлять их на внешний сервер мониторинга в реальном времени. После выполнения этого руководства вы получите полностью рабочую конфигурацию, которая будет автоматически сохранять только нужные вам события.
Требования и подготовка системы
Перед началом убедитесь, что у вас есть доступ к серверу с правами root или пользователя из группы sudo. Инструкция проверена на Ubuntu 22.04/24.04, Debian 12 и дистрибутивах на базе RHEL 9. Вам потребуется терминал и базовое понимание работы с текстовыми редакторами (nano или vim). Убедитесь, что на сервере настроено корректное время (NTP), так как временные метки критичны для анализа журналов.
Пошаговая инструкция
Шаг 1: Проверка установки и запуск службы
В большинстве дистрибутивов rsyslog уже предустановлен. Проверьте его статус:
sudo systemctl status rsyslog
Если в выводе видите inactive или службу не найдена, установите пакет вручную. Для Debian/Ubuntu:
sudo apt update && sudo apt install rsyslog -y
Для RHEL/AlmaLinux/Rocky Linux:
sudo dnf install rsyslog -y
После установки запустите службу и добавьте её в автозагрузку:
sudo systemctl enable --now rsyslog
Шаг 2: Разбор основного конфигурационного файла
Откройте главный файл конфигурации для проверки:
sudo nano /etc/rsyslog.conf
В начале файла находятся загружаемые модули. Убедитесь, что раскомментированы строки:
module(load="imuxsock") # поддержка локальной системной журналировки
module(load="imklog") # чтение сообщений ядра
Ниже расположен блок правил маршрутизации. По умолчанию он уже содержит записи в /var/log/syslog (Debian/Ubuntu) или /var/log/messages (RHEL/Alma). Синтаксис строится по формуле: объект.приоритет путь_к_файлу. Например, auth,authpriv.* /var/log/auth.log записывает все события авторизации в отдельный журнал.
💡 Совет: Не удаляйте стандартные директивы, если точно не понимаете их назначение. Ошибка в глобальных настройках может остановить всю систему журналирования.
Шаг 3: Создание кастомных правил фильтрации
Лучшая практика — изолировать пользовательские настройки в директории /etc/rsyslog.d/. Создайте новый файл:
sudo nano /etc/rsyslog.d/50-custom-rules.conf
Добавьте правила, которые отсортируют логи по конкретным сервисам. Например, перенос всех сообщений от sshd и sudo в отдельные файлы:
:programname, isequal, "sshd" /var/log/secure/ssh_access.log
:programname, isequal, "sudo" /var/log/secure/sudo_ops.log
& stop
Директива & stop запрещает дальнейшую обработку сообщения, что предотвращает его дублирование в общем системном логе. Создайте целевую директорию и назначьте правильные права:
sudo mkdir -p /var/log/secure
sudo chown syslog:adm /var/log/secure
⚠️ Важно: В системах RHEL/SELinux пользователь для rsyslog —
syslog, группа —adm. Если ваша система использует другие системные учётные записи, адаптируйте командуchownпод них.
Шаг 4: Валидация и применение изменений
Никогда не перезапускайте службу без проверки синтаксиса. Выполните:
sudo rsyslogd -N1
Команда просканирует все включённые конфиги и выведет предупреждения. Если в конце строки End of config validation run. Bye. нет ошибок, применяйте изменения:
sudo systemctl restart rsyslog
Проверка результата
Чтобы убедиться, что правила работают, сгенерируйте тестовое сообщение:
sudo logger -t testapp "Проверка работы rsyslog после настройки"
Откройте общий лог и найдите вашу запись:
grep "Проверка работы" /var/log/syslog # для Debian/Ubuntu
grep "Проверка работы" /var/log/messages # для RHEL/Alma
Если сообщение появилось, конфигурация активна. Также убедитесь, что файлы в /var/log/secure/ создаются при выполнении команд sudo или ssh.
Возможные проблемы при настройке
- Служба не запускается после правки конфига. Чаще всего причина в опечатке в приоритете (
*warningвместо*.warning) или отсутствии кавычек вокруг имён модулей. Вернитесь кrsyslogd -N1и исправьте строку, на которую укажет валидатор. - Нет прав на запись в
/var/log/. rsyslog работает от непривилегированного пользователя. Убедитесь, что права на целевые директории выставлены какsyslog:admс маской0640. - SELinux блокирует создание файлов. В дистрибутивах семейства RHEL проверьте контекст безопасности:
restorecon -Rv /var/log/secure/. Временное отключение (setenforce 0) поможет локализовать проблему, но правильный путь — настройка политик черезaudit2allow.