Actions

AppArmor

From Whonix



AppArmor Icon


Introduction[edit]

According to debian.org: [1]

AppArmor is a Mandatory Access Control framework. When enabled, AppArmor confines programs according to a set of rules that specify what files a given program can access. This proactive approach helps protect the system against both known and unknown vulnerabilities.

Whonix ™ developer madaidan [archive] has noted: [2]

Mandatory access control (MAC) systems give fine-grained control over what programs can access. This means that your browser won't have access to your entire home directory or similarly. The most used MAC systems are SELinux and AppArmor. SELinux is a lot more secure than AppArmor as it is more fine-grained. For example, it's inode-based rather than path-based, allows enforcing significantly stronger restrictions [archive], can filter kernel ioctls [archive] and much more. Unfortunately, this comes at the cost of being much more difficult to use and harder to learn so AppArmor may be preferred by some.

AppArmor provides a number of advantages: [3]

  • It protects the operating system and applications from external or internal threats, including zero-day attacks.
  • "Good behavior" is enforced and it mitigates exploits via unknown application flaws.
  • AppArmor security policies define the system resources that individual applications can access, and with what privileges. For instance:
    • Network access.
    • Raw socket access.
    • Read, write or execute file permissions on specific paths.

Some AppArmor profiles for some default applications such as Tor are enforced by default. To see which, run.

sudo aa-status

More AppArmor profiles are available for testers.

Installation[edit]

Testers only! Testers only!

It is recommended to use the Whonix ™ AppArmor [archive] profiles which are available for various programs that run in both Whonix-Gateway ™ and Whonix-Workstation ™, such as Tor, Tor Browser, Thunderbird and more. The profiles are easy to apply and provide a considerable security benefit.

Qubes Users Note[edit]

Qubes-Whonix ™ Note Qubes-Whonix ™ users require some extra steps to set up AppArmor. Non-Qubes-Whonix ™ users can skip this section. [4] [5]

If you are interested, click on Expand on the right.

The following steps should be completed in dom0 for both whonix-gw-16 and whonix-ws-16 Templates. [6] After these settings are applied to the Whonix ™ templates, the sys-whonix (ProxyVM) and anon-whonix (App Qube) will inherit the AppArmor kernel settings.

It is unnecessary to recreate the sys-whonix and anon-whonix App Qubes to benefit from the new kernel parameters. [7] It is also important to verify AppArmor is active in the sys-whonix and anon-whonix VMs after making these changes.

Whonix-Gateway ™[edit]

1. Open a dom0 terminal.

Qubes App Launcher (blue/grey "Q")System ToolsXfce Terminal

2. List the current kernel parameters.

qvm-prefs -g whonix-gw-16 kernelopts

Qubes R4 and later releases will show.

nopat

3. Keep the existing kernel parameters and add apparmor=1 security=apparmor.

For example.

qvm-prefs -s whonix-gw-16 kernelopts "nopat apparmor=1 security=apparmor"

qvm-prefs -s sys-whonix kernelopts "nopat apparmor=1 security=apparmor"

4. List the current kernel parameters again (hit the up arrow key twice; it is unnecessary to type the command again).

qvm-prefs -g whonix-gw-16 kernelopts

The output should show AppArmor is part of the new kernel parameters. For example.

nopat apparmor=1 security=apparmor

5. Start the sys-whonix ProxyVM and confirm AppArmor is now active.

sudo aa-status --enabled ; echo $?

The output should show.

0

Whonix-Workstation ™[edit]

1. Open a dom0 terminal.

Qubes App Launcher (blue/grey "Q")System ToolsXfce Terminal

2. List the current kernel parameters.

qvm-prefs -g whonix-ws-16 kernelopts

Qubes R4 and later releases will show.

nopat

3. Keep the existing kernel parameters and add apparmor=1 security=apparmor.

For example.

qvm-prefs -s whonix-ws-16 kernelopts "nopat apparmor=1 security=apparmor"

qvm-prefs -s anon-whonix kernelopts "nopat apparmor=1 security=apparmor"

4. List the current kernel parameters again (hit the up arrow key twice; it is unnecessary to type the command again).

qvm-prefs -g whonix-ws-16 kernelopts

The output should show AppArmor is part of the new kernel parameters. For example.

nopat apparmor=1 security=apparmor

5. Start the anon-whonix App Qube and confirm AppArmor is now active.

sudo aa-status --enabled ; echo $?

The output should show.

0

Install all AppArmor Profiles[edit]

Installation[edit]

The easiest method is to install all available AppArmor profiles. This can result in a few profiles being enforced for software that is not installed, but this will not have any adverse impacts.

At time of writing it is not required to change Whonix ™ APT repository.

Install apparmor-utils apparmor-profiles apparmor-profiles-extra apparmor-profiles-kicksecure.

1. Update the package lists.

sudo apt update

2. Upgrade the system.

sudo apt full-upgrade

3. Install the apparmor-utils apparmor-profiles apparmor-profiles-extra apparmor-profiles-kicksecure package.

Using apt command line parameter --no-install-recommends is in most cases optional.

sudo apt install --no-install-recommends apparmor-utils apparmor-profiles apparmor-profiles-extra apparmor-profiles-kicksecure

4. Done.

The procedure of installing apparmor-utils apparmor-profiles apparmor-profiles-extra apparmor-profiles-kicksecure is complete.

Enabling[edit]

Some profiles in the apparmor-profiles and apparmor-profiles-extra packages are not enforced by default because the Debian maintainers do not believe they are mature enough. [8]

apparmor-profiles provides various experimental AppArmor profiles. Do not expect these profiles to work out-of-the-box.

These profiles are not mature enough to be shipped in enforce mode by default on Debian. They are shipped in complain mode so that users can test them, choose which are desired, and help improve them upstream if needed.

Some even more experimental profiles are included in folder /usr/share/apparmor/extra-profiles.

1. Check which profiles are in complain mode (not actually providing protection) and which are in enforce mode (providing actual protection).

Run.

sudo aa-status

2. Locate the profile to enable.

To enable a profile which is currently in complain mode, locate it in folder /etc/apparmor.d.

ls /etc/apparmor.d

3. Enable the profile.

After locating the relevant profile, enable it. For example.

(The following example is already enforced by default if installed as per above.)

sudo aa-enforce /etc/apparmor.d/home.tor-browser.firefox

It might be inadvisable or unsuitable to enable all available AppArmor profiles.

4. Inspect other available AppArmor profiles.

The /usr/share/apparmor/extra-profiles folder has additional AppArmor profiles.

ls /usr/share/apparmor/extra-profiles

5. Copy relevant AppArmor profiles.

If any of these applications are in use, copy the profile over to folder /etc/apparmor.d. Example.

sudo cp /usr/share/apparmor/extra-profiles/bin.netstat /etc/apparmor.d

6. Enable the additional profile(s).

Example.

sudo aa-enforce /etc/apparmor.d/bin.netstat

Install Select AppArmor Profiles[edit]

Click on Expand on the right side.

Update your package lists.

sudo apt update


apparmor-profiles

sudo apt install apparmor-profiles


apparmor-profiles-extra

sudo apt install apparmor-profiles-extra


Profile for Tor Browser. Useful in Whonix-Workstation ™. [9]

sudo apt install apparmor-profile-torbrowser


Profile for the HexChat client. Useful in Whonix-Workstation ™. (Soon to be renamed apparmor-profile-hexchat.)

sudo apt install apparmor-profile-xchat


Profile for the Mozilla Thunderbird E-Mail client. Useful in Whonix-Workstation ™. (Soon to be renamed apparmor-profile-thunderbird.)

sudo apt install apparmor-profile-icedove

Profile Unloading[edit]

The name of the specific profile to unload must be known in advance; refer to the list above.

If it is necessary to disable an AppArmor profile, first list those which are available.

ls /etc/apparmor.d/

Or.

sudo aa-status

Once a profile is loaded in the kernel, it can be easily removed.

sudo aa-disable /etc/apparmor.d/profile-name

This command expects the profile file to exist, so if it has been manually deleted or removed via apt purge, it can only be unloaded by rebooting.

Common Operations[edit]

Maintain Tor Browser Functionality[edit]

Tor Browser upgrades frequently break the Whonix ™ AppArmor profile used to contain it. Even when AppArmor-related fixes are confirmed in forums.whonix.org, most often updated, fixed packages are immediately made available to Whonix ™ stable or even the developer version.

If Tor Browser is non-functional with the available AppArmor profile, follow these steps to rectify the problem.

1. Open a terminal in Whonix-Workstation ™ (whonix-ws-16).

whonix-ws-16Xfce Terminal

2. List the available AppArmor profiles.

ls /etc/apparmor.d/

3. Edit the Tor Browser AppArmor profile.

Note: change the name of the file to match whatever version is installed on the system.

sudoedit /etc/apparmor.d/home.tor-browser.firefox

4. Navigate to the Whonix ™ Github resource for AppArmor.

The latest git commits can be found here [archive].

Select Codeetc/apparmor.dhome.tor-browser.firefox

Select the Raw button on the right-hand side. [10]

Info It is recommended to check the profile does not contain any unexpected content. For greater security, utilize a different viewer and/or retrieve the profile using git and perform git commit gpg verification.

Cut and paste the profile text into the old Tor Browser profile which is open in nano. Save and exit.

5. Enforce the new Tor Browser profile.

In the command below, change the name of the file to match whatever version is installed on the system.

In Whonix-Workstation ™ (whonix-ws-16), run.

sudo aa-enforce /etc/apparmor.d/home.tor-browser.firefox

6. Shutdown Whonix-Workstation ™ (whonix-ws-16).

7. Restart Whonix-Workstation ™ (anon-whonix).

Launch Tor Browser. If everything has been applied correctly, Tor Browser will have full functionality. If the following AppArmor warning appears, it can be safely ignored.

Profile: /etc/apparmor.d/home.tor-browser.firefox Operation: open Name: /dev/ Denied: r Logfile: /var/log/kern.log For more information, please see: https://wiki.ubuntu.com/DebuggingApparmor

8. Manually check AppArmor is correctly running and enforced.

In a terminal, run.

sudo aa-status

The output should show the Tor Browser profile is loaded and in enforce mode.

Correcting Other Whonix ™ AppArmor Profiles[edit]

The same method can be used to resolve other AppArmor problems impacting full functionality of applications in Whonix ™. For instance, the [[systemcheck]] AppArmor profile previously caused continuous "denied" messages in Qubes-Whonix ™. [11] Correcting this issue was quite simple: [12]

  1. Navigate to the raw, updated systemcheck profile [archive].
  2. Replace the existing content in /etc/apparmor.d/usr.bin.systemcheck with the updated github content, in both TemplateVMs whonix-gw-16 and whonix-ws-16.
  3. Shut down both TemplateVMs and any running instances of sys-whonix and anon-whonix.
  4. Restart sys-whonix and anon-whonix.

AppArmor Notifications[edit]

apparmor-info[edit]

apparmor-info [archive] is a helper utility to simplify viewing AppArmor logs. It parses AppArmor logs, hides unnecessary information [13] and removes duplicates.

sudo apparmor-info --boot | grep DENIED

apparmor-notify[edit]

apparmor-notify [archive] is not installed by default. [14] By installing it, desktop notifications would appear concerning AppArmor denied messages, which are stored in file /var/log/kern.log.

To install:

Install apparmor-notify.

1. Update the package lists.

sudo apt update

2. Upgrade the system.

sudo apt full-upgrade

3. Install the apparmor-notify package.

Using apt command line parameter --no-install-recommends is in most cases optional.

sudo apt install --no-install-recommends apparmor-notify

4. Done.

The procedure of installing apparmor-notify is complete.

If apparmor-notify is manually installed, then on occasion an application may be functional but AppArmor "denied" messages constantly appear. Rather than updating the relevant AppArmor profile(s), it is possible to disable notifications instead.

In the offending Whonix ™ (App)VM, launch Xfce Terminal and run.

sudo killall aa-notify

To revert this change, reboot the VM.

Manual Notifications Inspection[edit]

Use of apparmor-info is simpler.

1. Manually inspect relevant logs.

Open file /var/log/kern.log in an editor with root rights.

This box uses sudoedit for better security [archive]. This is an example and other tools can also achieve the same goal. If this example does not work for you or if you are not using Whonix ™, please refer to this link.

sudoedit /var/log/kern.log

2. Show denied AppArmor messages of any age.

Run.

sudo cat /var/log/kern.log | grep DENIED

3. Optional: Keep watching the file as it is appended.

This is useful for reproducing AppArmor denied messages and testing amended profiles.

sudo tail -f /var/log/kern.log | grep --line-buffered DENIED

More Profiles[edit]

It is possible to utilize profiles by other vendors, but this is unsupported by Whonix ™ developers. As a reminder, it is not necessary to install AppArmor profiles for any applications that are unlikely to be used (such as dovecot). Additional options include:

  1. Debian has packages that can be easily installed via the APT package manager [archive].
  2. Ubuntu also provides profiles [archive]. It is not easy to download these as a package to be installed in Debian. Further, the profiles may or may not differ from (or complement) profiles listed earlier.
  3. Advanced users can attempt to create additional, strict AppArmor profiles by executing: [2]

aa-genprof $path_to_program

Then open the program and use it as normal. AppArmor detects which files need to be accessed and adds them to the profile if you choose. This is insufficient for high quality profiles though; refer to the AppArmor documentation [archive] for further details.

Fix Profiles[edit]

1. Put folder /etc/apparmor.d under git version control.

Git is a useful tool to record which files in a folder changed in what way.

Git setup for folder /etc/apparmor.d.

Install git.

1. Update the package lists.

sudo apt update

2. Upgrade the system.

sudo apt full-upgrade

3. Install the git package.

Using apt command line parameter --no-install-recommends is in most cases optional.

sudo apt install --no-install-recommends git

4. Done.

The procedure of installing git is complete.

Change directory to folder /etc/apparmor.d.

cd /etc/apparmor.d

Initialize git in that folder.

sudo git init

Git needs an e-mail address. That e-mail address doesn't need to actually exist. That e-mail address would appear in git commit change logs if that git repository was ever pushed to any remote. If only used locally, the default you@example.com could be kept. Otherwise, the user may change you@example.com to any e-mail address of their choice.

sudo git config --global user.email "you@example.com"

Git needs an name. That name address doesn't need to actually exist. That name would appear in git commit change logs if that git repository was ever pushed to any remote. If only used locally, the default Your Name could be kept. Otherwise, the user may change Your Name to any name of their choice.

sudo git config --global user.name "Your Name"

Add all files in that folder to git.

sudo git add -A

Commit all files to git. [15]

sudo git commit -a -m .

2. Use aa-logprof to correct any AppArmor denied or allowed messages. [16]

sudo aa-logprof

3. Re-run any applications that had any AppArmor issues.

4. Repeat step 2 and 3 until there are no new AppArmor denied or allowed messages.

5. See which files were modified by aa-logprof.

From the same folder.

git status

6. Submit fixes to developers.

Ideally to github or gitlab.

Support[edit]

Development[edit]

Footnotes[edit]

  1. https://wiki.debian.org/AppArmor [archive]
  2. 2.0 2.1 https://madaidans-insecurities.github.io/guides/linux-hardening.html#mac [archive]
  3. http://wiki.apparmor.net/index.php/Main_Page [archive]
  4. Non-Qubes-Whonix ™ means all Whonix ™ platforms except Qubes-Whonix ™. This includes Whonix ™ KVM, Whonix ™ VirtualBox and Whonix ™ Physical Isolation.
  5. Advanced users attempting to enable SE Linux instead would utilize the following parameters in this section:
    selinux=1 security=selinux

  6. Debian has enabled AppArmor by default since the buster release, but Fedora has not. This matters because Qubes is Fedora-based and therefore uses the dom0 (not VM) kernel by default. Therefore this step is still required even though Whonix ™ is based on a recent enough Debian version.
  7. Since Qubes R3.0, App Qubes inherit the kernelopts setting of their Template [archive].
  8. https://packages.debian.org/bullseye/apparmor-profiles [archive]
  9. Tor Browser is installed by tb-updater; the latter is a default Whonix ™ application.
  10. Otherwise essential profile formatting might break or unwanted content (such as line numbers) might be copied inadvertently, leading to a non-functional profile.
  11. In Whonix ™ 13.
  12. This issue was fixed in the Whonix ™ 14 release.
  13. Jul 18 13:50:28 host kernel: [ 117.212029] audit: type=1400 audit(1626616228.947:23):

  14. https://forums.whonix.org/t/whonix-14-debian-stretch-apparmor-related-changes/3563 [archive]
  15. Commits all files to git with commit message . for simplicity. Commit message could also be something else such as {{{sudo_maybe}}} git commit -a -m "initial commit".
  16. https://gitlab.com/apparmor/apparmor/-/issues/200#note_685907209 [archive]


Fosshost is sponsors Kicksecure ™ stage server 100px
Fosshost About Advertisements

Search engines: YaCy | Qwant | ecosia | MetaGer | peekier | Whonix ™ Wiki


Follow: 1024px-Telegram 2019 Logo.svg.png Iconfinder Apple Mail 2697658.png Twitter.png Facebook.png Rss.png Reddit.jpg 200px-Mastodon Logotype (Simple).svg.png

Support: Discourse logo.png

Donate: Donate Bank Wire Paypal Bitcoin accepted here Monero accepted here Contribute

Whonix donate bitcoin.png Monero donate Whonix.png United Federation of Planets 1000px.png

Twitter-share-button.png Facebook-share-button.png Telegram-share.png Iconfinder Apple Mail 2697658.png Reddit.jpg Hacker.news.jpg 200px-Mastodon Logotype (Simple).svg.png

https link onion link Priority Support | Investors | Professional Support

Whonix | © ENCRYPTED SUPPORT LP | Heckert gnu.big.png Freedom Software / Osi standard logo 0.png Open Source (Why?)

The personal opinions of moderators or contributors to the Whonix ™ project do not represent the project as a whole.

By using our website, you acknowledge that you have read, understood and agreed to our Privacy Policy, Cookie Policy, Terms of Service, and E-Sign Consent.