С этим все непросто.
Когда-то можно было фильтровать по pid, но это убрали.
И прям по имени процесса или файла скорее всего никто никогда в ядре уже делать не будет, т.к. с точки зрения ядерщиков, все что можно сделать в юзерспейс не надо тащить в ядро.
Кроме того имя процесса/команды неоднозначно: их может быть несколько.
Для входящих соединений определить процесс, который получит пакет в общем случае затруднительно.
В любом случае придется самому мастерить, сам я таким не занимался.
На данный момент с помощью iptables можно фильтровать по
-m cgroup --path...
По сути это все, что доступно непосредственно по процессам.1 Пробовать/смотреть куда системд пихает процесс в cgroups и использовать -m cgroup --path если получится
2 Пробовать по разному использовать network namespaces
https://unix.stackexchange.com/questions/68956/block-network...
Причем в каждом пространстве имен собственные интерфейсы, таблицы маршрутизации и набор правил фаервола.
Наверное это самый перспективный и гибкий вариант.
3 Запускать приложения под другим пользователем и использовать для фильтрации
-m owner...
4 Пробовать selinux, apparmor, ясно что это гемор, хотя...
https://askubuntu.com/questions/679474/how-to-block-internet...
Т.е. apparmor настроить не очень сложно и можно прям по путям в фс огрничения делать.
Тоже неплохой вариант.
5 Пробовать готовые проги, я нашел
https://github.com/evilsocket/opensnitch
https://douaneapp.com/
Эти проги gui и интерактивные, как именно они реализуют этот функционал - над смотреть исходники.
Как видно вариантов много, поэтому ждать реализации этого прямо в ядре+iptables/nftables нет смысла.