Jak aplikacje piaskownicy?

66

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?

michel
źródło
Nigdy go nie użyłem, więc nie mogę udzielić pełnej odpowiedzi, ale AFAIK, AppArmor ( wiki.ubuntu.com/AppArmor ) powinien to zrobić.
Javier Rivera,
Sprawdź Vagrant, opakowanie dla VirtualBox. vagrantup.com i [na Wikipedii] ( en.wikipedia.org/wiki/Vagrant_(software%29) oraz na github
Janus Troelsen
@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.

Nanne
źródło
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.

Możesz po prostu:

sudo apt-get install firejail
firejail app
pingwin inforsupper
źródło
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.

N. Thomas Kor
źródło
4
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)

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.

Warren Hill
źródło
1
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).
Javier Rivera
9

mbox

Mbox to lekki mechanizm piaskownicy, z którego może korzystać każdy użytkownik bez specjalnych uprawnień w systemach operacyjnych dla towarów.

Użyłem go do kilku rzeczy niezawodnie.

0x78
źródło
4

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.

sudo apt install subuser
timthelion
źródło
1

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ć.

Phlya
źródło
2
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
Thomas Ward
1

DoSH - Docker SHell

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.

ubuser
źródło