Security Enhanced Linux
Security Enhanced Linux (SELinux) implements Mandatory Access Control in Linux. It adds policy-based restrictions to conventional user and group permissions, allowing administrators to define which resources a service may access and which operations it may perform.
SELinux uses security contexts to identify processes and resources. In enforcing mode, policy decisions restrict access even when ordinary file permissions would permit it. This is useful for containing a compromised application: the process remains subject to the permissions of its SELinux domain.
Security Models
SELinux combines controls over roles, types and, where configured, security levels and categories. A security context has the form user:role:type[:range]: a SELinux user identity, a role, a type and an optional security level or range. The models below follow the role, type and range components:
- Role-Based Access Control (RBAC): associates SELinux users with authorised roles, and roles with the process domains they may use.
- Type Enforcement (TE): uses process domains, resource types and policy rules to determine which operations a process may perform on a resource. It is central to confining both services and user applications.
- Multi-Level Security (MLS): constrains access and information flow using security labels that combine hierarchical sensitivity levels with optional categories. The policy defines the permitted relationships.
- Multi-Category Security (MCS): uses category labels at a single sensitivity level to restrict access between workloads, with applications in container, sandbox and virtual machine isolation.
These controls complement Discretionary Access Control. Their effectiveness depends on policy coverage, correct labels and the selected configuration. Enabling SELinux alone does not establish that every service is confined appropriately.
SELinux Policy Engineering & System Hardening
We help organisations protect Linux systems through SELinux policy engineering, system hardening and secure architecture. By defining the access that applications and services require, we help protect sensitive information and limit the damage a compromised component can cause.
Our services include:
- SELinux policy development and review: Design, implementation and assessment of policies for applications, services and containers, with permissions matched to their responsibilities.
- Linux system hardening: Integration of mandatory access controls with operating system configuration, service isolation and separation of administrative privileges.
- Secure system architecture: Design of resource access and communication paths across services, containers and hosts, with SELinux policy supporting the intended boundaries.
- Deployment and ongoing validation: Integration with configuration management, testing of permitted and prohibited access, and policy maintenance as applications and infrastructure evolve.
In Sovereign Fortress, these principles support the architecture of our High Assurance Web Application and API Protection (WAAP). SELinux addresses the privileges of the platform’s services; application traffic controls address the requests passing through it.
Further reading
The SELinux Project’s SELinux Notebook explains these controls in more detail:
- Role-Based Access Control explains the associations between SELinux users, roles and process domains.
- Type Enforcement explains how process domains, resource types and policy rules define mandatory access permissions.
- Multi-Level and Multi-Category Security explains sensitivity levels, categories and the policy constraints used by MLS and MCS.
- Security Context explains the
user:role:type[:range]format and how its components are used.