Вопрос или проблема
Я настраиваю сервер 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/
.
Анализ проблемы
Согласно предоставленной информации, права доступа к каталогам и файлам выглядят следующим образом:
-
Директория
/home
:drwxr-xr-x 5 root root 4096 Jul 17 10:16 /home
-
Директория
/home/syslog_cert
:drwxr-xr-x 2 syslog syslog 4096 Jul 17 10:16 syslog_cert
-
Файлы в директории
/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
не имеет разрешения на выполнение для других пользователей.
Решения
-
Перемещение сертификатов:
Переместите ваши сертификаты в директорию, к которой у службы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
-
Изменение прав доступа:
Если вы все-таки хотите оставить сертификаты в директории/home/syslog_cert
, вам нужно изменить права доступа:sudo chmod o+x /home
или
sudo chmod 750 /home/syslog_cert
-
Проверьте конфигурацию
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
Заключение
Таким образом, перемещение сертификатов в директорию с необходимыми правами доступа является наиболее простым и эффективным решением для устранения ошибок прав доступа, которые вы наблюдаете. Это минимизирует проблемы в настройках и обеспечивает безопасность.