Differences between revisions 63 and 64
Revision 63 as of 2020-01-31 20:30:42
Size: 5026
Editor: nodiscc
Comment: formatting
Revision 64 as of 2020-01-31 20:36:26
Size: 5148
Editor: nodiscc
Comment: add note about disabling apparmor, move info from AppArmor/Debug
Deletions are marked like this. Additions are marked like this.
Line 109: Line 109:
For more detailed instructions, please read the dedicated documentation for [[AppArmor/Debug|debugging AppArmor]].
Line 133: Line 131:
=== Edit AppArmor profiles ===

Profiles can be edited with a [[TextEditor|text editor]]. Once a profile has been edited, reload the profile in the kernel with [[DebianMan:8/apparmor_parser|apparmor_parser(8)]]:


{{{
$ sudo apparmor_parser -r /etc/apparmor.d/usr.bin.example
}}}

Restart the application and reverify logs.
Line 135: Line 144:
Disable an individual profiles:

{{{
$ sudo aa-disable /etc/apparmor.d/usr.bin.example
}}}

Completely disable AppArmor on your system:
!AppArmor is a security mechanism and disabling it is not recommended. If you really need to disable !AppArmor on your system:
Line 152: Line 155:
== See also ==

 * [[DebianMan:8/apparmor_parser|apparmor_parser(8)]] manpage

Translation(s): none

This page describes how to use AppArmor on Debian.


Install AppArmor

AppArmor is available in Debian since Debian 7 "Wheezy".

Install AppArmor userspace tools:

Enable AppArmor

If you are using Debian 10 "Buster" or newer, AppArmor is enabled by default so you can skip this step.

The AppArmor Linux Security Modules (LSM) must be enabled from the linux kernel command line in the bootloader:

$ sudo mkdir -p /etc/default/grub.d
$ echo 'GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT apparmor=1 security=apparmor"' \
  | sudo tee /etc/default/grub.d/apparmor.cfg
$ sudo update-grub
$ sudo reboot

Inspect the current state

AppArmor profiles can be set to different modes:

  • complain mode: violations to the policy will only be logged

  • enforce mode: operations that violate the policy will be blocked.

Not that deny rules in profiles are enforced/blocked even in complain mode.

Find out if AppArmor is enabled (returns Y if true):

$ cat /sys/module/apparmor/parameters/enabled

List all loaded AppArmor profiles for applications and processes and detail their status (enforced, complain, unconfined):

$ sudo aa-status

List running executables which are currently confined by an AppArmor profile:

$ ps auxZ | grep -v '^unconfined'

List of processes with tcp or udp ports that do not have AppArmor profiles loaded:

$ sudo aa-unconfined
$ sudo aa-unconfined --paranoid

Find / install more profiles

AppArmor profiles live in /etc/apparmor.d/. Some packages automatically install their own profiles in this directory. To find more profiles:

Enabling profiles

Debian packages that install profiles to /etc/apparmor.d/ automatically enable them (complain mode). Other profiles need to be copied to this directory and manually set to complain or enforce mode.

For example to install an "extra" profile from the /usr/share/apparmor/extra-profiles/ directory provided by apparmor-profiles and set it to complain mode:

# list available profiles
$ ls /usr/share/apparmor/extra-profiles/

# install the profile
$ sudo cp /usr/share/apparmor/extra-profiles/usr.bin.example /etc/apparmor.d/

# set the profile to complain mode
sudo aa-complain /etc/apparmor.d/usr.bin.example

To set a profile to enforce mode, use aa-enforce instead of aa-complain. Beware though: many profiles are not up-to-date and will break functionality in enforce mode, be ready to debug!

Debug

AppArmor logs can be found in the systemd journal, in /var/log/syslog and /var/log/kern.log (and /var/log/audit.log when auditd is installed).

Diagnose if a bug might have been caused by AppArmor

Look in these logs for:

  • ALLOWED (logged when a profile in complain mode violates the policy)

  • DENIED (logged when a profile in enforce mode actually blocks an operation)

The full log message should provide more information on what exact access has been denied. You can use this to tweak configs before turning them on in enforce mode.

Sometimes, it's useful to disable a profile and to test again if the bug persists:

# disable a profile temporarily
$ sudo aa-disable /etc/apparmor.d/usr.bin.example
# after testing, re-enable it
$ sudo aa-complain /etc/apparmor.d/usr.bin.example
# or
$ sudo aa-complain /etc/apparmor.d/usr.bin.example

Edit AppArmor profiles

Profiles can be edited with a text editor. Once a profile has been edited, reload the profile in the kernel with apparmor_parser(8):

$ sudo apparmor_parser -r /etc/apparmor.d/usr.bin.example

Restart the application and reverify logs.

Disable AppArmor

AppArmor is a security mechanism and disabling it is not recommended. If you really need to disable AppArmor on your system:

$ sudo mkdir -p /etc/default/grub.d
$ echo 'GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT apparmor=0"' \
  | sudo tee /etc/default/grub.d/apparmor.cfg
$ sudo update-grub
$ sudo reboot


CategorySystemSecurity