To pytanie jest podobne do No tun device w lxc guest dla openvpn . LXC ewoluował i niedawno wprowadzono nieuprzywilejowane kontenery LXC, które oferują kolejną warstwę zabezpieczenia przed złamaniem więzienia.
Muszę utworzyć serwer OpenVPN w jednym z nieuprzywilejowanych kontenerów. Nie wiem, jak pozwolić kontenerowi utworzyć prywatne urządzenie sieciowe tun.
Dołączyłem lxc.cgroup.devices.allow = c 10:200 rwm
do ~/.local/share/lxc/mylxc/config
.
Po uruchomieniu kontenera mknod /dev/net/tun c 10 200
wraca mknod: '/dev/net/tun': Operation not permitted
do kontenera.
Używam waniliowego Ubuntu 14.04 64bit jako hosta i kontenera utworzonego za pomocą
lxc-create -t download -n mylxc -- -d ubuntu -r trusty -a amd64
Czy ktoś zdołał /dev/tun
uruchomić urządzenie pod nieuprzywilejowanym systemem LXC?
lxc.mount.entry = /dev/net/tun dev/net/tun none bind,create=file
do pliku konfiguracyjnego kontenera, jak opisano tutaj: superuser.com/a/1205662/130915 Następnie uruchomiłem openvpn jako root z sudo wewnątrz kontenera.Odpowiedzi:
Musisz jawnie dodać możliwość CAP_MKNOD do swojego kontenera .
Możesz także spróbować zautomatyzować to (jeśli zdarzy ci się używać
systemd
wewnątrz kontenera), używając:co może wskazywać na uruchomiony skrypt
mknod
.Korzystanie z
docker
tego jest bardzo łatwe do osiągnięcia. Domyślnie kontenery są nieuprzywilejowane .W tym przykładzie wyciągam
trusty
kontener z rejestru:I zaczynam w trybie interaktywnym, informując o możliwościach, których potrzebuję w środku:
W przeciwieństwie do:
źródło
CAP_MKNOD
po pracy.lxc.cap.keep = CAP_MKNOD
do konfiguracji powoduje błądSimultaneously requested dropping and keeping caps
. Sprawdziłem wszystkie rekursywnie dodanych configs (ubuntu.userns.conf
,ubuntu.common.conf
icommon.conf
) i znalazł tylko jedną linię zlxc.cap.drop
:lxc.cap.drop = mac_admin mac_override sys_time sys_module
. Ale to nie ma znaczenia, prawda?