LXC - Unprivileged AppArmor Profile anpassen?

norm4n

New Member
Jan 15, 2026
1
0
1
Hallo,

nach dem Update von Proxmox 8 auf Proxmox 9 ist die Rechteverwaltung der LXCs restriktiver geworden, so dass ein isc-dhcp-server seinen Dienst nicht mehr starten darf.
Die entsprechenden Meldung im syslog/kernellog stammen von AppArmor:

Code:
/var/log/syslog.4:Jan 12 11:01:09 ServerX kernel: [238161.738933] audit: type=1400 audit(1768212069.542:207): apparmor="DENIED" operation="create" class="net" namespace="root//lxc-xy_<-var-lib-lxc>" profile="/usr/sbin/dhcpd" pid=3228808 com
m="dhcpd" family="inet" sock_type="raw" protocol=1 requested="create" denied="create"
/var/log/syslog.4:Jan 12 11:01:09 ServerX kernel: [238161.743319] audit: type=1400 audit(1768212069.546:208): apparmor="DENIED" operation="capable" class="cap" namespace="root//lxc-xy_<-var-lib-lxc>" profile="/usr/sbin/dhcpd" pid=3228808 co
mm="dhcpd" capability=1  capname="dac_override"

Eine Möglichkeit ist den LXC "privileged" zu machen, das ist in diesem Falle eventuell noch vertretbar bei anderen Servern, die damals leider als LXC eingerichtet wurden und deren Migration auf eine VM mit Mühen und Ausfällen verbunden wären, den Empfehlungen nach nicht.

Nun zur Frage:
Aus Sicherheitsgründen möchte ich verzichten die Server alle privileged zu konfigurieren, wenn der Unterschied nicht nur marginal ist. In Proxmox 8 liefen die Server. D.h. sie hatten auch wenn sie unprivileged waren die notwendigen Berechtigungen. Wie groß ist mit der Perspektive auf Sicherheit der Unterschied zwischen einem Proxmox 8 "unprivileged" und einem Proxmox 9 "privileged" Container? Reise ich damit Türen auf, die besser verschlossen blieben oder waren diese vor dem Update schon offen und was extra dazu kommt ist marginal?

Lohnt es sich bei einem Sambaserver das AppArmor Profil anzupassen, statt den Container privileged zu stellen oder kommt das im Endeffekt auf das gleiche heraus?

Falls es sich lohnt hat jemand eine gute Anleitung, wie ich von den Fehlermeldungen (z.B. oben) auf ein funktionierendes Profil für einen LXC komme?


Viele Grüße

Edit: Wie sieht die Zukunft aus? Wird aus Möglichkeiten geben ohne viel Gefrickel die LXC Permissions anzupassen oder sollte man sich langfristig auf VMs umorientieren?
 
Last edited:
Ich würde es lassen:
Unprivileged Containers
Unprivileged containers use a new kernel feature called user namespaces. The root UID 0 inside the container is mapped to an unprivileged user outside the container. This means that most security issues (container escape, resource abuse, etc.) in these containers will affect a random unprivileged user, and would be a generic kernel security bug rather than an LXC issue. The LXC team thinks unprivileged containers are safe by design.

This is the default option when creating a new container.

Note If the container uses systemd as an init system, please be aware the systemd version running inside the container should be equal to or greater than 220.
Privileged Containers
Security in containers is achieved by using mandatory access control AppArmor restrictions, seccomp filters and Linux kernel namespaces. The LXC team considers this kind of container as unsafe, and they will not consider new container escape exploits to be security issues worthy of a CVE and quick fix. That’s why privileged containers should only be used in trusted environments.
https://pve.proxmox.com/wiki/Linux_Container#_security_considerations

Was man machen kann ist bei einen unpriviligerten Container AppArmor abzuschalten (auf unconfined stellen):

Security Considerations
Containers use the kernel of the host system. This exposes an attack surface for malicious users. In general, full virtual machines provide better isolation. This should be considered if containers are provided to unknown or untrusted people.

To reduce the attack surface, LXC uses many security features like AppArmor, CGroups and kernel namespaces.

AppArmor
AppArmor profiles are used to restrict access to possibly dangerous actions. Some system calls, i.e. mount, are prohibited from execution.

To trace AppArmor activity, use:

# dmesg | grep apparmor
Although it is not recommended, AppArmor can be disabled for a container. This brings security risks with it. Some syscalls can lead to privilege escalation when executed within a container if the system is misconfigured or if a LXC or Linux Kernel vulnerability exists.

To disable AppArmor for a container, add the following line to the container configuration file located at /etc/pve/lxc/CTID.conf:

lxc.apparmor.profile = unconfined
Warning Please note that this is not recommended for production use.
https://pve.proxmox.com/wiki/Linux_Container#_security_considerations

Die Warnung (not recommended for production use) sollte man ernst nehmen, aber imho ist unconfined immer noch das kleinere Übel im Vergleich zu einen unpriviligerten Container. Grundsätzlich müsste es aber auch möglich sein ein AppArmorProfil zu erstellen, mit dem es geht, da habe ich aber keine Erfahrung mit. Theoretisch müsstest du dir aus der Logmeldung und der AppArmor-Doku da was passendes zusammenstellen können.
Also meine Empfehlung lautet:
- Umstellen auf VM
- AppAmor Profil anpassen
- Auf unconfined stellen

Vielleicht wäre es auch eine Idee wert einen Bugreport auf bugzilla.proxmox.com einzustellen, envtl. kann die AppArmor oder lxc Konfiguration angepasst werden, sodass mit einen Bugfix-Update das Problem dann nicht mehr auftritt. So wurde nach dem PVE9 Release das Problem behoben, dass docker-Container in lxcs nicht mehr starten wollten (wobei man von docker in lxcs (ähnlich wie profile=unconfined oder priviligierten Containern) eh die Finger lassen sollte