Learn SELinux (Security-Enhanced Linux) from the basics to production-grade: prerequisites & environment setup, the development history of NSA & Red Hat, the concepts of MAC & Type Enforcement, enforcing/permissive/disabled modes & troubleshooting, labeling & filesystem context, domain types & policy modules, booleans & tunables, audit2allow & local policy generation, users roles & MLS/MCS, web servers & application services, containers Podman/Docker/CRI-O & Kubernetes, NFS Samba & network services, virtualization & custom policies, network port & socket labeling, hardening & least privilege, audit monitoring & incident response, selinuxfs & runtime inspection, advanced policy development with CIL, performance & scalability, sandbox & seunshare, policy-as-code & automation with Ansible, modern userspace 3.11 features, to the alternative ecosystem & final reflection, with 23 episodes total.
Before diving deeper into SELinux, there are several basic Linux skills you must master first: CLI and shell, systemd service management, file permissions, and the dnf package manager. This episode also guides you through setting up a safe lab environment, installing SELinux userspace tools, and verifying that SELinux is active on your system.

Tracing why the world needs SELinux: the limitations of DAC that only restricts based on user and group, the birth of the SELinux project by NSA together with Red Hat, its integration into the Linux 2.6 kernel in 2003, and the modern userspace 3.11 ecosystem used today.

Unpacking the foundation of the SELinux architecture: Type Enforcement that restricts domains against types, the user:role:type:sensitivity security context format, the role of the Access Vector Cache (AVC), and the kernel LSM layer and userspace tools that work together to enforce the policy.

Dissecting the three SELinux modes — enforcing, permissive, and disabled — along with how to switch between modes safely via runtime, kernel parameters, and /etc/selinux/config configuration. Concluded with the practice of reading AVC logs to diagnose denials using ausearch.

Diving into the SELinux labeling system: reading file contexts with ls -Z and stat -Z, changing labels temporarily with chcon, mapping permanent labels with semanage fcontext, restoring default labels with restorecon, and relabeling the filesystem with fixfiles and setfiles.

Reading and understanding the policy from the inside: the structure of Type Enforcement rules such as allow and neverallow, attributes and roles, reading the policy with sesearch and seinfo, and managing policy modules with semodule in the .pp and modern CIL formats.

Getting to know SELinux booleans and tunables as policy behavior switches that can be changed without rewriting modules: how to read status with getsebool, changing temporarily and persistently with setsebool -P, common booleans for web, samba, and FTP, and how to audit changes that have been made.

Mastering the SELinux denial debugging workflow: reading deny logs with ausearch, translating them into policy rules with audit2allow, creating and installing local policy modules, plus best practices so you don't get trapped into generating policies blindly.

Understanding the identity layer in SELinux: the difference between Linux users and SELinux users, login mapping with semanage login, the concept of roles to restrict administrator domain transitions, and the MLS and MCS mechanisms for hierarchical data classification and workload isolation.

Applying SELinux to web servers and application services: the correct file contexts for content, logs, and scripts, booleans for network and database connections, port labeling with semanage port, and multi-instance patterns for MySQL and PostgreSQL.
