## MIT Kerberos admin and KDC. ######################################## ## ## Execute kadmind in the caller domain. ## ## ## ## Domain allowed access. ## ## # interface(`kerberos_exec_kadmind',` gen_require(` type kadmind_exec_t; ') corecmd_search_bin($1) can_exec($1, kadmind_exec_t) ') ######################################## ## ## Execute a domain transition to run kpropd. ## ## ## ## Domain allowed to transition. ## ## # interface(`kerberos_domtrans_kpropd',` gen_require(` type kpropd_t, kpropd_exec_t; ') corecmd_search_bin($1) domtrans_pattern($1, kpropd_exec_t, kpropd_t) ') ######################################## ## ## Support kerberos services. ## ## ## ## Domain allowed access. ## ## # interface(`kerberos_use',` gen_require(` type krb5kdc_conf_t, krb5_host_rcache_t; ') kerberos_read_config($1) dontaudit $1 krb5_conf_t:file write_file_perms; dontaudit $1 krb5kdc_conf_t:dir list_dir_perms; dontaudit $1 krb5kdc_conf_t:file rw_file_perms; dontaudit $1 self:process setfscreate; selinux_dontaudit_validate_context($1) seutil_dontaudit_read_file_contexts($1) tunable_policy(`allow_kerberos',` allow $1 self:tcp_socket create_socket_perms; allow $1 self:udp_socket create_socket_perms; corenet_all_recvfrom_unlabeled($1) corenet_all_recvfrom_netlabel($1) corenet_tcp_sendrecv_generic_if($1) corenet_udp_sendrecv_generic_if($1) corenet_tcp_sendrecv_generic_node($1) corenet_udp_sendrecv_generic_node($1) corenet_sendrecv_kerberos_client_packets($1) corenet_tcp_connect_kerberos_port($1) corenet_tcp_sendrecv_kerberos_port($1) corenet_udp_sendrecv_kerberos_port($1) corenet_sendrecv_ocsp_client_packets($1) corenet_tcp_connect_ocsp_port($1) corenet_tcp_sendrecv_ocsp_port($1) allow $1 krb5_host_rcache_t:file getattr_file_perms; ') optional_policy(` tunable_policy(`allow_kerberos',` pcscd_stream_connect($1) ') ') optional_policy(` sssd_read_public_files($1) ') ') ######################################## ## ## Read kerberos configuration files. ## ## ## ## Domain allowed access. ## ## ## # interface(`kerberos_read_config',` gen_require(` type krb5_conf_t, krb5_home_t; ') files_search_etc($1) allow $1 krb5_conf_t:file read_file_perms; userdom_search_user_home_dirs($1) allow $1 krb5_home_t:file read_file_perms; ') ######################################## ## ## Do not audit attempts to write ## kerberos configuration files. ## ## ## ## Domain to not audit. ## ## # interface(`kerberos_dontaudit_write_config',` gen_require(` type krb5_conf_t; ') dontaudit $1 krb5_conf_t:file write_file_perms; ') ######################################## ## ## Read and write kerberos ## configuration files. ## ## ## ## Domain allowed access. ## ## ## # interface(`kerberos_rw_config',` gen_require(` type krb5_conf_t; ') files_search_etc($1) allow $1 krb5_conf_t:file rw_file_perms; ') ######################################## ## ## Create, read, write, and delete ## kerberos home files. ## ## ## ## Domain allowed access. ## ## # interface(`kerberos_manage_krb5_home_files',` gen_require(` type krb5_home_t; ') userdom_search_user_home_dirs($1) allow $1 krb5_home_t:file manage_file_perms; ') ######################################## ## ## Relabel kerberos home files. ## ## ## ## Domain allowed access. ## ## # interface(`kerberos_relabel_krb5_home_files',` gen_require(` type krb5_home_t; ') userdom_search_user_home_dirs($1) allow $1 krb5_home_t:file relabel_file_perms; ') ######################################## ## ## Create objects in user home ## directories with the krb5 home type. ## ## ## ## Domain allowed access. ## ## ## ## ## Class of the object being created. ## ## ## ## ## The name of the object being created. ## ## # interface(`kerberos_home_filetrans_krb5_home',` gen_require(` type krb5_home_t; ') userdom_user_home_dir_filetrans($1, krb5_home_t, $2, $3) ') ######################################## ## ## Read kerberos key table files. ## ## ## ## Domain allowed access. ## ## ## # interface(`kerberos_read_keytab',` gen_require(` type krb5_keytab_t; ') files_search_etc($1) allow $1 krb5_keytab_t:file read_file_perms; ') ######################################## ## ## Read and write kerberos key table files. ## ## ## ## Domain allowed access. ## ## # interface(`kerberos_rw_keytab',` gen_require(` type krb5_keytab_t; ') files_search_etc($1) allow $1 krb5_keytab_t:file rw_file_perms; ') ######################################## ## ## Create, read, write, and delete ## kerberos key table files. ## ## ## ## Domain allowed access. ## ## # interface(`kerberos_manage_keytab_files',` gen_require(` type krb5_keytab_t; ') files_search_etc($1) allow $1 krb5_keytab_t:file manage_file_perms; ') ######################################## ## ## Create specified objects in generic ## etc directories with the kerberos ## keytab file type. ## ## ## ## Domain allowed access. ## ## ## ## ## Class of the object being created. ## ## ## ## ## The name of the object being created. ## ## # interface(`kerberos_etc_filetrans_keytab',` gen_require(` type krb5_keytab_t; ') files_etc_filetrans($1, krb5_keytab_t, $2, $3) ') ######################################## ## ## Read kerberos kdc configuration files. ## ## ## ## Domain allowed access. ## ## ## # interface(`kerberos_read_kdc_config',` gen_require(` type krb5kdc_conf_t; ') files_search_etc($1) read_files_pattern($1, krb5kdc_conf_t, krb5kdc_conf_t) ') ######################################## ## ## Create, read, write, and delete ## kerberos host rcache files. ## ## ## ## Domain allowed access. ## ## ## # interface(`kerberos_manage_host_rcache',` gen_require(` type krb5_host_rcache_t; ') domain_obj_id_change_exemption($1) tunable_policy(`allow_kerberos',` allow $1 self:process setfscreate; selinux_validate_context($1) seutil_read_file_contexts($1) files_search_tmp($1) allow $1 krb5_host_rcache_t:file manage_file_perms; ') ') ######################################## ## ## Create objects in generic temporary ## directories with the kerberos host ## rcache type. ## ## ## ## Domain allowed to transition. ## ## ## ## ## Class of the object being created. ## ## ## ## ## The name of the object being created. ## ## # interface(`kerberos_tmp_filetrans_host_rcache',` gen_require(` type krb5_host_rcache_t; ') files_tmp_filetrans($1, krb5_host_rcache_t, $2, $3) ') ######################################## ## ## Connect to krb524 service. ## ## ## ## Domain allowed access. ## ## # interface(`kerberos_connect_524',` tunable_policy(`allow_kerberos',` allow $1 self:udp_socket create_socket_perms; corenet_all_recvfrom_unlabeled($1) corenet_all_recvfrom_netlabel($1) corenet_udp_sendrecv_generic_if($1) corenet_udp_sendrecv_generic_node($1) corenet_sendrecv_kerberos_master_client_packets($1) corenet_udp_sendrecv_kerberos_master_port($1) ') ') ######################################## ## ## All of the rules required to ## administrate an kerberos environment. ## ## ## ## Domain allowed access. ## ## ## ## ## Role allowed access. ## ## ## # interface(`kerberos_admin',` gen_require(` type kadmind_t, krb5kdc_t, kerberos_initrc_exec_t; type kadmind_log_t, kadmind_tmp_t, kadmind_var_run_t; type krb5_conf_t, krb5_keytab_t, krb5kdc_conf_t; type krb5kdc_principal_t, krb5kdc_tmp_t, kpropd_t; type krb5kdc_var_run_t, krb5_host_rcache_t; ') allow $1 { kadmind_t krb5kdc_t kpropd_t }:process { ptrace signal_perms }; ps_process_pattern($1, { kadmind_t krb5kdc_t kpropd_t }) init_startstop_service($1, $2, { kadmind_t krb5kdc_t }, kerberos_initrc_exec_t) logging_list_logs($1) admin_pattern($1, kadmind_log_t) files_list_tmp($1) admin_pattern($1, { kadmind_tmp_t krb5_host_rcache_t krb5kdc_tmp_t }) kerberos_tmp_filetrans_host_rcache($1, file, "host_0") kerberos_tmp_filetrans_host_rcache($1, file, "HTTP_23") kerberos_tmp_filetrans_host_rcache($1, file, "HTTP_48") kerberos_tmp_filetrans_host_rcache($1, file, "imap_0") kerberos_tmp_filetrans_host_rcache($1, file, "nfs_0") kerberos_tmp_filetrans_host_rcache($1, file, "ldapmap1_0") kerberos_tmp_filetrans_host_rcache($1, file, "ldap_487") kerberos_tmp_filetrans_host_rcache($1, file, "ldap_55") files_list_pids($1) admin_pattern($1, { kadmind_var_run_t krb5kdc_var_run_t }) files_list_etc($1) admin_pattern($1, krb5_conf_t) files_etc_filetrans($1, krb5_conf_t, file, "krb5.conf") admin_pattern($1, { krb5_keytab_t krb5kdc_principal_t }) filetrans_pattern($1, krb5kdc_conf_t, krb5kdc_principal_t, file, "principal") filetrans_pattern($1, krb5kdc_conf_t, krb5kdc_principal_t, file, "principal0") filetrans_pattern($1, krb5kdc_conf_t, krb5kdc_principal_t, file, "principal1") kerberos_etc_filetrans_keytab($1, file, "kadm5.keytab") ')