Dominick Grift c9cafe1
policy_module(rssh, 2.2.1)
1ec3d1a
1ec3d1a
########################################
1ec3d1a
#
1ec3d1a
# Declarations
1ec3d1a
#
1ec3d1a
Dominick Grift c9cafe1
attribute_role rssh_roles;
Dominick Grift c9cafe1
roleattribute system_r rssh_roles;
Dominick Grift c9cafe1
1ec3d1a
type rssh_t;
1ec3d1a
type rssh_exec_t;
1ec3d1a
typealias rssh_t alias { user_rssh_t staff_rssh_t sysadm_rssh_t };
1ec3d1a
typealias rssh_t alias { auditadm_rssh_t secadm_rssh_t };
Chris PeBenito 66b26ac
userdom_user_application_domain(rssh_t, rssh_exec_t)
Chris PeBenito 9401ae1
domain_user_exemption_target(rssh_t)
Chris PeBenito 9401ae1
domain_interactive_fd(rssh_t)
Dominick Grift c9cafe1
role rssh_roles types rssh_t;
1ec3d1a
1ec3d1a
type rssh_chroot_helper_t;
1ec3d1a
type rssh_chroot_helper_exec_t;
1ec3d1a
init_system_domain(rssh_chroot_helper_t, rssh_chroot_helper_exec_t)
1ec3d1a
1ec3d1a
type rssh_devpts_t;
1ec3d1a
typealias rssh_devpts_t alias { user_rssh_devpts_t staff_rssh_devpts_t sysadm_rssh_devpts_t };
1ec3d1a
typealias rssh_devpts_t alias { auditadm_rssh_devpts_t secadm_rssh_devpts_t };
1ec3d1a
term_user_pty(rssh_t, rssh_devpts_t)
1ec3d1a
ubac_constrained(rssh_devpts_t)
1ec3d1a
Dominick Grift c9cafe1
type rssh_ro_t; # customizable
1ec3d1a
typealias rssh_ro_t alias { user_rssh_ro_t staff_rssh_ro_t sysadm_rssh_ro_t };
1ec3d1a
typealias rssh_ro_t alias { auditadm_rssh_ro_t secadm_rssh_ro_t };
1ec3d1a
userdom_user_home_content(rssh_ro_t)
1ec3d1a
Dominick Grift c9cafe1
type rssh_rw_t; # customizable
1ec3d1a
typealias rssh_rw_t alias { user_rssh_rw_t staff_rssh_rw_t sysadm_rssh_rw_t };
1ec3d1a
typealias rssh_rw_t alias { auditadm_rssh_rw_t secadm_rssh_rw_t };
1ec3d1a
userdom_user_home_content(rssh_rw_t)
1ec3d1a
1ec3d1a
##############################
1ec3d1a
#
1ec3d1a
# Local policy
1ec3d1a
#
1ec3d1a
1ec3d1a
allow rssh_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap };
1ec3d1a
allow rssh_t self:fd use;
1ec3d1a
allow rssh_t self:fifo_file rw_fifo_file_perms;
1ec3d1a
allow rssh_t self:unix_dgram_socket sendto;
Dominick Grift c9cafe1
allow rssh_t self:unix_stream_socket { accept connectto listen };
1ec3d1a
Dominick Grift c9cafe1
allow rssh_t rssh_devpts_t:chr_file { rw_chr_file_perms setattr_chr_file_perms };
1ec3d1a
term_create_pty(rssh_t, rssh_devpts_t)
1ec3d1a
1ec3d1a
allow rssh_t rssh_ro_t:dir list_dir_perms;
1ec3d1a
read_files_pattern(rssh_t, rssh_ro_t, rssh_ro_t)
1ec3d1a
1ec3d1a
manage_dirs_pattern(rssh_t, rssh_rw_t, rssh_rw_t)
1ec3d1a
manage_files_pattern(rssh_t, rssh_rw_t, rssh_rw_t)
1ec3d1a
1ec3d1a
kernel_read_system_state(rssh_t)
1ec3d1a
kernel_read_kernel_sysctls(rssh_t)
1ec3d1a
1ec3d1a
files_read_etc_runtime_files(rssh_t)
1ec3d1a
files_list_home(rssh_t)
1ec3d1a
files_list_var(rssh_t)
1ec3d1a
1ec3d1a
fs_search_auto_mountpoints(rssh_t)
1ec3d1a
1ec3d1a
logging_send_syslog_msg(rssh_t)
1ec3d1a
1ec3d1a
rssh_domtrans_chroot_helper(rssh_t)
1ec3d1a
1ec3d1a
ssh_rw_tcp_sockets(rssh_t)
1ec3d1a
ssh_rw_stream_sockets(rssh_t)
1ec3d1a
1ec3d1a
optional_policy(`
1ec3d1a
	nis_use_ypbind(rssh_t)
1ec3d1a
')
1ec3d1a
1ec3d1a
########################################
1ec3d1a
#
Dominick Grift c9cafe1
# Chroot helper local policy
1ec3d1a
#
1ec3d1a
1ec3d1a
allow rssh_chroot_helper_t self:capability { sys_chroot setuid };
1ec3d1a
allow rssh_chroot_helper_t self:fifo_file rw_fifo_file_perms;
Dominick Grift c9cafe1
allow rssh_chroot_helper_t self:unix_stream_socket { accept listen };
1ec3d1a
1ec3d1a
domain_use_interactive_fds(rssh_chroot_helper_t)
1ec3d1a
1ec3d1a
auth_use_nsswitch(rssh_chroot_helper_t)
1ec3d1a
1ec3d1a
logging_send_syslog_msg(rssh_chroot_helper_t)