Zoneminder and Selinux and the Infinite Story of Doom

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dear All,

For the last few days Dominick and I have been trying to write a policy for Zoneminder, as the current policy does not seem to be working.

I will append what we gathered up so far below, however before I do, there seems to be an inherent problem with apache and sudo/su/pam, which seems to work in permissive mode, but as soon as I enable enforcing, b00m, I get these.

May 21 14:18:23 hq su: pam_unix(su:auth): auth could not identify password for [apache] May 21 14:18:23 hq su: pam_succeed_if(su:auth): requirement "uid >= 1000" not met by user "apache" May 21 14:18:23 hq su: pam_unix(su:auth): auth could not identify password for [apache] May 21 14:18:23 hq su: pam_succeed_if(su:auth): requirement "uid >= 1000" not met by user "apache"

In permissive mode all is fine:

May 21 14:32:03 hq su: pam_unix(su:session): session opened for user apache by (uid=0)
May 21 14:32:03 hq su: pam_unix(su:session): session closed for user apache
May 21 14:32:03 hq su: pam_unix(su:session): session opened for user apache by (uid=0)
May 21 14:32:03 hq su: pam_unix(su:session): session closed for user apache
May 21 14:32:03 hq su: pam_unix(su:session): session opened for user apache by (uid=0)

type=USER_CMD msg=audit(1369143877.597:513): pid=2196 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:zoneminder_t:s0 msg='cwd="/usr/share/zoneminder/www" cmd="true" terminal=? res=failed' type=USER_AUTH msg=audit(1369143877.611:514): pid=2197 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:zoneminder_t:s0 msg='op=PAM:authentication acct="apache" exe="/usr/bin/su" hostname=? addr=? terminal=? res=failed' type=USER_AUTH msg=audit(1369143877.625:515): pid=2199 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:zoneminder_t:s0 msg='op=PAM:authentication acct="apache" exe="/usr/bin/su" hostname=? addr=? terminal=? res=failed' type=SERVICE_START msg=audit(1369143877.642:516): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg=' comm="zoneminder" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=failed'


Any insights would be most appreciated, as I would really like to see a policy for zoneminder that works, not only for myself, but so that we can have it in the Fedora stock policy.


Thank you for all your help, especially Dominick Grift's.

Regards,

Tristan


And the policy we have so far:

policy_module(myzonem, 1.0.0)
gen_require(` type zoneminder_t; ')
domain_read_all_domains_state(zoneminder_t)
logging_send_audit_msgs(zoneminder_t)
sudo_exec(zoneminder_t)
su_exec(zoneminder_t)
allow zoneminder_t self:process setrlimit;
allow zoneminder_t self:capability { setuid setgid sys_resource };
gen_require(`type httpd_zoneminder_script_exec_t; ')
can_exec(zoneminder_t, httpd_zoneminder_script_exec_t)
gen_require(` type zoneminder_var_lib_t; ')
manage_lnk_files_pattern(zoneminder_t, zoneminder_var_lib_t, zoneminder_var_lib_t)
dbus_system_bus_client(zoneminder_t)
selinux_compute_access_vector(zoneminder_t)
allow zoneminder_t self:process setsched;


allow zoneminder_t self:key write;
auth_rw_lastlog(zoneminder_t)
systemd_write_inherited_logind_sessions_pipes(zoneminder_t)
auth_domtrans_chk_passwd(zoneminder_t)
systemd_dbus_chat_logind(zoneminder_t)
gen_require(` type chkpwd_t; ')
allow zoneminder_t chkpwd_t:process { rlimitinh noatsecure siginh };
auth_read_shadow(zoneminder_t)
auth_domtrans_upd_passwd(zoneminder_t)
#gen_require(` type  systemd_logind_t; ')
#permissive systemd_logind_t;
gen_require(` type unconfined_t; role system_r; type zoneminder_exec_t; role unconfined_r; ')
domtrans_pattern(unconfined_t, zoneminder_exec_t, zoneminder_t)
role_transition unconfined_r zoneminder_exec_t:file system_r;
domain_entry_file(zoneminder_t, httpd_zoneminder_script_exec_t)
domtrans_pattern(unconfined_t, httpd_zoneminder_script_exec_t, zoneminder_t)
gen_require(` type httpd_t; ')
gen_require(` type httpd_zoneminder_script_t; type zoneminder_tmpfs_t;')
init_read_utmp(httpd_t)
read_files_pattern(httpd_t, zoneminder_var_lib_t, zoneminder_var_lib_t)
rw_files_pattern(httpd_zoneminder_script_t, zoneminder_tmpfs_t, zoneminder_tmpfs_t) manage_dirs_pattern(httpd_zoneminder_script_t, zoneminder_var_lib_t, zoneminder_var_lib_t) manage_files_pattern(httpd_zoneminder_script_t, zoneminder_var_lib_t, zoneminder_var_lib_t)
allow httpd_t zoneminder_var_lib_t:dir list_dir_perms;
init_daemon_domain(zoneminder_t, httpd_zoneminder_script_exec_t)

require {
        type chkpwd_t;
        type httpd_t;
        type httpd_zoneminder_script_t;
        type sshd_t;
        class process { siginh noatsecure rlimitinh };
        class unix_stream_socket { read write };
}

#============= httpd_t ==============
allow httpd_t httpd_zoneminder_script_t:process { siginh noatsecure rlimitinh };

#============= httpd_zoneminder_script_t ==============
allow httpd_zoneminder_script_t httpd_t:unix_stream_socket { read write };

require {
        type passwd_t;
}
allow passwd_t chkpwd_t:process { noatsecure siginh rlimitinh };
allow httpd_zoneminder_script_t httpd_t:unix_stream_socket { read write };
allow httpd_t httpd_zoneminder_script_t:process { noatsecure siginh rlimitinh };


--
Tristan Santore BSc MBCS
TS4523-RIPE
Network and Infrastructure Operations
InterNexusConnect
Mobile +44-78-55069812
Tristan.Santore@xxxxxxxxxxxxxxxxxxxxx

Former Thawte Notary
(Please note: Thawte has closed its WoT programme down,
and I am therefore no longer able to accredit trust)

For Fedora related issues, please email me at:
TSantore@xxxxxxxxxxxxxxxxx
--
selinux mailing list
selinux@xxxxxxxxxxxxxxxxxxxxxxx
https://admin.fedoraproject.org/mailman/listinfo/selinux





[Index of Archives]     [Fedora Users]     [Fedora Desktop]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux