Essential Eight on Linux, Part 1 of 8: Application Control on Ubuntu 26.04 LTS Source
Markdown source
1---2title: "Essential Eight on Linux, Part 1 of 8: Application Control on Ubuntu 26.04 LTS"3date: "2026-04-26"4tags: ["essential-eight", "asd", "ism", "ubuntu", "ubuntu-pro", "landscape", "apparmor", "linux", "security"]5author: "Gavin Jackson"6excerpt: "Part 1 of an 8-part series on implementing the Essential Eight on Ubuntu 26.04 LTS, covering application control with AppArmor, snap confinement, signed repositories, and Canonical tooling."7---89# Essential Eight on Linux, Part 1 of 8: Application Control on Ubuntu 26.04 LTS1011Application control is one of the harder Essential Eight mitigations to translate cleanly into Linux terms.1213On Windows, most people immediately think of AppLocker or WDAC. On Ubuntu 26.04 LTS, the control exists, but you build it differently. The reference implementation is less about one giant allowlisting product and more about combining package trust, confinement, service hardening, and tight control over where code can execute.1415For Ubuntu fleets, that means **AppArmor**, **snap confinement**, **signed APT repositories**, **restricted administrative access**, and **Landscape** to keep the configuration consistent.1617## What ASD is trying to achieve1819The Essential Eight intent is straightforward: only approved code should run, especially on workstations and internet-facing systems.2021For Linux, that usually breaks into four practical questions:22231. Where can software come from?242. Which users can install or execute it?253. What can the application touch once it starts?264. How do you prove the policy is being enforced at scale?2728## Ubuntu 26.04 LTS reference implementation2930### Resolute Raccoon highlights3132Ubuntu 26.04 LTS "Resolute Raccoon" improves the desktop permission story in ways that help this mitigation:3334- improved application permission prompting through the Security Center35- better snap and XDG Desktop Portal permission handling36- a more unified app management experience with better Debian package support3738Those changes do not replace AppArmor or repository control, but they do make user-space permission boundaries more visible and manageable than they were on Ubuntu 24.04 LTS.3940### 1. Treat signed repositories as the first allowlist4142If a package is not coming from:4344- Ubuntu official repositories45- an approved internal mirror46- Canonical-delivered snaps47- a tightly governed third-party repository4849then it should be considered untrusted by default.5051That sounds basic, but it is the foundation of application control on Linux. APT already gives you package signing and repository trust. The security work is making sure engineers do not bypass it with random shell installers, curl-pipes, or ad hoc binaries in home directories.5253### 2. Use AppArmor as the main execution boundary5455Ubuntu 26.04 ships with AppArmor enabled, and it is the most important native application control primitive in the platform.5657AppArmor does not behave like a classic hash-based allowlisting tool. Instead, it confines applications with profiles that define what files, sockets, capabilities, mounts, and execution transitions are permitted. In practice that means:5859- browsers can be constrained60- network-facing daemons can be narrowed61- admin tools can be profiled more aggressively62- custom in-house applications can be forced into known-good access paths6364For higher-risk workloads, use:6566- `apparmor-profiles`67- `apparmor-profiles-extra`68- custom local profiles under `/etc/apparmor.d/`6970If you are running internally developed software, writing and maintaining an AppArmor profile for that software is one of the best security returns you can get on Ubuntu.7172### 3. Prefer confined packaging formats where they fit7374Ubuntu's default Firefox delivery model is a good example here. Firefox is delivered as a **snap**, which means it runs with confinement and a cleaner update path than a random manually installed browser tarball.7576Snaps are not a full replacement for application control, but they do help by:7778- reducing arbitrary install paths79- centralising update channels80- applying confinement around the application81- making drift more obvious8283For desktop fleets, preferring snap or repo-managed applications over hand-installed binaries is a very practical control.8485### 4. Remove common Linux execution escape hatches8687If you want application control on Linux to be real, you need to close the usual "but it still runs from here" loopholes:8889- mount `/tmp` and `/var/tmp` with `noexec` where application compatibility allows90- use `nodev` and `nosuid` on temporary and user-writable filesystems91- restrict interpreters on systems that do not need them92- disable unneeded compiler toolchains on user workstations93- prevent users from writing executables into globally reachable paths94- keep `sudo` tightly scoped so package installation is not broadly available9596This is not glamorous, but it is how Linux application control becomes operational instead of theoretical.9798### 5. Use Landscape to enforce consistency99100Landscape is not an allowlisting engine by itself, but it is useful for the control plane around application control:101102- package inventory103- repository governance104- script execution under approval105- profile-based rollout106- compliance visibility across fleets107108If AppArmor is the technical enforcement layer, Landscape is the operational layer that helps stop exceptions from multiplying.109110## ISM control mapping111112The October 2024 Essential Eight to ISM mapping ties this mitigation to the following controls:113114| ISM control | Linux implementation on Ubuntu 26.04 LTS |115|-------------|-------------------------------------------|116| `ISM-0843` | Use an application control capability for workstations via AppArmor, package trust, and constrained install paths. |117| `ISM-1490` | Extend application control to internet-facing servers with mandatory AppArmor profiles and minimal package sets. |118| `ISM-1870` | Ensure only approved executables, scripts, and installers are allowed on workstations through repository policy and privilege restrictions. |119| `ISM-1871` | Apply the same approved-software model to internet-facing servers, especially reverse proxies, web stacks, and bastions. |120| `ISM-1657` | Validate and maintain application control rulesets, including approved package sources, snap channels, and AppArmor policies. |121| `ISM-1544` | Constrain execution of application control bypass mechanisms by limiting administrative changes and interpreter access. |122| `ISM-1582` | Prevent execution from user-writable locations where possible with `noexec`, packaging standards, and profile enforcement. |123| `ISM-1660` | Review and update application control configurations as the environment changes, especially after new software onboarding. |124125## Where Linux does not map neatly126127Ubuntu still does not give you a perfect built-in equivalent to a centrally managed, deny-by-default enterprise allowlisting platform for every binary on every endpoint.128129That is the real gap.130131AppArmor is excellent at confinement, but it is not the same thing as a mature enterprise product that can answer, at a glance, "show me every unapproved executable seen in the fleet this week."132133## Commercial alternatives134135If you need a more opinionated commercial control on Linux, these are worth evaluating:136137- **Airlock Digital** for cross-platform allowlisting and central policy management138- **Canonical Ubuntu Pro + Landscape** where the real problem is package governance and fleet consistency more than binary reputation139- **Teleport** as a supporting control for privileged access to managed Linux targets, so users cannot casually introduce software under standing admin rights140141Teleport is not an application control product, but it materially reduces the number of people who can bypass one.142143## Practical mitigations when full allowlisting is not possible144145If you cannot deploy a commercial Linux allowlisting platform, I would still aim for this stack:146147- Ubuntu Pro and Landscape for package governance148- AppArmor everywhere, with custom profiles for business-critical apps149- snap confinement where sensible150- `noexec,nodev,nosuid` on temporary and user-writable mounts151- no local admin for standard users152- package installation only from approved signed repositories153- audit logging for package changes, `sudo`, and profile violations154155That combination is not as neat as WDAC, but on Ubuntu 26.04 it is a credible and defensible implementation of the Essential Eight intent.156157## The bottom line158159Application control on Linux is absolutely possible, but it looks different.160161On Ubuntu 26.04 LTS, the strongest pattern is to treat **repository trust as the software allowlist**, **AppArmor as the execution boundary**, and **Landscape as the fleet governance layer**. Resolute Raccoon's improved permission prompting and snap portal controls make the desktop side of that story a bit stronger as well.162163## References164165- [ASD Essential Eight maturity model and ISM mapping (October 2024)](https://www.cyber.gov.au/business-government/asds-cyber-security-frameworks/essential-eight/essential-eight-maturity-model-and-ism-mapping)166- [Ubuntu security overview](https://ubuntu.com/security)167- [AppArmor on Ubuntu](https://ubuntu.com/server/docs/security-apparmor)168- [Landscape documentation](https://documentation.ubuntu.com/landscape/)169- [Ubuntu Pro](https://ubuntu.com/pro)170