我正在尝试使用带有rsyslogd的系统调用二进制文件的SELinux:
# rsyslog configuration file module(load="omprog") template( name="snmp_template" type="string" string="%msg%\007" ) if ( $msg contains "SFCS_EVENT: " ) then action( type="omprog" binary="/usr/libexec/redacted/send_snmp" template="snmp_template" )
send_snmp程序使用从rsyslogdinheritance的typessyslog_t运行。 这是它需要运行的权限:
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;
允许syslog_dtypes的进程,所有这些特权似乎是一个坏主意。 有一个相当简单的方法来限制他们到我的send_snmp程序并继续拒绝他们到其他syslogd_t进程?
PS“简单”是指“可以在一个工作日内由SELinux新手实施和testing”。