MacCentre
Форум: Mac и Mac OS X
Тема: Как определенному процессу заблокировать доступ в сеть
Страницы: [1] 2

[Ответить]
EsTaF [05.05.2015 17:05] Как определенному процессу заблокировать доступ в сеть:
Не программе.

Под Linux делается при помощи cgroup и iptables.
mkdir /sys/fs/cgroup/net_cls/block
echo 42 > /sys/fs/cgroup/net_cls/block/net_cls.classid

iptables -A OUTPUT -m cgroup --cgroup 42 -j DROP

узнаю
ps -auxw | grep часть имени.
блокирую.
echo > /sys/fs/cgroup/net_cls/block/tasks

А как под OS X?

Очень нужно. речь касается именно процесса определенного, а не программы родителя, которой можно изначально заткнуть при запуске доступ в сеть. Мне не нужно родителю затыкать доступ, как и потомкам. лишь определенному потомку.
Korwin [06.05.2015 10:19] :
ipfw - это встроенный системный firewall у Mac OS.

http://www.opennet.ru/base/net/ipfw_man2.txt.html

Не уверен, что ipfw умеет шейпить трафик по PID.
Посмотрите к нему документацию.
einherjer [06.05.2015 11:14] :
КМК, указанную задачу прекрасно решит Little Snitch. Работа с портами и процессами, возможность создания правил, куча настроек плюс мониторинг трафика - и работоспособность программы проверена временем и людьми.
Если вопрос серьезно назрел, то купить эту программу - не проблема.
http://www.littlesnitch.ru/

http://www.littlesnitch.ru/Images/littlesnitch/rules-window.jpg
Korwin [06.05.2015 11:20] :
Топикстартеру нужно не просто с процессом (приложением), а с отдельным чилдом этого процесса.
С ходу в Littlesnitch этого не нашел, нужно им на саппорт писать
EsTaF [06.05.2015 13:01] :
Если на родителя натравить little snitch, или hands off в режиме жалобы (не полный доступ, или полный запрет), то гипотетически (могу и ошибаться) программа начнет спрашивать разрешение для каждого потомка. А, если их штук 100? когда нужно заблокировать лишь одного потомка.
Это, если в программе реализована поддержка управления модулями "net_cls", что в ядре.
Если же дать полный доступ программе, то опциональность выборочного вылавливания потомков исчезнет.
ipfw - это лишь морда управления ядром. сетевой частью и не всей. в ней нет инструмента управления такой дисциплиной, как net_cls. Может, я ошибаюсь, но фик нашел.
тут еще, если гуглить, то очень много "газетной" информации. Конечно, не жду супер-ответа, но вдруг еще кто какую наводку даст.
Korwin [06.05.2015 13:27] :
И да и нет. Вот выдержка из man:
The user interface for ipfw is implemented by the ipfw(8) utility

В UserSpace ipfw - это морда для управления ядренного драйвера ipfw.
Свою работу он делает.

Правда я не нашел в нем способа создать правило для фильтрации на основе process id. EsTaF в эту сторону не изучали ipfw?
EsTaF [06.05.2015 13:34] :
Korwin
Да, не нашел просто. Пока не нашел. "ipfw per process" в гугле, (без кавычек естественно) пока ни о чем. Вернее, для меня.
через uid пожалуйста, но это не то. по pid - не ясно еще. может даже не ipfw, а куда-то в systrace нужно смотреть.
Korwin [06.05.2015 15:17] :
EsTaF
А что за задача такая? Может, если знать причину можно другой вариант найти решения?
EsTaF [07.05.2015 09:10] :
Korwin
Да. Вы правы. Решил ее совершенно другим способом. Вернее, даже не ее.
AzbukaIT [07.05.2015 11:01] :
EsTaF, а можно узнать, как?
[Ответить]
[Вперед >]