]> git.ipfire.org Git - people/stevee/selinux-policy.git/blame - policy/modules/kernel/kernel.te
Remove module for gnome.
[people/stevee/selinux-policy.git] / policy / modules / kernel / kernel.te
CommitLineData
cca4b7e6 1policy_module(kernel, 1.13.3)
960373dd 2
995d6fea
DW
3## <desc>
4## <p>
5## disallow programs and users from transitioning to insmod domain.
6## </p>
7## </desc>
8gen_bool(secure_mode_insmod,false)
9
ff7bc148
CP
10########################################
11#
12# Declarations
13#
14
18f25afd 15# assertion related attributes
a266e3cc
CP
16attribute can_load_kernmodule;
17attribute can_receive_kernel_messages;
e276b8e5 18attribute can_dump_kernel;
a266e3cc 19
b518fc2e 20neverallow ~{ can_load_kernmodule kern_unconfined } self:capability sys_module;
712566ee 21
d2506343
CP
22# domains with unconfined access to kernel resources
23attribute kern_unconfined;
24
25# regular entries in proc
26attribute proc_type;
27
28# sysctls
29attribute sysctl_type;
30
9fd4b818
CP
31role system_r;
32role sysadm_r;
33role staff_r;
34role user_r;
18d59e15 35
350b6ab7
CP
36# here until order dependence is fixed:
37role unconfined_r;
38
18d59e15
CP
39ifdef(`enable_mls',`
40 role secadm_r;
2dbd3824 41 role auditadm_r;
18d59e15 42')
9fd4b818 43
a266e3cc 44#
b4cd1533
CP
45# kernel_t is the domain of kernel threads.
46# It is also the target type when checking permissions in the system class.
e276b8e5 47#
f0574fa9 48type kernel_t, can_load_kernmodule;
fb0a3a98 49domain_base_type(kernel_t)
f0574fa9
CP
50mls_rangetrans_source(kernel_t)
51role system_r types kernel_t;
e070dd2d 52sid kernel gen_context(system_u:system_r:kernel_t,mls_systemhigh)
b4cd1533 53
a1fcff33
CP
54#
55# DebugFS
56#
57
58type debugfs_t;
59fs_type(debugfs_t)
688db17c
DW
60files_mountpoint(debugfs_t)
61
a1fcff33 62allow debugfs_t self:filesystem associate;
e02c61cf 63genfscon debugfs / gen_context(system_u:object_r:debugfs_t,s0)
a1fcff33 64
93784927
CP
65#
66# kvmFS
67#
68
69type kvmfs_t;
70fs_type(kvmfs_t)
71genfscon kvmfs / gen_context(system_u:object_r:kvmfs_t,s0)
72
b4cd1533
CP
73#
74# Procfs types
75#
76
d2506343 77type proc_t, proc_type;
c9428d33 78files_mountpoint(proc_t)
cbca03f5 79fs_type(proc_t)
e02c61cf
CP
80genfscon proc / gen_context(system_u:object_r:proc_t,s0)
81genfscon proc /sysvipc gen_context(system_u:object_r:proc_t,s0)
b4cd1533 82
7d4161cd
CP
83type proc_afs_t, proc_type;
84genfscon proc /fs/openafs gen_context(system_u:object_r:proc_afs_t,s0)
85
b4cd1533 86# kernel message interface
d2506343 87type proc_kmsg_t, proc_type;
e070dd2d 88genfscon proc /kmsg gen_context(system_u:object_r:proc_kmsg_t,mls_systemhigh)
b518fc2e 89neverallow ~{ can_receive_kernel_messages kern_unconfined } proc_kmsg_t:file ~getattr;
b4cd1533
CP
90
91# /proc kcore: inaccessible
d2506343 92type proc_kcore_t, proc_type;
e276b8e5 93neverallow ~{ can_dump_kernel kern_unconfined } proc_kcore_t:file ~getattr;
e070dd2d 94genfscon proc /kcore gen_context(system_u:object_r:proc_kcore_t,mls_systemhigh)
b4cd1533 95
d2506343 96type proc_mdstat_t, proc_type;
e02c61cf 97genfscon proc /mdstat gen_context(system_u:object_r:proc_mdstat_t,s0)
b4cd1533 98
d2506343 99type proc_net_t, proc_type;
e02c61cf 100genfscon proc /net gen_context(system_u:object_r:proc_net_t,s0)
b4cd1533 101
a3cf80d8 102type proc_xen_t, proc_type;
a65fd90a 103files_mountpoint(proc_xen_t)
a3cf80d8
CP
104genfscon proc /xen gen_context(system_u:object_r:proc_xen_t,s0)
105
b4cd1533
CP
106#
107# Sysctl types
108#
109
d2506343
CP
110# /proc/sys directory, base directory of sysctls
111type sysctl_t, sysctl_type;
112files_mountpoint(sysctl_t)
e02c61cf
CP
113sid sysctl gen_context(system_u:object_r:sysctl_t,s0)
114genfscon proc /sys gen_context(system_u:object_r:sysctl_t,s0)
d2506343 115
b4cd1533 116# /proc/irq directory and files
d2506343 117type sysctl_irq_t, sysctl_type;
e02c61cf 118genfscon proc /irq gen_context(system_u:object_r:sysctl_irq_t,s0)
b4cd1533
CP
119
120# /proc/net/rpc directory and files
d2506343 121type sysctl_rpc_t, sysctl_type;
e02c61cf 122genfscon proc /net/rpc gen_context(system_u:object_r:sysctl_rpc_t,s0)
b4cd1533 123
a65fd90a
CP
124# /proc/sys/crypto directory and files
125type sysctl_crypto_t, sysctl_type;
126genfscon proc /sys/crypto gen_context(system_u:object_r:sysctl_crypto_t,s0)
127
b4cd1533 128# /proc/sys/fs directory and files
d2506343 129type sysctl_fs_t, sysctl_type;
c9428d33 130files_mountpoint(sysctl_fs_t)
e02c61cf 131genfscon proc /sys/fs gen_context(system_u:object_r:sysctl_fs_t,s0)
b4cd1533
CP
132
133# /proc/sys/kernel directory and files
d2506343 134type sysctl_kernel_t, sysctl_type;
e02c61cf 135genfscon proc /sys/kernel gen_context(system_u:object_r:sysctl_kernel_t,s0)
b4cd1533
CP
136
137# /proc/sys/kernel/modprobe file
d2506343 138type sysctl_modprobe_t, sysctl_type;
e02c61cf 139genfscon proc /sys/kernel/modprobe gen_context(system_u:object_r:sysctl_modprobe_t,s0)
b4cd1533
CP
140
141# /proc/sys/kernel/hotplug file
d2506343 142type sysctl_hotplug_t, sysctl_type;
e02c61cf 143genfscon proc /sys/kernel/hotplug gen_context(system_u:object_r:sysctl_hotplug_t,s0)
b4cd1533
CP
144
145# /proc/sys/net directory and files
d2506343 146type sysctl_net_t, sysctl_type;
e02c61cf 147genfscon proc /sys/net gen_context(system_u:object_r:sysctl_net_t,s0)
b4cd1533
CP
148
149# /proc/sys/net/unix directory and files
d2506343 150type sysctl_net_unix_t, sysctl_type;
e02c61cf 151genfscon proc /sys/net/unix gen_context(system_u:object_r:sysctl_net_unix_t,s0)
b4cd1533
CP
152
153# /proc/sys/vm directory and files
d2506343 154type sysctl_vm_t, sysctl_type;
e02c61cf 155genfscon proc /sys/vm gen_context(system_u:object_r:sysctl_vm_t,s0)
b4cd1533
CP
156
157# /proc/sys/dev directory and files
d2506343 158type sysctl_dev_t, sysctl_type;
e02c61cf 159genfscon proc /sys/dev gen_context(system_u:object_r:sysctl_dev_t,s0)
a266e3cc 160
d2506343
CP
161#
162# unlabeled_t is the type of unlabeled objects.
163# Objects that have no known labeling information or that
164# have labels that are no longer valid are treated as having this type.
165#
166type unlabeled_t;
ed17ee53 167fs_associate(unlabeled_t)
e070dd2d 168sid unlabeled gen_context(system_u:object_r:unlabeled_t,mls_systemhigh)
3eaa9939 169fs_associate(unlabeled_t)
d2506343
CP
170
171# These initial sids are no longer used, and can be removed:
e070dd2d 172sid any_socket gen_context(system_u:object_r:unlabeled_t,mls_systemhigh)
e02c61cf 173sid file_labels gen_context(system_u:object_r:unlabeled_t,s0)
e070dd2d
CP
174sid icmp_socket gen_context(system_u:object_r:unlabeled_t,mls_systemhigh)
175sid igmp_packet gen_context(system_u:object_r:unlabeled_t,mls_systemhigh)
b518fc2e 176sid init gen_context(system_u:object_r:unlabeled_t,s0)
e070dd2d 177sid kmod gen_context(system_u:object_r:unlabeled_t,mls_systemhigh)
e070dd2d
CP
178sid policy gen_context(system_u:object_r:unlabeled_t,mls_systemhigh)
179sid scmp_packet gen_context(system_u:object_r:unlabeled_t,mls_systemhigh)
e02c61cf
CP
180sid sysctl_modprobe gen_context(system_u:object_r:unlabeled_t,s0)
181sid sysctl_fs gen_context(system_u:object_r:unlabeled_t,s0)
182sid sysctl_kernel gen_context(system_u:object_r:unlabeled_t,s0)
183sid sysctl_net gen_context(system_u:object_r:unlabeled_t,s0)
184sid sysctl_net_unix gen_context(system_u:object_r:unlabeled_t,s0)
185sid sysctl_vm gen_context(system_u:object_r:unlabeled_t,s0)
186sid sysctl_dev gen_context(system_u:object_r:unlabeled_t,s0)
e070dd2d 187sid tcp_socket gen_context(system_u:object_r:unlabeled_t,mls_systemhigh)
d2506343 188
a266e3cc
CP
189########################################
190#
191# kernel local policy
192#
193
995bdbb1 194allow kernel_t self:capability ~{ sys_ptrace };
195tunable_policy(`deny_ptrace',`',`
196 allow kernel_t self:capability sys_ptrace;
197')
198
c3812748 199allow kernel_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap };
c2c00bee
CP
200allow kernel_t self:shm create_shm_perms;
201allow kernel_t self:sem create_sem_perms;
a266e3cc 202allow kernel_t self:msg { send receive };
c2c00bee
CP
203allow kernel_t self:msgq create_msgq_perms;
204allow kernel_t self:unix_dgram_socket create_socket_perms;
205allow kernel_t self:unix_stream_socket create_stream_socket_perms;
a266e3cc
CP
206allow kernel_t self:unix_dgram_socket sendto;
207allow kernel_t self:unix_stream_socket connectto;
ef659a47
CP
208allow kernel_t self:fifo_file rw_fifo_file_perms;
209allow kernel_t self:sock_file read_sock_file_perms;
a266e3cc
CP
210allow kernel_t self:fd use;
211
a65fd90a
CP
212allow kernel_t debugfs_t:dir search_dir_perms;
213
ef659a47
CP
214allow kernel_t proc_t:dir list_dir_perms;
215allow kernel_t proc_t:file read_file_perms;
216allow kernel_t proc_t:lnk_file read_lnk_file_perms;
72fcec8c 217
ef659a47
CP
218allow kernel_t proc_net_t:dir list_dir_perms;
219allow kernel_t proc_net_t:file read_file_perms;
72fcec8c 220
ef659a47 221allow kernel_t proc_mdstat_t:file read_file_perms;
72fcec8c 222
a266e3cc 223allow kernel_t proc_kcore_t:file getattr;
72fcec8c 224
a266e3cc 225allow kernel_t proc_kmsg_t:file getattr;
72fcec8c 226
ef659a47
CP
227allow kernel_t sysctl_kernel_t:dir list_dir_perms;
228allow kernel_t sysctl_kernel_t:file read_file_perms;
229allow kernel_t sysctl_t:dir list_dir_perms;
a266e3cc 230
72fcec8c
CP
231# Other possible mount points for the root fs are in files
232allow kernel_t unlabeled_t:dir mounton;
233# Kernel-generated traffic e.g., TCP resets on
234# connections with invalidated labels:
235allow kernel_t unlabeled_t:packet send;
605ba285 236
7722c29e 237# Allow unlabeled network traffic
308baad2 238allow unlabeled_t unlabeled_t:packet { forward_in forward_out };
7722c29e
CP
239corenet_in_generic_if(unlabeled_t)
240corenet_in_generic_node(unlabeled_t)
308baad2 241
19006686
CP
242corenet_all_recvfrom_unlabeled(kernel_t)
243corenet_all_recvfrom_netlabel(kernel_t)
a154cd45
CP
244# Kernel-generated traffic e.g., ICMP replies:
245corenet_raw_sendrecv_all_if(kernel_t)
246corenet_raw_sendrecv_all_nodes(kernel_t)
bf080a46 247corenet_raw_send_generic_if(kernel_t)
a154cd45 248# Kernel-generated traffic e.g., TCP resets:
0fd9dc55
CP
249corenet_tcp_sendrecv_all_if(kernel_t)
250corenet_tcp_sendrecv_all_nodes(kernel_t)
bf080a46 251corenet_raw_send_generic_node(kernel_t)
006e9982 252corenet_send_all_packets(kernel_t)
a154cd45 253
605ba285
CP
254dev_read_sysfs(kernel_t)
255dev_search_usbfs(kernel_t)
03a6e039
CP
256# devtmpfs handling:
257dev_create_generic_dirs(kernel_t)
258dev_delete_generic_dirs(kernel_t)
2e10172e
DW
259dev_create_all_blk_files(kernel_t)
260dev_delete_all_blk_files(kernel_t)
261dev_create_all_chr_files(kernel_t)
262dev_delete_all_chr_files(kernel_t)
d6e1ef29 263dev_mounton(kernel_t)
72eaebd0 264dev_filetrans_all_named_dev(kernel_t)
2e10172e 265storage_filetrans_all_named_dev(kernel_t)
72eaebd0 266term_filetrans_all_named_dev(kernel_t)
a154cd45 267
e276b8e5 268# Mount root file system. Used when loading a policy
a154cd45
CP
269# from initrd, then mounting the root filesystem
270fs_mount_all_fs(kernel_t)
67b6207a 271fs_unmount_all_fs(kernel_t)
a154cd45 272
605ba285
CP
273selinux_load_policy(kernel_t)
274
3eaa9939
DW
275term_use_all_terms(kernel_t)
276term_use_ptmx(kernel_t)
605ba285 277
c9428d33 278corecmd_exec_shell(kernel_t)
8021cb4f 279corecmd_list_bin(kernel_t)
a154cd45 280# /proc/sys/kernel/modprobe is set to /bin/true if not using modules.
c9428d33 281corecmd_exec_bin(kernel_t)
a154cd45
CP
282
283domain_signal_all_domains(kernel_t)
605ba285 284domain_search_all_domains_state(kernel_t)
588ffaeb 285
c9428d33 286files_list_root(kernel_t)
712566ee 287files_list_etc(kernel_t)
c9428d33
CP
288files_list_home(kernel_t)
289files_read_usr_files(kernel_t)
3eaa9939
DW
290files_manage_mounttab(kernel_t)
291files_manage_generic_spool_dirs(kernel_t)
588ffaeb 292
9779f092 293mcs_process_set_categories(kernel_t)
3eaa9939
DW
294mcs_file_read_all(kernel_t)
295mcs_file_write_all(kernel_t)
5218e768 296mcs_socket_write_all_levels(kernel_t)
9779f092 297
f0574fa9
CP
298mls_process_read_up(kernel_t)
299mls_process_write_down(kernel_t)
9e388253 300mls_file_downgrade(kernel_t)
67b6207a 301mls_file_write_all_levels(kernel_t)
e276b8e5 302mls_file_read_all_levels(kernel_t)
3eaa9939
DW
303mls_socket_write_all_levels(kernel_t)
304mls_fd_share_all_levels(kernel_t)
305
6b19be33
CP
306ifdef(`distro_redhat',`
307 # Bugzilla 222337
308 fs_rw_tmpfs_chr_files(kernel_t)
309')
310
3eaa9939 311
a11cc065
DW
312optional_policy(`
313 apache_filetrans_home_content(kernel_t)
314')
315
a11cc065
DW
316optional_policy(`
317 kerberos_filetrans_home_content(kernel_t)
318')
319
bb7170f6 320optional_policy(`
18cc016f
CP
321 hotplug_search_config(kernel_t)
322')
323
bb7170f6 324optional_policy(`
18cc016f 325 init_sigchld(kernel_t)
f9fad030 326 init_dyntrans(kernel_t)
18cc016f
CP
327')
328
bb7170f6 329optional_policy(`
18cc016f
CP
330 libs_use_ld_so(kernel_t)
331 libs_use_shared_libs(kernel_t)
332')
333
bb7170f6 334optional_policy(`
18cc016f 335 logging_send_syslog_msg(kernel_t)
c4b9f69a
DW
336 logging_manage_generic_logs(kernel_t)
337')
338
a11cc065
DW
339optional_policy(`
340 mta_filetrans_home_content(kernel_t)
341')
342
343optional_policy(`
344 ssh_filetrans_home_content(kernel_t)
345')
346
c4b9f69a
DW
347optional_policy(`
348 userdom_user_home_dir_filetrans_user_home_content(kernel_t, { file dir })
18cc016f
CP
349')
350
bb7170f6 351optional_policy(`
34e722f3
CP
352 nis_use_ypbind(kernel_t)
353')
354
bb7170f6 355optional_policy(`
ff8f0a63 356 # nfs kernel server needs kernel UDP access. It is less risky and painful
43989f82
CP
357 # to just give it everything.
358 allow kernel_t self:tcp_socket create_stream_socket_perms;
03776270 359 allow kernel_t self:udp_socket create_socket_perms;
43989f82 360
e276b8e5 361 # nfs kernel server needs kernel UDP access. It is less risky and painful
43989f82 362 # to just give it everything.
668b3093 363 corenet_udp_sendrecv_generic_if(kernel_t)
c1262146 364 corenet_udp_sendrecv_generic_node(kernel_t)
43989f82 365 corenet_udp_sendrecv_all_ports(kernel_t)
c1262146 366 corenet_udp_bind_generic_node(kernel_t)
b8373ee1 367 corenet_sendrecv_portmap_client_packets(kernel_t)
35a4b349 368 corenet_sendrecv_generic_server_packets(kernel_t)
43989f82 369
ed38ca9f
CP
370 fs_getattr_xattr_fs(kernel_t)
371
43989f82
CP
372 auth_dontaudit_getattr_shadow(kernel_t)
373
374 sysnet_read_config(kernel_t)
375
376 rpc_manage_nfs_ro_content(kernel_t)
377 rpc_manage_nfs_rw_content(kernel_t)
e276b8e5 378 rpc_udp_rw_nfs_sockets(kernel_t)
43989f82
CP
379
380 tunable_policy(`nfs_export_all_ro',`
ed38ca9f
CP
381 fs_getattr_noxattr_fs(kernel_t)
382 fs_list_noxattr_fs(kernel_t)
383 fs_read_noxattr_fs_files(kernel_t)
384 fs_read_noxattr_fs_symlinks(kernel_t)
385
c8edea58 386 files_read_non_security_files(kernel_t)
43989f82
CP
387 ')
388
389 tunable_policy(`nfs_export_all_rw',`
ed38ca9f
CP
390 fs_getattr_noxattr_fs(kernel_t)
391 fs_list_noxattr_fs(kernel_t)
392 fs_read_noxattr_fs_files(kernel_t)
393 fs_read_noxattr_fs_symlinks(kernel_t)
43989f82 394
c8edea58 395 files_manage_non_security_files(kernel_t)
43989f82
CP
396 ')
397')
398
bb7170f6 399optional_policy(`
18cc016f 400 seutil_read_config(kernel_t)
1815bad1 401 seutil_read_bin_policy(kernel_t)
18cc016f
CP
402')
403
350b6ab7 404optional_policy(`
e276b8e5 405 unconfined_domain_noaudit(kernel_t)
350b6ab7
CP
406')
407
a11cc065
DW
408optional_policy(`
409 virt_filetrans_home_content(kernel_t)
410')
411
3eaa9939
DW
412optional_policy(`
413 xserver_xdm_manage_spool(kernel_t)
a11cc065 414 xserver_filetrans_home_content(kernel_t)
3eaa9939
DW
415')
416
588ffaeb
CP
417########################################
418#
419# Unlabeled process local policy
420#
421
bb7170f6 422optional_policy(`
18cc016f
CP
423 # If you load a new policy that removes active domains, processes can
424 # get stuck if you do not allow unlabeled processes to signal init.
425 # If you load an incompatible policy, you should probably reboot,
426 # since you may have compromised system security.
427 init_sigchld(unlabeled_t)
428')
b518fc2e
CP
429
430########################################
431#
432# Rules for unconfined acccess to this module
433#
434
6b19be33 435allow kern_unconfined proc_type:{ dir file lnk_file } *;
b518fc2e 436
8152a788 437allow kern_unconfined sysctl_type:{ dir file } *;
b518fc2e
CP
438
439allow kern_unconfined kernel_t:system *;
440
441allow kern_unconfined unlabeled_t:dir_file_class_set *;
442allow kern_unconfined unlabeled_t:filesystem *;
443allow kern_unconfined unlabeled_t:association *;
c5657a26 444allow kern_unconfined unlabeled_t:packet *;
995bdbb1 445allow kern_unconfined unlabeled_t:process ~{ ptrace transition dyntransition execmem execstack execheap };
995d6fea
DW
446
447gen_require(`
448 bool secure_mode_insmod;
449')
450
451if( ! secure_mode_insmod ) {
452 allow can_load_kernmodule self:capability sys_module;
453 # load_module() calls stop_machine() which
454 # calls sched_setscheduler()
455 allow can_load_kernmodule self:capability sys_nice;
456 kernel_setsched(can_load_kernmodule)
8c7bd1ff 457}
995d6fea 458