diff options
author | 2013-09-23 08:28:32 +0200 | |
---|---|---|
committer | 2013-09-23 08:28:32 +0200 | |
commit | fc59b320f3810020c99f266567d2fa05517a8972 (patch) | |
tree | 512bddd3b67f51098e3a8534d4e863091a3789e2 /policy/modules | |
parent | Add policy for redis-server (diff) | |
download | hardened-refpolicy-fc59b320f3810020c99f266567d2fa05517a8972.tar.gz hardened-refpolicy-fc59b320f3810020c99f266567d2fa05517a8972.tar.bz2 hardened-refpolicy-fc59b320f3810020c99f266567d2fa05517a8972.zip |
Move redis policy to contrib
Diffstat (limited to 'policy/modules')
-rw-r--r-- | policy/modules/contrib/redis.fc | 11 | ||||
-rw-r--r-- | policy/modules/contrib/redis.if | 271 | ||||
-rw-r--r-- | policy/modules/contrib/redis.te | 62 |
3 files changed, 344 insertions, 0 deletions
diff --git a/policy/modules/contrib/redis.fc b/policy/modules/contrib/redis.fc new file mode 100644 index 00000000..638d6b49 --- /dev/null +++ b/policy/modules/contrib/redis.fc @@ -0,0 +1,11 @@ +/etc/rc\.d/init\.d/redis -- gen_context(system_u:object_r:redis_initrc_exec_t,s0) + +/usr/lib/systemd/system/redis.* -- gen_context(system_u:object_r:redis_unit_file_t,s0) + +/usr/sbin/redis-server -- gen_context(system_u:object_r:redis_exec_t,s0) + +/var/lib/redis(/.*)? gen_context(system_u:object_r:redis_var_lib_t,s0) + +/var/log/redis(/.*)? gen_context(system_u:object_r:redis_log_t,s0) + +/var/run/redis(/.*)? gen_context(system_u:object_r:redis_var_run_t,s0) diff --git a/policy/modules/contrib/redis.if b/policy/modules/contrib/redis.if new file mode 100644 index 00000000..e3efff02 --- /dev/null +++ b/policy/modules/contrib/redis.if @@ -0,0 +1,271 @@ + +## <summary>policy for redis</summary> + +######################################## +## <summary> +## Execute TEMPLATE in the redis domin. +## </summary> +## <param name="domain"> +## <summary> +## Domain allowed to transition. +## </summary> +## </param> +# +interface(`redis_domtrans',` + gen_require(` + type redis_t, redis_exec_t; + ') + + corecmd_search_bin($1) + domtrans_pattern($1, redis_exec_t, redis_t) +') + +######################################## +## <summary> +## Execute redis server in the redis domain. +## </summary> +## <param name="domain"> +## <summary> +## Domain allowed access. +## </summary> +## </param> +# +interface(`redis_initrc_domtrans',` + gen_require(` + type redis_initrc_exec_t; + ') + + init_labeled_script_domtrans($1, redis_initrc_exec_t) +') +######################################## +## <summary> +## Read redis's log files. +## </summary> +## <param name="domain"> +## <summary> +## Domain allowed access. +## </summary> +## </param> +## <rolecap/> +# +interface(`redis_read_log',` + gen_require(` + type redis_log_t; + ') + + logging_search_logs($1) + read_files_pattern($1, redis_log_t, redis_log_t) +') + +######################################## +## <summary> +## Append to redis log files. +## </summary> +## <param name="domain"> +## <summary> +## Domain allowed access. +## </summary> +## </param> +# +interface(`redis_append_log',` + gen_require(` + type redis_log_t; + ') + + logging_search_logs($1) + append_files_pattern($1, redis_log_t, redis_log_t) +') + +######################################## +## <summary> +## Manage redis log files +## </summary> +## <param name="domain"> +## <summary> +## Domain allowed access. +## </summary> +## </param> +# +interface(`redis_manage_log',` + gen_require(` + type redis_log_t; + ') + + logging_search_logs($1) + manage_dirs_pattern($1, redis_log_t, redis_log_t) + manage_files_pattern($1, redis_log_t, redis_log_t) + manage_lnk_files_pattern($1, redis_log_t, redis_log_t) +') + +######################################## +## <summary> +## Search redis lib directories. +## </summary> +## <param name="domain"> +## <summary> +## Domain allowed access. +## </summary> +## </param> +# +interface(`redis_search_lib',` + gen_require(` + type redis_var_lib_t; + ') + + allow $1 redis_var_lib_t:dir search_dir_perms; + files_search_var_lib($1) +') + +######################################## +## <summary> +## Read redis lib files. +## </summary> +## <param name="domain"> +## <summary> +## Domain allowed access. +## </summary> +## </param> +# +interface(`redis_read_lib_files',` + gen_require(` + type redis_var_lib_t; + ') + + files_search_var_lib($1) + read_files_pattern($1, redis_var_lib_t, redis_var_lib_t) +') + +######################################## +## <summary> +## Manage redis lib files. +## </summary> +## <param name="domain"> +## <summary> +## Domain allowed access. +## </summary> +## </param> +# +interface(`redis_manage_lib_files',` + gen_require(` + type redis_var_lib_t; + ') + + files_search_var_lib($1) + manage_files_pattern($1, redis_var_lib_t, redis_var_lib_t) +') + +######################################## +## <summary> +## Manage redis lib directories. +## </summary> +## <param name="domain"> +## <summary> +## Domain allowed access. +## </summary> +## </param> +# +interface(`redis_manage_lib_dirs',` + gen_require(` + type redis_var_lib_t; + ') + + files_search_var_lib($1) + manage_dirs_pattern($1, redis_var_lib_t, redis_var_lib_t) +') + +######################################## +## <summary> +## Read redis PID files. +## </summary> +## <param name="domain"> +## <summary> +## Domain allowed access. +## </summary> +## </param> +# +interface(`redis_read_pid_files',` + gen_require(` + type redis_var_run_t; + ') + + files_search_pids($1) + read_files_pattern($1, redis_var_run_t, redis_var_run_t) +') + +######################################## +## <summary> +## Execute redis server in the redis domain. +## </summary> +## <param name="domain"> +## <summary> +## Domain allowed to transition. +## </summary> +## </param> +# +interface(`redis_systemctl',` + gen_require(` + type redis_t; + type redis_unit_file_t; + ') + + systemd_exec_systemctl($1) + systemd_read_fifo_file_password_run($1) + allow $1 redis_unit_file_t:file read_file_perms; + allow $1 redis_unit_file_t:service manage_service_perms; + + ps_process_pattern($1, redis_t) +') + + +######################################## +## <summary> +## All of the rules required to administrate +## an redis environment +## </summary> +## <param name="domain"> +## <summary> +## Domain allowed access. +## </summary> +## </param> +## <param name="role"> +## <summary> +## Role allowed access. +## </summary> +## </param> +## <rolecap/> +# +interface(`redis_admin',` + gen_require(` + type redis_t; + type redis_initrc_exec_t; + type redis_log_t; + type redis_var_lib_t; + type redis_var_run_t; + type redis_unit_file_t; + ') + + allow $1 redis_t:process { ptrace signal_perms }; + ps_process_pattern($1, redis_t) + + redis_initrc_domtrans($1) + domain_system_change_exemption($1) + role_transition $2 redis_initrc_exec_t system_r; + allow $2 system_r; + + logging_search_logs($1) + admin_pattern($1, redis_log_t) + + files_search_var_lib($1) + admin_pattern($1, redis_var_lib_t) + + files_search_pids($1) + admin_pattern($1, redis_var_run_t) + + redis_systemctl($1) + admin_pattern($1, redis_unit_file_t) + allow $1 redis_unit_file_t:service all_service_perms; + optional_policy(` + systemd_passwd_agent_exec($1) + systemd_read_fifo_file_passwd_run($1) + ') +') diff --git a/policy/modules/contrib/redis.te b/policy/modules/contrib/redis.te new file mode 100644 index 00000000..e5e9cf77 --- /dev/null +++ b/policy/modules/contrib/redis.te @@ -0,0 +1,62 @@ +policy_module(redis, 1.0.0) + +######################################## +# +# Declarations +# + +type redis_t; +type redis_exec_t; +init_daemon_domain(redis_t, redis_exec_t) + +type redis_initrc_exec_t; +init_script_file(redis_initrc_exec_t) + +type redis_log_t; +logging_log_file(redis_log_t) + +type redis_var_lib_t; +files_type(redis_var_lib_t) + +type redis_var_run_t; +files_pid_file(redis_var_run_t) + +type redis_unit_file_t; +systemd_unit_file(redis_unit_file_t) + +######################################## +# +# redis local policy +# + +allow redis_t self:process { setrlimit signal_perms }; +allow redis_t self:fifo_file rw_fifo_file_perms; +allow redis_t self:unix_stream_socket create_stream_socket_perms; +allow redis_t self:tcp_socket create_stream_socket_perms; + +manage_dirs_pattern(redis_t, redis_log_t, redis_log_t) +manage_files_pattern(redis_t, redis_log_t, redis_log_t) +manage_lnk_files_pattern(redis_t, redis_log_t, redis_log_t) + +manage_dirs_pattern(redis_t, redis_var_lib_t, redis_var_lib_t) +manage_files_pattern(redis_t, redis_var_lib_t, redis_var_lib_t) +manage_lnk_files_pattern(redis_t, redis_var_lib_t, redis_var_lib_t) + +manage_dirs_pattern(redis_t, redis_var_run_t, redis_var_run_t) +manage_files_pattern(redis_t, redis_var_run_t, redis_var_run_t) +manage_lnk_files_pattern(redis_t, redis_var_run_t, redis_var_run_t) + +kernel_read_system_state(redis_t) + +corenet_tcp_bind_generic_node(redis_t) +corenet_tcp_bind_redis_port(redis_t) + +dev_read_sysfs(redis_t) +dev_read_urand(redis_t) + +logging_send_syslog_msg(redis_t) + +miscfiles_read_localization(redis_t) + +sysnet_dns_name_resolve(redis_t) + |