d169a57306
Commit2e19a4d56b
removed all other version- conditional statements from the AppArmor template, but left this one in place. These conditions were added in8cf89245f5
to account for old versions of debian/ubuntu (apparmor_parser < 2.9) that lacked some options; > This allows us to use the apparmor profile we have in contrib/apparmor/ > and solves the problems where certain functions are not apparent on older > versions of apparmor_parser on debian/ubuntu. Those patches were from 2015/2016, and all currently supported distro versions should now have more current versions than that. Looking at the oldest supported versions; Ubuntu 18.04 "Bionic": apparmor_parser --version AppArmor parser version 2.12 Copyright (C) 1999-2008 Novell Inc. Copyright 2009-2012 Canonical Ltd. Debian 10 "Buster" apparmor_parser --version AppArmor parser version 2.13.2 Copyright (C) 1999-2008 Novell Inc. Copyright 2009-2018 Canonical Ltd. This patch removes the remaining conditionals. Signed-off-by: Sebastiaan van Stijn <github@gone.nl> (cherry picked from commitf445ee1e6c
) Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
253 lines
5.2 KiB
Go
253 lines
5.2 KiB
Go
package main
|
|
|
|
const dockerProfileTemplate = `@{DOCKER_GRAPH_PATH}=/var/lib/docker
|
|
|
|
profile /usr/bin/docker (attach_disconnected, complain) {
|
|
# Prevent following links to these files during container setup.
|
|
deny /etc/** mkl,
|
|
deny /dev/** kl,
|
|
deny /sys/** mkl,
|
|
deny /proc/** mkl,
|
|
|
|
mount -> @{DOCKER_GRAPH_PATH}/**,
|
|
mount -> /,
|
|
mount -> /proc/**,
|
|
mount -> /sys/**,
|
|
mount -> /run/docker/netns/**,
|
|
mount -> /.pivot_root[0-9]*/,
|
|
|
|
/ r,
|
|
|
|
umount,
|
|
pivot_root,
|
|
signal (receive) peer=@{profile_name},
|
|
signal (receive) peer=unconfined,
|
|
signal (send),
|
|
network,
|
|
capability,
|
|
owner /** rw,
|
|
@{DOCKER_GRAPH_PATH}/** rwl,
|
|
@{DOCKER_GRAPH_PATH}/network/files/boltdb.db k,
|
|
@{DOCKER_GRAPH_PATH}/network/files/local-kv.db k,
|
|
# For user namespaces:
|
|
@{DOCKER_GRAPH_PATH}/[0-9]*.[0-9]*/network/files/boltdb.db k,
|
|
@{DOCKER_GRAPH_PATH}/[0-9]*.[0-9]*/network/files/local-kv.db k,
|
|
|
|
# For non-root client use:
|
|
/dev/urandom r,
|
|
/dev/null rw,
|
|
/dev/pts/[0-9]* rw,
|
|
/run/docker.sock rw,
|
|
/proc/** r,
|
|
/proc/[0-9]*/attr/exec w,
|
|
/sys/kernel/mm/hugepages/ r,
|
|
/etc/localtime r,
|
|
/etc/ld.so.cache r,
|
|
/etc/passwd r,
|
|
|
|
ptrace peer=@{profile_name},
|
|
ptrace (read) peer=docker-default,
|
|
deny ptrace (trace) peer=docker-default,
|
|
deny ptrace peer=/usr/bin/docker///bin/ps,
|
|
|
|
/usr/lib/** rm,
|
|
/lib/** rm,
|
|
|
|
/usr/bin/docker pix,
|
|
/sbin/xtables-multi rCx,
|
|
/sbin/iptables rCx,
|
|
/sbin/modprobe rCx,
|
|
/sbin/auplink rCx,
|
|
/sbin/mke2fs rCx,
|
|
/sbin/tune2fs rCx,
|
|
/sbin/blkid rCx,
|
|
/bin/kmod rCx,
|
|
/usr/bin/xz rCx,
|
|
/bin/ps rCx,
|
|
/bin/tar rCx,
|
|
/bin/cat rCx,
|
|
/sbin/zfs rCx,
|
|
/sbin/apparmor_parser rCx,
|
|
|
|
# Transitions
|
|
change_profile -> docker-*,
|
|
change_profile -> unconfined,
|
|
|
|
profile /bin/cat (complain) {
|
|
/etc/ld.so.cache r,
|
|
/lib/** rm,
|
|
/dev/null rw,
|
|
/proc r,
|
|
/bin/cat mr,
|
|
|
|
# For reading in 'docker stats':
|
|
/proc/[0-9]*/net/dev r,
|
|
}
|
|
profile /bin/ps (complain) {
|
|
/etc/ld.so.cache r,
|
|
/etc/localtime r,
|
|
/etc/passwd r,
|
|
/etc/nsswitch.conf r,
|
|
/lib/** rm,
|
|
/proc/[0-9]*/** r,
|
|
/dev/null rw,
|
|
/bin/ps mr,
|
|
|
|
# We don't need ptrace so we'll deny and ignore the error.
|
|
deny ptrace (read, trace),
|
|
|
|
# Quiet dac_override denials
|
|
deny capability dac_override,
|
|
deny capability dac_read_search,
|
|
deny capability sys_ptrace,
|
|
|
|
/dev/tty r,
|
|
/proc/stat r,
|
|
/proc/cpuinfo r,
|
|
/proc/meminfo r,
|
|
/proc/uptime r,
|
|
/sys/devices/system/cpu/online r,
|
|
/proc/sys/kernel/pid_max r,
|
|
/proc/ r,
|
|
/proc/tty/drivers r,
|
|
}
|
|
profile /sbin/iptables (complain) {
|
|
signal (receive) peer=/usr/bin/docker,
|
|
capability net_admin,
|
|
}
|
|
profile /sbin/auplink flags=(attach_disconnected, complain) {
|
|
signal (receive) peer=/usr/bin/docker,
|
|
capability sys_admin,
|
|
capability dac_override,
|
|
|
|
@{DOCKER_GRAPH_PATH}/aufs/** rw,
|
|
@{DOCKER_GRAPH_PATH}/tmp/** rw,
|
|
# For user namespaces:
|
|
@{DOCKER_GRAPH_PATH}/[0-9]*.[0-9]*/** rw,
|
|
|
|
/sys/fs/aufs/** r,
|
|
/lib/** rm,
|
|
/apparmor/.null r,
|
|
/dev/null rw,
|
|
/etc/ld.so.cache r,
|
|
/sbin/auplink rm,
|
|
/proc/fs/aufs/** rw,
|
|
/proc/[0-9]*/mounts rw,
|
|
}
|
|
profile /sbin/modprobe /bin/kmod (complain) {
|
|
signal (receive) peer=/usr/bin/docker,
|
|
capability sys_module,
|
|
/etc/ld.so.cache r,
|
|
/lib/** rm,
|
|
/dev/null rw,
|
|
/apparmor/.null rw,
|
|
/sbin/modprobe rm,
|
|
/bin/kmod rm,
|
|
/proc/cmdline r,
|
|
/sys/module/** r,
|
|
/etc/modprobe.d{/,/**} r,
|
|
}
|
|
# xz works via pipes, so we do not need access to the filesystem.
|
|
profile /usr/bin/xz (complain) {
|
|
signal (receive) peer=/usr/bin/docker,
|
|
/etc/ld.so.cache r,
|
|
/lib/** rm,
|
|
/usr/bin/xz rm,
|
|
deny /proc/** rw,
|
|
deny /sys/** rw,
|
|
}
|
|
profile /sbin/xtables-multi (attach_disconnected, complain) {
|
|
/etc/ld.so.cache r,
|
|
/lib/** rm,
|
|
/sbin/xtables-multi rm,
|
|
/apparmor/.null w,
|
|
/dev/null rw,
|
|
|
|
/proc r,
|
|
|
|
capability net_raw,
|
|
capability net_admin,
|
|
network raw,
|
|
}
|
|
profile /sbin/zfs (attach_disconnected, complain) {
|
|
file,
|
|
capability,
|
|
}
|
|
profile /sbin/mke2fs (complain) {
|
|
/sbin/mke2fs rm,
|
|
|
|
/lib/** rm,
|
|
|
|
/apparmor/.null w,
|
|
|
|
/etc/ld.so.cache r,
|
|
/etc/mke2fs.conf r,
|
|
/etc/mtab r,
|
|
|
|
/dev/dm-* rw,
|
|
/dev/urandom r,
|
|
/dev/null rw,
|
|
|
|
/proc/swaps r,
|
|
/proc/[0-9]*/mounts r,
|
|
}
|
|
profile /sbin/tune2fs (complain) {
|
|
/sbin/tune2fs rm,
|
|
|
|
/lib/** rm,
|
|
|
|
/apparmor/.null w,
|
|
|
|
/etc/blkid.conf r,
|
|
/etc/mtab r,
|
|
/etc/ld.so.cache r,
|
|
|
|
/dev/null rw,
|
|
/dev/.blkid.tab r,
|
|
/dev/dm-* rw,
|
|
|
|
/proc/swaps r,
|
|
/proc/[0-9]*/mounts r,
|
|
}
|
|
profile /sbin/blkid (complain) {
|
|
/sbin/blkid rm,
|
|
|
|
/lib/** rm,
|
|
/apparmor/.null w,
|
|
|
|
/etc/ld.so.cache r,
|
|
/etc/blkid.conf r,
|
|
|
|
/dev/null rw,
|
|
/dev/.blkid.tab rl,
|
|
/dev/.blkid.tab* rwl,
|
|
/dev/dm-* r,
|
|
|
|
/sys/devices/virtual/block/** r,
|
|
|
|
capability mknod,
|
|
|
|
mount -> @{DOCKER_GRAPH_PATH}/**,
|
|
}
|
|
profile /sbin/apparmor_parser (complain) {
|
|
/sbin/apparmor_parser rm,
|
|
|
|
/lib/** rm,
|
|
|
|
/etc/ld.so.cache r,
|
|
/etc/apparmor/** r,
|
|
/etc/apparmor.d/** r,
|
|
/etc/apparmor.d/cache/** w,
|
|
|
|
/dev/null rw,
|
|
|
|
/sys/kernel/security/apparmor/** r,
|
|
/sys/kernel/security/apparmor/.replace w,
|
|
|
|
/proc/[0-9]*/mounts r,
|
|
/proc/sys/kernel/osrelease r,
|
|
/proc r,
|
|
|
|
capability mac_admin,
|
|
}
|
|
}`
|