policy_module(nessus)

########################################
#
# Local policy
#

type nessusd_t;
type nessusd_exec_t;
init_daemon_domain(nessusd_t, nessusd_exec_t)

type nessusd_initrc_exec_t;
init_script_file(nessusd_initrc_exec_t)

type nessusd_db_t;
files_type(nessusd_db_t)

type nessusd_etc_t;
files_config_file(nessusd_etc_t)

type nessusd_log_t;
logging_log_file(nessusd_log_t)

type nessusd_runtime_t alias nessud_var_run_t;
files_runtime_file(nessusd_runtime_t)

########################################
#
# Declarations
#

allow nessusd_t self:capability net_raw;
dontaudit nessusd_t self:capability sys_tty_config;
allow nessusd_t self:process { setsched signal_perms };
allow nessusd_t self:fifo_file rw_fifo_file_perms;
allow nessusd_t self:tcp_socket create_stream_socket_perms;
allow nessusd_t self:udp_socket create_socket_perms;
allow nessusd_t self:rawip_socket create_socket_perms;
allow nessusd_t self:packet_socket create_socket_perms;

manage_dirs_pattern(nessusd_t, nessusd_db_t, nessusd_db_t)
manage_files_pattern(nessusd_t, nessusd_db_t, nessusd_db_t)
manage_lnk_files_pattern(nessusd_t, nessusd_db_t, nessusd_db_t)

allow nessusd_t nessusd_etc_t:file read_file_perms;

allow nessusd_t nessusd_log_t:dir setattr_dir_perms;
append_files_pattern(nessusd_t, nessusd_log_t, nessusd_log_t)
create_files_pattern(nessusd_t, nessusd_log_t, nessusd_log_t)
setattr_files_pattern(nessusd_t, nessusd_log_t, nessusd_log_t)
logging_log_filetrans(nessusd_t, nessusd_log_t, file)

manage_files_pattern(nessusd_t, nessusd_runtime_t, nessusd_runtime_t)
files_runtime_filetrans(nessusd_t, nessusd_runtime_t, file)

kernel_read_system_state(nessusd_t)
kernel_read_kernel_sysctls(nessusd_t)

corecmd_exec_bin(nessusd_t)

corenet_all_recvfrom_netlabel(nessusd_t)
corenet_tcp_sendrecv_generic_if(nessusd_t)
corenet_udp_sendrecv_generic_if(nessusd_t)
corenet_raw_sendrecv_generic_if(nessusd_t)
corenet_tcp_sendrecv_generic_node(nessusd_t)
corenet_udp_sendrecv_generic_node(nessusd_t)
corenet_raw_sendrecv_generic_node(nessusd_t)
corenet_tcp_bind_generic_node(nessusd_t)

corenet_sendrecv_nessus_server_packets(nessusd_t)
corenet_tcp_bind_nessus_port(nessusd_t)

corenet_sendrecv_all_client_packets(nessusd_t)
corenet_tcp_connect_all_ports(nessusd_t)

dev_read_sysfs(nessusd_t)
dev_read_urand(nessusd_t)

domain_use_interactive_fds(nessusd_t)

files_list_var_lib(nessusd_t)
files_read_etc_files(nessusd_t)
files_read_etc_runtime_files(nessusd_t)

fs_getattr_all_fs(nessusd_t)
fs_search_auto_mountpoints(nessusd_t)

logging_send_syslog_msg(nessusd_t)

miscfiles_read_localization(nessusd_t)

sysnet_read_config(nessusd_t)

userdom_dontaudit_use_unpriv_user_fds(nessusd_t)
userdom_dontaudit_search_user_home_dirs(nessusd_t)

optional_policy(`
	nis_use_ypbind(nessusd_t)
')

optional_policy(`
	seutil_sigchld_newrole(nessusd_t)
')

