Chcę uruchamiać małe niezaufane programy, ale ograniczam im dostęp do plików poza ich folderem, dostęp do sieci i wszystko, czego tak naprawdę nie potrzebują. Jaki jest najprostszy sposób na osiągnięcie tego?
@JavierRivera FWIW, SELinux również. Nie mam jednak pojęcia, jak łatwo byłoby uruchomić na Ubuntu.
TC1
Apparmor jest już domyślnie zainstalowany w Ubuntu, więc powinno być łatwiej.
Javier Rivera
1
Wygląda na to, że jest wiele możliwości: wirtualizacja przy użyciu czegoś takiego jak Virtualbox (jak Vagrant), chroot, LXC, App Armor i SE Linux.
Flimm
Odpowiedzi:
26
Jeśli są naprawdę niezaufane i chcesz mieć pewność, skonfigurujesz osobne pudełko. Naprawdę lub wirtualnie.
Co więcej, nie chcesz, aby to pole było w tej samej sieci, co twoje ważne rzeczy, jeśli jesteś wystarczająco paranoikiem. We wszystkich rozwiązaniach ustawiałbyś osobnego użytkownika bez uprawnień, więc nie otwieraj zbyt wielu narzędzi dla potencjalnego kompromisu.
Tak więc najbezpieczniejszą opcją byłoby oddzielne pudełko usunięte fizycznie z sieci.
Możesz się trochę poddać, dodając ją do sieci fizycznej, ale w innej podsieci: w środku nie ma „prawdziwego” połączenia
Maszyna wirtualna byłaby opcją, ale może musieć stracić trochę wydajności
Jeśli jesteś zmuszony uruchomić go w tym samym pudełku, masz na przykład tę opcję
chroot. Jest to domyślna opcja dla wielu osób, a dla niespecyficznych zagrożeń może nawet działać. Ale to NIE jest opcja bezpieczeństwa i można ją łatwo usunąć. Sugerowałbym używać tego zgodnie z przeznaczeniem, tj. Nie ze względów bezpieczeństwa.
W końcu może być konieczne skonfigurowanie określonego modelu piaskownicy bez kłopotów związanych z wirtualizacją lub oddzielnymi skrzynkami lub sytuacją zagrożenia chroot. Wątpię, by o to ci chodziło, ale spójrz na ten link, aby uzyskać bardziej szczegółowe informacje.
Jak bezpieczne byłoby uruchamianie niezaufanej aplikacji na maszynie wirtualnej pod względem bezpieczeństwa? Słyszałem o teoretycznych exploitach, które mogą uzyskać dostęp do systemu operacyjnego hosta za pośrednictwem hiperwizora i zainfekować go.
zuallauz
Może tak być, chociaż obecnie nie jestem świadomy takich prawdziwych zagrożeń, ale z pewnością nie są one niekierowane. Należy wziąć pod uwagę, że atakujący piszący złośliwe oprogramowanie w grze nie osiągnie takich długości. Teraz atak włócznią na ciebie samego może się oczywiście odbyć, jeśli znają twój układ, ale nadal nie sądzę, żeby to była twoja pierwsza troska. Jeśli masz pewność, że są złośliwe, powinieneś i tak skonfigurować izolowane urządzenie, jeśli chodzi o sieć.
Nanne
14
Firejail jest dość nowy i ciągle się rozwija. Łatwy w użyciu.
Witamy w Ask Ubuntu! Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
Mark Kirby,
12
Docker pomoże ci skonfigurować kontenery, które możesz uruchomić z obecnego jądra, a jednocześnie trzymać z dala od reszty systemu. Wydaje się to całkiem nowatorskie, ale dobra dokumentacja koncentruje się na Ubuntu.
Myślę, że jest to dobra opcja w większości przypadków. Jednak „niezaufana” część pierwotnego pytania trochę mnie zaniepokoi. Dostępne są pokazane hacki, które mogą pozwolić aplikacji na „wyrwanie się” z pojemnika. Biorąc pod uwagę, że kontenery dokujące działają przy dostępie do katalogu głównego, może to być niebezpieczne, jeśli Twoim celem było oddzielenie aplikacji od siebie.
Cris Holdorph
@CrisHoldorph poprawne, chociaż Docker jest coraz lepszy, a nawet myślę, że w dzisiejszych czasach możliwe jest uruchomienie dokera bez uprawnień (nie jako root). Z pewnością jest to teraz prawdą w przypadku LXC i LXD (czasami tak zwany demon LXC) może znacznie uprościć tworzenie takich kontenerów. Tak więc nowoczesne nieuprzywilejowane kontenery można uznać za poprawę bezpieczeństwa w porównaniu z chroot. Ale nie stanowią one nieprzeniknionej bariery!
Huygens
Docker nie jest narzędziem bezpieczeństwa!
Federico
10
Pełna wirtualizacja / emulacja (VirtualBox)
Jednym z możliwych rozwiązań jest oprogramowanie do wirtualizacji, takie jak VirtualBox, które można znaleźć w centrum oprogramowania.
Zainstaluj Virtual box
Utwórz maszynę wirtualną z włączoną obsługą sieci
Zainstaluj Ubuntu lub może jaśniejszy pulpit, taki jak Lubuntu
W pełni zaktualizuj zainstalowany system operacyjny (w polu Virtual box)
Wyłącz obsługę sieci na maszynie wirtualnej
Zrób migawkę
Możesz teraz zainstalować oprogramowanie, któremu nie ufasz, aby zobaczyć, co on robi. Nie może zdenerwować świata zewnętrznego ani hostować systemu operacyjnego, ponieważ nie ma dostępu.
Może jednak zniszczyć twoją maszynę wirtualną, ale jeśli tak, możesz po prostu przywrócić ją z migawki.
Mogą istnieć inne metody ograniczania niszczycielskiej mocy niezaufanego oprogramowania, ale jest to najsolidniejsza metoda, jaką mogę wymyślić.
Wirtualizacja oparta na kontenerach (Docker / LXC)
LXC to pakiet kontrolny przestrzeni użytkownika dla kontenerów Linux, lekki mechanizm systemu wirtualnego czasami określany jako „chroot na sterydach”.
LXC składa się z chroot w celu wdrożenia kompletnych systemów wirtualnych, dodając zarządzanie zasobami i mechanizmy izolacyjne do istniejącej infrastruktury zarządzania procesami w Linuksie.
Jest dostępny w centrum oprogramowania. Nie mam jednak doświadczenia.
To po prostu niewygodne. Stwórz całą maszynę wirtualną tylko do uruchamiania gier !!? to niezbyt dobre rozwiązanie. Nie sądzisz, że ustawienie GID procesu i UID byłoby WAY łatwiejsze niż to?
Jack Mayerz
Właściwie myślę, że skonfigurowanie wirtualnego pudełka jest wystarczająco łatwe, że prawdopodobnie nie zawracałbym sobie głowy zrobieniem migawki. Jeśli niszczy moją maszynę wirtualną, mogę ją odrzucić.
emory
Uwaga: błędne uzasadnienie faktyczne, nawet jeśli rozwiązanie jest rygorystyczne. Programy nie muszą mieć takich samych uprawnień jak uruchamiający je użytkownik. Linux i Ubuntu obsługują MAC od lat. Ubuntu korzysta w tym celu z AppArmos i możesz łatwo umieścić program w katalogu.
Javier Rivera
@JavierRivera „łatwo” nie jest właściwym słowem, albo profil AppArmor i polityka SELinuksa dla Firefoksa byłyby domyślnie dostarczane z każdą dystrybucją i tak nie jest. Ubuntu dostarcza taki profil, ale domyślnie nie jest aktywny, ponieważ łamie kilka „popularnych” funkcji Firefoksa. Nie ma zbyt wielu zasad SELinuksa dla większości aplikacji GUI, takie aplikacje wymagają zbyt wielu uprawnień, aby nadal można je było nazwać piaskownicą. Jeśli się nie zgadzasz, zamieść tutaj linki do piaskownicy Firefox bezpiecznie używając AppArmor lub SELinux! Jeśli możesz, byłbym bardzo szczęśliwy :-)
Huygens
Prawdopodobnie powinieneś zdefiniować „bezpieczny” dla sensownej odpowiedzi, ale domyślna polityka Firefoksa w Ubuntu jest dla mnie całkiem rozsądna. Oczywiście psuje to, ponieważ nie jest tak przyjazne dla użytkownika, jak nic, ale jest dla mnie o wiele bardziej przyjazne dla użytkownika niż pełna maszyna wirtualna (która również psuje popularne funkcje firefox).
Możesz użyć subuser do piaskownicy swoich aplikacji za pomocą Dockera. Pozwala to robić takie rzeczy jak aplikacje GUI w sandboxie, co nie jest łatwe do wykonania bezpośrednio z Dockerem.
Myślę, że możliwym rozwiązaniem jest utworzenie osobnego użytkownika do celów testowych i ograniczenie jego uprawnień. W ten sposób nie stracisz wydajności, co na pewno zdarzy się na maszynie wirtualnej, ale myślę, że jest to mniej bezpieczne, jeśli nie skonfigurowane bardzo poprawnie, czego nie mogę poradzić, jak to zrobić.
Nie chroni to systemu przed złośliwym oprogramowaniem, które wciąż może zostać zainstalowane lub uruchomione - nie jest także piaskownicą w sposób, w jaki oznacza to pytanie
Jeśli chcesz po prostu piaskownicować aktywność użytkowników, możesz użyć „DoSH”
DoSH (skrót od Docker SHell) to program do tworzenia kontenerów Docker, gdy użytkownicy logują się w systemie Linux i uruchamiają w nich powłokę, zamiast symetrycznego tworzenia powłoki.
Odpowiedzi:
Jeśli są naprawdę niezaufane i chcesz mieć pewność, skonfigurujesz osobne pudełko. Naprawdę lub wirtualnie.
Co więcej, nie chcesz, aby to pole było w tej samej sieci, co twoje ważne rzeczy, jeśli jesteś wystarczająco paranoikiem. We wszystkich rozwiązaniach ustawiałbyś osobnego użytkownika bez uprawnień, więc nie otwieraj zbyt wielu narzędzi dla potencjalnego kompromisu.
Jeśli jesteś zmuszony uruchomić go w tym samym pudełku, masz na przykład tę opcję
chroot
. Jest to domyślna opcja dla wielu osób, a dla niespecyficznych zagrożeń może nawet działać. Ale to NIE jest opcja bezpieczeństwa i można ją łatwo usunąć. Sugerowałbym używać tego zgodnie z przeznaczeniem, tj. Nie ze względów bezpieczeństwa.W końcu może być konieczne skonfigurowanie określonego modelu piaskownicy bez kłopotów związanych z wirtualizacją lub oddzielnymi skrzynkami lub sytuacją zagrożenia
chroot
. Wątpię, by o to ci chodziło, ale spójrz na ten link, aby uzyskać bardziej szczegółowe informacje.źródło
Firejail jest dość nowy i ciągle się rozwija. Łatwy w użyciu.
Możesz po prostu:
źródło
Docker pomoże ci skonfigurować kontenery, które możesz uruchomić z obecnego jądra, a jednocześnie trzymać z dala od reszty systemu. Wydaje się to całkiem nowatorskie, ale dobra dokumentacja koncentruje się na Ubuntu.
źródło
Pełna wirtualizacja / emulacja (VirtualBox)
Jednym z możliwych rozwiązań jest oprogramowanie do wirtualizacji, takie jak VirtualBox, które można znaleźć w centrum oprogramowania.
Możesz teraz zainstalować oprogramowanie, któremu nie ufasz, aby zobaczyć, co on robi. Nie może zdenerwować świata zewnętrznego ani hostować systemu operacyjnego, ponieważ nie ma dostępu.
Może jednak zniszczyć twoją maszynę wirtualną, ale jeśli tak, możesz po prostu przywrócić ją z migawki.
Mogą istnieć inne metody ograniczania niszczycielskiej mocy niezaufanego oprogramowania, ale jest to najsolidniejsza metoda, jaką mogę wymyślić.
Wirtualizacja oparta na kontenerach (Docker / LXC)
Inną opcją może być LXC więcej informacji tutaj
LXC to pakiet kontrolny przestrzeni użytkownika dla kontenerów Linux, lekki mechanizm systemu wirtualnego czasami określany jako „chroot na sterydach”.
LXC składa się z chroot w celu wdrożenia kompletnych systemów wirtualnych, dodając zarządzanie zasobami i mechanizmy izolacyjne do istniejącej infrastruktury zarządzania procesami w Linuksie.
Jest dostępny w centrum oprogramowania. Nie mam jednak doświadczenia.
źródło
mbox
Użyłem go do kilku rzeczy niezawodnie.
źródło
subuser
Możesz użyć subuser do piaskownicy swoich aplikacji za pomocą Dockera. Pozwala to robić takie rzeczy jak aplikacje GUI w sandboxie, co nie jest łatwe do wykonania bezpośrednio z Dockerem.
źródło
Myślę, że możliwym rozwiązaniem jest utworzenie osobnego użytkownika do celów testowych i ograniczenie jego uprawnień. W ten sposób nie stracisz wydajności, co na pewno zdarzy się na maszynie wirtualnej, ale myślę, że jest to mniej bezpieczne, jeśli nie skonfigurowane bardzo poprawnie, czego nie mogę poradzić, jak to zrobić.
źródło
DoSH - Docker SHell
Jeśli chcesz po prostu piaskownicować aktywność użytkowników, możesz użyć „DoSH”
źródło