ALS 2000 Abstract
Domain and Type Enforcement for Linux
Serge E. Hallyn and Phil Kearns, College of William and Mary
Abstract
Access control in Linux is currently very limited. This paper details the implementation of Domain and Type
Enforcement (DTE) in Linux, which gives the system administrator a significant advantage in securing his systems. We
control access from domains to types, domain transitions, and signal access between domains, based on a policy which
is read at boot time.
Access control in Linux currently consists of traditional Unix permissions and POSIX capabilities[Caps-faq]. Domain
and Type Enforcement (DTE) has been presented [DTE95,DTE96] as a useful method for enhancing access control.
DTE groups processes into domains, and files into types, and restricts access from domains to types as well as from
domains to other domains. Type access can be any of read, write, execute, create, and directory descend. Domain
access refers the right to send signals as well as that to transition to a new domain. A process belongs to exactly one
domain at any particular time. A process transitions to a new domain by executing a file which has been defined as an
entry point to that domain. The three types of domain transitions are auto, exec, or none. If Domain A has auto access
to domain B, and a process in domain A executes an entry point for domain B, then the process will be automatically
switched to domain B. If domain A has exec access to domain B, then a process running under domain A can choose
whether to switch to domain B on execution of one of B's entry points.
DTE can be considered an abbreviated form of classical capabilities[Dennis66]. In a system based upon classical
capabilities, a process carries with itself a set of access rights to particular objects. At any point, a process can give up,
or reclaim (if permitted) some of its capabilities. POSIX capabilities work similarly, but these capabilities are limited to
a predefined subset of superuser access rights such as the ability to nice a process, boot the system or open a privileged
port. In DTE, a process carries with itself only an indicator of the domain in which it runs, and this
determines the process' access rights. A process can enter a new domain (and hence change its access rights) only upon
file execution.
Trusted Information Systems has used DTE in its proprietary firewalls, but details of its implementation were not
publicly available, and TIS appears to have stopped using DTE altogether. A group at SAIC has recently begun a DTE
for Linux implementation[SAIC-DTE]. Jonathon Tidswell and John Potter[Tidswell97] submitted theoretical work on
extending DTE to allow safe dynamic policy changes, but have attempted no implementation.
Presented here is our prototype implementation of DTE for Linux version 2.3.
- View the full text of this paper in
HTML form, and
PDF form.
- If you need the latest Adobe Acrobat Reader, you can download it from Adobe's site.
- To become a USENIX Member, please see our Membership Information.
|