xref: /freebsd/share/man/man4/mac.4 (revision 0c6e926f494d0f79468dda43286d327d39f221a3)
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.\"
31a5684034SChris Costello.\" $FreeBSD$
32a5684034SChris Costello.Dd JANUARY 8, 2003
33a5684034SChris Costello.Os
34a5684034SChris Costello.Dt MAC 4
35a5684034SChris Costello.Sh NAME
36a5684034SChris Costello.Nm mac
37a5684034SChris Costello.Nd Mandatory Access Control
38a5684034SChris Costello.Sh SYNOPSIS
39a5684034SChris Costello.Cd "options MAC"
40a5684034SChris Costello.Sh DESCRIPTION
41a5684034SChris Costello.Ss Introduction
42a5684034SChris CostelloThe Mandatory Access Control, or MAC, framework allows administrators to
43a5684034SChris Costellofinely control system security by providing for a loadable security policy
44a5684034SChris Costelloarchitecture.
45a5684034SChris CostelloIt is important to note that due to its nature, MAC security policies may
469c73007cSChris Costelloonly restrict access relative to one another and the base system policy;
479c73007cSChris Costellothey cannot override traditional UNIX
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 :
52a5684034SChris Costello.Bl -column ".Xr mac_seeotheruids 4" "low-watermark mac policy " ".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
56a5684034SChris Costello.It Xr mac_ifoff 4 Ta "Interface silencing" Ta no Ta any time
57a5684034SChris Costello.It Xr mac_lomac 4 Ta "Low-Watermark MAC policy" Ta yes Ta boot only
58a5684034SChris Costello.It Xr mac_mls 4 Ta "Confidentiality policy" Ta yes Ta boot only
59a5684034SChris Costello.It Xr mac_none 4 Ta "Sample no-op policy" Ta no Ta any time
60a5684034SChris Costello.It Xr mac_partition 4 Ta "Process partition policy" Ta yes Ta any time
610c6e926fSChris Costello.It Xr mac_portacl 4 Ta "Port bind(2) access control" Ta no Ta any time
62a5684034SChris Costello.It Xr mac_seeotheruids 4 Ta "See-other-UIDs policy" Ta no Ta any time
63a5684034SChris Costello.It Xr mac_test 4 Ta "MAC testing policy" Ta no Ta any time
64a5684034SChris Costello.El
659c73007cSChris Costello.Ss MAC Labels
669c73007cSChris CostelloEach system subject (processes, sockets, etc.) and each system object
679c73007cSChris Costello(file system objects, sockets, etc.) can carry with it a MAC label.
689c73007cSChris CostelloMAC labels contain data in an arbitrary format
699c73007cSChris Costellotaken into consideration in making access control decisions
709c73007cSChris Costellofor a given operation.
719c73007cSChris CostelloMost MAC labels on system subjects and objects
729c73007cSChris Costellocan be modified directly or indirectly by the system
739c73007cSChris Costelloadministrator.
749c73007cSChris CostelloThe format for a given policy's label may vary depending on the type
759c73007cSChris Costelloof object or subject being labeled.
769c73007cSChris CostelloMore information on the format for MAC labels can be found in the
779c73007cSChris Costello.Xr maclabel 7
789c73007cSChris Costelloman page.
79d29d42d8SChris Costello.Ss MAC Support for UFS2 File Systems
809c73007cSChris CostelloBy default, file system enforcement of labeled MAC policies relies on
819c73007cSChris Costelloa single file system label
82d29d42d8SChris Costello(see
83d29d42d8SChris Costello.Sx "MAC Labels" )
84d29d42d8SChris Costelloin order to make access control decisions for all the files in a particular
85d29d42d8SChris Costellofile system.
869c73007cSChris CostelloWith some policies, this configuration may not allow administrators to take
879c73007cSChris Costellofull advantage of features.
889c73007cSChris CostelloIn order to enable support for labeling files on an individual basis
899c73007cSChris Costellofor a particular file system,
90d29d42d8SChris Costellothe
91d29d42d8SChris Costello.Dq multilabel
92d29d42d8SChris Costelloflag must be enabled on the file system.
93d29d42d8SChris CostelloTo set the
94d29d42d8SChris Costello.Dq multilabel
95d29d42d8SChris Costelloflag, drop to single-user mode and unmount the file system,
96d29d42d8SChris Costellothen execute the following command:
97d29d42d8SChris Costello.Pp
98d29d42d8SChris Costello.Dl "tunefs -l enable" Sy filesystem
99d29d42d8SChris Costello.Pp
100d29d42d8SChris Costellowhere
101d29d42d8SChris Costello.Sy filesystem
102d29d42d8SChris Costellois either the mount point
103d29d42d8SChris Costello(in
104d29d42d8SChris Costello.Xr fstab 5 )
105d29d42d8SChris Costelloor the special file
106d29d42d8SChris Costello(in
107d29d42d8SChris Costello.Pa /dev )
108d29d42d8SChris Costellocorresponding to the file system on which to enable multilabel support.
10958ce77d3SChris Costello.Ss Policy Enforcement
11058ce77d3SChris CostelloMAC can be configured to enforce only specific portions of
11158ce77d3SChris Costellopolicies
11258ce77d3SChris Costello(see
11358ce77d3SChris Costello.Sx "Runtime Configuration" ) .
11458ce77d3SChris CostelloPolicy enforcement is divided into the following areas of the system:
11558ce77d3SChris Costello.Bl -ohang
11658ce77d3SChris Costello.It Sy File System
11758ce77d3SChris CostelloFile system mounts, modifying directories, modifying files, etc.
11858ce77d3SChris Costello.It Sy KLD
11958ce77d3SChris CostelloLoading, unloading, and retrieving statistics on loaded kernel modules
12058ce77d3SChris Costello.It Sy Network
12158ce77d3SChris CostelloNetwork interfaces,
1229c73007cSChris Costello.Xr bpf 4 ,
1239c73007cSChris Costellopacket delivery and transmission,
1249c73007cSChris Costellointerface configuration
1259c73007cSChris Costello.Xr ( ioctl 2 ,
1269c73007cSChris Costello.Xr ifconfig 8 )
12758ce77d3SChris Costello.It Sy Pipes
12858ce77d3SChris CostelloCreation of and operation on
12958ce77d3SChris Costello.Xr pipe 2
13058ce77d3SChris Costelloobjects
13158ce77d3SChris Costello.It Sy Processes
13258ce77d3SChris CostelloDebugging
13358ce77d3SChris Costello(e.g.
13458ce77d3SChris Costello.Xr ktrace 2 ) ,
13558ce77d3SChris Costelloprocess visibility
13658ce77d3SChris Costello.Xr ( ps 1 ) ,
13758ce77d3SChris Costelloprocess execution
13858ce77d3SChris Costello.Xr ( execve 2 ) ,
13958ce77d3SChris Costellosignalling
14058ce77d3SChris Costello.Xr ( kill 2 )
14158ce77d3SChris Costello.It Sy Sockets
1429c73007cSChris CostelloCreation of and operation on
14358ce77d3SChris Costello.Xr socket 2
14458ce77d3SChris Costelloobjects
14558ce77d3SChris Costello.It Sy System
14658ce77d3SChris CostelloKernel environment
14758ce77d3SChris Costello.Xr ( kenv 1 ) ,
14858ce77d3SChris Costellosystem accounting
14958ce77d3SChris Costello.Xr ( acct 2 ) ,
15058ce77d3SChris Costello.Xr reboot 2 ,
15158ce77d3SChris Costello.Xr settimeofday 2 ,
15258ce77d3SChris Costello.Xr swapon 2 ,
15358ce77d3SChris Costello.Xr sysctl 3 ,
15458ce77d3SChris Costello.Sm off
15558ce77d3SChris Costello.Xr nfsd 8 -
15658ce77d3SChris Costellorelated
15758ce77d3SChris Costello.Sm on
15858ce77d3SChris Costellooperations
15958ce77d3SChris Costello.It Sy VM
16058ce77d3SChris Costello.Sm off
16158ce77d3SChris Costello.Xr mmap 2 -
16258ce77d3SChris Costelloed
16358ce77d3SChris Costello.Sm on
16458ce77d3SChris Costellofiles
16558ce77d3SChris Costello.El
166b9e873d4SChris Costello.Ss Setting MAC Labels
167972f13bcSChris CostelloFrom the command line, each type of system object has its own means for setting
168a5684034SChris Costelloand modifying its MAC policy label.
1699c73007cSChris Costello.Bl -column "user (by login class)" "Xr setfmac 8 , Xr setfsmac 8" -offset indent
170028c285dSChris Costello.It Sy "Subject/Object" Ta Sy "Utility"
1719c73007cSChris Costello.It "File system object" Ta Xr setfmac 8 , Xr setfsmac 8
172a5684034SChris Costello.It "Network interface" Ta Xr ifconfig 8
173a5684034SChris Costello.It "TTY (by login class)" Ta Xr login.conf 5
174a5684034SChris Costello.It "User (by login class)" Ta Xr login.conf 5
175a5684034SChris Costello.El
176a5684034SChris Costello.Pp
177a5684034SChris CostelloAdditionally, the
1789c73007cSChris Costello.Xr su 1
1799c73007cSChris Costelloand
180a5684034SChris Costello.Xr setpmac 8
1819c73007cSChris Costelloutilities can be used to run a command with a different process label than
182a5684034SChris Costellothe shell's current label.
183a5684034SChris Costello.Ss Programming With MAC
184a5684034SChris CostelloMAC security enforcement itself is transparent to application
185a5684034SChris Costelloprograms, with the exception that some programs may need to be aware of
186a5684034SChris Costelloadditional
187a5684034SChris Costello.Xr errno 2
188a5684034SChris Costelloreturns from various system calls.
189a5684034SChris Costello.Pp
190a5684034SChris CostelloThe interface for retrieving, handling, and setting policy labels
191a5684034SChris Costellois documented in the
192a5684034SChris Costello.Xr mac 3
193a5684034SChris Costelloman page.
19458ce77d3SChris Costello.Ss Runtime Configuration
19558ce77d3SChris CostelloThe following
19658ce77d3SChris Costello.Xr sysctl 8
19758ce77d3SChris CostelloMIBs are available for fine-tuning the enforcement of MAC policies.
19858ce77d3SChris CostelloUnless specifically noted, all MIBs default to
19958ce77d3SChris Costello.Li 1
20058ce77d3SChris Costello(that is, all areas are enforced by default):
2019c73007cSChris Costello.Bl -tag -width "security.mac.enforce_network"
20258ce77d3SChris Costello.It Va security.mac.enforce_fs
20358ce77d3SChris CostelloEnforce MAC policies for file system accesses
20458ce77d3SChris Costello.It Va security.mac.enforce_kld
20558ce77d3SChris CostelloEnforce MAC policies on
20658ce77d3SChris Costello.Xr kld 4
20758ce77d3SChris Costello.It Va security.mac.enforce_network
20858ce77d3SChris CostelloEnforce MAC policies on network interfaces
20958ce77d3SChris Costello.It Va security.mac.enforce_pipe
21058ce77d3SChris CostelloEnforce MAC policies on pipes
21158ce77d3SChris Costello.It Va security.mac.enforce_process
21258ce77d3SChris CostelloEnforce MAC policies between system processes
21358ce77d3SChris Costello(e.g.
21458ce77d3SChris Costello.Xr ps 1 ,
21558ce77d3SChris Costello.Xr ktrace 2 )
21658ce77d3SChris Costello.It Va security.mac.enforce_socket
21758ce77d3SChris CostelloEnforce MAC policies on sockets
21858ce77d3SChris Costello.It Va security.mac.enforce_system
21958ce77d3SChris CostelloEnforce MAC policies on system-related items
22058ce77d3SChris Costello(e.g.
22158ce77d3SChris Costello.Xr kenv 1 ,
22258ce77d3SChris Costello.Xr acct 2 ,
22358ce77d3SChris Costello.Xr reboot 2 )
22458ce77d3SChris Costello.It Va security.mac.enforce_vm
22558ce77d3SChris CostelloEnforce MAC policies on
22658ce77d3SChris Costello.Xr mmap 2
22758ce77d3SChris Costelloand
22858ce77d3SChris Costello.Xr mprotect 2
2299c73007cSChris Costello.\" *** XXX ***
2309c73007cSChris Costello.\" Support for this feature is poor and should not be encouraged.
2319c73007cSChris Costello.\"
2329c73007cSChris Costello.\" .It Va security.mac.mmap_revocation
2339c73007cSChris Costello.\" Revoke
2349c73007cSChris Costello.\" .Xr mmap 2
2359c73007cSChris Costello.\" access to files on subject relabel
2369c73007cSChris Costello.\" .It Va security.mac.mmap_revocation_via_cow
2379c73007cSChris Costello.\" Revoke
2389c73007cSChris Costello.\" .Xr mmap 2
2399c73007cSChris Costello.\" access to files via copy-on-write semantics;
2409c73007cSChris Costello.\" mapped regions will still appear writable, but will no longer
2419c73007cSChris Costello.\" effect a change on the underlying vnode
2429c73007cSChris Costello.\" (Default: 0)
24358ce77d3SChris Costello.El
244a5684034SChris Costello.Sh SEE ALSO
245a5684034SChris Costello.Xr mac 3 ,
246a5684034SChris Costello.Xr mac_biba 4 ,
247a5684034SChris Costello.Xr mac_bsdextended 4 ,
248a5684034SChris Costello.Xr mac_ifoff 4 ,
249a5684034SChris Costello.Xr mac_lomac 4 ,
250a5684034SChris Costello.Xr mac_mls 4 ,
251a5684034SChris Costello.Xr mac_none 4 ,
252a5684034SChris Costello.Xr mac_partition 4 ,
2530c6e926fSChris Costello.Xr mac_portacl 4 ,
254a5684034SChris Costello.Xr mac_seeotheruids 4 ,
255a5684034SChris Costello.Xr mac_test 4 ,
256a5684034SChris Costello.Xr login.5 ,
257a5684034SChris Costello.Xr maclabel 7 ,
258a5684034SChris Costello.Xr getfmac 8 ,
259a5684034SChris Costello.Xr setfmac 8 ,
260a5684034SChris Costello.Xr getpmac 8 ,
261a5684034SChris Costello.Xr setpmac 8 ,
262a5684034SChris Costello.Xr mac 9
263bc2c2a48SChris Costello.Rs
264bc2c2a48SChris Costello.%B "The FreeBSD Handbook"
265bc2c2a48SChris Costello.%T "Mandatory Access Control"
266bc2c2a48SChris Costello.%O http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/mac.html
267bc2c2a48SChris Costello.Re
268a5684034SChris Costello.Sh HISTORY
269a5684034SChris CostelloThe
270a5684034SChris Costello.Nm
271a5684034SChris Costelloimplementation first appeared in
272a5684034SChris Costello.Fx 5.0
273a5684034SChris Costelloand was developed by the TrustedBSD Project.
274a5684034SChris Costello.Sh AUTHORS
275a5684034SChris CostelloThis software was contributed to the
276a5684034SChris Costello.Fx
277a5684034SChris CostelloProject by Network Associates Labs,
278a5684034SChris Costellothe Security Research Division of Network Associates
279a5684034SChris CostelloInc. under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"),
280a5684034SChris Costelloas part of the DARPA CHATS research program.
2819c73007cSChris Costello.Sh BUGS
2829c73007cSChris CostelloSee
2839c73007cSChris Costello.Xr mac 9
2849c73007cSChris Costelloconcerning appropriateness for production use.
2859c73007cSChris CostelloThe TrustedBSD MAC Framework is considered experimental in
2869c73007cSChris Costello.Fx .
2879c73007cSChris Costello.Pp
2889c73007cSChris CostelloWhile the MAC Framework design is intended to support the containment of
2899c73007cSChris Costellothe root user, not all attack channels are currently protected by entry
2909c73007cSChris Costellopoint checks.
2919c73007cSChris CostelloAs such, MAC Framework policies should not be relied on, in isolation,
2929c73007cSChris Costelloto protect against a malicious privileged user.
293