[Fedora-directory-users] SELinux policy for Fedora Directory Server 1.1.0
Pär Aronsson
par.aronsson at telia.com
Tue Mar 11 16:34:09 UTC 2008
Hello,
Attached is a SELinux policy for the Fedora Directory Server 1.1.0.
It is composed of three parts.
* dirsrv - directory server and setup programs
* dirsrv-admin - administration server and setup programs
* fedora-idm-console - java based console for administration
The policies were developed on a CentOS 5.1 with the following packages:
fedora-ds-base-1.1.0-3.fc6
fedora-ds-admin-1.1.1-1.fc6
fedora-ds-console-1.1.0-5.fc6
selinux-policy-2.4.6-106.el5_1.3
kernel-2.6.18-53.1.4.el5
I've succesfully tested the policies in targeted and strict mode.
The dirsrv-admin policy requires that the apache policy module is loaded.
Also run:
setsebool -P httpd_enable_cgi on
Comment out the following in /usr/sbin/start-ds-admin (line 63-65):
if [ -x /usr/sbin/selinuxenabled ] && /usr/sbin/selinuxenabled; then
SELINUX_CMD="runcon -t unconfined_t --"
fi
I had trouble with the replication plugin so I haven't been able to do any
testing with replication.
Any comments are welcome.
// Pär Aronsson
-------------- next part --------------
## <summary>Administration application for Fedora Directory Server, dirsrv-admin.</summary>
########################################
## <summary>
## Execute dirsrv-admin setup programs in the dirsrvadmin_setup_t domain
## and the system_r role. Strict policy.
## </summary>
## <param name="domain">
## <summary>
## Prefix of the domain performing this action.
## </summary>
## </param>
## <param name="role">
## <summary>
## The role to allow the domain.
## </summary>
## </param>
#
interface(`dirsrvadmin_setup_domtrans_strict',`
gen_require(`
type dirsrvadmin_t, dirsrvadmin_setup_t, dirsrvadmin_setupexec_t;
type $1_t, $1_devpts_t;
')
domain_auto_trans($1_t, dirsrvadmin_setupexec_t, dirsrvadmin_setup_t)
allow dirsrvadmin_setup_t $1_t:fd use;
allow dirsrvadmin_setup_t $1_t:process sigchld;
allow dirsrvadmin_setup_t $1_devpts_t:chr_file rw_term_perms;
role $2 types dirsrvadmin_setup_t;
role system_r types dirsrvadmin_setup_t;
role_transition $2 dirsrvadmin_setupexec_t system_r;
')
########################################
## <summary>
## Execute dirsrv-admin setup programs in the dirsrvadmin_setup_t domain
## and the system_r role. Targeted policy.
## </summary>
## <param name="domain">
## <summary>
## Prefix of the domain performing this action.
## </summary>
## </param>
## <param name="role">
## <summary>
## The role to allow the domain.
## </summary>
## </param>
#
interface(`dirsrvadmin_setup_domtrans_targeted',`
gen_require(`
type $1, dirsrvadmin_setupexec_t, dirsrvadmin_setup_t;
')
domain_auto_trans($1, dirsrvadmin_setupexec_t, dirsrvadmin_setup_t)
')
########################################
## <summary>
## Read setup log files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrvadmin_read_setuplog',`
gen_require(`
type dirsrvadmin_setuplog_t;
')
files_search_tmp($1)
allow $1 dirsrvadmin_setuplog_t:file r_file_perms;
')
########################################
## <summary>
## Manage setup log files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrvadmin_manage_setuplog',`
gen_require(`
type dirsrvadmin_setuplog_t;
')
files_search_tmp($1)
allow $1 dirsrvadmin_setuplog_t:file manage_file_perms;
')
########################################
## <summary>
## Extend httpd domain for dirsrv-admin.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrvadmin_extend_httpd',`
gen_require(`
type httpd_t;
')
# Allow httpd domain to interact with dirsrv
dirsrv_manage_config(httpd_t)
dirsrv_manage_log(httpd_t)
dirsrv_manage_var_run(httpd_t)
dirsrvadmin_manage_setuplog(httpd_t)
dirsrvadmin_manage_config(httpd_t)
dirsrv_signal(httpd_t)
dirsrv_signull(httpd_t)
dirsrv_run_helper_exec(httpd_t)
files_exec_usr_files(httpd_t)
corenet_tcp_bind_generic_port(httpd_t)
corenet_tcp_connect_generic_port(httpd_t)
# Strict policy
ifdef(`strict_policy',`
userdom_dontaudit_search_sysadm_home_dirs(httpd_t)
')
')
########################################
## <summary>
## Extend httpd domain for dirsrv-admin cgi.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrvadmin_script_extend_httpd',`
gen_require(`
type httpd_t, httpd_exec_t, httpd_suexec_exec_t, httpd_tmp_t, httpd_var_run_t;
')
allow $1 httpd_exec_t:file { read getattr execute_no_trans };
allow $1 httpd_suexec_exec_t:file getattr;
allow $1 httpd_tmp_t:file { read write };
allow $1 httpd_t:udp_socket { read write };
allow $1 httpd_t:unix_stream_socket { ioctl getattr read write };
allow $1 httpd_t:netlink_route_socket { read write };
allow $1 httpd_t:fifo_file { write read };
allow $1 httpd_var_run_t:file { read getattr };
apache_list_modules($1)
apache_exec_modules($1)
apache_use_fds($1)
dirsrvadmin_run_httpd_script_exec(httpd_t)
')
########################################
## <summary>
## Extend init domain for dirsrv-admin.
## The initscript searches in a config file.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrvadmin_extend_init',`
gen_require(`
type initrc_t;
')
allow initrc_t dirsrvadmin_config_t:file read;
')
########################################
## <summary>
## Exec dirsrv-admin programs.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrvadmin_run_exec',`
gen_require(`
type dirsrvadmin_exec_t;
')
allow $1 dirsrvadmin_exec_t:dir search_dir_perms;
can_exec($1,dirsrvadmin_exec_t)
')
########################################
## <summary>
## Exec cgi programs.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrvadmin_run_httpd_script_exec',`
gen_require(`
type httpd_dirsrvadmin_script_exec_t;
')
allow $1 httpd_dirsrvadmin_script_exec_t:dir search_dir_perms;
can_exec($1, httpd_dirsrvadmin_script_exec_t)
')
########################################
## <summary>
## Manage cgi programs.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrvadmin_manage_httpd_script_exec',`
gen_require(`
type httpd_dirsrvadmin_script_exec_t;
')
allow $1 httpd_dirsrvadmin_script_exec_t:dir manage_dir_perms;
allow $1 httpd_dirsrvadmin_script_exec_t:file manage_file_perms;
')
########################################
## <summary>
## Read tmp files created by cgi programs.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrvadmin_read_httpd_script_tmpfile',`
gen_require(`
type httpd_dirsrvadmin_script_rw_t;
')
allow $1 httpd_dirsrvadmin_script_rw_t:file r_file_perms;
')
########################################
## <summary>
## Manage tmp files created by cgi programs.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrvadmin_manage_httpd_script_tmpfile',`
gen_require(`
type httpd_dirsrvadmin_script_rw_t;
')
allow $1 httpd_dirsrvadmin_script_rw_t:file manage_file_perms;
')
########################################
## <summary>
## Read dirsrv-adminserver configuration files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrvadmin_read_config',`
gen_require(`
type dirsrvadmin_config_t;
')
allow $1 dirsrvadmin_config_t:dir r_dir_perms;
allow $1 dirsrvadmin_config_t:file r_file_perms;
')
########################################
## <summary>
## Manage dirsrv-adminserver configuration files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrvadmin_manage_config',`
gen_require(`
type dirsrvadmin_config_t;
')
allow $1 dirsrvadmin_config_t:dir manage_dir_perms;
allow $1 dirsrvadmin_config_t:file manage_file_perms;
')
########################################
## <summary>
## Read and write to cgi program over an unix stream socket.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrvadmin_script_stream_rw',`
gen_require(`
type httpd_dirsrvadmin_script_t;
')
allow $1 httpd_dirsrvadmin_script_t:unix_stream_socket { read write };
')
########################################
## <summary>
## Read migration inf file in sysadm home dir.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrvadmin_read_inffile',`
ifdef(`targeted_policy',`
gen_require(`
type user_home_t, user_home_dir_t;
')
userdom_list_user_home_dirs(user, $1)
allow $1 user_home_t:file r_file_perms;
',`
gen_require(`
type sysadm_home_t;
')
userdom_list_sysadm_home_dirs($1)
allow $1 sysadm_home_t:file r_file_perms;
')
')
-------------- next part --------------
# Start script for daemon (domain entry point)
/usr/sbin/start-ds-admin -- gen_context(system_u:object_r:dirsrvadmin_exec_t,s0)
/usr/sbin/stop-ds-admin -- gen_context(system_u:object_r:dirsrvadmin_exec_t,s0)
/usr/sbin/restart-ds-admin -- gen_context(system_u:object_r:dirsrvadmin_exec_t,s0)
# Configuration
/etc/dirsrv/admin-serv(/.*)? gen_context(system_u:object_r:dirsrvadmin_config_t,s0)
# Log dir
/var/log/dirsrv/admin-serv(/.*)? gen_context(system_u:object_r:httpd_log_t,s0)
# Pid
/var/run/dirsrv/admin-serv.* gen_context(system_u:object_r:httpd_var_run_t,s0)
# cgi
/usr/lib/dirsrv/cgi-bin(/.*)? gen_context(system_u:object_r:httpd_dirsrvadmin_script_exec_t,s0)
# Setup applications
/usr/sbin/migrate-ds-admin.pl -- gen_context(system_u:object_r:dirsrvadmin_setupexec_t,s0)
/usr/sbin/setup-ds-admin.pl -- gen_context(system_u:object_r:dirsrvadmin_setupexec_t,s0)
-------------- next part --------------
# Daemon (domain entry point)
/usr/sbin/ns-slapd -- gen_context(system_u:object_r:dirsrv_exec_t,s0)
# Setup applications
/usr/sbin/migrate-ds.pl -- gen_context(system_u:object_r:dirsrv_setupexec_t,s0)
/usr/sbin/setup-ds.pl -- gen_context(system_u:object_r:dirsrv_setupexec_t,s0)
# Helper scripts
/usr/lib/dirsrv(/slapd-.*)? gen_context(system_u:object_r:dirsrv_helper_exec_t,s0)
# Configuration
/etc/dirsrv(/slapd-.*)? gen_context(system_u:object_r:dirsrv_config_t,s0)
# Db files
/var/lib/dirsrv(/.*)? gen_context(system_u:object_r:dirsrv_db_t,s0)
# Lock files
/var/lock/dirsrv(/.*)? gen_context(system_u:object_r:dirsrv_lock_t,s0)
# Log files
/var/log/dirsrv(/.*)? gen_context(system_u:object_r:dirsrv_log_t,s0)
# var_run
/var/run/dirsrv(/.*)? gen_context(system_u:object_r:dirsrv_var_run_t,s0)
-------------- next part --------------
## <summary>Fedora Directory server, dirsrv</summary>
########################################
## <summary>
## Execute dirsrv programs in the dirsrv_t domain.
## </summary>
## <param name="domain">
## <summary>
## The type of the process performing this action.
## </summary>
## </param>
#
interface(`dirsrv_domtrans',`
gen_require(`
type dirsrv_t, dirsrv_exec_t;
')
allow $1 dirsrv_t:process signull;
domain_auto_trans($1, dirsrv_exec_t, dirsrv_t)
allow dirsrv_t $1:fd use;
allow dirsrv_t $1:fifo_file rw_file_perms;
allow dirsrv_t $1:process sigchld;
')
########################################
## <summary>
## Execute dirsrv setup programs in the dirsrv_setup_t domain
## and the system_r role. Strict policy.
## </summary>
## <param name="domain">
## <summary>
## Prefix of the domain performing this action.
## </summary>
## </param>
## <param name="role">
## <summary>
## The role to allow the domain.
## </summary>
## </param>
#
interface(`dirsrv_setup_domtrans_strict',`
gen_require(`
type dirsrv_t, dirsrv_setup_t, dirsrv_setupexec_t;
type $1_t, $1_devpts_t;
')
domain_auto_trans($1_t, dirsrv_setupexec_t, dirsrv_setup_t)
allow dirsrv_setup_t $1_t:fd use;
allow dirsrv_setup_t $1_t:process sigchld;
allow dirsrv_setup_t $1_devpts_t:chr_file rw_term_perms;
role $2 types dirsrv_setup_t;
role_transition $2 dirsrv_setupexec_t system_r;
')
########################################
## <summary>
## Execute dirsrv setup programs in the dirsrv_setup_t domain
## and the system_r role. Targeted policy.
## </summary>
## <param name="domain">
## <summary>
## Prefix of the domain performing this action.
## </summary>
## </param>
## <param name="role">
## <summary>
## The role to allow the domain.
## </summary>
## </param>
#
interface(`dirsrv_setup_domtrans_targeted',`
gen_require(`
type dirsrv_setupexec_t, dirsrv_setup_t;
')
domain_auto_trans($1, dirsrv_setupexec_t, dirsrv_setup_t)
')
########################################
## <summary>
## Extend httpd domain for dirsrv.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrv_extend_httpd',`
gen_require(`
type httpd_t, httpd_tmp_t;
')
allow $1 httpd_t:fifo_file { write read };
allow $1 httpd_t:unix_stream_socket { ioctl getattr read write };
allow $1 httpd_tmp_t:file { read write };
apache_use_fds($1)
')
########################################
## <summary>
## Read setup log files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrv_read_setuplog',`
gen_require(`
type dirsrv_setuplog_t;
')
files_search_tmp($1)
allow $1 dirsrv_setuplog_t:file r_file_perms;
')
########################################
## <summary>
## Read the contents of Directory server
## database directories.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrv_list_db',`
gen_require(`
type dirsrv_db_t;
')
allow $1 dirsrv_db_t:dir r_dir_perms;
')
########################################
## <summary>
## Manage the contents of Directory server
## database directories.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrv_manage_db',`
gen_require(`
type dirsrv_db_t;
')
allow $1 dirsrv_db_t:dir manage_dir_perms;
allow $1 dirsrv_db_t:file manage_file_perms;
')
########################################
## <summary>
## Read Directory server configuration files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrv_read_config',`
gen_require(`
type dirsrv_config_t;
')
allow $1 dirsrv_config_t:dir r_dir_perms;
allow $1 dirsrv_config_t:file r_file_perms;
')
########################################
## <summary>
## Manage Directory server configuration files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrv_manage_config',`
gen_require(`
type dirsrv_config_t;
')
allow $1 dirsrv_config_t:dir manage_dir_perms;
allow $1 dirsrv_config_t:file manage_file_perms;
')
########################################
## <summary>
## Read Directory server log files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrv_list_log',`
gen_require(`
type dirsrv_log_t;
')
allow $1 dirsrv_log_t:dir r_dir_perms;
')
########################################
## <summary>
## Manage Directory server log files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrv_manage_log',`
gen_require(`
type dirsrv_log_t;
')
allow $1 dirsrv_log_t:dir manage_dir_perms;
allow $1 dirsrv_log_t:file manage_file_perms;
')
########################################
## <summary>
## Read Directory server lock files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrv_list_lock',`
gen_require(`
type dirsrv_lock_t;
')
allow $1 dirsrv_lock_t:dir r_dir_perms;
')
########################################
## <summary>
## Manage Directory server lock files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrv_manage_lock',`
gen_require(`
type dirsrv_lock_t;
')
allow $1 dirsrv_lock_t:dir manage_dir_perms;
allow $1 dirsrv_lock_t:file manage_file_perms;
')
########################################
## <summary>
## Read Directory server var_run files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrv_list_var_run',`
gen_require(`
type dirsrv_var_run_t;
')
allow $1 dirsrv_var_run_t:dir r_dir_perms;
')
########################################
## <summary>
## Manage Directory server var_run files.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrv_manage_var_run',`
gen_require(`
type dirsrv_var_run_t;
')
allow $1 dirsrv_var_run_t:dir manage_dir_perms;
allow $1 dirsrv_var_run_t:file manage_file_perms;
allow $1 dirsrv_var_run_t:sock_file manage_file_perms;
# Allow creating a dir in /var/run with this type
files_pid_filetrans($1, dirsrv_var_run_t, dir)
')
########################################
## <summary>
## Exec Directory server helper programs.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrv_run_helper_exec',`
gen_require(`
type dirsrv_helper_exec_t;
')
allow $1 dirsrv_helper_exec_t:dir search_dir_perms;
can_exec($1,dirsrv_helper_exec_t)
')
########################################
## <summary>
## Manage Directory server helper programs.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrv_manage_helper_exec',`
gen_require(`
type dirsrv_helper_exec_t;
')
allow $1 dirsrv_helper_exec_t:dir manage_dir_perms;
allow $1 dirsrv_helper_exec_t:file { manage_file_perms rw_file_perms };
')
########################################
## <summary>
## Allow caller to signal dirsrv.
## </summary>
## <param name="domain">
## <summary>
## Domain to not audit.
## </summary>
## </param>
#
interface(`dirsrv_signal',`
gen_require(`
type dirsrv_t;
')
allow $1 dirsrv_t:process signal;
')
########################################
## <summary>
## Send a null signal to dirsrv.
## </summary>
## <param name="domain">
## <summary>
## Domain allowed access.
## </summary>
## </param>
#
interface(`dirsrv_signull',`
gen_require(`
type dirsrv_t;
')
allow $1 dirsrv_t:process signull;
')
-------------- next part --------------
policy_module(dirsrv,1.0.0)
########################################
#
# Declarations for daemon
#
## Create domain for daemon
type dirsrv_t;
domain_type(dirsrv_t)
## Type for the daemon
type dirsrv_exec_t;
files_type(dirsrv_exec_t)
# Start from initrc
init_domain(dirsrv_t, dirsrv_exec_t)
init_daemon_domain(dirsrv_t, dirsrv_exec_t)
role system_r types dirsrv_t;
## Type for helper programs
type dirsrv_helper_exec_t;
files_type(dirsrv_helper_exec_t);
## Type for configuration files
type dirsrv_config_t;
files_config_file(dirsrv_config_t)
## Type for db files
type dirsrv_db_t;
files_type(dirsrv_db_t)
## Type for lock files
type dirsrv_lock_t;
files_lock_file(dirsrv_lock_t)
files_lock_filetrans(dirsrv_t, dirsrv_lock_t, {file dir})
## Type for log files
type dirsrv_log_t;
logging_log_file(dirsrv_log_t)
## Type for var_run file
type dirsrv_var_run_t;
files_pid_file(dirsrv_var_run_t)
files_pid_filetrans(dirsrv_t, dirsrv_var_run_t, {file dir})
########################################
#
# Declarations for setup programs
#
## Domain for setup program
type dirsrv_setup_t;
domain_type(dirsrv_setup_t)
role sysadm_r types dirsrv_setup_t;
## Type for setup program
type dirsrv_setupexec_t;
files_type(dirsrv_setupexec_t)
domain_entry_file(dirsrv_setup_t, dirsrv_setupexec_t)
## Type for tmp files setup creates
type dirsrv_setuplog_t;
files_tmp_file(dirsrv_setuplog_t)
files_tmp_filetrans(dirsrv_setup_t, dirsrv_setuplog_t, file)
files_tmp_filetrans(dirsrv_t, dirsrv_setuplog_t, file)
########################################
#
# Local policy for the daemon
#
## Executable
allow dirsrv_t self:capability { chown dac_override fowner setuid sys_nice setgid };
allow dirsrv_t self:process { setsched getsched signull };
allow dirsrv_t self:fifo_file { write read };
allow dirsrv_t self:sem { create getattr associate unix_read unix_write };
## Config
allow dirsrv_t dirsrv_config_t:file { getattr read create_file_perms };
allow dirsrv_t dirsrv_config_t:dir create_dir_perms;
## Database files
allow dirsrv_t dirsrv_db_t:dir manage_dir_perms;
allow dirsrv_t dirsrv_db_t:file manage_file_perms;
# Allow search in /var/lib
files_list_var_lib(dirsrv_t)
## Manage locks
allow dirsrv_t dirsrv_lock_t:dir manage_dir_perms;
allow dirsrv_t dirsrv_lock_t:file manage_file_perms;
## Logging
allow dirsrv_t dirsrv_log_t:file { create rename setattr manage_file_perms };
allow dirsrv_t dirsrv_log_t:dir { setattr rw_dir_perms };
allow dirsrv_t self:unix_dgram_socket create_socket_perms;
# Allow search in /var/log
logging_search_logs(dirsrv_t)
## var_run
allow dirsrv_t dirsrv_var_run_t:file manage_file_perms;
allow dirsrv_t dirsrv_var_run_t:dir rw_dir_perms;
## Helper programs
dirsrv_run_helper_exec(dirsrv_t)
## Setup log
dirsrv_read_setuplog(dirsrv_t)
dirsrvadmin_read_setuplog(dirsrv_t)
## Files in /tmp, created by setup app
allow dirsrv_t dirsrv_setuplog_t:file manage_file_perms;
## When restarted from cgi script the dirsrv need to communicate back
dirsrvadmin_script_stream_rw(dirsrv_t)
# dirsrv need some permissions that has no interface in the apache policy
dirsrv_extend_httpd(dirsrv_t)
dirsrvadmin_manage_httpd_script_tmpfile(dirsrv_t)
## Allow networking
corenet_tcp_bind_ldap_port(dirsrv_t)
corenet_tcp_sendrecv_ldap_port(dirsrv_t)
corenet_sendrecv_ldap_server_packets(dirsrv_t)
corenet_tcp_bind_unspec_node(dirsrv_t)
corenet_tcp_bind_inaddr_any_node(dirsrv_t)
kernel_sendrecv_unlabeled_packets(dirsrv_t)
allow dirsrv_t self:tcp_socket create_stream_socket_perms;
allow dirsrv_t self:udp_socket create_socket_perms;
## Misc interfaces
# Access to shared libraries
libs_use_ld_so(dirsrv_t)
libs_use_shared_libs(dirsrv_t)
files_exec_usr_files(dirsrv_t)
# Read locale
miscfiles_read_localization(dirsrv_t)
# Read etc
files_read_etc_files(dirsrv_t)
sysnet_read_config(dirsrv_t)
# Allow using syslog
logging_send_syslog_msg(dirsrv_t)
# Search sbin
corecmd_search_sbin(dirsrv_t)
# Allow read urandom
dev_read_urand(dirsrv_t)
# Allow listing /tmp
files_list_tmp(dirsrv_t)
# Allow read /usr/tmp
files_read_usr_symlinks(dirsrv_t)
# Allow stat file system
fs_getattr_xattr_fs(dirsrv_t)
# Allow read proc
kernel_read_system_state(dirsrv_t)
# Strict policy
ifdef(`strict_policy',`
# Daemon search for plugins in cwd
userdom_dontaudit_search_sysadm_home_dirs(dirsrv_t)
')
# In targeted policy
ifdef(`targeted_policy',`
files_read_generic_tmp_files(dirsrv_t)
userdom_dontaudit_search_generic_user_home_dirs(dirsrv_t)
')
########################################
#
# Local policy for setup programs
#
## Transtion into dirsrv domain when running setup
# Should be in userdomain
ifdef(`strict_policy',`
dirsrv_setup_domtrans_strict(sysadm, sysadm_r)
')
# A similar policy should be in unconfined
ifdef(`targeted_policy',`
dirsrv_setup_domtrans_targeted(unconfined_t)
')
seutil_use_newrole_fds(dirsrv_setup_t)
## Executable
allow dirsrv_setup_t self:capability { sys_nice chown fsetid fowner kill net_bind_service dac_override };
allow dirsrv_setup_t self:fifo_file { read write getattr ioctl };
allow dirsrv_setup_t self:process { setsched getsched };
allow dirsrv_setup_t self:tcp_socket { bind create ioctl };
# Start daemon from setup program
dirsrv_domtrans(dirsrv_setup_t)
## Manage db dir
dirsrv_manage_db(dirsrv_setup_t)
## Manage configuration
dirsrv_manage_config(dirsrv_setup_t)
## Manage log dir
dirsrv_manage_log(dirsrv_setup_t)
## Manage lock dir
dirsrv_manage_lock(dirsrv_setup_t)
## Manage var_run files
dirsrv_manage_var_run(dirsrv_setup_t)
## Manage helper programs
dirsrv_manage_helper_exec(dirsrv_setup_t)
dirsrv_run_helper_exec(dirsrv_setup_t)
## Files in /tmp
allow dirsrv_setup_t dirsrv_setuplog_t:file manage_file_perms;
## Networking
# Connect server using ldap
corenet_tcp_bind_inaddr_any_node(dirsrv_setup_t)
corenet_tcp_bind_ldap_port(dirsrv_setup_t)
## Misc interfaces
# Access to shared libraries
libs_use_ld_so(dirsrv_setup_t)
libs_use_shared_libs(dirsrv_setup_t)
# Read locale
miscfiles_read_localization(dirsrv_setup_t)
# mtab
files_dontaudit_read_etc_runtime_files(dirsrv_setup_t)
# Execute
corecmd_exec_bin(dirsrv_setup_t)
corecmd_exec_sbin(dirsrv_setup_t)
corecmd_exec_shell(dirsrv_setup_t)
# Read /usr/share
files_read_usr_files(dirsrv_setup_t)
# Allow read urandom
dev_read_urand(dirsrv_setup_t)
# Read proc
kernel_read_net_sysctls(dirsrv_setup_t)
kernel_read_sysctl(dirsrv_setup_t)
kernel_read_system_state(dirsrv_setup_t)
kernel_search_network_sysctl(dirsrv_setup_t)
# Stat shadow
auth_read_shadow(dirsrv_setup_t)
# Exec nsswitch.conf
files_exec_etc_files(dirsrv_setup_t)
# Find dirsrv dirs
files_search_locks(dirsrv_setup_t)
files_search_var_lib(dirsrv_setup_t)
logging_search_logs(dirsrv_setup_t)
# Allow stat file system
fs_getattr_xattr_fs(dirsrv_setup_t)
sysnet_read_config(dirsrv_setup_t)
term_search_ptys(dirsrv_setup_t)
optional_policy(`
nscd_read_pid(dirsrv_setup_t)
')
# Strict policy
ifdef(`strict_policy',`
# Read cwd (/root)
userdom_list_sysadm_home_dirs(dirsrv_setup_t)
')
# In targeted policy
ifdef(`targeted_policy',`
term_use_generic_ptys(dirsrv_setup_t)
# Read cwd (/root)
userdom_list_user_home_dirs(user,dirsrv_setup_t)
userdom_search_generic_user_home_dirs(dirsrv_setup_t)
')
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dirsrv-admin.te
Type: text/x-java
Size: 8756 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/fedora-directory-users/attachments/20080311/b721a4c9/attachment.bin>
-------------- next part --------------
-------------- next part --------------
policy_module(fedora-idm-console,1.0.0)
########################################
#
# Declarations
#
type fedora-idm-console_t;
domain_type(fedora-idm-console_t)
########################################
#
# Local policy
#
# In strict policy we need to extend the java domain
ifdef(`strict_policy',`
fedoraidmconsole_extend_java(user)
## Misc interfaces
# Access to shared libraries
libs_use_ld_so(fedora-idm-console_t)
libs_use_shared_libs(fedora-idm-console_t)
# Read locale
miscfiles_read_localization(fedora-idm-console_t)
')
-------------- next part --------------
## <summary>Java based fedora-idm-console</summary>
########################################
## <summary>
## Extend java domain for fedora-idm-console.
## </summary>
## <param name="domain">
## <summary>
## Prefix of domain allowed access.
## </summary>
## </param>
#
interface(`fedoraidmconsole_extend_java',`
gen_require(`
type $1_javaplugin_t;
type $1_t, $1_xserver_tmp_t, $1_gconf_home_t, $1_home_ssh_t, $1_mozilla_home_t;
')
allow $1_javaplugin_t $1_t:process sigchld;
allow $1_t $1_javaplugin_t:process { signal ptrace };
allow $1_javaplugin_t self:netlink_route_socket { write getattr read bind create nlmsg_read };
allow $1_javaplugin_t self:tcp_socket { accept listen };
allow $1_javaplugin_t $1_xserver_tmp_t:dir search;
allow $1_javaplugin_t $1_xserver_tmp_t:sock_file write;
dirsrv_list_db($1_javaplugin_t)
corecmd_exec_bin($1_javaplugin_t)
corenet_tcp_bind_inaddr_any_node($1_javaplugin_t)
files_read_var_files($1_javaplugin_t)
# Sun java check out some dirs, there is probably more than this
dontaudit $1_javaplugin_t $1_gconf_home_t:dir getattr;
dontaudit $1_javaplugin_t $1_home_ssh_t:dir getattr;
dontaudit $1_javaplugin_t $1_mozilla_home_t:dir getattr;
')
More information about the Fedora-directory-users
mailing list