Як пісочні програми?


66

Я хочу запускати невеликі ненадійні програми, але обмежую їм доступ до будь-яких файлів поза їх папкою, доступу до мережі та всього іншого, що їм насправді не потрібно. Який найпростіший спосіб досягти цього?


Я ніколи його не використовував, тому не можу дати повну відповідь, але AFAIK, AppArmor ( wiki.ubuntu.com/AppArmor ) повинні бути в змозі зробити це.
Хав'єр Рівера

Ознайомтеся з Vagrant, обгорткою для VirtualBox. vagrantup.com та [в Вікіпедії] ( en.wikipedia.org/wiki/Vagrant_(software%29) та на github
Янус Трольсен

@JavierRivera FWIW, а також SELinux. Не маю уявлення, наскільки легко було б запуститись на Ubuntu.
TC1

Apparmor вже встановлений за замовчуванням в Ubuntu, тому це повинно бути простіше.
Хав'єр Рівера

1
Схоже, у них є декілька можливостей: віртуалізація з використанням чогось типу Virtualbox (наприклад, Vagrant), chroot, LXC, App Armor та SE Linux.
Флейм

Відповіді:


26

Якщо вони справді не довіряють, і ви хочете бути впевненими, ви встановите окрему скриньку. Або насправді, або практично.

Крім того, ви не хочете, щоб цей ящик знаходився в тій самій мережі, що і ваші важливі речі, якщо вам достатньо параноїків. У всіх рішеннях ви створили б окремого користувача без прав, щоб не відкривати занадто багато інструментів для потенційного компрометатора.

  • Тож найбезпечнішим варіантом буде окремий ящик, фізично видалений з вашої мережі.
  • Ви можете трохи подати, додавши його до фізичної мережі, але в іншій підмережі: "реального" зв'язку всередині немає
  • Віртуальна машина була б варіантом, але, можливо, доведеться відмовитися від певної продуктивності

Якщо ви зобов'язані виконувати його в одному і тому ж полі, у вас є, наприклад, ця опція

  • chroot. Це варіант за замовчуванням для цього для багатьох людей, а для неспецифічних загроз це може навіть спрацювати. Але це НЕ варіант захисту, і його можна вибити досить легко. Я б запропонував використовувати це за призначенням, тобто не для безпеки.

Врешті-решт, вам може знадобитися створити конкретну модель пісочниці без клопоту з віртуалізацією чи окремими ящиками чи ситуацією, що все ще перебуває під загрозою chroot. Я сумніваюся, що це ви мали на увазі, але подивіться на це посилання для отримання більш глибокої інформації.


Наскільки безпечним було б безпечно запустити ненадійний додаток на віртуальній машині? Я чув про теоретичні подвиги, які можуть отримати доступ до операційної системи хоста через гіпервізор та заразити його.
zuallauz

Це може бути, хоча я зараз не знаю таких реальних загроз, але, звичайно, не нецільових. Слід врахувати, що зловмисник, який пише зловмисне програмне забезпечення в грі, не пішов би на цю межу. Тепер напад на коп'ять на вас одного, можливо, звичайно, якщо вони знають ваш макет, але все ж я не думаю, що це ваша перша турбота. Якщо ви впевнені, що вони є зловмисними, вам дійсно слід встановити ізольований ящик у будь-якому випадку, мережево.
Нанна

14

Firejail є досить новим і в постійному розвитку. Простий у використанні.

Ви можете просто:

sudo apt-get install firejail
firejail app

Ласкаво просимо до Ask Ubuntu! Хоча це теоретично може відповісти на питання, бажано було б сюди включити істотні частини відповіді та надати посилання для довідки.
Марк Кірбі

12

Docker допоможе вам налаштувати контейнери, з яких ви зможете запускати своє поточне ядро, але зберігати його подалі від решти системи. Це здається передній край, але Ubuntu фокусується на хорошій документації.


4
Я думаю, що це хороший варіант для більшості випадків. Однак "недовірена" частина оригінального запитання мене трохи зачепила б. Є доступні хаки, які можуть дозволити додатку "вибиватися" з контейнера. А враховуючи, що контейнери докера працюють під кореневим доступом, це може бути небезпечно, якби ваша мета полягала в тому, щоб застосувати програми один до одного.
Кріс Холдорф

@CrisHoldorph правильний, хоча Docker стає кращим, і я навіть думаю, що зараз можна запустити докер непривілейовано (не як root). Це, безумовно, справедливо зараз для LXC і LXD (іноді так званий демон LXC) може значно спростити створення таких контейнерів. Тож сучасні непривілейовані контейнери можна розглядати як поліпшення в частині безпеки над chroot. Але вони не є непроникним бар’єром!
Гюйгенс

Docker - це не інструмент безпеки!
Федеріко

10

Повна віртуалізація / емуляція (VirtualBox)

Одне можливе рішення - це програмне забезпечення для віртуалізації, таке як VirtualBox, яке ви можете знайти в програмному центрі.

  • Встановити віртуальне поле
  • Створіть віртуальну машину з увімкненою мережею
  • Встановіть Ubuntu або, можливо, більш легкий робочий стіл, наприклад Lubuntu
  • Повністю оновіть встановлену ОС (всередині віртуального поля)
  • Вимкнути мережу на віртуальній машині
  • Зробіть знімок

Тепер ви можете встановити програмне забезпечення, якому не довіряєте, щоб побачити, що це робить. Він не може засмутити зовнішній світ або хостинг ОС, оскільки він не має доступу.

Однак він може викинути вашу віртуальну машину, але, якщо це станеться, ви можете просто відновити з вашої знімки.

Можуть існувати й інші методи обмеження руйнівної сили недовіреного програмного забезпечення, але це найбільш надійний метод, про який я можу придумати.

Віртуалізація на основі контейнерів (Docker / LXC)

Інший варіант може бути LXC додаткової інформації тут

LXC - це пакет керування простором користувачів для Linux Containers, легкий механізм віртуальної системи, який іноді описується як «chroot on steroids».

LXC створюється з chroot для впровадження повноцінних віртуальних систем, додаючи механізми управління ресурсами та ізоляцію до існуючої інфраструктури управління процесами Linux.

Він доступний у центрі програмного забезпечення. Однак у мене немає досвіду.


1
Це просто незручно. Створіть цілу віртуальну машину просто для запуску ігор !!? це не дуже вдале рішення. Ви не думаєте, що встановити GID та UID процесу було б ПРОСТО простіше, ніж це?
Джек Майерз

Насправді я думаю, що встановити віртуальну скриньку досить просто, щоб я, мабуть, не заважав робити знімки. Якщо вона зірве мою віртуальну машину, я можу її відкинути.
Еморі

Downvote: Фактичні неправильні міркування, навіть якщо рішення є жорстким. Програми не повинні мати такі ж привілеї, як користувач, який їх запускає. Linux і Ubuntu підтримують MAC з багатьох років. Ubuntu використовує для цього AppArmos, і ви можете легко містити програму в каталог.
Хав'єр Рівера

@JavierRivera "легко" не є правильним словом, інакше профіль AppArmor та політика SELinux для Firefox за замовчуванням надсилаються з кожним дистрибутивом, і це не так. Ubuntu постачає такий профіль, але він за замовчуванням не активний, оскільки він порушує кілька "популярних" функцій Firefox. Для більшості програм GUI не так багато політик SELinux, такі програми вимагають занадто багато дозволів, щоб їх все ще називали пісочницями. Якщо ви не згодні, будь ласка, опублікуйте тут посилання на пісочницю Firefox безпечно, використовуючи або AppArmor, або SELinux! Якщо ви можете, я був би дуже радий :-)
Гюйгенс

Вам, мабуть, слід визначити "безпечним" для змістовної відповіді, але політика Firefox за замовчуванням для мене в Ubuntu цілком розумна. Звичайно, це порушує річ, оскільки вона не така зручна, як нічого не використовувати, але вона все ще набагато зручніша для користувачів, ніж повна віртуальна машина для мене (що також порушує популярні функції Firefox).
Хав'єр Рівера

9

mbox

Mbox - це легкий механізм пісочниці, яким може користуватися будь-який користувач без особливих пільг у товарних операційних системах.

Я надійно використовував це для кількох речей.


4

субкористувач

Ви можете використовувати субсерватора для використання програми Docker для роботи в пісочниці. Це дозволяє робити такі речі, як програми для графічного інтерфейсу для пісочниці, що зробити з Docker безпосередньо.

sudo apt install subuser

1

Я думаю, можливим рішенням є створення окремого користувача для тестування та обмеження його привілеїв. Таким чином ви не втратите продуктивність, що, безумовно, трапиться у віртуальній машині, але я думаю, що це менш безпечно, якщо не налаштовано дуже правильно, що я не можу порадити, як це зробити.


2
Це не захищає систему від зловмисного програмного забезпечення, яке все ще може бути встановлено або запущене - воно також не є пісочницею таким чином, як це питання означає
Thomas Ward

1

DoSH - Докер Шелл

У випадку, якщо ви просто хочете пісочницю активність користувачів, ви можете використовувати "DoSH"

DoSH (що означає Docker SHell) - це розробка для створення контейнерів Docker, коли користувачі входять у систему Linux і запускають в них оболонку, а не симпатично створюють оболонку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.