Иногда ради прикладных задач может возникнуть потребность в недопущении определенного приложения в интернет или сеть в целом. Безусловно, для реализации подобных задач можно пользоваться SELinux или AppArmor, но они требуют достаточно сложной для новичка настройки и часто игра не стоит свеч. В этой статье я расскажу, как всего за несколько минут решить подобную задачу используя iptables. При этом нам не придется ставить какой-либо софт. Пример подходит для любого дистрибутива Linux.
После завершения манипуляций, изложенных ниже, мы получим возможность запускать любое приложение без сети:
|
|
или без интернета:
|
|
Для начала мы создадим две группы noinet и nolan:
|
|
Добавим в группы текущего пользователя:
|
|
Теперь воспользуемся возможностями iptables. Напишем два скрипта, которые будут стартовать вместе с ОС:
|
|
#!/bin/bash
iptables -A OUTPUT -d 10.0.0.0/8 -m owner --gid-owner noinet -j ACCEPT
iptables -A OUTPUT -d 172.16.0.0/12 -m owner --gid-owner noinet -j ACCEPT
iptables -A OUTPUT -d 192.168.0.0/16 -m owner --gid-owner noinet -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner noinet -j DROP
|
|
#!/bin/bash
iptables -A OUTPUT -m owner --gid-owner noinet -j DROP
Сделаем скрипты исполняемыми:
|
|
Настало время сделать пару скриптов, которые будут запускать наши приложения с привилегиями этих групп:
|
|
#!/bin/bash
sg noinet "$*"
|
|
|
|
Сделаем скрипты исполняемыми:
|
|
Дабы не перезагружать ОС, выполним скрипты iptables:
|
|
Теперь для запуска приложения без сети достаточно добавить nolan. Без интернета — noinet.
Проверим работоспособность:
|
|
|
|
С сетью все будет по аналогии.
На этом все. Спасибо за внимание, до новых встреч!
Смотрите также
- Как добавить постоянные статические маршруты (persistent static routes) в Mac OS X.
- Знакомство с CMake. Часть 3. CMakeCache, модули CMake, зависимости сборки.
- maybe? Интересная песочница для отладки операций с файлами в скриптах Linux.
- Знакомство с CMake. Часть 2. Переменные, условия, сообщения, опции.
- Знакомство с CMake. Часть 1. Установка, CMakeLists.txt, сборка.