Я знаю PID
определенного процесса и хочу отключить доступ в Интернет для этого процесса и только для этого процесса, чтобы другой процесс мог получить доступ к Интернету.
Есть ли способ сделать это?
Я погуглил кое-что и нашел способ отключить Интернет для исполняемых программ. Но мне нужно, например, чтобы два работали chrome
, один из которых имел доступ к Интернету, а другой нет.
У меня только что возник тот же вопрос, и я нашел действительно хорошее решение на ubuntuforums.org
Резюме
добавить группу " no-internet "и добавьте в него своего пользователя
sudo addgroup no-internet
sudo adduser $USER no-internet
добавьте правило iptables, чтобы запретить этой группе доступ к сети:
iptables -I OUTPUT 1 -m owner --gid-owner no-internet -j DROP
запустите процесс, к которому вы не хотите иметь доступ в Интернет, как с помощью sg
(выполните команду как другой идентификатор группы):
sg no-internet "process command line"
Я бы порекомендовал использовать правила брандмауэра для блокировки этой программы. Если вы можете изолировать номера портов, которые использует программа, вы можете заблокировать трафик на этих портах. Вы также можете настроить правила брандмауэра для каждого процесса с помощью SELinux или другого программного обеспечения для обеспечения безопасности.
https://help.ubuntu.com/community/Gufw
Если вы ищете что-то более прямое или сложное, вы можете настроить IPTables как [ 111] документировано здесь .
Для себя я написал предварительную загрузку, которая контролирует системный вызов connect.
Каждое соединение IPv4 и IPv6, кроме локального (127.0.0.1 и: :), сбрасывается по таймауту.
Я проверил их с помощью различных инструментов, таких как telnet, wine, apt-get ...
Вы можете скачать источник здесь .
Можно попробовать следующее:
unshare
. Seems, чтобы хорошо работать для терминальных программ. я не могу заставить это работать с X11.
unshare -r -n ping google.com
Firejail. Вы, возможно, придется играть с конфигурацией, чтобы заставить это работать.
firejail --noprofile --net=none firefox