SELinux блокирует доступ nrpe к MariaDB

У меня есть несколько виртуальных машин в одной локальной сети, которые контролируются Icinga2 через NRPE.

[Машина A]

  • CentOS 6

  • Icinga2.

[Машина B]

  • CentOS 6

  • MariaDB v10.1.12 работает правильно

Datadir и настройки сокетов в my.cnf:

datadir=/database/mariadb
socket=/database/mariadb/mysql.sock

Существует также следующая символическая ссылка:

/var/lib/mysql -> /database/mariadb

Владелец: группа всего вышеперечисленного - mysql: mysql.

  • SELinux включен

  • /usr/lib64/nagios/plugins/check_mysql v2.0.3

со следующим контекстом безопасности:

-rwxr-xr-x. root root system_u:object_r:nagios_services_plugin_exec_t:s0 /usr/lib64/nagios/plugins/check_mysql
  • nrpe.cfg содержит следующую строку:

command[check_mysql]=/usr/lib64/nagios/plugins/check_mysql -H localhost -u xxx -p xxx -P 3306

Теперь проблема:

Исинга (с машины А) сообщает:

"Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)"

Если я вручную запускаю следующую строку на машине B:

sudo -u nrpe /usr/lib64/nagios/plugins/check_mysql -H localhost -u xxx -p xxx -P 3306

Результат в порядке (код выхода 0):

Uptime: 2085  Threads: 1  Questions: 68204  Slow queries: 0  Opens: 37  Flush...

Только когда я отключаю SELinux на машине B (echo 0 > /selinux/enforce) Icinga может подключиться к MySQL и показать состояние ОК. Но я не хочу отключать SELinux. Я пытаюсь найти правильные настройки, чтобы и SELinux был включен, и Icinga правильно подключался к mysql.

[редактировать]

Каждый раз, когда Icinga проверяет mysql на компьютере B I, смотрите следующие две новые строки в файле aud.log на компьютере B:

type=AVC msg=audit(1460038526.265:69): avc:  denied  { read } for  pid=4858 comm="check_mysql" name="mysql" dev=dm-0 ino=130900 scontext=system_u:system_r:nagios_services_plugin_t:s0 tcontext=unconfined_u:object_r:var_lib_t:s0 tclass=lnk_file
type=SYSCALL msg=audit(1460038526.265:69): arch=c000003e syscall=42 success=no exit=-13 a0=3 a1=7fffe4d270f0 a2=6e a3=7fffe4d263e0 items=0 ppid=4857 pid=4858 auid=4294967295 uid=497 gid=498 euid=497 suid=497 fsuid=497 egid=498 sgid=498 fsgid=498 tty=(none) ses=4294967295 comm="check_mysql" exe="/usr/lib64/nagios/plugins/check_mysql" subj=system_u:system_r:nagios_services_plugin_t:s0 key=(null)

3 ответа

Попробуй это:

setsebool -P nagios_run_sudo 1

На хосте с NRPE. Эта опция по умолчанию отключена в политике SELinux.

Мне удалось наконец решить это. Я поделюсь решением ниже, поскольку это может быть полезно и другим.

Я создал рабочий файл с именем audit.log, содержащий только строки ниже:

type=AVC msg=audit(1460038526.265:69): avc:  denied  { read } for  pid=4858 comm="check_mysql" name="mysql" dev=dm-0 ino=130900 scontext=system_u:system_r:nagios_services_plugin_t:s0 tcontext=unconfined_u:object_r:var_lib_t:s0 tclass=lnk_file
type=SYSCALL msg=audit(1460038526.265:69): arch=c000003e syscall=42 success=no exit=-13 a0=3 a1=7fffe4d270f0 a2=6e a3=7fffe4d263e0 items=0 ppid=4857 pid=4858 auid=4294967295 uid=497 gid=498 euid=497 suid=497 fsuid=497 egid=498 sgid=498 fsgid=498 tty=(none) ses=4294967295 comm="check_mysql" exe="/usr/lib64/nagios/plugins/check_mysql" subj=system_u:system_r:nagios_services_plugin_t:s0 key=(null)

Я побежал:

sealert -a audit.log > sealert.log

В результате sealert.log содержал объяснение проблемы:

SELinux запрещает /usr/lib64/nagios/plugins/check_mysql доступ к чтению в mysql lnk_file.

а также предложения по его устранению. Как и предполагалось, я запустил следующее:

grep check_mysql audit.log | audit2allow -M mypol

Это вывело два файла: mypol.pp и mypol.te

Наконец я запустил следующее, что полностью решило проблему:

semodule -i mypol.pp

Ваша проблема в том, что сокет обычно находится внутри /var/lib/mysql с файлами данных.

Поскольку вы используете другой каталог базы данных, SELinux блокирует запрос независимо от символической ссылки.

Вы можете попытаться получить доступ к MySQL через соединение TCP (используйте 127.0.0.1 и не localhost)

Но это может вызвать проблемы с SELinux с самим демоном MySQL.

Другие вопросы по тегам