xref: /freebsd/share/man/man4/mac.4 (revision fa9896e082a1046ff4fbc75fcba4d18d1f2efc19)
1a5684034SChris Costello.\" Copyright (c) 2003 Networks Associates Technology, Inc.
2a5684034SChris Costello.\" All rights reserved.
3a5684034SChris Costello.\"
4a5684034SChris Costello.\" This software was developed for the FreeBSD Project by Chris Costello
5a5684034SChris Costello.\" at Safeport Network Services and Network Associates Labs, the
6a5684034SChris Costello.\" Security Research Division of Network Associates, Inc. under
7a5684034SChris Costello.\" DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the
8a5684034SChris Costello.\" DARPA CHATS research program.
9a5684034SChris Costello.\"
10a5684034SChris Costello.\" Redistribution and use in source and binary forms, with or without
11a5684034SChris Costello.\" modification, are permitted provided that the following conditions
12a5684034SChris Costello.\" are met:
13a5684034SChris Costello.\" 1. Redistributions of source code must retain the above copyright
14a5684034SChris Costello.\"    notice, this list of conditions and the following disclaimer.
15a5684034SChris Costello.\" 2. Redistributions in binary form must reproduce the above copyright
16a5684034SChris Costello.\"    notice, this list of conditions and the following disclaimer in the
17a5684034SChris Costello.\"    documentation and/or other materials provided with the distribution.
18a5684034SChris Costello.\"
19a5684034SChris Costello.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND
20a5684034SChris Costello.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21a5684034SChris Costello.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22a5684034SChris Costello.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE
23a5684034SChris Costello.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24a5684034SChris Costello.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25a5684034SChris Costello.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26a5684034SChris Costello.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27a5684034SChris Costello.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28a5684034SChris Costello.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29a5684034SChris Costello.\" SUCH DAMAGE.
30a5684034SChris Costello.\"
31*215bab79SShivank Garg.Dd July 25, 2023
32a5684034SChris Costello.Dt MAC 4
33aa12cea2SUlrich Spörlein.Os
34a5684034SChris Costello.Sh NAME
35a5684034SChris Costello.Nm mac
36a5684034SChris Costello.Nd Mandatory Access Control
37a5684034SChris Costello.Sh SYNOPSIS
38a5684034SChris Costello.Cd "options MAC"
39a5684034SChris Costello.Sh DESCRIPTION
40a5684034SChris Costello.Ss Introduction
41a5684034SChris CostelloThe Mandatory Access Control, or MAC, framework allows administrators to
42a5684034SChris Costellofinely control system security by providing for a loadable security policy
43a5684034SChris Costelloarchitecture.
44a5684034SChris CostelloIt is important to note that due to its nature, MAC security policies may
459c73007cSChris Costelloonly restrict access relative to one another and the base system policy;
463cc3bf52SRuslan Ermilovthey cannot override traditional
473cc3bf52SRuslan Ermilov.Ux
48a5684034SChris Costellosecurity provisions such as file permissions and superuser checks.
49a5684034SChris Costello.Pp
50a5684034SChris CostelloCurrently, the following MAC policy modules are shipped with
51a5684034SChris Costello.Fx :
52287d467cSMitchell Horne.Bl -column ".Xr mac_seeotheruids 4" "ddb(4) interface restrictions" ".Em Labeling" "boot only"
53028c285dSChris Costello.It Sy Name Ta Sy Description Ta Sy Labeling Ta Sy "Load time"
54a5684034SChris Costello.It Xr mac_biba 4 Ta "Biba integrity policy" Ta yes Ta boot only
55a5684034SChris Costello.It Xr mac_bsdextended 4 Ta "File system firewall" Ta no Ta any time
56287d467cSMitchell Horne.It Xr mac_ddb 4 Ta "ddb(4) interface restrictions" Ta no Ta any time
57a5684034SChris Costello.It Xr mac_ifoff 4 Ta "Interface silencing" Ta no Ta any time
58*215bab79SShivank Garg.It Xr mac_ipacl 4 Ta "IP Address access control" Ta no Ta any time
59a5684034SChris Costello.It Xr mac_lomac 4 Ta "Low-Watermark MAC policy" Ta yes Ta boot only
60a5684034SChris Costello.It Xr mac_mls 4 Ta "Confidentiality policy" Ta yes Ta boot only
61e2cb7201SMitchell Horne.It Xr mac_ntpd 4 Ta "Non-root NTP Daemon policy" Ta no Ta any time
62a5684034SChris Costello.It Xr mac_partition 4 Ta "Process partition policy" Ta yes Ta any time
630c6e926fSChris Costello.It Xr mac_portacl 4 Ta "Port bind(2) access control" Ta no Ta any time
64e2cb7201SMitchell Horne.It Xr mac_priority 4 Ta "Scheduling priority policy" Ta no Ta any time
65a5684034SChris Costello.It Xr mac_seeotheruids 4 Ta "See-other-UIDs policy" Ta no Ta any time
66a5684034SChris Costello.It Xr mac_test 4 Ta "MAC testing policy" Ta no Ta any time
67a5684034SChris Costello.El
689c73007cSChris Costello.Ss MAC Labels
699c73007cSChris CostelloEach system subject (processes, sockets, etc.) and each system object
709c73007cSChris Costello(file system objects, sockets, etc.) can carry with it a MAC label.
719c73007cSChris CostelloMAC labels contain data in an arbitrary format
729c73007cSChris Costellotaken into consideration in making access control decisions
739c73007cSChris Costellofor a given operation.
749c73007cSChris CostelloMost MAC labels on system subjects and objects
759c73007cSChris Costellocan be modified directly or indirectly by the system
769c73007cSChris Costelloadministrator.
779c73007cSChris CostelloThe format for a given policy's label may vary depending on the type
789c73007cSChris Costelloof object or subject being labeled.
799c73007cSChris CostelloMore information on the format for MAC labels can be found in the
809c73007cSChris Costello.Xr maclabel 7
819c73007cSChris Costelloman page.
82d29d42d8SChris Costello.Ss MAC Support for UFS2 File Systems
839c73007cSChris CostelloBy default, file system enforcement of labeled MAC policies relies on
849c73007cSChris Costelloa single file system label
85d29d42d8SChris Costello(see
86d29d42d8SChris Costello.Sx "MAC Labels" )
87d29d42d8SChris Costelloin order to make access control decisions for all the files in a particular
88d29d42d8SChris Costellofile system.
899c73007cSChris CostelloWith some policies, this configuration may not allow administrators to take
909c73007cSChris Costellofull advantage of features.
919c73007cSChris CostelloIn order to enable support for labeling files on an individual basis
929c73007cSChris Costellofor a particular file system,
93d29d42d8SChris Costellothe
94d29d42d8SChris Costello.Dq multilabel
95d29d42d8SChris Costelloflag must be enabled on the file system.
96d29d42d8SChris CostelloTo set the
97d29d42d8SChris Costello.Dq multilabel
98d29d42d8SChris Costelloflag, drop to single-user mode and unmount the file system,
99d29d42d8SChris Costellothen execute the following command:
100d29d42d8SChris Costello.Pp
1013cc3bf52SRuslan Ermilov.Dl "tunefs -l enable" Ar filesystem
102d29d42d8SChris Costello.Pp
103d29d42d8SChris Costellowhere
1043cc3bf52SRuslan Ermilov.Ar filesystem
105d29d42d8SChris Costellois either the mount point
106d29d42d8SChris Costello(in
107d29d42d8SChris Costello.Xr fstab 5 )
108d29d42d8SChris Costelloor the special file
109d29d42d8SChris Costello(in
110d29d42d8SChris Costello.Pa /dev )
111d29d42d8SChris Costellocorresponding to the file system on which to enable multilabel support.
11258ce77d3SChris Costello.Ss Policy Enforcement
11358ce77d3SChris CostelloPolicy enforcement is divided into the following areas of the system:
11458ce77d3SChris Costello.Bl -ohang
1153cc3bf52SRuslan Ermilov.It Sy "File System"
11658ce77d3SChris CostelloFile system mounts, modifying directories, modifying files, etc.
11758ce77d3SChris Costello.It Sy KLD
11858ce77d3SChris CostelloLoading, unloading, and retrieving statistics on loaded kernel modules
11958ce77d3SChris Costello.It Sy Network
12058ce77d3SChris CostelloNetwork interfaces,
1219c73007cSChris Costello.Xr bpf 4 ,
1229c73007cSChris Costellopacket delivery and transmission,
1239c73007cSChris Costellointerface configuration
1249c73007cSChris Costello.Xr ( ioctl 2 ,
1259c73007cSChris Costello.Xr ifconfig 8 )
12658ce77d3SChris Costello.It Sy Pipes
12758ce77d3SChris CostelloCreation of and operation on
12858ce77d3SChris Costello.Xr pipe 2
12958ce77d3SChris Costelloobjects
13058ce77d3SChris Costello.It Sy Processes
13158ce77d3SChris CostelloDebugging
1323cc3bf52SRuslan Ermilov(e.g.\&
13358ce77d3SChris Costello.Xr ktrace 2 ) ,
13458ce77d3SChris Costelloprocess visibility
1353cc3bf52SRuslan Ermilov.Pq Xr ps 1 ,
13658ce77d3SChris Costelloprocess execution
1373cc3bf52SRuslan Ermilov.Pq Xr execve 2 ,
13858ce77d3SChris Costellosignalling
1393cc3bf52SRuslan Ermilov.Pq Xr kill 2
14058ce77d3SChris Costello.It Sy Sockets
1419c73007cSChris CostelloCreation of and operation on
14258ce77d3SChris Costello.Xr socket 2
14358ce77d3SChris Costelloobjects
14458ce77d3SChris Costello.It Sy System
14558ce77d3SChris CostelloKernel environment
1463cc3bf52SRuslan Ermilov.Pq Xr kenv 1 ,
14758ce77d3SChris Costellosystem accounting
1483cc3bf52SRuslan Ermilov.Pq Xr acct 2 ,
14958ce77d3SChris Costello.Xr reboot 2 ,
15058ce77d3SChris Costello.Xr settimeofday 2 ,
15158ce77d3SChris Costello.Xr swapon 2 ,
15258ce77d3SChris Costello.Xr sysctl 3 ,
1533cc3bf52SRuslan Ermilov.Xr nfsd 8 Ns
1543cc3bf52SRuslan Ermilov-related operations
15558ce77d3SChris Costello.It Sy VM
1563cc3bf52SRuslan Ermilov.Xr mmap 2 Ns
1573cc3bf52SRuslan Ermilov-ed files
15858ce77d3SChris Costello.El
159b9e873d4SChris Costello.Ss Setting MAC Labels
160972f13bcSChris CostelloFrom the command line, each type of system object has its own means for setting
161a5684034SChris Costelloand modifying its MAC policy label.
1629c73007cSChris Costello.Bl -column "user (by login class)" "Xr setfmac 8 , Xr setfsmac 8" -offset indent
163028c285dSChris Costello.It Sy "Subject/Object" Ta Sy "Utility"
1649c73007cSChris Costello.It "File system object" Ta Xr setfmac 8 , Xr setfsmac 8
165a5684034SChris Costello.It "Network interface" Ta Xr ifconfig 8
166a5684034SChris Costello.It "TTY (by login class)" Ta Xr login.conf 5
167a5684034SChris Costello.It "User (by login class)" Ta Xr login.conf 5
168a5684034SChris Costello.El
169a5684034SChris Costello.Pp
170a5684034SChris CostelloAdditionally, the
1719c73007cSChris Costello.Xr su 1
1729c73007cSChris Costelloand
173a5684034SChris Costello.Xr setpmac 8
1749c73007cSChris Costelloutilities can be used to run a command with a different process label than
175a5684034SChris Costellothe shell's current label.
176a5684034SChris Costello.Ss Programming With MAC
177a5684034SChris CostelloMAC security enforcement itself is transparent to application
178a5684034SChris Costelloprograms, with the exception that some programs may need to be aware of
179a5684034SChris Costelloadditional
180a5684034SChris Costello.Xr errno 2
181a5684034SChris Costelloreturns from various system calls.
182a5684034SChris Costello.Pp
183a5684034SChris CostelloThe interface for retrieving, handling, and setting policy labels
184a5684034SChris Costellois documented in the
185a5684034SChris Costello.Xr mac 3
186a5684034SChris Costelloman page.
1879c73007cSChris Costello.\" *** XXX ***
1889c73007cSChris Costello.\" Support for this feature is poor and should not be encouraged.
1899c73007cSChris Costello.\"
1909c73007cSChris Costello.\" .It Va security.mac.mmap_revocation
1919c73007cSChris Costello.\" Revoke
1929c73007cSChris Costello.\" .Xr mmap 2
1933cc3bf52SRuslan Ermilov.\" access to files on subject relabel.
1949c73007cSChris Costello.\" .It Va security.mac.mmap_revocation_via_cow
1959c73007cSChris Costello.\" Revoke
1969c73007cSChris Costello.\" .Xr mmap 2
1979c73007cSChris Costello.\" access to files via copy-on-write semantics;
1989c73007cSChris Costello.\" mapped regions will still appear writable, but will no longer
1993cc3bf52SRuslan Ermilov.\" effect a change on the underlying vnode.
2003cc3bf52SRuslan Ermilov.\" (Default: 0).
201a5684034SChris Costello.Sh SEE ALSO
202a5684034SChris Costello.Xr mac 3 ,
203a5684034SChris Costello.Xr mac_biba 4 ,
204a5684034SChris Costello.Xr mac_bsdextended 4 ,
205287d467cSMitchell Horne.Xr mac_ddb 4 ,
206a5684034SChris Costello.Xr mac_ifoff 4 ,
207*215bab79SShivank Garg.Xr mac_ipacl 4 ,
208a5684034SChris Costello.Xr mac_lomac 4 ,
209a5684034SChris Costello.Xr mac_mls 4 ,
210a5684034SChris Costello.Xr mac_none 4 ,
211e2cb7201SMitchell Horne.Xr mac_ntpd 4 ,
212a5684034SChris Costello.Xr mac_partition 4 ,
2130c6e926fSChris Costello.Xr mac_portacl 4 ,
214e2cb7201SMitchell Horne.Xr mac_priority 4 ,
215a5684034SChris Costello.Xr mac_seeotheruids 4 ,
216e2cb7201SMitchell Horne.Xr mac_stub 4 ,
217a5684034SChris Costello.Xr mac_test 4 ,
2183cc3bf52SRuslan Ermilov.Xr login.conf 5 ,
219a5684034SChris Costello.Xr maclabel 7 ,
220a5684034SChris Costello.Xr getfmac 8 ,
221a5684034SChris Costello.Xr getpmac 8 ,
2223cc3bf52SRuslan Ermilov.Xr setfmac 8 ,
223a5684034SChris Costello.Xr setpmac 8 ,
224a5684034SChris Costello.Xr mac 9
225bc2c2a48SChris Costello.Rs
226bc2c2a48SChris Costello.%B "The FreeBSD Handbook"
227bc2c2a48SChris Costello.%T "Mandatory Access Control"
228c1a14887SCeri Davies.%U https://docs.FreeBSD.org/en/books/handbook/mac/
229bc2c2a48SChris Costello.Re
230a5684034SChris Costello.Sh HISTORY
231a5684034SChris CostelloThe
232a5684034SChris Costello.Nm
233a5684034SChris Costelloimplementation first appeared in
234a5684034SChris Costello.Fx 5.0
2353cc3bf52SRuslan Ermilovand was developed by the
2363cc3bf52SRuslan Ermilov.Tn TrustedBSD
2373cc3bf52SRuslan ErmilovProject.
238a5684034SChris Costello.Sh AUTHORS
239a5684034SChris CostelloThis software was contributed to the
240a5684034SChris Costello.Fx
241a5684034SChris CostelloProject by Network Associates Labs,
242a5684034SChris Costellothe Security Research Division of Network Associates
2435203edcdSRuslan ErmilovInc.
2445203edcdSRuslan Ermilovunder DARPA/SPAWAR contract N66001-01-C-8035
2453cc3bf52SRuslan Ermilov.Pq Dq CBOSS ,
246a5684034SChris Costelloas part of the DARPA CHATS research program.
2479c73007cSChris Costello.Sh BUGS
2489c73007cSChris CostelloWhile the MAC Framework design is intended to support the containment of
2499c73007cSChris Costellothe root user, not all attack channels are currently protected by entry
2509c73007cSChris Costellopoint checks.
2519c73007cSChris CostelloAs such, MAC Framework policies should not be relied on, in isolation,
2529c73007cSChris Costelloto protect against a malicious privileged user.
253