У меня есть скрипт Python, который использует pywebkitgtk для извлечения веб-страниц, и мне иногда нужно блокировать сетевой доступ для него. Есть идеи как это сделать?
1 ответ
Если вы являетесь системным администратором, вы можете использовать iptables
(как root) для блокировки доступа определенных команд к определенным портам или (по вашему выбору) ко всем портам (что эквивалентно тому, что он полностью не может получить доступ к сети).
Хорошая ссылка здесь, но существенный момент:
Если ваше ядро было скомпилировано с CONFIG_IP_NF_MATCH_OWNER, то вы можете настроить брандмауэр iptables для разрешения или отклонения пакетов для каждой команды.
В следующем примере показано, как отбросить все исходящие пакеты из команды acroread:
iptables -A OUTPUT -m owner --cmd-owner acroread -j DROP
Модуль владельца позволяет использовать несколько различных параметров для сопоставления, позволяя сопоставлять либо с идентификатором процесса, либо с идентификатором пользователя, либо с именем команды.
--uid-owner userid
Соответствует, если пакет был создан процессом с заданным эффективным идентификатором пользователя--gid-owner userid
Соответствует, если пакет был создан процессом с заданным эффективным идентификатором группы--pid-id processid
Соответствует, если пакет был создан процессом с заданным идентификатором процессаимя владельца
Соответствует, если пакет был создан процессом с заданным именем команды.Модуль "владелец" допускает только совпадения в цепочке OUTPUT, что несколько снижает его полезность - но если вы находитесь в стандартной ситуации NAT, этого должно быть достаточно.