LINUX.ORG.RU

Как дать исходящий доступ в сеть только конкретному приложению? Например, браузеру.

 , , ,


1

1

Всем привет.

Миграция с офтопика на Debian11 LXQT проходит не так гладко как хотелось бы. Фаервол в винде сделан так, что я могу запретить там вообще все соединения. И входящие, и исходящие. А потом разрешить сетевую активность только для конкретных приложений. Например, для браузера или cli. И винда сама будет решать каким протоколам/портам/адресам давать исходящий доступ в сеть.

А на онтопике я до сих пор не поняла, как такое повторить. Запретила все соединения через nftables.conf для обеих chain-ов input и ouput:

type filter hook input priority 0; policy drop;
type filter hook output priority 0; policy drop;

Это сработало и трафик в обе стороны запрещён. После этого я пыталась найти какие то rules, чтобы разрешить трафик не на портах или IP адресах, а конкретному приложению: Firefox. И не нашла.

В качестве workaround поставила OpenSnitch. При запуске Firefox я разрешаю OpenSnitch-у пускать трафик от/к firefox. OpenSnitch отображает это временное правило у себя в GUI. Но Firefox доступа в сеть не имеет.

Я думала, что OpenSnitch сам на лету пропишет нужные rules в nftables. Но, очевидно, этого не происходит.

В итоге я не понимаю, можно ли вообще повторить в Debian то, что я делала в винде за пару кликов. И если, можно, то как? Памагите, плиз.


не понимаю, можно ли вообще повторить в Debian то, что я делала в винде за пару кликов

Нельзя. За пару кликов нельзя.

И если, можно, то как?

Несколько вариантов. Я отдаю предпочтение связке cgroups с nftables - nftables умеет в мета-селектор cgroup, а libcgroup умеет объединять в одну группу все процессы приложения по его имени.

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 2)
Ответ на: комментарий от Shelly

А можно поподробнее?

Да, можно:

  • с помощью libcgroup все процессы браузера объединяются в одну группу, делается это через конфиг
  • в nftables идёт управление группой по её id через селектор meta cgroup
vvn_black ★★★★★
()
Ответ на: комментарий от vvn_black

Слишком сложно, по-моему.

Удобнее запускать приложение в отдельном systemd slice и матчить в nftables по cgroup path.

Если приложение в контейнере или флатпаке каком-нибудь, то слайс создается автоматически, даже systemd-run не нужен.

i586 ★★★★★
()
Последнее исправление: i586 (всего исправлений: 1)