Как в Linux разрешить доступ в интернет только определенным программам?
Можно настроить фаирвол так, чтобы только определённые пользователи (UID) имели доступ в интернет, а потом запускать программы от имени этих пользователей.
app armor и se linux или cgroups, это правильный но сложный вариант, гуглится даже проект соответствующий там в описании ссылки на подробнее информацию

И да, это сложно.

Но есть ОЧЕНЬ простое решение - виртуализация/контейнеризация!
OpenVPN запускаешь внутри виртуальной машины (мышевозекательно libvirt + lxc, не требует ресурсов для работы), внутри этой песочницы поднимаешь ssh сервер (чтобы на его основе работал socks прокси, так как это встроенная фича, нужно на машине где нужен интернет подключиться к ssh серверу с ключом -D1080 и получишь socks proxy с портом 1080) либо какой-нибудь http прокси, и вот браузер запускаешь с настройкой этой прокси, при необходимости хост машину вообще можно от интернета отключить.

Так же можно и firefox в lxc запустить (сложно настраивать графику, но можно пользоваться графически сервером хост машины, настроив DISPLAY и права доступа xhost)

Этот способ очень хорошо изолирует приложение и очень прост в настройке, заметно проще чем фаервол