Intelligente Lösungen
in neuer Dimension

Benutzer-Zuordnung in LXC-Containern mit Ubuntu-18.04

Heute ist mir mehr oder weniger zufällig aufgefallen, dass meine Ubuntu-18.04-Container ohne Benutzer-Zuordnung laufen. Der Benutzer “root” innerhalb des Containers entspricht also dem Benutzer “root” außerhalb. Damit fehlt aus meiner Sicht eine wichtige Hürde für Ausbrechmöglichkeiten!

Hier beschreibe ich, wie ich das Problem korrigiere

Sichtung der LXC-Container mit Ubuntu-16.04

Die LXC-Container, die unter Ubuntu-16.04 laufen, haben diese Zuordnungen für Benutzer und Gruppen:

  • lxc.id_map = u 0 165536 65536
  • lxc.id_map = g 0 165536 65536

Das bedeutet, dass der Benutzer “root” innerhalb des Containers dem Benutzer “165536” außerhalb des Containers zugeordnet ist. Gleiches gilt für die Gruppe. Dieser Benutzer kann außerhalb des Containers quasi keinerlei Aktionen durchführen!

Anpassung des Basiscontainers

  • Bereiche wählen
    • User: 100000 – 165535 (Länge: 65536)
    • Group: 100000 – 165535 (Länge: 65536)
  • /etc/subuid und /etc/subgid erweitern auf dem LXC-Host (auch für “root”, mehrere Zeilen pro UID sind OK)
  • LXC-Container stoppen: lxc-stop -n ubuntu1804-64
  • Skript lxc-fuidshift.sh auf den LXC-Host kopieren
  • Skript ausführen: lxc-fuidshift.sh -u 0:100000 -g 0:100000 /var/lib/lxc/ubuntu1804-64
  • Konfiguration vom LXC-Container anpassen, Datei /var/lib/lxc/ubuntu1804-64/config
Änderungen an der Datei config
1
2
3
4
5
6
7
8
9
10
11
12
13
14
     #lxc.include = /usr/share/lxc/config/nesting.conf
     # (Be aware this has security implications)
     # Distribution configuration
     lxc.include = /usr/share/lxc/config/ubuntu.common.conf
    +lxc.include = /usr/share/lxc/config/ubuntu.userns.conf
     lxc.arch = linux64
     # Container specific configuration
    +lxc.id_map = u 0 100000 65536
    +lxc.id_map = g 0 100000 65536
     # Network configuration
     lxc.network.type = veth
     lxc.network.link = lxcbr1
     lxc.network.flags = up

  • LXC-Container starten: lxc-start -d -n ubuntu1804-64

Anpassung der anderen Container

Ermittlung aller Container ohne Zuordnung:

1
2
cd /var/lib/lxc
grep -L id_map */config|xargs -n1 dirname

Für die betroffenen Container muß analog zum Basiscontainer vorgegangen werden!

Änderungshistorie

  • 2019-04-30: Erste Version