You cannot restrict an application to certain ports or IPs. The file path in this example is not a requirement. Example AppArmor DBus rules: The 'bind' permission cannot be used in message rules. They are an alternative form of path rewriting to using variables, and are done after variable resolution.
It's designed to be a "build-your-own-sandbox" solution with a policy language that is both flexible and easy to audit. Qualifier Blocks Rule Qualifiers can be applied to multiple rules at a time by grouping the rules into a rule block.
By default, all PTrace permissions are implied. Network Rules AppArmor supports simple coarse grained network mediation. Only message permissions are implied for message rules and only service permissions are implied for service rules.
Edit the AppArmor Nginx Profile For Nginx specifically, you will need to make some changes to the auto-generated file for it to work properly. That is why AppArmor conveniently provides an aa-unconfined command to list the programs which have no associated profile and which expose an open network socket.
There is nothing that prevents a task from manually binding to addresses with a similar pattern so it is impossible to reliably identify autobind addresses from a regular address. That is about it.
Instead, the executed resource will inherit the current profile. There is no mediation based of port number or protocol beyond tcp, udp, and raw.
This general process for enabling AppArmor for a new application is as follows: When a link is created, the new link MUST have a subset of permissions as the original file with the exception that the destination does not have to have link access. Rules with embedded spaces or tabs must be quoted.
I would argue that being able to read and write every file accessible to the compromised user and make network connections freely is functionally equivalent to not being confined at all.
This can be demonstrated from a shell executing within the evince profile, which restricts read access to certain sensitive files in the user's home directory: The former enforces the policy and reports violation attempts, while the latter does not enforce the policy but still logs the system calls that would have been denied.
When a link is created, the new link MUST have a subset of permissions as the original file with the exception that the destination does not have to have link access. For our threat model, we'll assume an attacker has achieved arbitrary code execution in the context of an application sandboxed with an AppArmor profile, and we'll see if it's possible to escape the confines of that profile.
If you were not using includes, you would have to update profiles manually. I've been writing some AppArmor profiles and with each new profile I encounter more advanced rules that I haven't seen before.
In this case I'm creating profile for PulseAudio. I also had a profil. Writing AppArmor profiles. Writing profiles for AppArmor by hand is important. There are some tools that can help: aa-genprof and aa-logprof can generate a profile for you and help with fine tuning it by running your application with AppArmor in complain mode.
The Comprehensive Guide To AppArmor: Part 1. If this post seems very long or too difficult to do in one go, please do not be discouraged!
It is perfectly fine to take time and tackle the sections. AppArmor profiles are stored in /etc/apparmor.d/ and they contain a list of access control rules on resources that each program can make use of.
The profiles are compiled and loaded into the kernel by the apparmor_parser command.
Each profile can be loaded either in enforcing or complaining mode. Subsequently, a profile can be "enforced"; that is, attempts by the application to access resources not explicitly permitted by the profile are denied. Properly configured, AppArmor ensures that each profiled application is allowed to.
AppArmor kernel module is enabled – For the Linux kernel to enforce an AppArmor profile, the AppArmor kernel module must be installed and enabled. Several distributions enable the module by default, such as Ubuntu and SUSE, and many others provide optional support.Writing apparmor profiles