Gentoo Archives: gentoo-commits

From: Sven Vermeulen <sven.vermeulen@××××××.be>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/hardened-refpolicy:master commit in: policy/modules/contrib/
Date: Fri, 02 Nov 2012 19:14:12
Message-Id: 1351883305.0bde972c43fa9f1e756774cd42fca90d34edc9f0.SwifT@gentoo
1 commit: 0bde972c43fa9f1e756774cd42fca90d34edc9f0
2 Author: Dominick Grift <dominick.grift <AT> gmail <DOT> com>
3 AuthorDate: Fri Nov 2 14:32:38 2012 +0000
4 Commit: Sven Vermeulen <sven.vermeulen <AT> siphos <DOT> be>
5 CommitDate: Fri Nov 2 19:08:25 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/hardened-refpolicy.git;a=commit;h=0bde972c
7
8 Changes to the zarafa policy module
9
10 Add init script file
11 Add zarafa_admin()
12 Ported from Fedora with changes
13 Module clean up
14
15 Signed-off-by: Dominick Grift <dominick.grift <AT> gmail.com>
16
17 ---
18 policy/modules/contrib/zarafa.fc | 22 ++++++---
19 policy/modules/contrib/zarafa.if | 92 +++++++++++++++++++++++++++++--------
20 policy/modules/contrib/zarafa.te | 95 +++++++++++++++++++++-----------------
21 3 files changed, 139 insertions(+), 70 deletions(-)
22
23 diff --git a/policy/modules/contrib/zarafa.fc b/policy/modules/contrib/zarafa.fc
24 index 25f78ef..43c6df2 100644
25 --- a/policy/modules/contrib/zarafa.fc
26 +++ b/policy/modules/contrib/zarafa.fc
27 @@ -1,5 +1,7 @@
28 /etc/zarafa(/.*)? gen_context(system_u:object_r:zarafa_etc_t,s0)
29
30 +/etc/rc\.d/init\.d/zarafa.* -- gen_context(system_u:object_r:zarafa_initrc_exec_t,s0)
31 +
32 /usr/bin/zarafa-dagent -- gen_context(system_u:object_r:zarafa_deliver_exec_t,s0)
33 /usr/bin/zarafa-gateway -- gen_context(system_u:object_r:zarafa_gateway_exec_t,s0)
34 /usr/bin/zarafa-ical -- gen_context(system_u:object_r:zarafa_ical_exec_t,s0)
35 @@ -8,19 +10,23 @@
36 /usr/bin/zarafa-server -- gen_context(system_u:object_r:zarafa_server_exec_t,s0)
37 /usr/bin/zarafa-spooler -- gen_context(system_u:object_r:zarafa_spooler_exec_t,s0)
38
39 -/var/lib/zarafa-.* gen_context(system_u:object_r:zarafa_var_lib_t,s0)
40 +/var/lib/zarafa(/.*)? gen_context(system_u:object_r:zarafa_var_lib_t,s0)
41 +/var/lib/zarafa-webaccess(/.*)? gen_context(system_u:object_r:zarafa_var_lib_t,s0)
42
43 -/var/log/zarafa/gateway\.log -- gen_context(system_u:object_r:zarafa_gateway_log_t,s0)
44 -/var/log/zarafa/ical\.log -- gen_context(system_u:object_r:zarafa_ical_log_t,s0)
45 -/var/log/zarafa/indexer\.log -- gen_context(system_u:object_r:zarafa_indexer_log_t,s0)
46 -/var/log/zarafa/monitor\.log -- gen_context(system_u:object_r:zarafa_monitor_log_t,s0)
47 -/var/log/zarafa/server\.log -- gen_context(system_u:object_r:zarafa_server_log_t,s0)
48 -/var/log/zarafa/spooler\.log -- gen_context(system_u:object_r:zarafa_spooler_log_t,s0)
49 +/var/log/zarafa/dagent\.log.* -- gen_context(system_u:object_r:zarafa_deliver_log_t,s0)
50 +/var/log/zarafa/gateway\.log.* -- gen_context(system_u:object_r:zarafa_gateway_log_t,s0)
51 +/var/log/zarafa/ical\.log.* -- gen_context(system_u:object_r:zarafa_ical_log_t,s0)
52 +/var/log/zarafa/indexer\.log.* -- gen_context(system_u:object_r:zarafa_indexer_log_t,s0)
53 +/var/log/zarafa/monitor\.log.* -- gen_context(system_u:object_r:zarafa_monitor_log_t,s0)
54 +/var/log/zarafa/server\.log.* -- gen_context(system_u:object_r:zarafa_server_log_t,s0)
55 +/var/log/zarafa/spooler\.log.* -- gen_context(system_u:object_r:zarafa_spooler_log_t,s0)
56
57 /var/run/zarafa -s gen_context(system_u:object_r:zarafa_server_var_run_t,s0)
58 +/var/run/zarafa-dagent\.pid -- gen_context(system_u:object_r:zarafa_deliver_var_run_t,s0)
59 /var/run/zarafa-gateway\.pid -- gen_context(system_u:object_r:zarafa_gateway_var_run_t,s0)
60 /var/run/zarafa-ical\.pid -- gen_context(system_u:object_r:zarafa_ical_var_run_t,s0)
61 -/var/run/zarafa-indexer -- gen_context(system_u:object_r:zarafa_indexer_var_run_t,s0)
62 +/var/run/zarafa-indexer -s gen_context(system_u:object_r:zarafa_indexer_var_run_t,s0)
63 +/var/run/zarafa-indexer\.pid -- gen_context(system_u:object_r:zarafa_indexer_var_run_t,s0)
64 /var/run/zarafa-monitor\.pid -- gen_context(system_u:object_r:zarafa_monitor_var_run_t,s0)
65 /var/run/zarafa-server\.pid -- gen_context(system_u:object_r:zarafa_server_var_run_t,s0)
66 /var/run/zarafa-spooler\.pid -- gen_context(system_u:object_r:zarafa_spooler_var_run_t,s0)
67
68 diff --git a/policy/modules/contrib/zarafa.if b/policy/modules/contrib/zarafa.if
69 index 21ae664..36e32df 100644
70 --- a/policy/modules/contrib/zarafa.if
71 +++ b/policy/modules/contrib/zarafa.if
72 @@ -1,53 +1,55 @@
73 ## <summary>Zarafa collaboration platform.</summary>
74
75 -######################################
76 +#######################################
77 ## <summary>
78 -## Creates types and rules for a basic
79 -## zararfa init daemon domain.
80 +## The template to define a zarafa domain.
81 ## </summary>
82 -## <param name="prefix">
83 +## <param name="domain_prefix">
84 ## <summary>
85 -## Prefix for the domain.
86 +## Domain prefix to be used.
87 ## </summary>
88 ## </param>
89 #
90 template(`zarafa_domain_template',`
91 gen_require(`
92 - attribute zarafa_domain;
93 + attribute zarafa_domain, zarafa_logfile, zarafa_pidfile;
94 ')
95
96 - ##############################
97 + ########################################
98 #
99 - # $1_t declarations
100 + # Declarations
101 #
102
103 type zarafa_$1_t, zarafa_domain;
104 type zarafa_$1_exec_t;
105 init_daemon_domain(zarafa_$1_t, zarafa_$1_exec_t)
106
107 - type zarafa_$1_log_t;
108 + type zarafa_$1_log_t, zarafa_logfile;
109 logging_log_file(zarafa_$1_log_t)
110
111 - type zarafa_$1_var_run_t;
112 + type zarafa_$1_var_run_t, zarafa_pidfile;
113 files_pid_file(zarafa_$1_var_run_t)
114
115 - ##############################
116 + ########################################
117 #
118 - # $1_t local policy
119 + # Policy
120 #
121
122 manage_files_pattern(zarafa_$1_t, zarafa_$1_var_run_t, zarafa_$1_var_run_t)
123 manage_sock_files_pattern(zarafa_$1_t, zarafa_$1_var_run_t, zarafa_$1_var_run_t)
124 files_pid_filetrans(zarafa_$1_t, zarafa_$1_var_run_t, { file sock_file })
125
126 - manage_files_pattern(zarafa_$1_t, zarafa_$1_log_t, zarafa_$1_log_t)
127 - logging_log_filetrans(zarafa_$1_t, zarafa_$1_log_t, { file })
128 + append_files_pattern(zarafa_$1_t, zarafa_$1_log_t, zarafa_$1_log_t)
129 + create_files_pattern(zarafa_$1_t, zarafa_$1_log_t, zarafa_$1_log_t)
130 + setattr_files_pattern(zarafa_$1_t, zarafa_$1_log_t, zarafa_$1_log_t)
131 + logging_log_filetrans(zarafa_$1_t, zarafa_$1_log_t, file)
132 +
133 + auth_use_nsswitch(zarafa_$1_t)
134 ')
135
136 ######################################
137 ## <summary>
138 -## Allow the specified domain to search
139 -## zarafa configuration dirs.
140 +## search zarafa configuration directories.
141 ## </summary>
142 ## <param name="domain">
143 ## <summary>
144 @@ -66,7 +68,7 @@ interface(`zarafa_search_config',`
145
146 ########################################
147 ## <summary>
148 -## Execute a domain transition to run zarafa_deliver.
149 +## Execute a domain transition to run zarafa deliver.
150 ## </summary>
151 ## <param name="domain">
152 ## <summary>
153 @@ -79,12 +81,13 @@ interface(`zarafa_domtrans_deliver',`
154 type zarafa_deliver_t, zarafa_deliver_exec_t;
155 ')
156
157 + corecmd_search_bin($1)
158 domtrans_pattern($1, zarafa_deliver_exec_t, zarafa_deliver_t)
159 ')
160
161 ########################################
162 ## <summary>
163 -## Execute a domain transition to run zarafa_server.
164 +## Execute a domain transition to run zarafa server.
165 ## </summary>
166 ## <param name="domain">
167 ## <summary>
168 @@ -97,12 +100,14 @@ interface(`zarafa_domtrans_server',`
169 type zarafa_server_t, zarafa_server_exec_t;
170 ')
171
172 + corecmd_search_bin($1)
173 domtrans_pattern($1, zarafa_server_exec_t, zarafa_server_t)
174 ')
175
176 #######################################
177 ## <summary>
178 -## Connect to zarafa-server unix domain stream socket.
179 +## Connect to zarafa server with a unix
180 +## domain stream socket.
181 ## </summary>
182 ## <param name="domain">
183 ## <summary>
184 @@ -118,3 +123,52 @@ interface(`zarafa_stream_connect_server',`
185 files_search_var_lib($1)
186 stream_connect_pattern($1, zarafa_server_var_run_t, zarafa_server_var_run_t, zarafa_server_t)
187 ')
188 +
189 +########################################
190 +## <summary>
191 +## All of the rules required to
192 +## administrate an zarafa environment.
193 +## </summary>
194 +## <param name="domain">
195 +## <summary>
196 +## Domain allowed access.
197 +## </summary>
198 +## </param>
199 +## <param name="role">
200 +## <summary>
201 +## Role allowed access.
202 +## </summary>
203 +## </param>
204 +## <rolecap/>
205 +#
206 +interface(`zarafa_admin',`
207 + gen_require(`
208 + attribute zarafa_domain, zarafa_logfile, zarafa_pidfile;
209 + type zarafa_etc_t, zarafa_initrc_exec_t, zarafa_deliver_tmp_t;
210 + type zarafa_indexer_tmp_t, zarafa_server_tmp_t, zarafa_share_t;
211 + type zarafa_var_lib_t;
212 + ')
213 +
214 + allow $1 zarafa_domain:process { ptrace signal_perms };
215 + ps_process_pattern($1, zarafa_domain)
216 +
217 + init_labeled_script_domtrans($1, zarafa_initrc_exec_t)
218 + domain_system_change_exemption($1)
219 + role_transition $2 zarafa_initrc_exec_t system_r;
220 + allow $2 system_r;
221 +
222 + files_search_etc($1)
223 + admin_pattern($1, zarafa_etc_t)
224 +
225 + files_search_tmp($1)
226 + admin_pattern($1, { zarafa_deliver_tmp_t zarafa_indexer_tmp_t zarafa_server_tmp_t })
227 +
228 + logging_search_log($1)
229 + admin_pattern($1, zarafa_logfile)
230 +
231 + files_search_var_lib($1)
232 + admin_pattern($1, { zarafa_var_lib_t zarafa_share_t })
233 +
234 + files_search_pids($1)
235 + admin_pattern($1, zarafa_pidfile)
236 +')
237
238 diff --git a/policy/modules/contrib/zarafa.te b/policy/modules/contrib/zarafa.te
239 index 91267bc..95ee5f1 100644
240 --- a/policy/modules/contrib/zarafa.te
241 +++ b/policy/modules/contrib/zarafa.te
242 @@ -1,4 +1,4 @@
243 -policy_module(zarafa, 1.1.0)
244 +policy_module(zarafa, 1.1.1)
245
246 ########################################
247 #
248 @@ -6,6 +6,8 @@ policy_module(zarafa, 1.1.0)
249 #
250
251 attribute zarafa_domain;
252 +attribute zarafa_logfile;
253 +attribute zarafa_pidfile;
254
255 zarafa_domain_template(deliver)
256
257 @@ -15,9 +17,16 @@ files_tmp_file(zarafa_deliver_tmp_t)
258 type zarafa_etc_t;
259 files_config_file(zarafa_etc_t)
260
261 +type zarafa_initrc_exec_t;
262 +init_script_file(zarafa_initrc_exec_t)
263 +
264 zarafa_domain_template(gateway)
265 zarafa_domain_template(ical)
266 zarafa_domain_template(indexer)
267 +
268 +type zarafa_indexer_tmp_t;
269 +files_tmp_file(zarafa_indexer_tmp_t)
270 +
271 zarafa_domain_template(monitor)
272 zarafa_domain_template(server)
273
274 @@ -34,66 +43,62 @@ files_tmp_file(zarafa_var_lib_t)
275
276 ########################################
277 #
278 -# zarafa-deliver local policy
279 +# Deliver local policy
280 #
281
282 manage_dirs_pattern(zarafa_deliver_t, zarafa_deliver_tmp_t, zarafa_deliver_tmp_t)
283 manage_files_pattern(zarafa_deliver_t, zarafa_deliver_tmp_t, zarafa_deliver_tmp_t)
284 files_tmp_filetrans(zarafa_deliver_t, zarafa_deliver_tmp_t, { file dir })
285
286 -auth_use_nsswitch(zarafa_deliver_t)
287 -
288 ########################################
289 #
290 -# zarafa_gateway local policy
291 +# Gateway local policy
292 #
293
294 -allow zarafa_gateway_t self:capability { chown kill };
295 -allow zarafa_gateway_t self:process setrlimit;
296 -
297 corenet_all_recvfrom_unlabeled(zarafa_gateway_t)
298 corenet_all_recvfrom_netlabel(zarafa_gateway_t)
299 corenet_tcp_sendrecv_generic_if(zarafa_gateway_t)
300 corenet_tcp_sendrecv_generic_node(zarafa_gateway_t)
301 -corenet_tcp_sendrecv_all_ports(zarafa_gateway_t)
302 corenet_tcp_bind_generic_node(zarafa_gateway_t)
303 -corenet_tcp_bind_pop_port(zarafa_gateway_t)
304
305 -auth_use_nsswitch(zarafa_gateway_t)
306 +corenet_sendrecv_pop_server_packets(zarafa_gateway_t)
307 +corenet_tcp_bind_pop_port(zarafa_gateway_t)
308 +corenet_tcp_sendrecv_pop_port(zarafa_gateway_t)
309
310 #######################################
311 #
312 -# zarafa-ical local policy
313 +# Ical local policy
314 #
315
316 -allow zarafa_ical_t self:capability chown;
317 -
318 corenet_all_recvfrom_unlabeled(zarafa_ical_t)
319 corenet_all_recvfrom_netlabel(zarafa_ical_t)
320 corenet_tcp_sendrecv_generic_if(zarafa_ical_t)
321 corenet_tcp_sendrecv_generic_node(zarafa_ical_t)
322 -corenet_tcp_sendrecv_all_ports(zarafa_ical_t)
323 corenet_tcp_bind_generic_node(zarafa_ical_t)
324 -corenet_tcp_bind_http_cache_port(zarafa_ical_t)
325
326 -auth_use_nsswitch(zarafa_ical_t)
327 +corenet_sendrecv_http_cache_client_packets(zarafa_ical_t)
328 +corenet_tcp_bind_http_cache_port(zarafa_ical_t)
329 +corenet_tcp_sendrecv_http_cache_port(zarafa_ical_t)
330
331 ######################################
332 #
333 -# zarafa-monitor local policy
334 +# Indexer local policy
335 #
336
337 -allow zarafa_monitor_t self:capability chown;
338 +manage_dirs_pattern(zarafa_indexer_t, zarafa_indexer_tmp_t, zarafa_indexer_tmp_t)
339 +manage_files_pattern(zarafa_indexer_t, zarafa_indexer_tmp_t, zarafa_indexer_tmp_t)
340 +files_tmp_filetrans(zarafa_indexer_t, zarafa_indexer_tmp_t, { file dir })
341
342 -auth_use_nsswitch(zarafa_monitor_t)
343 +manage_dirs_pattern(zarafa_indexer_t, zarafa_var_lib_t, zarafa_var_lib_t)
344 +manage_files_pattern(zarafa_indexer_t, zarafa_var_lib_t, zarafa_var_lib_t)
345 +manage_lnk_files_pattern(zarafa_indexer_t, zarafa_var_lib_t, zarafa_var_lib_t)
346
347 ########################################
348 #
349 -# zarafa_server local policy
350 +# Server local policy
351 #
352
353 -allow zarafa_server_t self:capability { chown kill net_bind_service };
354 -allow zarafa_server_t self:process setrlimit;
355 +allow zarafa_server_t self:capability net_bind_service;
356
357 manage_dirs_pattern(zarafa_server_t, zarafa_server_tmp_t, zarafa_server_tmp_t)
358 manage_files_pattern(zarafa_server_t, zarafa_server_tmp_t, zarafa_server_tmp_t)
359 @@ -101,7 +106,8 @@ files_tmp_filetrans(zarafa_server_t, zarafa_server_tmp_t, { file dir })
360
361 manage_dirs_pattern(zarafa_server_t, zarafa_var_lib_t, zarafa_var_lib_t)
362 manage_files_pattern(zarafa_server_t, zarafa_var_lib_t, zarafa_var_lib_t)
363 -files_var_lib_filetrans(zarafa_server_t, zarafa_var_lib_t, { file dir })
364 +manage_lnk_files_pattern(zarafa_server_t, zarafa_var_lib_t, zarafa_var_lib_t)
365 +files_var_lib_filetrans(zarafa_server_t, zarafa_var_lib_t, { file dir lnk_file })
366
367 stream_connect_pattern(zarafa_server_t, zarafa_indexer_var_run_t, zarafa_indexer_var_run_t, zarafa_indexer_t)
368
369 @@ -109,56 +115,56 @@ corenet_all_recvfrom_unlabeled(zarafa_server_t)
370 corenet_all_recvfrom_netlabel(zarafa_server_t)
371 corenet_tcp_sendrecv_generic_if(zarafa_server_t)
372 corenet_tcp_sendrecv_generic_node(zarafa_server_t)
373 -corenet_tcp_sendrecv_all_ports(zarafa_server_t)
374 corenet_tcp_bind_generic_node(zarafa_server_t)
375 +
376 +corenet_sendrecv_zarafa_server_packets(zarafa_server_t)
377 corenet_tcp_bind_zarafa_port(zarafa_server_t)
378 +corenet_tcp_sendrecv_zarafa_port(zarafa_server_t)
379
380 files_read_usr_files(zarafa_server_t)
381
382 -auth_use_nsswitch(zarafa_server_t)
383 -
384 -logging_send_syslog_msg(zarafa_server_t)
385 logging_send_audit_msgs(zarafa_server_t)
386
387 -sysnet_dns_name_resolve(zarafa_server_t)
388 -
389 optional_policy(`
390 kerberos_use(zarafa_server_t)
391 ')
392
393 optional_policy(`
394 mysql_stream_connect(zarafa_server_t)
395 + mysql_tcp_connect(zarafa_server_t)
396 +')
397 +
398 +optional_policy(`
399 + postgresql_stream_connect(zarafa_server_t)
400 + postgresql_tcp_connect(zarafa_server_t)
401 ')
402
403 ########################################
404 #
405 -# zarafa_spooler local policy
406 +# Spooler local policy
407 #
408
409 -allow zarafa_spooler_t self:capability { chown kill };
410 -
411 can_exec(zarafa_spooler_t, zarafa_spooler_exec_t)
412
413 corenet_all_recvfrom_unlabeled(zarafa_spooler_t)
414 corenet_all_recvfrom_netlabel(zarafa_spooler_t)
415 corenet_tcp_sendrecv_generic_if(zarafa_spooler_t)
416 corenet_tcp_sendrecv_generic_node(zarafa_spooler_t)
417 -corenet_tcp_sendrecv_all_ports(zarafa_spooler_t)
418 -corenet_tcp_connect_smtp_port(zarafa_spooler_t)
419
420 -auth_use_nsswitch(zarafa_spooler_t)
421 +corenet_sendrecv_smtp_client_packets(zarafa_spooler_t)
422 +corenet_tcp_connect_smtp_port(zarafa_spooler_t)
423 +corenet_tcp_sendrecv_smtp_port(zarafa_spooler_t)
424
425 ########################################
426 #
427 -# zarafa domains local policy
428 +# Zarafa domain local policy
429 #
430
431 -# bad permission on /etc/zarafa
432 -allow zarafa_domain self:capability { dac_override setgid setuid };
433 -allow zarafa_domain self:process signal;
434 +allow zarafa_domain self:capability { chown kill dac_override chown setgid setuid };
435 +allow zarafa_domain self:process { setrlimit signal };
436 allow zarafa_domain self:fifo_file rw_fifo_file_perms;
437 -allow zarafa_domain self:tcp_socket create_stream_socket_perms;
438 -allow zarafa_domain self:unix_stream_socket create_stream_socket_perms;
439 +allow zarafa_domain self:tcp_socket { accept listen };
440 +allow zarafa_domain self:unix_stream_socket { accept listen };
441
442 stream_connect_pattern(zarafa_domain, zarafa_server_var_run_t, zarafa_server_var_run_t, zarafa_server_t)
443
444 @@ -166,6 +172,9 @@ read_files_pattern(zarafa_domain, zarafa_etc_t, zarafa_etc_t)
445
446 kernel_read_system_state(zarafa_domain)
447
448 -files_read_etc_files(zarafa_domain)
449 +dev_read_rand(zarafa_domain)
450 +dev_read_urand(zarafa_domain)
451 +
452 +logging_send_syslog_msg(zarafa_domain)
453
454 miscfiles_read_localization(zarafa_domain)