-
Notifications
You must be signed in to change notification settings - Fork 0
/
soldatserver.te
91 lines (68 loc) · 3.27 KB
/
soldatserver.te
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
policy_module(soldatserver, 1.0)
require {
type shell_exec_t;
type telegrambot_port_t;
role system_r;
}
type soldatserver_t;
type soldatserver_exec_t;
init_daemon_domain(soldatserver_t, soldatserver_exec_t)
type soldatserver_data_t;
files_type(soldatserver_data_t)
type soldatserver_log_t;
logging_log_file(soldatserver_log_t)
type soldatserver_port_t;
type soldatserver_lobbyport_t;
corenet_port(soldatserver_port_t)
corenet_port(soldatserver_lobbyport_t)
type soldatserver_data_rw_t;
files_type(soldatserver_data_rw_t)
allow soldatserver_t self:process setsched;
allow soldatserver_t soldatserver_data_t:dir list_dir_perms;
allow soldatserver_t soldatserver_data_t:file read_file_perms;
allow soldatserver_t soldatserver_data_rw_t:dir rw_dir_perms;
allow soldatserver_t soldatserver_data_rw_t:file manage_file_perms;
allow soldatserver_t soldatserver_log_t:dir rw_dir_perms;
allow soldatserver_t soldatserver_log_t:file manage_file_perms;
# There must be a better way
allow init_t soldatserver_data_t:dir list_dir_perms;
allow init_t soldatserver_log_t:dir list_dir_perms;
allow init_t soldatserver_log_t:file read_file_perms;
allow soldatserver_t self:tcp_socket create_stream_socket_perms;
allow soldatserver_t self:tcp_socket listen; # XXX: Not sure if this is necessary, double-check
allow soldatserver_t soldatserver_port_t:tcp_socket name_bind;
allow soldatserver_t self:udp_socket create_stream_socket_perms;
allow soldatserver_t soldatserver_port_t:udp_socket name_bind;
allow soldatserver_t soldatserver_lobbyport_t:tcp_socket name_connect;
corenet_tcp_bind_generic_node(soldatserver_t)
corenet_udp_bind_generic_node(soldatserver_t)
# semanage port -a -t soldatserver_lobbyport_t -p tcp 13073
# semanage port -a -t soldatserver_port_t -p tcp 23073
# semanage port -a -t soldatserver_port_t -p udp 23073
# semanage port -a -t soldatserver_port_t -p tcp 23083
sysnet_dns_name_resolve(soldatserver_t)
# For admin notifier script
type soldatserver_shell_t;
domain_type(soldatserver_shell_t)
# XXX: Is this the right way? I sense something... elusive.
role system_r types soldatserver_shell_t;
# Execute a shell in a seperately confined domain
type_transition soldatserver_t shell_exec_t:process soldatserver_shell_t;
allow soldatserver_t shell_exec_t:file execute;
allow soldatserver_shell_t shell_exec_t:file entrypoint;
allow soldatserver_t soldatserver_shell_t:process transition;
allow soldatserver_shell_t shell_exec_t:file exec_file_perms;
allow soldatserver_shell_t soldatserver_data_t:dir search_dir_perms;
# A seperate domain for the notifier
type soldatserver_notifier_t;
type soldatserver_notifier_exec_t;
domain_type(soldatserver_notifier_t)
domain_entry_file(soldatserver_notifier_t, soldatserver_notifier_exec_t)
role system_r types soldatserver_notifier_t;
# Shell domain will execute the notify binary in a seperate domain
type_transition soldatserver_shell_t soldatserver_notifier_exec_t:process soldatserver_notifier_t;
# XXX: Why plain execute does not work here but works above with soldatserver_t to shell_exec_t?
allow soldatserver_shell_t soldatserver_notifier_exec_t:file exec_file_perms;
allow soldatserver_shell_t soldatserver_notifier_t:process transition;
sysnet_dns_name_resolve(soldatserver_notifier_t)
allow soldatserver_notifier_t telegrambot_port_t:tcp_socket name_connect;