Linux systems, as many others in the Unix family, have a well-known lack of access control. There is a small granularity of discretionary access rights, only dividing between read, write and execute rights for file owner, and file group members.
The fact that access control relies on a file owners' discretion already leads to various problems, like the level of trust that has to be put in a user, the vulnerability from malware working on behalf of a user, and so on. Also, there is hardly any logging of user activities possible, making it even harder to detect malicious accesses.
Another problem is the system administrator account “root”. Many system tasks are only allowed to be done by this user, even many network services have to be started or, worse, run as root. The root account, however, has full access to every object on the system. It is easy to understand why so many Unix family systems have been compromised locally or by remote access.
Recent Linux kernels additionally implement a privilege scheme, which splits the root user's special rights into a set of single rights, called capabilities. These rights are given to a process based on the parent process and the executable that is run.
However, while these capabilities can distinguish between some access types, they are mostly ignorant of the object that is to be accessed, for example CAP_DAC_OVERRIDE
(capability to override the filesystem access control) gives full read and write access to all files and devices on the system. As a result, many administration tasks still have to be done with too many access rights. Another disadvantage is the fixed access control model, which cannot easily be changed or replaced.
The RSBAC framework gives detailed access control information, and you can implement almost any access control model in it, e.g. as a runtime registered kernel module. Also, there is a powerful logging system which makes intrusion attempts easily detectable.
RSBAC is a flexible, powerful and fast (low overhead) open source access control framework for current Linux kernels, which has been in stable production use since January 2000 (version 1.0.9a). All development is independent of governments and big companies, and no existing access control code has been reused.
Practically, it allows full, fine grained control over objects (files, processes, users, devices, etc.), memory execution prevention (PaX, NX), real time integrated virus detection, and much more.
First of all, RSBAC is not a security model by itself. It is a framework. This framework allows several different decision modules (interfaced easily with our Runtime Registration Facility: REG). Theses modules are the security models you want to use, to name a few:
To get a list and explanation of every model included in RSBAC, see the Security Models section of the handbook.
The RSBAC framework logic is based on the work done for the Generalized Framework for Access Control (GFAC) by Abrams and LaPadula. All security relevant system calls are extended by security enforcement code. This code calls the central decision component, which in turn calls all active decision modules (the different modules implementing different security models) and generates a combined final decision. This decision is then enforced by the system call extensions.
Decisions are based on the type of access (request type), the access target and on the values of attributes attached to the subject calling and to the target to be accessed. Additional independent attributes can be used by individual modules, e.g. the privacy module (PM). All attributes are stored in fully protected directories, one on each mounted device. Thus changes to attributes require special system calls provided.
As all types of access decisions are based on general decision requests, many different security policies can be implemented as a decision module. Apart from the builtin models, the optional Module Registration (REG) allows for registration of additional, individual decision modules at runtime.
To give an example:
With Role Compatibility (RC) model, you can protect all executables and configuration settings against any user, including root (in case of root exploits). Configuration changes or access to files like '/etc/shadow' might only be done with certain programs that got a specific clearance for that.
Additionally, RC can encapsulate most daemons running on a systems so that they have exactly the type of access to every single object that is absolutely necessary. This way, a buggy daemon cannot harm the system, other daemons, users, or anything it has no specific clearance for.
A general goal of RSBAC design has been to some day reach (obsolete) Orange Book (TCSEC) B1 level. Now it is mostly targeting to be useful as secure and multi-purposed networked system, with special interest in firewalls.
Table of Contents: RSBAC Handbook
Previous chapter: Professional Support
Next: History