Ubuntu Rsyslog не может читать сертификаты из-за отказа в доступе

Вопрос или проблема

Я настраиваю сервер syslog, который будет слушать логи от межсетевого экрана Fortigate. В Rsyslog возникает ошибка

'/home/syslog_cert/ACDC_CA.pem' не удалось получить доступ: Отказано в доступе"
  • Это мой rsyslog конфиг:
    $ sudo cat /etc/rsyslog.conf
    
    # /etc/rsyslog.conf файл конфигурации для rsyslog
    #
    # Для получения дополнительной информации установите rsyslog-doc и смотрите
    # /usr/share/doc/rsyslog-doc/html/configuration/index.html
    #
    # Правила логирования по умолчанию можно найти в /etc/rsyslog.d/50-default.conf
    
    global(
      DefaultNetstreamDriver="gtls"
      DefaultNetstreamDriverCAFile="/home/syslog_cert/ACDC_CA.pem"
      DefaultNetstreamDriverCertFile="/home/syslog_cert/server-key-pem.pem"
      DefaultNetstreamDriverKeyFile="/home/syslog_cert/server-key-nopass.key"
    )
    
    
    
    #################
    #### МОДУЛИ ####
    #################
    module(load="imtcp" StreamDriver.Name="gtls" StreamDriver.Mode="1" StreamDriver.Authmode="anon")
    input(type="imtcp" port="6514")
    
    module(load="imuxsock") # обеспечивает поддержку локального системного логирования
    #module(load="immark") # предоставляет возможность сообщений --MARK--
    # предоставляет поддержку логирования ядра и включает сообщения klog, не относящиеся к ядру
    
    module(load="imklog" permitnonkernelfacility="on")
    
    ###########################
    #### ГЛОБАЛЬНЫЕ ДИРЕКТИВЫ ####
    ###########################
    # Фильтровать дублированные сообщения
    $RepeatedMsgReduction on
    
    # Установить права доступа по умолчанию для всех лог-файлов.
    $FileOwner syslog
    $FileGroup adm
    $FileCreateMode 0640
    $DirCreateMode 0755
    $Umask 0022
    $PrivDropToUser syslog
    $PrivDropToGroup syslog
    
    # Где размещать файлы очереди и состояния
    $WorkDirectory /var/spool/rsyslog
    
    # Включить все файлы конфигурации в /etc/rsyslog.d/
    $IncludeConfig /etc/rsyslog.d/*.conf
    
  • Перезапускаю сервис:
    sudo systemctl restart rsyslog
    sudo systemctl status rsyslog 
    sudo journalctl -u rsyslog
    
  • Когда я перезапускаю сервис, я получаю следующую ошибку:
    systemd[1]: Запуск rsyslog.service - Служба системного логирования...
    rsyslogd[626]: rsyslogd: ошибка: файл defaultnetstreamdrivercafile '/home/syslog_cert/ACDC_CA.pem' не удалось получить доступ: Отказано в доступе [v8.212.0 попробуйте https://www.rsyslog.com/e/2039 ]
    rsyslogd[626]: rsyslogd: ошибка: файл defaultnetstreamdriverkeyfile '/home/syslog_cert/server-key-nopass.key' не удалось получить доступ: Отказано в доступе [v8.212.0 попробуйте https://www.rsyslog.com/e/2039 ]
    rsyslogd[626]: rsyslogd: ошибка: файл defaultnetstreamdrivercertfile '/home/syslog_cert/server-key-pem.pem' не удалось получить доступ: Отказано в доступе [v8.231.0 попробуйте https://www.rsyslog.com/e/2039 ]
    rsyslogd[626]: rsyslogd: не удалось загрузить модуль 'lmnsd_gtls', ошибки: пытаться загрузить модуль /usr/lib/x86_64-linux-gnu/rsyslog/lmnsd_gtls.so: /usr/lib/x6_64-linux-gnu/rsyslog/lmnsd_gtls.so: невозможно открыть общий объектный файл: Нет такого файла или директории [v8.2312.0 попробуйте https://www.rsyslog.com/e/2066 ]
    rsyslogd[626]: rsyslogd: tcpsrv не удалось создать слушатель (имя ввода: 'imtcp') [v8.2312.0 попробуйте https://www.rsyslog.com/e/2066 ]
    
  • Права доступа:
    $ ls -ld /home
    drwxr-xr-x 5 root root 4096 Июл 17 10:16 /home
    
    $ ls -l /home
    drwxr-x--- 3 mrx  mrx 4096 Июл 17 10:16 mrx 
    drwxr-xr-x 2 syslog                syslog                4096 Июл 17 10:16 syslog_cert
    drwxr-x--- 3 ubuntu                ubuntu                4096 Июл 11 08:16 ubuntu
    
    $ ls -l syslog_cert/
    -rw-r----- 1 syslog syslog 5442 Июл 17 10:02 ACDC_CA.pem
    -rw-r----- 1 syslog syslog 1678 Июл 17 10:02 server-key-nopass.key
    -rw-r----- 1 syslog syslog 1938 Июл 17 10:02 server-key-pem.pem
    

Попробуйте переместить сертификаты в /etc/rsyslog.d
Это сработало для меня 🙂

Спасибо rgerhards за этот пост:
https://github.com/rsyslog/rsyslog/issues/5272

Ответ или решение

Проблема, с которой вы столкнулись, связана с правами доступа к файлам сертификатов, используемым rsyslog для шифрования соединения. Сообщение об ошибке, которое вы получаете, указывает на то, что служба rsyslog не имеет разрешения на доступ к файлам сертификатов в вашей директории /home/syslog_cert/.

Анализ проблемы

Согласно предоставленной информации, права доступа к каталогам и файлам выглядят следующим образом:

  1. Директория /home:

    drwxr-xr-x 5 root root 4096 Jul 17 10:16 /home
  2. Директория /home/syslog_cert:

    drwxr-xr-x 2 syslog syslog 4096 Jul 17 10:16 syslog_cert
  3. Файлы в директории /home/syslog_cert:

    -rw-r----- 1 syslog syslog 5442 Jul 17 10:02 ACDC_CA.pem
    -rw-r----- 1 syslog syslog 1678 Jul 17 10:02 server-key-nopass.key
    -rw-r----- 1 syslog syslog 1938 Jul 17 10:02 server-key-pem.pem

Ваша служба rsyslog запускается под пользователем syslog, однако директория /home доступна только для чтения для других пользователей (в том числе для syslog). Таким образом, при попытке доступа к файлам в /home/syslog_cert, rsyslog не имеет необходимых прав на доступ, так как /home не имеет разрешения на выполнение для других пользователей.

Решения

  1. Перемещение сертификатов:
    Переместите ваши сертификаты в директорию, к которой у службы rsyslog есть полный доступ, например, /etc/rsyslog.d. Используйте команды:

    sudo mv /home/syslog_cert/*.pem /etc/rsyslog.d/
    sudo chown syslog:adm /etc/rsyslog.d/*.pem
    sudo chmod 640 /etc/rsyslog.d/*.pem
  2. Изменение прав доступа:
    Если вы все-таки хотите оставить сертификаты в директории /home/syslog_cert, вам нужно изменить права доступа:

    sudo chmod o+x /home

    или

    sudo chmod 750 /home/syslog_cert
  3. Проверьте конфигурацию rsyslog:
    После перемещения файлов или изменения прав убедитесь, что конфигурация rsyslog соответствует новому пути. Если вы переместили файлы в /etc/rsyslog.d, измените конфигурацию на:

    DefaultNetstreamDriverCAFile="/etc/rsyslog.d/ACDC_CA.pem"
    DefaultNetstreamDriverCertFile="/etc/rsyslog.d/server-key-pem.pem"
    DefaultNetstreamDriverKeyFile="/etc/rsyslog.d/server-key-nopass.key"

Перезапуск и мониторинг логов

После выполнения изменений, перезапустите службу:

sudo systemctl restart rsyslog
sudo systemctl status rsyslog

И проверьте логи:

sudo journalctl -u rsyslog

Заключение

Таким образом, перемещение сертификатов в директорию с необходимыми правами доступа является наиболее простым и эффективным решением для устранения ошибок прав доступа, которые вы наблюдаете. Это минимизирует проблемы в настройках и обеспечивает безопасность.

Оцените материал
Добавить комментарий

Капча загружается...