]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - share/man/man4/mac.4
Merge llvm-project release/16.x llvmorg-16.0.3-0-gda3cd333bea5
[FreeBSD/FreeBSD.git] / share / man / man4 / mac.4
1 .\" Copyright (c) 2003 Networks Associates Technology, Inc.
2 .\" All rights reserved.
3 .\"
4 .\" This software was developed for the FreeBSD Project by Chris Costello
5 .\" at Safeport Network Services and Network Associates Labs, the
6 .\" Security Research Division of Network Associates, Inc. under
7 .\" DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the
8 .\" DARPA CHATS research program.
9 .\"
10 .\" Redistribution and use in source and binary forms, with or without
11 .\" modification, are permitted provided that the following conditions
12 .\" are met:
13 .\" 1. Redistributions of source code must retain the above copyright
14 .\"    notice, this list of conditions and the following disclaimer.
15 .\" 2. Redistributions in binary form must reproduce the above copyright
16 .\"    notice, this list of conditions and the following disclaimer in the
17 .\"    documentation and/or other materials provided with the distribution.
18 .\"
19 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
20 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
23 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 .\" SUCH DAMAGE.
30 .\"
31 .\" $FreeBSD$
32 .\"
33 .Dd June 10, 2023
34 .Dt MAC 4
35 .Os
36 .Sh NAME
37 .Nm mac
38 .Nd Mandatory Access Control
39 .Sh SYNOPSIS
40 .Cd "options MAC"
41 .Sh DESCRIPTION
42 .Ss Introduction
43 The Mandatory Access Control, or MAC, framework allows administrators to
44 finely control system security by providing for a loadable security policy
45 architecture.
46 It is important to note that due to its nature, MAC security policies may
47 only restrict access relative to one another and the base system policy;
48 they cannot override traditional
49 .Ux
50 security provisions such as file permissions and superuser checks.
51 .Pp
52 Currently, the following MAC policy modules are shipped with
53 .Fx :
54 .Bl -column ".Xr mac_seeotheruids 4" "ddb(4) interface restrictions" ".Em Labeling" "boot only"
55 .It Sy Name Ta Sy Description Ta Sy Labeling Ta Sy "Load time"
56 .It Xr mac_biba 4 Ta "Biba integrity policy" Ta yes Ta boot only
57 .It Xr mac_bsdextended 4 Ta "File system firewall" Ta no Ta any time
58 .It Xr mac_ddb 4 Ta "ddb(4) interface restrictions" Ta no Ta any time
59 .It Xr mac_ifoff 4 Ta "Interface silencing" Ta no Ta any time
60 .It Xr mac_lomac 4 Ta "Low-Watermark MAC policy" Ta yes Ta boot only
61 .It Xr mac_mls 4 Ta "Confidentiality policy" Ta yes Ta boot only
62 .It Xr mac_ntpd 4 Ta "Non-root NTP Daemon policy" Ta no Ta any time
63 .It Xr mac_partition 4 Ta "Process partition policy" Ta yes Ta any time
64 .It Xr mac_portacl 4 Ta "Port bind(2) access control" Ta no Ta any time
65 .It Xr mac_priority 4 Ta "Scheduling priority policy" Ta no Ta any time
66 .It Xr mac_seeotheruids 4 Ta "See-other-UIDs policy" Ta no Ta any time
67 .It Xr mac_test 4 Ta "MAC testing policy" Ta no Ta any time
68 .El
69 .Ss MAC Labels
70 Each system subject (processes, sockets, etc.) and each system object
71 (file system objects, sockets, etc.) can carry with it a MAC label.
72 MAC labels contain data in an arbitrary format
73 taken into consideration in making access control decisions
74 for a given operation.
75 Most MAC labels on system subjects and objects
76 can be modified directly or indirectly by the system
77 administrator.
78 The format for a given policy's label may vary depending on the type
79 of object or subject being labeled.
80 More information on the format for MAC labels can be found in the
81 .Xr maclabel 7
82 man page.
83 .Ss MAC Support for UFS2 File Systems
84 By default, file system enforcement of labeled MAC policies relies on
85 a single file system label
86 (see
87 .Sx "MAC Labels" )
88 in order to make access control decisions for all the files in a particular
89 file system.
90 With some policies, this configuration may not allow administrators to take
91 full advantage of features.
92 In order to enable support for labeling files on an individual basis
93 for a particular file system,
94 the
95 .Dq multilabel
96 flag must be enabled on the file system.
97 To set the
98 .Dq multilabel
99 flag, drop to single-user mode and unmount the file system,
100 then execute the following command:
101 .Pp
102 .Dl "tunefs -l enable" Ar filesystem
103 .Pp
104 where
105 .Ar filesystem
106 is either the mount point
107 (in
108 .Xr fstab 5 )
109 or the special file
110 (in
111 .Pa /dev )
112 corresponding to the file system on which to enable multilabel support.
113 .Ss Policy Enforcement
114 Policy enforcement is divided into the following areas of the system:
115 .Bl -ohang
116 .It Sy "File System"
117 File system mounts, modifying directories, modifying files, etc.
118 .It Sy KLD
119 Loading, unloading, and retrieving statistics on loaded kernel modules
120 .It Sy Network
121 Network interfaces,
122 .Xr bpf 4 ,
123 packet delivery and transmission,
124 interface configuration
125 .Xr ( ioctl 2 ,
126 .Xr ifconfig 8 )
127 .It Sy Pipes
128 Creation of and operation on
129 .Xr pipe 2
130 objects
131 .It Sy Processes
132 Debugging
133 (e.g.\&
134 .Xr ktrace 2 ) ,
135 process visibility
136 .Pq Xr ps 1 ,
137 process execution
138 .Pq Xr execve 2 ,
139 signalling
140 .Pq Xr kill 2
141 .It Sy Sockets
142 Creation of and operation on
143 .Xr socket 2
144 objects
145 .It Sy System
146 Kernel environment
147 .Pq Xr kenv 1 ,
148 system accounting
149 .Pq Xr acct 2 ,
150 .Xr reboot 2 ,
151 .Xr settimeofday 2 ,
152 .Xr swapon 2 ,
153 .Xr sysctl 3 ,
154 .Xr nfsd 8 Ns
155 -related operations
156 .It Sy VM
157 .Xr mmap 2 Ns
158 -ed files
159 .El
160 .Ss Setting MAC Labels
161 From the command line, each type of system object has its own means for setting
162 and modifying its MAC policy label.
163 .Bl -column "user (by login class)" "Xr setfmac 8 , Xr setfsmac 8" -offset indent
164 .It Sy "Subject/Object" Ta Sy "Utility"
165 .It "File system object" Ta Xr setfmac 8 , Xr setfsmac 8
166 .It "Network interface" Ta Xr ifconfig 8
167 .It "TTY (by login class)" Ta Xr login.conf 5
168 .It "User (by login class)" Ta Xr login.conf 5
169 .El
170 .Pp
171 Additionally, the
172 .Xr su 1
173 and
174 .Xr setpmac 8
175 utilities can be used to run a command with a different process label than
176 the shell's current label.
177 .Ss Programming With MAC
178 MAC security enforcement itself is transparent to application
179 programs, with the exception that some programs may need to be aware of
180 additional
181 .Xr errno 2
182 returns from various system calls.
183 .Pp
184 The interface for retrieving, handling, and setting policy labels
185 is documented in the
186 .Xr mac 3
187 man page.
188 .\" *** XXX ***
189 .\" Support for this feature is poor and should not be encouraged.
190 .\"
191 .\" .It Va security.mac.mmap_revocation
192 .\" Revoke
193 .\" .Xr mmap 2
194 .\" access to files on subject relabel.
195 .\" .It Va security.mac.mmap_revocation_via_cow
196 .\" Revoke
197 .\" .Xr mmap 2
198 .\" access to files via copy-on-write semantics;
199 .\" mapped regions will still appear writable, but will no longer
200 .\" effect a change on the underlying vnode.
201 .\" (Default: 0).
202 .Sh SEE ALSO
203 .Xr mac 3 ,
204 .Xr mac_biba 4 ,
205 .Xr mac_bsdextended 4 ,
206 .Xr mac_ddb 4 ,
207 .Xr mac_ifoff 4 ,
208 .Xr mac_lomac 4 ,
209 .Xr mac_mls 4 ,
210 .Xr mac_none 4 ,
211 .Xr mac_ntpd 4 ,
212 .Xr mac_partition 4 ,
213 .Xr mac_portacl 4 ,
214 .Xr mac_priority 4 ,
215 .Xr mac_seeotheruids 4 ,
216 .Xr mac_stub 4 ,
217 .Xr mac_test 4 ,
218 .Xr login.conf 5 ,
219 .Xr maclabel 7 ,
220 .Xr getfmac 8 ,
221 .Xr getpmac 8 ,
222 .Xr setfmac 8 ,
223 .Xr setpmac 8 ,
224 .Xr mac 9
225 .Rs
226 .%B "The FreeBSD Handbook"
227 .%T "Mandatory Access Control"
228 .%U https://docs.FreeBSD.org/en/books/handbook/mac/
229 .Re
230 .Sh HISTORY
231 The
232 .Nm
233 implementation first appeared in
234 .Fx 5.0
235 and was developed by the
236 .Tn TrustedBSD
237 Project.
238 .Sh AUTHORS
239 This software was contributed to the
240 .Fx
241 Project by Network Associates Labs,
242 the Security Research Division of Network Associates
243 Inc.
244 under DARPA/SPAWAR contract N66001-01-C-8035
245 .Pq Dq CBOSS ,
246 as part of the DARPA CHATS research program.
247 .Sh BUGS
248 While the MAC Framework design is intended to support the containment of
249 the root user, not all attack channels are currently protected by entry
250 point checks.
251 As such, MAC Framework policies should not be relied on, in isolation,
252 to protect against a malicious privileged user.