AppArmor: Difference between revisions
(persisting syslinux boot parameters between kernel updates) |
m (Use path template. Remove HTML fluff.) |
||
Line 7: | Line 7: | ||
{{Cmd|# apk add {{Pkg|apparmor}}}} | {{Cmd|# apk add {{Pkg|apparmor}}}} | ||
You should also install <code>apparmor-utils</code> if you want to use the <code>aa</code> command to interact with AppArmor. | You should also install <code>apparmor-utils</code> if you want to use the <code>aa</code> command to interact with AppArmor. | ||
Line 13: | Line 13: | ||
{{Cmd|# apk add {{Pkg|apparmor-utils}}}} | {{Cmd|# apk add {{Pkg|apparmor-utils}}}} | ||
==Setup== | ==Setup== | ||
Line 19: | Line 19: | ||
Run the command {{Cmd|# cat /sys/kernel/security/lsm}} to see what linux security modules are currently setup. | Run the command {{Cmd|# cat /sys/kernel/security/lsm}} to see what linux security modules are currently setup. | ||
=== With SYSLINUX === | === With SYSLINUX === | ||
Use a text editor of your choice (preferably a TUI based one since some GUI setups don't work with privilege escalation, unless you use sudo -e) to edit | Use a text editor of your choice (preferably a TUI based one since some GUI setups don't work with privilege escalation, unless you use sudo -e) to edit {{path|/boot/extlinux.conf}} such that the <code>'''APPEND'''</code> line ends with the following: | ||
<pre> | <pre> | ||
Line 31: | Line 31: | ||
Note that because you're including lsm in this .conf file you are overriding the default lsm. Thus, you should include any lsm that you saw previously running in the above cat command. Additionally, lsm initializes these modules in order, so their position is important in regards to major/minor modules. Ensure that apparmor is placed first among major modules. Note for convenience that yama, capability, and landlock, which come with Alpine Linux, are not major modules, and apparmor can be placed after them. The module called capability is automatically included and does not need to be written in. | Note that because you're including lsm in this .conf file you are overriding the default lsm. Thus, you should include any lsm that you saw previously running in the above cat command. Additionally, lsm initializes these modules in order, so their position is important in regards to major/minor modules. Ensure that apparmor is placed first among major modules. Note for convenience that yama, capability, and landlock, which come with Alpine Linux, are not major modules, and apparmor can be placed after them. The module called capability is automatically included and does not need to be written in. | ||
To persist your changes between kernel updates (which overwrite | To persist your changes between kernel updates (which overwrite {{path|/boot/extlinux.conf}}), edit {{path|/etc/update-extlinux.conf}}, and append your <code>lsm=landlock,yama,apparmor</code> parameter to <code>default_kernel_opts</code>. | ||
=== With GRUB === | === With GRUB === | ||
Add the following at the end of the value for key <code>'''GRUB_CMDLINE_LINUX_DEFAULT'''</code> to | Add the following at the end of the value for key <code>'''GRUB_CMDLINE_LINUX_DEFAULT'''</code> to {{path|/etc/default/grub}}: | ||
<pre> | <pre> | ||
Line 45: | Line 45: | ||
{{Cmd|# grub-mkconfig -o /boot/grub/grub.cfg}} | {{Cmd|# grub-mkconfig -o /boot/grub/grub.cfg}} | ||
== Running == | == Running == | ||
Line 95: | Line 95: | ||
{{Cmd|# rc-update add auditd}} | {{Cmd|# rc-update add auditd}} | ||
Now you can generate your own profiles with | Now you can generate your own profiles with | ||
Line 105: | Line 105: | ||
{{Cmd|# aa-genprof /path/to/binary}} | {{Cmd|# aa-genprof /path/to/binary}} | ||
Note that for this to work you'll probably need to set a more verbose [https://linuxconfig.org/introduction-to-the-linux-kernel-log-levels kernel log level]. For improved security, set it back to a higher level afterwards. | Note that for this to work you'll probably need to set a more verbose [https://linuxconfig.org/introduction-to-the-linux-kernel-log-levels kernel log level]. For improved security, set it back to a higher level afterwards. | ||
Line 120: | Line 120: | ||
== Troubleshooting == | == Troubleshooting == | ||
If you notice a bunch of AppArmor errors on boot, try running <code>aa-status</code> and <code>aa-enabled</code> in the terminal. If the output mentions AppArmor being disabled at boot, re-open your | If you notice a bunch of AppArmor errors on boot, try running <code>aa-status</code> and <code>aa-enabled</code> in the terminal. If the output mentions AppArmor being disabled at boot, re-open your {{path|/boot/extlinux.conf}} file and make sure the '''APPEND''' line still ends with <code>lsm=landlock,yama,apparmor</code> | ||
Latest revision as of 02:28, 21 December 2024
AppArmor is a kernel security module that restricts individual programs' capabilities. This can allow administrators to prevent programs accessing system resources in malicious ways according to per-applications specifications. AppArmor works by following profiles, which dictate what each application is and is not allowed to do.
Installation
# apk add apparmor
You should also install apparmor-utils
if you want to use the aa
command to interact with AppArmor.
# apk add apparmor-utils
Setup
Run the command
# cat /sys/kernel/security/lsm
to see what linux security modules are currently setup.
With SYSLINUX
Use a text editor of your choice (preferably a TUI based one since some GUI setups don't work with privilege escalation, unless you use sudo -e) to edit /boot/extlinux.conf such that the APPEND
line ends with the following:
lsm=landlock,yama,apparmor
Note that because you're including lsm in this .conf file you are overriding the default lsm. Thus, you should include any lsm that you saw previously running in the above cat command. Additionally, lsm initializes these modules in order, so their position is important in regards to major/minor modules. Ensure that apparmor is placed first among major modules. Note for convenience that yama, capability, and landlock, which come with Alpine Linux, are not major modules, and apparmor can be placed after them. The module called capability is automatically included and does not need to be written in.
To persist your changes between kernel updates (which overwrite /boot/extlinux.conf), edit /etc/update-extlinux.conf, and append your lsm=landlock,yama,apparmor
parameter to default_kernel_opts
.
With GRUB
Add the following at the end of the value for key GRUB_CMDLINE_LINUX_DEFAULT
to /etc/default/grub:
apparmor=1 security=apparmor
Then apply with:
# grub-mkconfig -o /boot/grub/grub.cfg
Running
Next, start AppArmor and tell OpenRC to start it on boot.
# rc-service apparmor start
# rc-update add apparmor boot
You can check if AppArmor is running with the command aa-enabled
# aa-enabled
Configuration
AppArmor works using rules established in profiles. A set of pre-made profiles is available for ease of use:
# apk add apparmor-profiles
Reboot following installation
Enabling Extra Profiles
Extra profiles reside in /usr/share/apparmor/extra-profiles/. In order to enable to profile, it needs to be copied to /etc/apparmor.d/:
If you want to enable the profile for usr.bin.chromium-browser
, for example:
# cp /usr/share/apparmor/extra-profiles/usr.bin.chromium-browser /etc/apparmor.d/
This will install the profile, it then needs to be set to complain or enforce mode:
# aa-complain /etc/apparmor.d/usr.bin.chromium-browser
aa-enforce
to set it to enforce mode, but beware that this could break functionality.Creating additional profiles
The profiles provided by the apparmor-profiles package are just a starter. You can create your own profiles, but first you must install and start audit
# apk add audit
# rc-service auditd start
# rc-update add auditd
Now you can generate your own profiles with
# aa-easyprof /path/to/binary
or
# aa-genprof /path/to/binary
Note that for this to work you'll probably need to set a more verbose kernel log level. For improved security, set it back to a higher level afterwards.
Use
View AppArmor's report:
# aa-status
This details how many and what profiles are in use as well as relevant findings, such as how many profiles are in complain mode or in kill mode.
Troubleshooting
If you notice a bunch of AppArmor errors on boot, try running aa-status
and aa-enabled
in the terminal. If the output mentions AppArmor being disabled at boot, re-open your /boot/extlinux.conf file and make sure the APPEND line still ends with lsm=landlock,yama,apparmor