Вопрос или проблема
Ubuntu is 24.04
Я пытаюсь настроить rsyslog для получения зашифрованных syslog-сообщений.
Я выполнил команду
apt install rsyslog-gnutls
Но, глядя в /usr/lib/x86_64-linux-gnu/rsyslog/
я не вижу файла gtls.so
Я вижу lmnsd_gtls.so, но не gtls.so
Поэтому при попытке запустить rsyslogd он показывает:
Feb 06 11:29:45 syslog-proxy rsyslogd[22861]: could not load module 'gtls', errors: trying to load module /usr/lib/x86_64-linux-gnu/rsyslog/gtls.so: /usr/lib/x86_64-linux-gnu/rsyslog/gtls.so: cannot open shared object file: No such file>
Он также жалуется:
error during parsing file /etc/rsyslog.conf, on or before line 16: parameter 'StreamDriverAuthMode' not known
error during parsing file /etc/rsyslog.conf, on or before line 16: parameter 'StreamDriverMode' not known
error during parsing file /etc/rsyslog.conf, on or before line 16: parameter 'StreamDriver' not known
Файл rsyslog.conf:
# Настроить шифрование с сертификатами
$DefaultNetstreamDriver gtls
$DefaultNetstreamDriverCAFile /etc/rsyslog/certs/rsyslog.crt
$DefaultNetstreamDriverCertFile /etc/rsyslog/certs/rsyslog.crt
$DefaultNetstreamDriverKeyFile /etc/rsyslog/certs/rsyslog.key
#### МОДУЛИ ####
module(load="imuxsock") # поддержка локального системного логгирования
module(load="imtcp")
module(load="gtls") # Для шифрования TLS
# Включить TCP на порту 514 (незашифрованный) и другом порту для зашифрованного логгирования (например, 6514)
input(type="imtcp" port="514")
input(type="imtcp" port="6514" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="anon")
# поддержка лога ядра и включение сообщений не от ядра
#module(load="imklog" permitnonkernelfacility="on")
###########################
#### ГЛОБАЛЬНЫЕ ДИРЕКТИВЫ ####
###########################
# Фильтровать дублирующие сообщения
$RepeatedMsgReduction on
#
# Установить права доступа по умолчанию для всех лог-файлов.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
# Снижение привилегий до syslog после запуска
$PrivDropToUser syslog
$PrivDropToGroup syslog
#
# Куда помещать файлы очереди и состояния
#
$WorkDirectory /var/spool/rsyslog
#
# Включить все конфигурационные файлы в /etc/rsyslog.d/
####################################
# Обработка удаленных логов #
####################################
$template remote-incoming-logs, "/var/log/remotehosts/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs
&~
Вы можете увидеть параметры здесь. Они должны быть
input(type="imtcp" port="6514" StreamDriver.Name="gtls" StreamDriver.Mode="1" StreamDriver.AuthMode="anon")
хотя вам, вероятно, не нужно указывать Name, так как вы установили его по умолчанию.
Ответ или решение
Конечно, давайте рассмотрим вашу ситуацию в усложненном контексте. Вы пытаетесь настроить на Ubuntu 24.04 систему для приема зашифрованных системных журналов (syslog) с использованием rsyslog и модуля TLS. Проблемы, которые вы описываете, связаны с отсутствием правильного модуля и с ошибками в конфигурации rsyslog. Пожалуйста, следуйте подробным инструкциям для решения вашей проблемы.
Теория
Rsyslog — это система регистрации системных журналов для UNIX-подобных систем, которая поддерживает различные методы передачи данных, включая незащищённый и зашифрованный. GTLS (GnuTLS) используется для добавления слоя криптографической безопасности к syslog-соединениям, что позволяет шифровать данные при передаче. Важной частью настройки rsyslog для работы с GTLS является корректное подключение и загрузка необходимых модулей, а также правильная конфигурация параметров в файле /etc/rsyslog.conf.
Пример
В своей конфигурации вы заметили, что модуль gtls.so отсутствует, а вместо него присутствует lmnsd_gtls.so. Это может быть связано с изменениями в наименованиях или пути репозиториев пакетов, которые произошли в новой версии Ubuntu, которую вы используете. Ошибки конфигурации также подсказывают, что необходимо скорректировать синтаксис в вашем конфигурационном файле.
Следующий пример покажет, как вы можете проверить и исправить обе эти проблемы с помощью правильной установки и конфигурации:
-
Установка необходимых пакетов:
Убедитесь, что вы установили все необходимые пакеты. Пакет rsyslog-gnutls может иметь другой путь для библиотеки в зависимости от версии и сборки пакета.sudo apt update sudo apt install rsyslog rsyslog-gnutls
-
Поиск и проверка модулей:
Перейдите в директорию/usr/lib/x86_64-linux-gnu/rsyslog/
и убедитесь, какие именно модули там есть.ls /usr/lib/x86_64-linux-gnu/rsyslog/
Если вы видите
lmnsd_gtls.so
, это может означать, что в вашей версии для TLS используется этот файл вместо ожидаемогоgtls.so
. -
Правка конфигурационного файла:
Проверьте, чтобы конфигурация файла
/etc/rsyslog.conf
соответствовала синтаксису, поддерживаемому вашей версией rsyslog. Обратите особое внимание на использование точных названий параметров.$DefaultNetstreamDriverCAFile /etc/rsyslog/certs/rsyslog.crt $DefaultNetstreamDriverCertFile /etc/rsyslog/certs/rsyslog.crt $DefaultNetstreamDriverKeyFile /etc/rsyslog/certs/rsyslog.key module(load="imtcp") module(load="lmnsd_gtls") # Используйте модуль в наличии input(type="imtcp" port="6514" StreamDriver.Name="gtls" StreamDriver.Mode="1" StreamDriver.AuthMode="anon")
Применение
-
Перезагрузка rsyslog:
После внесения изменений в конфигурационный файл необходимо перезапустить службу rsyslog, чтобы она подхватила новые настройки.sudo systemctl restart rsyslog
-
Проверка состояния службы:
Убедитесь, что служба работает и ошибок нет.sudo systemctl status rsyslog
-
Проверка логов:
В случае возникновения ошибок в процессе перезагрузки rsyslog проверяйте файлы журналов в/var/log/syslog
для получения дополнительной информации о возможных проблемах.
Если после выполнения вышеописанных шагов проблема остается нерешенной, возможно, стоит проверить наличие обновлений системы или рассмотреть переустановку rsyslog с нуля, а также проверить используемую версию и документацию. Ключевым аспектом решения таких вопросов всегда будет оставаться актуальная информация из логов и документация на используемую версию Ubuntu и rsyslog.
Удачи в настройке вашего зашифрованного syslog-сервера!