On Mon, Jan 27, 2014 at 11:49:45AM -0600, Jamie Strandboge wrote:
On 01/26/2014 03:47 PM, Felix Geyer wrote:
> Tested on Debian unstable.
> The profile updates are partly taken from the Ubuntu trusty libvirt package.
Thanks for these updates! :) Comments inline.
> ---
> examples/apparmor/libvirt-qemu | 21 +++++++++++++++++----
> examples/apparmor/usr.lib.libvirt.virt-aa-helper | 10 ++++++++++
> examples/apparmor/usr.sbin.libvirtd | 16 ++++++++++++----
> 3 files changed, 39 insertions(+), 8 deletions(-)
>
> diff --git a/examples/apparmor/libvirt-qemu b/examples/apparmor/libvirt-qemu
> index 766a334..e1980b7 100644
> --- a/examples/apparmor/libvirt-qemu
> +++ b/examples/apparmor/libvirt-qemu
> @@ -9,6 +9,10 @@
> capability dac_read_search,
> capability chown,
>
> + # needed to drop privileges
> + capability setgid,
> + capability setuid,
> +
> network inet stream,
> network inet6 stream,
>
> @@ -20,7 +24,7 @@
>
> # For hostdev access. The actual devices will be added dynamically
> /sys/bus/usb/devices/ r,
> - /sys/devices/*/*/usb[0-9]*/** r,
> + /sys/devices/**/usb[0-9]*/** r,
>
> # WARNING: this gives the guest direct access to host hardware and specific
> # portions of shared memory. This is required for sound using ALSA with kvm,
> @@ -32,6 +36,8 @@
> /{dev,run}/shmpulse-shm* rwk,
> /dev/snd/* rw,
> capability ipc_lock,
> + # spice
> + owner /{dev,run}/shm/spice.* rw,
> # 'kill' is not required for sound and is a security risk. Do not enable
> # unless you absolutely need it.
> deny capability kill,
> @@ -58,6 +64,7 @@
> /usr/share/proll/** r,
> /usr/share/vgabios/** r,
> /usr/share/seabios/** r,
> + /usr/share/ovmf/** r,
>
> # access PKI infrastructure
> /etc/pki/libvirt-vnc/** r,
> @@ -109,9 +116,15 @@
> /bin/dd rmix,
> /bin/cat rmix,
>
> - /usr/libexec/qemu-bridge-helper Cx,
> + # for usb access
> + /dev/bus/usb/ r,
> + /etc/udev/udev.conf r,
> + /sys/bus/ r,
> + /sys/class/ r,
> +
> + /usr/{lib,libexec}/qemu-bridge-helper Cx -> qemu_bridge_helper,
> # child profile for bridge helper process
> - profile /usr/libexec/qemu-bridge-helper {
> + profile qemu_bridge_helper {
> #include <abstractions/base>
>
> capability setuid,
> @@ -125,5 +138,5 @@
> /etc/qemu/** r,
> owner @{PROC}/*/status r,
>
> - /usr/libexec/qemu-bridge-helper rmix,
> + /usr/{lib,libexec}/qemu-bridge-helper rmix,
> }
I think you could actually deny the access to /etc/udev/udev.conf, but the
access is harmless.
Acked-By: Jamie Strandboge <jamie(a)canonical.com>
> diff --git a/examples/apparmor/usr.lib.libvirt.virt-aa-helper
b/examples/apparmor/usr.lib.libvirt.virt-aa-helper
> index 94bf359..bceaaff 100644
> --- a/examples/apparmor/usr.lib.libvirt.virt-aa-helper
> +++ b/examples/apparmor/usr.lib.libvirt.virt-aa-helper
> @@ -12,6 +12,8 @@
> network inet,
>
> deny @{PROC}/[0-9]*/mounts r,
> + @{PROC}/[0-9]*/net/psched r,
> + owner @{PROC}/[0-9]*/status r,
> @{PROC}/filesystems r,
>
> # for hostdev
> @@ -35,4 +37,12 @@
> @{HOME}/** r,
> /var/lib/libvirt/images/ r,
> /var/lib/libvirt/images/** r,
> + /{media,mnt,opt,srv}/** r,
> +
> + /**.img r,
> + /**.qcow{,2} r,
> + /**.qed r,
> + /**.vmdk r,
> + /**.[iI][sS][oO] r,
> + /**/disk{,.*} r,
> }
Acked-By: Jamie Strandboge <jamie(a)canonical.com>
> diff --git a/examples/apparmor/usr.sbin.libvirtd
b/examples/apparmor/usr.sbin.libvirtd
> index 1b24835..fd6def1 100644
> --- a/examples/apparmor/usr.sbin.libvirtd
> +++ b/examples/apparmor/usr.sbin.libvirtd
> @@ -4,6 +4,7 @@
>
> /usr/sbin/libvirtd {
> #include <abstractions/base>
> + #include <abstractions/dbus>
>
> capability kill,
> capability net_admin,
> @@ -22,20 +23,25 @@
> capability setpcap,
> capability mknod,
> capability fsetid,
> + capability audit_write,
>
> network inet stream,
> network inet dgram,
> network inet6 stream,
> network inet6 dgram,
> + network packet dgram,
>
> # Very lenient profile for libvirtd since we want to first focus on confining
> # the guests. Guests will have a very restricted profile.
> + / r,
> /** rwmkl,
>
> - /bin/* Ux,
> - /sbin/* Ux,
> - /usr/bin/* Ux,
> - /usr/sbin/* Ux,
> + /bin/* PUx,
> + /sbin/* PUx,
> + /usr/bin/* PUx,
> + /usr/sbin/* PUx,
> + /lib/udev/scsi_id PUx,
> + /usr/lib/xen-common/bin/xen-toolstack PUx,
>
> # force the use of virt-aa-helper
> audit deny /sbin/apparmor_parser rwxl,
> @@ -45,6 +51,8 @@
> audit deny /sys/kernel/security/apparmor/.* rwxl,
> /sys/kernel/security/apparmor/profiles r,
> /usr/lib/libvirt/* PUxr,
> + /etc/libvirt/hooks/** rmix,
> + /etc/xen/scripts/** rmix,
>
> # allow changing to our UUID-based named profiles
> change_profile ->
@{LIBVIRT}-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*-[0-9a-f]*,
>
Acked-By: Jamie Strandboge <jamie(a)canonical.com>
I've pushed this patch now. Since there weren't any further comments to
the other patch in this series I think it's good to go as well with the
minor comment style nit fixed.
Cheers,
-- Guido