Как заставить модуль Zabbix Puppet работать с SELinux

Я пишу модуль Puppet для установки Zabbix на агент Puppet. Все работает как задумано, но SELinux плохо работает с Zabbix. Я получаю следующую ошибку от SELinux в журнале аудита:

type=AVC msg=audit(% audit_id): avc:  denied  { connect } for  pid=2383 comm="zabbix_agentd" scontext=system_u:system_r:zabbix_agent_t:s0 tcontext=system_u:system_r:zabbix_agent_t:s0 tclass=unix_dgram_socket permissive=0

Я изменил свой класс Puppet, чтобы он выглядел так, используя этот веб-сайт в качестве ссылки:

class { 'zabbix::agent':
    server => '<server_ip>',
        tlsaccept => 'psk',
        tlsconnect => 'psk',
        tlspskfile => $pskfilepath,
        tlspskidentity => $pskidentity,
        manage_selinux => true,
        selinux_require => [
            'type kernel_t',
            'type devlog_t',
            'type zabbix_agent_t',
            'class sock_file write',
            'class process setrlimit', 
            'class unix_dgram_socket {connect create sendto}',
    ],
    selinux_rules => { 'zabbix_agent_t' => [
            'allow zabbix_agent_t kernel_t:unix_dgram_socket sendto',
            'allow zabbix_agent_t self:process setrlimit',
            'allow zabbix_agent_t self:unix_dgram_socket { connect create }',
    ]
  }

Теперь я получаю следующее:

type = AVC msg = audit ($ audit_id): avc: denied {write} for pid = 4293 comm = "zabbix_agentd" name = "log" dev = "devtmpfs" ino = 8160 scontext = system_u: system_r: zabbix_agent_t: s0 tcontext = system_u: object_r: devlog_t: s0 tclass = sock_file permissive = 0

Он изменился с {connect} на {write} , подскажите, пожалуйста, почему SELinux не работает «плохо работает с Zabbix?»

0
задан 8 February 2019 в 00:00
1 ответ

Майкл Хэмптон помог мне разобраться, я использовал инструкции из здесь создать 4 оператора exec, которые достигли бы цели. Я заключил его в оператор if, чтобы проверить, запущен ли уже агент Zabbix, поскольку его запуск, когда агент Zabbix уже запущен, вызывает ошибку. Может быть, есть лучший способ сделать это, но я так и сделал, и он хорошо работает. Если у кого-то возникают ошибки с операторами exec, не забудьте правильно установить атрибут path для каждого оператора exec, и он будет работать.

0
ответ дан 5 December 2019 в 04:14

Теги

Похожие вопросы