I’ve been hit by Apparmor a couple of times now. First with Samba, then with Openldap. AppArmor is a mandatory access control (MAC) system that restricts the capabilities of applications on a Linux system. While it can enhance the security of a Linux system, it can also cause issues with certain applications. Here are some apps that AppArmor can break and workarounds for each.
- Docker
Docker is a popular containerization technology that allows users to package and run applications in isolated environments. AppArmor can cause issues with Docker by blocking access to certain system resources required by Docker containers. To work around this issue, you can create a custom AppArmor profile for Docker that allows it to access the necessary resources.
To create a custom AppArmor profile for Docker, you can create a new profile file in the /etc/apparmor.d/ directory with the following contents:
# Profile for Docker
profile docker-container {
# Allow access to necessary system resources
/var/lib/docker/** rw,
/var/run/docker.sock rw,
/sys/fs/cgroup/** rw,
/proc/sys/** rw,
/etc/hostname r,
/etc/hosts r,
/etc/resolv.conf r,
/etc/passwd r,
/etc/group r,
/etc/shadow r,
/etc/gshadow r,
}
After creating the profile file, you can load it into the AppArmor kernel by running the following command:
sudo apparmor_parser -r /etc/apparmor.d/docker-container
- Apache
Apache is a widely used web server that can also be affected by AppArmor. If Apache is running in a restricted environment, it may not be able to access certain files or directories. To resolve this issue, you can modify the AppArmor profile for Apache to allow access to the necessary resources.
To modify the AppArmor profile for Apache, you can edit the existing profile file located in /etc/apparmor.d/usr.sbin.apache2 and add the necessary permissions. For example, to allow Apache to access the /var/www/html/ directory, you can add the following line to the profile:
/var/www/html/** r,
After making the necessary changes, you can reload the AppArmor profile by running the following command:
sudo service apparmor reload
- MySQL
MySQL is a popular open-source relational database management system that can be affected by AppArmor. If AppArmor is blocking access to MySQL, you may experience issues with database connectivity. To work around this issue, you can modify the AppArmor profile for MySQL to allow access to the necessary resources.
To modify the AppArmor profile for MySQL, you can edit the existing profile file located in /etc/apparmor.d/usr.sbin.mysqld and add the necessary permissions. For example, to allow MySQL to access the /var/lib/mysql/ directory, you can add the following line to the profile:
/var/lib/mysql/** rwk,
After making the necessary changes, you can reload the AppArmor profile by running the following command:
sudo service apparmor reload
- Nginx
Nginx is a high-performance web server that can also be affected by AppArmor. If Nginx is running in a restricted environment, it may not be able to access certain files or directories required for its operation. To resolve this issue, you can modify the AppArmor profile for Nginx to allow access to the necessary resources.
To modify the AppArmor profile for Nginx, you can edit the existing profile file located in /etc/apparmor.d/usr.sbin.nginx and add the necessary permissions. For example, to allow Nginx to access the /var/www/html/ directory, you can add the following line to the profile:
/var/www/html/** r,
After making the necessary changes, you can reload the AppArmor profile by running the following command:
sudo service apparmor reload
- OpenSSH
OpenSSH is a widely used remote access tool that can also be affected by AppArmor. If AppArmor is blocking access to OpenSSH, you may not be able to establish a remote connection to your Linux system. To work around this issue, you can modify the AppArmor profile for OpenSSH to allow access to the necessary resources.
To modify the AppArmor profile for OpenSSH, you can edit the existing profile file located in /etc/apparmor.d/usr.sbin.sshd and add the necessary permissions. For example, to allow OpenSSH to access the /var/log/auth.log file, you can add the following line to the profile:
/var/log/auth.log rw,
After making the necessary changes, you can reload the AppArmor profile by running the following command:
sudo service apparmor reload
- Samba
To modify the AppArmor profile for Samba, you can edit the existing profile file located in /etc/apparmor.d/usr.sbin.smbd and add the necessary permissions. For example, to allow Samba to access the /mnt/share/ directory, you can add the following line to the profile:
/mnt/share/** rw,
After making the necessary changes, you can reload the AppArmor profile by running the following command:
sudo service apparmor reload
- OpenLDAP
To modify the AppArmor profile for OpenLDAP, you can create a new profile file in the /etc/apparmor.d/ directory with the following contents:
# Profile for OpenLDAP
profile slapd {
# Allow access to necessary system resources
/var/lib/ldap/ r,
/var/lib/ldap/** rw,
/var/run/slapd/** rw,
/etc/ldap/slapd.conf r,
/etc/ldap/slapd.d/ r,
/etc/ldap/slapd.d/** r,
/usr/sbin/slapd mr,
/usr/sbin/slapd.debug mr,
/usr/sbin/slapd-{slave,monitor} ix,
/usr/sbin/slapd.dbg mr,
/usr/sbin/slapd-sock rw,
/usr/sbin/slapd-sock-debug rw,
/usr/sbin/slaptest mr,
}
After creating the profile file, you can load it into the AppArmor kernel by running the following command:
sudo apparmor_parser -r /etc/apparmor.d/slapd
By modifying AppArmor profiles for specific applications in this way, you can ensure that your applications have the necessary permissions to function correctly while still maintaining the security benefits of AppArmor.
AppArmor can cause issues with various applications on a Linux system, but these issues can usually be resolved by modifying the AppArmor profile for the affected application. By following the steps outlined above, you can ensure that your applications are functioning correctly while still maintaining the security benefits of AppArmor.