How to Configure SELinux on CentOS Stream 10

To configure SELinux on CentOS Stream 10, you need to understand its current state, modes, and how to modify settings based on your requirements. This guide provides step-by-step instructions for managing SELinux, with an example of configuring Apache to work with custom settings under SELinux.

Step 1 : By default, SELinux is enabled on CentOS Stream 10. To check its current status, run:

The output will show the current SELinux mode: Enforcing, Permissive, or Disabled.

Step 2 : For more details about the SELinux configuration, execute:

This command provides information about the current mode, policy version, and active contexts.

Step 3 : Understand SELinux Modes

SELinux operates in three modes:

- Enforcing: SELinux policies are actively enforced. Unauthorized actions are denied.

- Permissive: Policies are not enforced but violations are logged. Useful for debugging.

- Disabled: SELinux is turned off entirely.

Step 4 : If SELinux is not required for your use case, you can disable it temporarily or permanently.

- To disable SELinux temporarily (until the next reboot), run:

Verify the mode using getenforce. It should now display Permissive.

- Permanently Disable SELinux

Edit the SELinux configuration file:

Find the SELINUX= line and change its value to disabled:

For the changes to take effect, reboot the system:

Step 5 : After making changes, verify the status to ensure it reflects your intended configuration:

Step 6 : Basic SELinux Configuration Example. To demonstrate SELinux functionality, we'll configure Apache with a custom port and document root.

- Install the Apache web server:

- Edit the Apache configuration file:

- Add the following line to listen on port 8001:

- Create a new configuration file for Apache and set a custom root folder, e.g., /home/example.com:

- Add the following configuration:

- Create the Folder and an Index File

- Test the Apache configuration:

- If the firewall is enabled, open port 8001:

- Install SELinux management utilities:

- Check the current SELinux ports:

Add the new port 8001 to SELinux:

Verify the addition:

- Restart Apache:

- Match SELinux contexts:

Visit http://<your-domain>:8001 in your browser to confirm the setup.

You've successfully configured SELinux on CentOS Stream 10 and tested its functionality with Apache.