|
Chris PeBenito |
e181fe |
|
|
Chris PeBenito |
fb63d0 |
policy_module(domain,1.1.2)
|
|
Chris PeBenito |
960373 |
|
|
Chris PeBenito |
fd89e1 |
########################################
|
|
Chris PeBenito |
fd89e1 |
#
|
|
Chris PeBenito |
fd89e1 |
# Declarations
|
|
Chris PeBenito |
fd89e1 |
#
|
|
Chris PeBenito |
fd89e1 |
|
|
Chris PeBenito |
b4cd15 |
# Mark process types as domains
|
|
Chris PeBenito |
b4cd15 |
attribute domain;
|
|
Chris PeBenito |
b4cd15 |
|
|
Chris PeBenito |
2e863f |
# Transitions only allowed from domains to other domains
|
|
Chris PeBenito |
2e863f |
neverallow domain ~domain:process { transition dyntransition };
|
|
Chris PeBenito |
2e863f |
|
|
Chris PeBenito |
605ba2 |
# Domains that are unconfined
|
|
Chris PeBenito |
955019 |
attribute unconfined_domain_type;
|
|
Chris PeBenito |
605ba2 |
|
|
Chris PeBenito |
2e863f |
# Domains that can set their current context
|
|
Chris PeBenito |
2e863f |
# (perform dynamic transitions)
|
|
Chris PeBenito |
2e863f |
attribute set_curr_context;
|
|
Chris PeBenito |
2e863f |
|
|
Chris PeBenito |
2e863f |
# enabling setcurrent breaks process tranquility. If you do not
|
|
Chris PeBenito |
2e863f |
# know what this means or do not understand the implications of a
|
|
Chris PeBenito |
2e863f |
# dynamic transition, you should not be using it!!!
|
|
Chris PeBenito |
2e863f |
neverallow { domain -set_curr_context } self:process setcurrent;
|
|
Chris PeBenito |
2e863f |
|
|
Chris PeBenito |
960373 |
# entrypoint executables
|
|
Chris PeBenito |
960373 |
attribute entry_type;
|
|
Chris PeBenito |
960373 |
|
|
Chris PeBenito |
8a0da1 |
# widely-inheritable file descriptors
|
|
Chris PeBenito |
8a0da1 |
attribute privfd;
|
|
Chris PeBenito |
8a0da1 |
|
|
Chris PeBenito |
2e863f |
#
|
|
Chris PeBenito |
8bd678 |
# constraint related attributes
|
|
Chris PeBenito |
2e863f |
#
|
|
Chris PeBenito |
2e863f |
|
|
Chris PeBenito |
2e863f |
# [1] types that can change SELinux identity on transition
|
|
Chris PeBenito |
8bd678 |
attribute can_change_process_identity;
|
|
Chris PeBenito |
2e863f |
|
|
Chris PeBenito |
2e863f |
# [2] types that can change SELinux role on transition
|
|
Chris PeBenito |
8bd678 |
attribute can_change_process_role;
|
|
Chris PeBenito |
2e863f |
|
|
Chris PeBenito |
2e863f |
# [3] types that can change the SELinux identity on a filesystem
|
|
Chris PeBenito |
2e863f |
# object or a socket object on a create or relabel
|
|
Chris PeBenito |
8bd678 |
attribute can_change_object_identity;
|
|
Chris PeBenito |
8bd678 |
|
|
Chris PeBenito |
2e863f |
# [3] types that can change to system_u:system_r
|
|
Chris PeBenito |
2e863f |
attribute can_system_change;
|
|
Chris PeBenito |
a154cd |
|
|
Chris PeBenito |
2e863f |
# [4] types that have attribute 1 can change the SELinux
|
|
Chris PeBenito |
2e863f |
# identity only if the target domain has this attribute.
|
|
Chris PeBenito |
2e863f |
# Types that have attribute 2 can change the SELinux role
|
|
Chris PeBenito |
2e863f |
# only if the target domain has this attribute.
|
|
Chris PeBenito |
2e863f |
attribute process_user_target;
|
|
Chris PeBenito |
2e863f |
|
|
Chris PeBenito |
2e863f |
# For cron jobs
|
|
Chris PeBenito |
2e863f |
# [5] types used for cron daemons
|
|
Chris PeBenito |
2e863f |
attribute cron_source_domain;
|
|
Chris PeBenito |
2e863f |
# [6] types used for cron jobs
|
|
Chris PeBenito |
2e863f |
attribute cron_job_domain;
|
|
Chris PeBenito |
2e863f |
|
|
Chris PeBenito |
2e863f |
# [7] types that are unconditionally exempt from
|
|
Chris PeBenito |
2e863f |
# SELinux identity and role change constraints
|
|
Chris PeBenito |
2e863f |
attribute process_uncond_exempt; # add userhelperdomain to this one
|
|
Chris PeBenito |
2a3478 |
|
|
Chris PeBenito |
e0dfbd |
neverallow { domain unlabeled_t } ~{ domain unlabeled_t }:process *;
|
|
Chris PeBenito |
2e863f |
neverallow ~{ domain unlabeled_t } *:process *;
|
|
Chris PeBenito |
3cfd48 |
|
|
Chris PeBenito |
3cfd48 |
########################################
|
|
Chris PeBenito |
3cfd48 |
#
|
|
Chris PeBenito |
3cfd48 |
# Rules applied to all domains
|
|
Chris PeBenito |
3cfd48 |
#
|
|
Chris PeBenito |
3cfd48 |
|
|
Chris PeBenito |
3cfd48 |
# read /proc/pid entries
|
|
Chris PeBenito |
3cfd48 |
allow domain self:dir r_dir_perms;
|
|
Chris PeBenito |
3cfd48 |
allow domain self:lnk_file r_file_perms;
|
|
Chris PeBenito |
3cfd48 |
allow domain self:file rw_file_perms;
|
|
Chris PeBenito |
3cfd48 |
|
|
Chris PeBenito |
3cfd48 |
# create child processes in the domain
|
|
Chris PeBenito |
3cfd48 |
allow domain self:process { fork sigchld };
|
|
Chris PeBenito |
3cfd48 |
|
|
Chris PeBenito |
3cfd48 |
# Use trusted objects in /dev
|
|
Chris PeBenito |
3cfd48 |
dev_rw_null(domain)
|
|
Chris PeBenito |
3cfd48 |
dev_rw_zero(domain)
|
|
Chris PeBenito |
3cfd48 |
term_use_controlling_term(domain)
|
|
Chris PeBenito |
3cfd48 |
|
|
Chris PeBenito |
3cfd48 |
# list the root directory
|
|
Chris PeBenito |
3cfd48 |
files_list_root(domain)
|
|
Chris PeBenito |
3cfd48 |
|
|
Chris PeBenito |
3cfd48 |
ifdef(`targeted_policy',`
|
|
Chris PeBenito |
3cfd48 |
# RBAC is disabled in the targeted policy,
|
|
Chris PeBenito |
3cfd48 |
# as only one role is used, system_r.
|
|
Chris PeBenito |
3cfd48 |
role system_r types domain;
|
|
Chris PeBenito |
3cfd48 |
|
|
Chris PeBenito |
3cfd48 |
# FIXME:
|
|
Chris PeBenito |
3cfd48 |
# workaround until role dominance is fixed in
|
|
Chris PeBenito |
3cfd48 |
# the module compiler
|
|
Chris PeBenito |
3cfd48 |
role secadm_r types domain;
|
|
Chris PeBenito |
3cfd48 |
role sysadm_r types domain;
|
|
Chris PeBenito |
3cfd48 |
role user_r types domain;
|
|
Chris PeBenito |
3cfd48 |
role staff_r types domain;
|
|
Chris PeBenito |
3cfd48 |
')
|
|
Chris PeBenito |
3cfd48 |
|
|
Chris PeBenito |
3cfd48 |
tunable_policy(`global_ssp',`
|
|
Chris PeBenito |
3cfd48 |
# enable reading of urandom for all domains:
|
|
Chris PeBenito |
3cfd48 |
# this should be enabled when all programs
|
|
Chris PeBenito |
3cfd48 |
# are compiled with ProPolice/SSP
|
|
Chris PeBenito |
3cfd48 |
# stack smashing protection.
|
|
Chris PeBenito |
3cfd48 |
dev_read_urand(domain)
|
|
Chris PeBenito |
3cfd48 |
')
|
|
Chris PeBenito |
b518fc |
|
|
Chris PeBenito |
165b42 |
optional_policy(`
|
|
Chris PeBenito |
165b42 |
setrans_translate_context(domain)
|
|
Chris PeBenito |
165b42 |
')
|
|
Chris PeBenito |
165b42 |
|
|
Chris PeBenito |
b518fc |
########################################
|
|
Chris PeBenito |
b518fc |
#
|
|
Chris PeBenito |
b518fc |
# Unconfined access to this module
|
|
Chris PeBenito |
b518fc |
#
|
|
Chris PeBenito |
b518fc |
|
|
Chris PeBenito |
b518fc |
# unconfined access also allows constraints, but this
|
|
Chris PeBenito |
b518fc |
# is handled in the interface as typeattribute cannot
|
|
Chris PeBenito |
b518fc |
# be used on an attribute.
|
|
Chris PeBenito |
b518fc |
|
|
Chris PeBenito |
b518fc |
# Use/sendto/connectto sockets created by any domain.
|
|
Chris PeBenito |
b518fc |
allow unconfined_domain_type domain:{ socket_class_set socket key_socket } *;
|
|
Chris PeBenito |
b518fc |
|
|
Chris PeBenito |
b518fc |
# Use descriptors and pipes created by any domain.
|
|
Chris PeBenito |
b518fc |
allow unconfined_domain_type domain:fd use;
|
|
Chris PeBenito |
b518fc |
allow unconfined_domain_type domain:fifo_file rw_file_perms;
|
|
Chris PeBenito |
b518fc |
|
|
Chris PeBenito |
b518fc |
# Act upon any other process.
|
|
Chris PeBenito |
b518fc |
allow unconfined_domain_type domain:process ~{ transition dyntransition execmem execstack execheap };
|
|
Chris PeBenito |
b518fc |
|
|
Chris PeBenito |
b518fc |
# Create/access any System V IPC objects.
|
|
Chris PeBenito |
b518fc |
allow unconfined_domain_type domain:{ sem msgq shm } *;
|
|
Chris PeBenito |
b518fc |
allow unconfined_domain_type domain:msg { send receive };
|
|
Chris PeBenito |
b518fc |
|
|
Chris PeBenito |
b518fc |
# For /proc/pid
|
|
Chris PeBenito |
b518fc |
allow unconfined_domain_type domain:dir r_dir_perms;
|
|
Chris PeBenito |
b518fc |
allow unconfined_domain_type domain:file r_file_perms;
|
|
Chris PeBenito |
b518fc |
allow unconfined_domain_type domain:lnk_file r_file_perms;
|