Browse Source

gogs: add policy module

Helmut Pozimski 4 years ago
parent
commit
89e8b7f34b
2 changed files with 117 additions and 0 deletions
  1. 8 0
      gogs.fc
  2. 109 0
      gogs.te

+ 8 - 0
gogs.fc

@@ -0,0 +1,8 @@
+/etc/rc\.d/init\.d/gogs        --      gen_context(system_u:object_r:gogs_initrc_exec_t,s0)
+
+/opt/gogs/gogs	--	gen_context(system_u:object_r:gogs_exec_t,s0)
+/opt/gogs(/.*)?		gen_context(system_u:object_r:gogs_opt_t,s0)
+
+/opt/gogs/.ssh(/.*)?		gen_context(system_u:object_r:gogs_ssh_t,s0)
+
+/var/lib/gogs(/.*)?		gen_context(system_u:object_r:gogs_var_lib_t,s0)

+ 109 - 0
gogs.te

@@ -0,0 +1,109 @@
+policy_module(gogs, 0.2.5)
+
+########################################
+#
+# Declarations
+#
+
+attribute_role gogs_roles;
+
+type gogs_t;
+type gogs_exec_t;
+init_daemon_domain(gogs_t, gogs_exec_t)
+
+type gogs_initrc_exec_t;
+init_script_file(gogs_initrc_exec_t)
+
+type gogs_opt_t;
+files_type(gogs_opt_t)
+
+type gogs_var_lib_t;
+files_type(gogs_var_lib_t)
+
+type gogs_tmp_t;
+files_tmp_file(gogs_tmp_t);
+
+type gogs_ssh_t;
+files_type(gogs_ssh_t)
+
+########################################
+#
+# Local policy
+#
+allow gogs_t self:fifo_file { read write getattr };
+allow gogs_t self:process { getsched signal }; 
+allow gogs_t self:tcp_socket { getattr setopt bind create accept listen read write connect getopt };
+allow gogs_t self:udp_socket { connect getattr create setopt };
+allow gogs_t self:fifo_file ioctl;
+allow gogs_t gogs_exec_t:file execute_no_trans;
+allow gogs_t gogs_var_lib_t:file { execute execute_no_trans };
+
+manage_dirs_pattern(gogs_t, gogs_opt_t, gogs_opt_t)
+manage_files_pattern(gogs_t, gogs_opt_t, gogs_opt_t)
+
+manage_dirs_pattern(gogs_t, gogs_ssh_t, gogs_ssh_t)
+manage_files_pattern(gogs_t, gogs_ssh_t, gogs_ssh_t)
+manage_lnk_files_pattern(gogs_t, gogs_ssh_t, gogs_ssh_t)
+filetrans_pattern(gogs_t, gogs_opt_t, gogs_ssh_t, { file dir lnk_file })
+
+
+manage_dirs_pattern(gogs_t, gogs_var_lib_t, gogs_var_lib_t)
+manage_files_pattern(gogs_t, gogs_var_lib_t, gogs_var_lib_t)
+manage_lnk_files_pattern(gogs_t, gogs_var_lib_t, gogs_var_lib_t)
+optional_policy(`
+  gen_require(`
+    type var_lib_t;
+  ')
+  filetrans_pattern(gogs_t, var_lib_t, gogs_var_lib_t, { file dir lnk_file })
+')
+
+manage_dirs_pattern(gogs_t, gogs_var_lib_t, gogs_tmp_t)
+manage_files_pattern(gogs_t, gogs_var_lib_t, gogs_tmp_t)
+files_tmp_filetrans(gogs_t, gogs_tmp_t, { file dir } )
+
+miscfiles_read_localization(gogs_t)
+
+corenet_tcp_bind_generic_node(gogs_t)
+corenet_tcp_bind_ntop_port(gogs_t)
+corenet_tcp_connect_smtp_port(gogs_t)
+corenet_tcp_connect_ntop_port(gogs_t)
+kernel_read_net_sysctls(gogs_t)
+kernel_read_system_state(gogs_t)
+
+git_exec(gogs_t)
+git_read_usr_t(gogs_t)
+corecmd_exec_bin(gogs_t)
+files_read_etc_files(gogs_t)
+mysql_tcp_connect(gogs_t)
+sysnet_read_config(gogs_t)
+kernel_read_kernel_sysctls(gogs_t)
+kernel_read_vm_sysctls(gogs_t)
+dev_read_sysfs(gogs_t)
+corecmd_exec_shell(gogs_t)
+
+dev_read_urand(gogs_t)
+
+optional_policy(`
+  gen_require(`
+    type sshd_t;
+    ')
+  manage_files_pattern(sshd_t, gogs_ssh_t, gogs_ssh_t)
+  manage_dirs_pattern(sshd_t, gogs_ssh_t, gogs_ssh_t)
+  search_dirs_pattern(sshd_t, gogs_opt_t, gogs_opt_t)
+  domain_auto_trans(sshd_t, gogs_exec_t, gogs_t)
+')
+
+optional_policy(`
+  gen_require(`
+    type supervisor_t;
+  ')
+  supervisor_service_domain(gogs_t, gogs_exec_t)
+  allow supervisor_t gogs_opt_t:dir search;
+')
+
+optional_policy(`
+  gen_require(`
+    type ssh_keygen_exec_t;
+  ')
+  allow gogs_t ssh_keygen_exec_t:file { read getattr open execute execute_no_trans };
+')