mirror of
https://gitlab.com/apparmor/apparmor.git
synced 2025-03-04 08:24:42 +01:00
update rule prefixes with basic info
Add basic info about rule prefixes Signed-off-by: John Johansen <john.johansen@canonical.com>
parent
f766779bf2
commit
b5d0e3f124
1 changed files with 141 additions and 1 deletions
|
@ -1 +1,141 @@
|
||||||
foo
|
# AppArmor Rule Prefixes and Modes
|
||||||
|
|
||||||
|
Rule qualifiers allow modifying the behavior of individual
|
||||||
|
profile rules. There are qualifiers for setting the rule mode, priority,
|
||||||
|
and qualifiers that modify the rules audit behavior.
|
||||||
|
|
||||||
|
|
||||||
|
## Rule Modes
|
||||||
|
|
||||||
|
Rule mode allow controlling the enforcement behavior of a profile rule.
|
||||||
|
The default is to make the rule an ```allow``` rule if no mode qualifier
|
||||||
|
is specified.
|
||||||
|
|
||||||
|
* **allow** - The default mode, the qualifier is optional. For a given
|
||||||
|
action is the rule matches the action will be allowed. The
|
||||||
|
default audit action of an allow rule is to NOT audit that the
|
||||||
|
action was allowed.
|
||||||
|
|
||||||
|
* **deny** - For a given action, if the rule is matched, permission the
|
||||||
|
action will be denied, with an EACCES or EPERM error code returned
|
||||||
|
to userspace, and by default the violation will be logged with a tag
|
||||||
|
of the access being DENIED.
|
||||||
|
|
||||||
|
Within a given priority level deny rules have priority over all
|
||||||
|
other rule modes. They can be used to carve out permissions from
|
||||||
|
an allow rule of the same priority.
|
||||||
|
|
||||||
|
* **kill** (**new** AppArmor 4.0) - This is a variant of enforce deny where
|
||||||
|
in addition to returning I<EACCES> or I<EPERM> for a violation, the
|
||||||
|
task is also sent a signal to kill it. Within a given priority level
|
||||||
|
kill rules have priority over deny rules.
|
||||||
|
|
||||||
|
* **complain** (**new** AppArmor 4.0) - For a given action, if the rule
|
||||||
|
is matched the action will be allowed, but the violation will be
|
||||||
|
logged with a tag of the access being ALLOWED (similar to the
|
||||||
|
complain mode profile flag).
|
||||||
|
|
||||||
|
* **prompt** (**new** AppArmor 4.0) - This is a variant of complain rule
|
||||||
|
mode where the access request is sent to a user space daemon to
|
||||||
|
determine if it is allowed. This only works with select rules and
|
||||||
|
only if supported by the kernel. If the usespace daemon is not
|
||||||
|
present the access request will be denied.
|
||||||
|
|
||||||
|
* **access** (**new** AppArmor 4.0**) - This mode declares the rule as
|
||||||
|
an audit modifier to other rules. It allows setting broad audit
|
||||||
|
controls without granting or denying permission.
|
||||||
|
|
||||||
|
|
||||||
|
## audit control for rules
|
||||||
|
|
||||||
|
* **audit** -
|
||||||
|
* **quiet** -
|
||||||
|
|
||||||
|
## rule priority
|
||||||
|
|
||||||
|
The priority qualifer allows raising and lowering the priority of a
|
||||||
|
rule so it can override another rule when/where they overlap. Rules
|
||||||
|
of the same priority will accumulate permissions in a declarative
|
||||||
|
manner as they have always done. But when two rules overlap with a
|
||||||
|
different priority the higher priority permission are used for the
|
||||||
|
overlapping portion of the rule.
|
||||||
|
|
||||||
|
If a priority is not specified the default priority is 0.
|
||||||
|
|
||||||
|
* **priority=X** (**new** AppArmor 4.0) - allows specifying the priority
|
||||||
|
for a given rule. The priority can be possitive or negative. The
|
||||||
|
priority if specified comes before the audit and rule mode qualifiers.
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
priority=10 audit allow file rw @{HOME}/.ssh/*.pub,
|
||||||
|
deny file @{HOME}/.ssh/*,
|
||||||
|
```
|
||||||
|
|
||||||
|
### Priority and rule blocks
|
||||||
|
|
||||||
|
#### Priority overlap will only determine permission for the set of rules
|
||||||
|
within the rule block. The block of rules will then be treated
|
||||||
|
as a whole as a single rule.
|
||||||
|
|
||||||
|
Eg.
|
||||||
|
```
|
||||||
|
profile Eg. {
|
||||||
|
deny file w /foo/bar,
|
||||||
|
|
||||||
|
{
|
||||||
|
priority=2 allow file rw /foo/**,
|
||||||
|
deny file rw /**,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
In this example the ```deny file w /foo/bar``` in the profile block will
|
||||||
|
take priority over the ```priority=2 allow file rw /foo/**``` rule in
|
||||||
|
the block, because the whole block at the profile level has the same
|
||||||
|
priority as the ```deny file w /foo/bar``` rule.
|
||||||
|
|
||||||
|
Within the block however the ```priority=2 allow file rw /foo/**``` has
|
||||||
|
priority over the deny rule.
|
||||||
|
|
||||||
|
If the rule block should be treated with a different priority the
|
||||||
|
priority qualifier can be added to the rule block.
|
||||||
|
|
||||||
|
```
|
||||||
|
priority=2 {
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## ordered block qualifier
|
||||||
|
|
||||||
|
* **ordered ** (**new** AppArmor 4.0) - The ordered block qualifier
|
||||||
|
allows a block of rules to be treated as an ordered set of
|
||||||
|
rules where the first rule matched will be applied. This block
|
||||||
|
allows specifying rules in a manner similar to many firewalls
|
||||||
|
and as such may be more natural for some network rules. Rules
|
||||||
|
within an ordered block do not accumumate permissions the way a
|
||||||
|
normal appamor declarative block does.
|
||||||
|
|
||||||
|
The ordered block effectively gives each rule in the block a
|
||||||
|
unique priority with the first rule having the highest priority
|
||||||
|
and each following rule a lower priority.
|
||||||
|
|
||||||
|
The priority qualifier is not allowed within an ordered block.
|
||||||
|
|
||||||
|
```
|
||||||
|
profile Eg {
|
||||||
|
|
||||||
|
ordered {
|
||||||
|
allow network inet stream,
|
||||||
|
deny network tcp,
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
In this example the ```network inet stream``` rule will have priority over
|
||||||
|
the ```deny network tcp``` rule even though normally the deny rule would
|
||||||
|
dominate and disallow the access.
|
||||||
|
|
Loading…
Add table
Reference in a new issue