Book Image

SELinux System Administration, Third Edition - Third Edition

By : Sven Vermeulen
Book Image

SELinux System Administration, Third Edition - Third Edition

By: Sven Vermeulen

Overview of this book

Linux is a dominant player in many organizations and in the cloud. Securing the Linux environment is extremely important for any organization, and Security-Enhanced Linux (SELinux) acts as an additional layer to Linux system security. SELinux System Administration covers basic SELinux concepts and shows you how to enhance Linux system protection measures. You will get to grips with SELinux and understand how it is integrated. As you progress, you’ll get hands-on experience of tuning and configuring SELinux and integrating it into day-to-day administration tasks such as user management, network management, and application maintenance. Platforms such as Kubernetes, system services like systemd, and virtualization solutions like libvirt and Xen, all of which offer SELinux-specific controls, will be explained effectively so that you understand how to apply and configure SELinux within these applications. If applications do not exert the expected behavior, you’ll learn how to fine-tune policies to securely host these applications. In case no policies exist, the book will guide you through developing custom policies on your own. By the end of this Linux book, you’ll be able to harden any Linux system using SELinux to suit your needs and fine-tune existing policies and develop custom ones to protect any app and service running on your Linux systems.
Table of Contents (22 chapters)
1
Section 1: Using SELinux
8
Section 2: SELinux-Aware Platforms
14
Section 3: Policy Management

Using MCS and MLS

The most common use case for enabling the sepgsql module is to use Multi-Category Support (MCS) and Multi-Level Security (MLS) support within SELinux to fine-tune access to resources.

Limiting access to columns based on categories

Suppose we use the range of category numbers from c900 to c909 to address specific PII datasets, and grant users access to these categories either by granting them direct access, or by using specific SELinux contexts to consult this data.

Within the database, we could mark the PII-sensitive data with a category number within that range:

db_test=# SECURITY LABEL ON COLUMN tb_users.mail IS 'system_u:object_r:sepgsql_table_t:s0:c903';
db_test=# SECURITY LABEL ON COLUMN tb_users.address IS 'system_u:object_r:sepgsql_table_t:s0:c903';

With the labels applied, a user that does not have access to this category will not be able to access the data:

db_test=> SELECT sepgsql_getcon();
user_u:user_r:user_t:s0...