Learn AppArmor (Application Armor) from the basics to production-grade: pre-requisites & environment setup, the Immunix/SUSE history & kernel 2.6.36, path-based MAC concepts & the LSM architecture, status modes & loading/unloading profiles, writing basic profiles with file rules, profile tools aa-genprof & aa-logprof, network & capabilities rules, debugging denials & logs, variables, tunables & includes, web & application services, Docker/containerd & Kubernetes containers, desktop & system services, attack surface reduction & policy refinement, securing sensitive data & paths, vulnerability awareness & CVE fixes, auditing & monitoring, the LSM stack & kernel interaction, advanced profile features, policy tooling & automation, AppArmor 5 & the policy transition, scaling & multi-host management, modern features & the roadmap, all the way to the alternative ecosystem & final reflection across a total of 23 episodes.
Before going deeper into AppArmor, there are a few basic Linux skills you must master first: the CLI and shell, systemd service management, user and file permissions, and the concepts of processes, executables, and libraries. This episode guides you through setting up a safe lab environment, installing the userspace tools, and verifying that AppArmor is active.

Tracing why the world needs AppArmor: the limits of DAC, which only restricts based on user and group, the birth of AppArmor from the Immunix project, its adoption by Novell and SUSE, its integration into Linux kernel 2.6.36, and its adoption by Docker, containerd, and ChromeOS.

Understanding the foundations of AppArmor: the concept of per-application profiles that govern file, network, capability, and signal access; the two working modes, enforce and complain; a comparison of AppArmor with SELinux; and the kernel LSM and userspace tools such as apparmor_parser and libapparmor.

Your first hands-on practice with AppArmor: reading full status with aa-status and checking readiness with aa-enabled, understanding the list of active profiles, switching between enforce and complain modes, and loading and unloading profiles with apparmor_parser, including their persistence across reboots.

The practice of writing your first AppArmor profile: the profile syntax with rules inside curly braces, the r w m k file rules, path globbing for directory patterns, deny rules for explicit access bans, and the use of the includes and abstractions shipped by your distro.

Boosting productivity with AppArmor's interactive tools: creating a new profile with aa-genprof directly from a target executable, allowing and denying each request that appears, updating a profile from denial logs with aa-logprof, and verifying the final result.

Restricting processes through two dimensions beyond the filesystem: network rules for controlling TCP, UDP, Unix, and netlink sockets, capability rules for special kernel privileges, and the least privilege principle that unites them.

Reading AppArmor denial traces in syslog and journald, understanding the apparmor DENIED format, running the observe-adjust-reload-verify debug loop, and using aa-notify for real-time denial notifications.

Making profiles portable with built-in variables for the home directory and procfs, understanding the tunables directory, and leveraging built-in and custom abstractions to write shared rules once and reuse them across many profiles.

Applying AppArmor to real services: the built-in profiles for Nginx, Apache, and OpenSSH, customizing web roots and SSL certificates, MySQL and PostgreSQL database profiles, Node and Python runtimes, and the log rotation traps.
