Como posso configurar o SELinux para permitir que o rsyslogd execute meu programa?

3

Estou tentando usar o SELinux com um sistema que tem rsyslogd chamando um binário:

# rsyslog configuration file

module(load="omprog")

template(
  name="snmp_template"
  type="string"
  string="%msg%
audit2allow -a /var/log/audit/audit.log

#============= syslogd_t ==============
allow syslogd_t security_t:security compute_av;
allow syslogd_t self:capability audit_write;
allow syslogd_t self:netlink_selinux_socket { bind create };
allow syslogd_t self:passwd passwd;
allow syslogd_t snmpd_var_lib_t:dir { write remove_name add_name };
allow syslogd_t snmpd_var_lib_t:file { rename create unlink append };
allow syslogd_t su_exec_t:file { read getattr open execute execute_no_trans };
allow syslogd_t system_dbusd_t:unix_stream_socket connectto;
allow syslogd_t system_dbusd_var_run_t:sock_file write;
7" ) if ( $msg contains "SFCS_EVENT: " ) then action( type="omprog" binary="/usr/libexec/redacted/send_snmp" template="snmp_template" )

O programa send_snmp é executado com o tipo syslog_t , herdado de rsyslogd . Aqui estão as permissões necessárias para executar:

# rsyslog configuration file

module(load="omprog")

template(
  name="snmp_template"
  type="string"
  string="%msg%
audit2allow -a /var/log/audit/audit.log

#============= syslogd_t ==============
allow syslogd_t security_t:security compute_av;
allow syslogd_t self:capability audit_write;
allow syslogd_t self:netlink_selinux_socket { bind create };
allow syslogd_t self:passwd passwd;
allow syslogd_t snmpd_var_lib_t:dir { write remove_name add_name };
allow syslogd_t snmpd_var_lib_t:file { rename create unlink append };
allow syslogd_t su_exec_t:file { read getattr open execute execute_no_trans };
allow syslogd_t system_dbusd_t:unix_stream_socket connectto;
allow syslogd_t system_dbusd_var_run_t:sock_file write;
7" ) if ( $msg contains "SFCS_EVENT: " ) then action( type="omprog" binary="/usr/libexec/redacted/send_snmp" template="snmp_template" )

Permitir processos do tipo syslog_d todos esses privilégios parece ser uma má idéia. Existe uma maneira razoavelmente simples de restringi-los ao meu programa send_snmp e continuar negando-os a outros processos syslogd_t ?

P.S. "Simples" significa "pode ser implementado e testado por um novato do SELinux em um dia útil".

    
por Peter Westlake 07.04.2016 / 16:33

0 respostas