Co sprawia, że ​​systemd-nspawn nadal „nie nadaje się do bezpiecznych konfiguracji kontenerów”?


21

Jest to podane na stronie podręcznika systemd-nspawn

Należy pamiętać, że pomimo zastosowania tych środków bezpieczeństwa systemd-nspawn nie nadaje się do bezpiecznych konfiguracji kontenerów. Wiele funkcji bezpieczeństwa można obejść i dlatego są one przede wszystkim przydatne w celu uniknięcia przypadkowych zmian w systemie hosta z kontenera. Przeznaczeniem tego programu jest debugowanie i testowanie, a także budowanie pakietów, dystrybucji i oprogramowania związanego z uruchamianiem systemu i zarządzaniem systemami.

To samo pytanie zostało następnie zadane na liście mailingowej w 2011 r. , Ale odpowiedź wydaje się nieaktualna.

systemd-nspawn zawiera kod do wykonania CLONE_NEWNETprzy użyciu --private-networkopcji teraz. To wydaje się pokrywać z prywatnej AF_UNIXemisji przestrzeni nazw, a Chyba CAP_NET_RAWi CAP_NET_BINDkwestie wymienione.

Jakie problemy pozostają w tym momencie i co robi na przykład LXC oprócz tego, co systemd-nspawnobecnie można zrobić?


AF_UNIX zostaje w połowie odizolowany dzięki CLONE_NEWNET: gniazdom abstrakcyjnym - oddzielnym, opartym na systemie plików - zjednoczonym (chyba że nie ma współdzielonych systemów plików między hostem a kontenerem). Ułatwia to uruchamianie aplikacji X z wyłączeniem sieci dla określonej aplikacji (ponieważ Xorg otwiera zarówno gniazdo abstrakcyjne, jak i gniazdo systemu plików UNIX).
Vi.

Odpowiedzi:


12

LXC jest nieco lepszy, ponieważ może uruchamiać kontenery jako nieuprzywilejowani użytkownicy . Jest to możliwe w przypadku systemd-nspawn, ale tylko w scenariuszach, w których potrzebujesz tylko jednego użytkownika (zamiast wielu), co może być trudne lub mniej bezpieczne w przypadku wielu procesów w scenariuszach kontenerowych. Jeśli chcesz wiedzieć, dlaczego docker, lxc i systemd-nspawn z natury nie są solidnym mechanizmem bezpieczeństwa, przeczytaj to: https://opensource.com/business/14/7/docker-security-selinux . Zasadniczo kontenery nadal mają dostęp do jądra, a każdy exploit jądra przejmuje kontrolę nad całą maszyną. W monolitycznym jądrze, takim jak Linux, exploity jądra nie są rzadkie.


3
Ta odpowiedź jest niepoprawna. systemd-nspawn obsługuje upuszczanie uprawnień innym użytkownikom: freedesktop.org/software/systemd/man/systemd-nspawn.html
David Timothy Strauss

Jestem prawie pewien, że wszystko, co robi, to uruchomić konsolę / powłokę jako użytkownik nieuprzywilejowany, ale wszystko inne jako root. Czy możesz na to spojrzeć?
CameronNemo

1
Ok, cofam moje ostatnie oświadczenie. Jednak nie ma odpowiedniej obsługi subuid / subgid, tylko jeden nieuprzywilejowany użytkownik na kontener.
CameronNemo

2
Tylko możliwość upuszczenia do jednego nieuprzywilejowanego użytkownika na kontener zamiast obsługi pełnej obsługi subuid / subgid nie jest problemem bezpieczeństwa. To ograniczenie funkcji.
David Timothy Strauss

Tak, wiem. Właśnie wskazałem różnicę.
CameronNemo,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.