Pull to refresh

Ограничение доступа в интернет для приложений в Linux

Reading time 2 min
Views 24K
Иногда бывает необходимо запустить программу, предварительно заблокировав для неё доступ в интернет. Существует довольно простой трюк для решения этой задачи.

Итак, идея заключается в том, чтобы при запуске приложения устанавливать особый ID группы, который будет сигналом блокировки доступа для netfilter.

Шаг 1. Создаём группу-маркер и добавляем себя в неё


Создаём группу (В нашем случае группа будет называться noinet):
sudo groupadd noinet

Добавляем в неё текущего пользователя:
sudo gpasswd -a `id -un` noinet


Шаг 2. Создаём правило для iptables, которое будет выполняться перед каждым подъёмом сетевого интерфейса


Создадим файл в директории /etc/network/if-pre-up.d
sudo vim /etc/network/if-pre-up.d/inet_access_blocking_rule

со следующим содержимым:
#!/bin/bash
iptables -A OUTPUT -m owner --gid-owner noinet -j DROP

Не забываем сделать его исполняемым:
sudo chmod +x /etc/network/if-pre-up.d/inet_access_blocking_rule

Шаг 3. Создаём скрипт запуска, устанавливающий группу-признак


Разместим скрипт в /usr/local/bin
sudo vim /usr/local/bin/noinet

Содержимое скрипта несложное:
#!/bin/bash
sg noinet "$*"

Опять же, не забываем сделать его исполняемым
sudo chmod +x /usr/local/bin/noinet

Шаг 4. Перезагрузка системы


Наверняка это можно сделать проще, но в случае с karmic out-of-box ситуация выглядит следующим образом:

sudo service networking restart сообщает:
restart: Unknown instance:

sudo initctl restart networking сообщает:
initctl: Unknown instance:

sudo invoke-rc.d networking restart сообщает:
Ignoring unknown interface eth0=eth0

К тому же, чтобы добавление пользователя в группу вступило в силу вам придётся перелогиниться (это как минимум перезапуск DE — sudo restart gdm).
В общем, если вы просто перезагрузитесь, то все настройки выполнены и вступили в силу.

Использование


Использование простое:
noinet ping habrahabr.ru
noinet firefox

Хардкорные линуксоиды шаг 3 могут опустить и использовать всё это так :)
sg noinet "ping habrahabr.ru"
sg noinet "firefox"
Tags:
Hubs:
+69
Comments 34
Comments Comments 34

Articles