Moje pytanie dotyczy bezpieczeństwa kontenera LXC.
Jeśli korzystam z wielu kontenerów na moim pudełku i daję użytkownikom oddzielny dostęp ssh do ich własnego kontenera, czy którykolwiek z tych kontenerów może włamać się do innych kontenerów na tym pudełku, a nawet na maszynie hosta?
Gdzie są granice bezpieczeństwa kontenerów LXC?
Odpowiedzi:
Jak widziałem o LXC Przechowuje informacje o kontenerze i (przy domyślnym magazynie kopii zapasowych) główne systemy plików w / var / lib / lxc. Szablony tworzenia kontenerów przechowują również buforowane informacje o dystrybucji w / var / cache / lxc.
Zasadniczo dostęp do głównego systemu plików jest dozwolony tylko dla administratorów, chyba że podczas ich tworzenia wystąpi błąd lub niewłaściwa konfiguracja profili użytkowników.
Ale deweloperzy Ubuntu mogli już do tego dojść i zapewnili bezpieczne rozwiązanie przy pomocy AppArmor.
LXC jest dostarczany z profilem Apparmor, który ma chronić hosta przed przypadkowym niewłaściwym wykorzystaniem uprawnień w kontenerze. Na przykład kontener nie będzie mógł zapisywać
/proc/sysrq-trigger
ani do większości/sys
plików.Profil usr.bin.lxc-start jest wprowadzany przez uruchomienie lxc-start. Profil ten przede wszystkim uniemożliwia lxc-startowi montowanie nowych systemów plików poza głównym systemem plików kontenera. Przed uruchomieniem init kontenera LXC żąda przełączenia do profilu kontenera. Domyślnie ten profil jest domyślną polityką kontenera lxc, która jest zdefiniowana w
/etc/apparmor.d/lxc/lxc-default
. Ten profil uniemożliwia kontenerowi dostęp do wielu niebezpiecznych ścieżek i montaż większości systemów plików.Jeśli stwierdzisz, że lxc-start kończy się niepowodzeniem z powodu legalnego dostępu, którego odmawia jego polityka Apparmor, możesz wyłączyć profil lxc-start, wykonując:
Spowoduje to, że lxc-start będzie działał nieskończenie, ale nadal będzie ograniczał sam kontener. Jeśli chcesz również wyłączyć ograniczenie kontenera, oprócz
usr.bin.lxc-start
profilu musisz dodać:do pliku konfiguracyjnego kontenera. Jeśli chcesz uruchomić kontener w profilu niestandardowym, możesz utworzyć nowy profil w
/etc/apparmor.d/lxc/
. Jego nazwa musi zaczynać się od lxc-, aby lxc-start mógł przejść do tego profilu. Po utworzeniu zasady załaduj ją za pomocą:Profil zostanie automatycznie załadowany po ponownym uruchomieniu, ponieważ pochodzi z pliku
/etc/apparmor.d/lxc-containers
. Na koniec, aby kontener CN używał tego nowegolxc-CN-profile
, dodaj następujący wiersz do pliku konfiguracyjnego:lxc-execute
nie wchodzi do profilu Apparmor, ale pojemnik, który spawnuje, będzie ograniczony.źródło
dmesg
można go wywołać z dowolnego kontenera (przynajmniej w domyślnej konfiguracji). Obawiam się, że to nie jedyne zagrożenie bezpieczeństwa ...