Штатно задача решается с помощью cgroup, но настраивать сложно.
Просто - виртуализация или паравиртуализация lxc (собственно это фактически gui к cgroup).
Недостатки виртуализации - придется заморочиться с настройкой gui, обычная виртуализация будет работать но 3d ускоритель не будет доступен и можно встретить проблемы даже с проигрыванием видео выше fullhd@30
Все это есть в любых linux, почему бы и не ubuntu (lxc доставляется вручную в libvirt, создание файловой системы виртуальной машины тоже вручную, но зато максимальная производительность и почти ноль накладных расходов).
Кстати snap предлагает так же систему контейнеризации приложений, основанную на cgroup, т.е. установив приложение из snap оно уже сидит в своей песочнице, и ей нужно выдавать соответствующие права для доступа ко всему, от принтера до файлов на диске (рабочая директория пользователя доступна но все иное кроме root нет, т.е. нет флешек, нет смонтированных дисков и т.п.). В ubuntu firefox например уже поставляется в snap.
p.s. лично мне не нравится, но скорее всего я не умею его настраивать
Для доступа к gui из lxc песочницы есть 2 способа, настроить доступ к xserver (при использовании xubuntu например) или использовать ssh с ключом -X, в этом случае песочница воспринимается как удаленная машина и трафик gui шифруется и сжимается как бы по сети (правда localhost)
Главный принцип - размести опасные приложения внутрь песочницы. К сожалению игры это отдельная проблема и правильно их размещать на другой физической машине. Настройка сети в данном сценарии это просто не давать доступ к ней всем кроме избранных, на уровне виртуальной машины/песочницы достаточно не прописать или выдать неверный шлюз по умолчанию. Обновлять такие машины придется вручную (например настроив свой сервер обновлений, либо временно включать для них интернет)