mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-07-14 23:23:11 +00:00

Restrict signal and ptrace for processes running under the container profile. Rules based on AppArmor base abstraction. Add unix rules for processes running under the container profile. Signed-off-by: Jamie Strandboge <jamie@canonical.com> Acked-by: Serge Hallyn <serge.hallyn@ubuntu.com> Acked-by: Stéphane Graber <stgraber@ubuntu.com>
89 lines
2.9 KiB
Plaintext
89 lines
2.9 KiB
Plaintext
network,
|
|
capability,
|
|
file,
|
|
umount,
|
|
|
|
# dbus, signal, ptrace and unix are only supported by recent apparmor
|
|
# versions. Comment them if the apparmor parser doesn't recognize them.
|
|
|
|
# This also needs additional rules to reach outside of the container via
|
|
# DBus, so just let all of DBus within the container.
|
|
dbus,
|
|
|
|
# Allow us to receive signals from anywhere. Note: if per-container profiles
|
|
# are supported, for container isolation this should be changed to something
|
|
# like:
|
|
# signal (receive) peer=unconfined,
|
|
# signal (receive) peer=/usr/bin/lxc-start,
|
|
signal (receive),
|
|
|
|
# Allow us to send signals to ourselves
|
|
signal peer=@{profile_name},
|
|
|
|
# Allow other processes to read our /proc entries, futexes, perf tracing and
|
|
# kcmp for now (they will need 'read' in the first place). Administrators can
|
|
# override with:
|
|
# deny ptrace (readby) ...
|
|
ptrace (readby),
|
|
|
|
# Allow other processes to trace us by default (they will need 'trace' in
|
|
# the first place). Administrators can override with:
|
|
# deny ptrace (tracedby) ...
|
|
ptrace (tracedby),
|
|
|
|
# Allow us to ptrace ourselves
|
|
ptrace peer=@{profile_name},
|
|
|
|
# Allow receive via unix sockets from anywhere. Note: if per-container
|
|
# profiles are supported, for container isolation this should be changed to
|
|
# something like:
|
|
# unix (receive) peer=(label=unconfined),
|
|
unix (receive),
|
|
|
|
# Allow all unix in the container
|
|
unix peer=(label=@{profile_name}),
|
|
|
|
# ignore DENIED message on / remount
|
|
deny mount options=(ro, remount) -> /,
|
|
deny mount options=(ro, remount, silent) -> /,
|
|
|
|
# allow tmpfs mounts everywhere
|
|
mount fstype=tmpfs,
|
|
|
|
# allow hugetlbfs mounts everywhere
|
|
mount fstype=hugetlbfs,
|
|
|
|
# allow mqueue mounts everywhere
|
|
mount fstype=mqueue,
|
|
|
|
# allow fuse mounts everywhere
|
|
mount fstype=fuse.*,
|
|
|
|
# allow bind mount of /lib/init/fstab for lxcguest
|
|
mount options=(rw, bind) /lib/init/fstab.lxc/ -> /lib/init/fstab/,
|
|
|
|
# deny writes in /proc/sys/fs but allow binfmt_misc to be mounted
|
|
mount fstype=binfmt_misc -> /proc/sys/fs/binfmt_misc/,
|
|
deny @{PROC}/sys/fs/** wklx,
|
|
|
|
# allow efivars to be mounted, writing to it will be blocked though
|
|
mount fstype=efivarfs -> /sys/firmware/efi/efivars/,
|
|
|
|
# block some other dangerous paths
|
|
deny @{PROC}/sysrq-trigger rwklx,
|
|
deny @{PROC}/mem rwklx,
|
|
deny @{PROC}/kmem rwklx,
|
|
|
|
# deny writes in /sys except for /sys/fs/cgroup, also allow
|
|
# fusectl, securityfs and debugfs to be mounted there (read-only)
|
|
mount fstype=fusectl -> /sys/fs/fuse/connections/,
|
|
mount fstype=securityfs -> /sys/kernel/security/,
|
|
mount fstype=debugfs -> /sys/kernel/debug/,
|
|
deny mount fstype=debugfs -> /var/lib/ureadahead/debugfs/,
|
|
mount fstype=proc -> /proc/,
|
|
mount fstype=sysfs -> /sys/,
|
|
deny /sys/firmware/efi/efivars/** rwklx,
|
|
deny /sys/kernel/security/** rwklx,
|
|
mount options=(move) /sys/fs/cgroup/cgmanager/ -> /sys/fs/cgroup/cgmanager.lower/,
|
|
|