Сценарий Linux iptables для блокировки всего доступа в Интернет, за исключением желаемых приложений

КОНТЕКСТ:

Я хотел иметь сценарий оболочки, который блокировал бы весь входящий / исходящий трафик на мой компьютер, ЕСЛИ я не хочу использовать браузер или какое-либо другое приложение, и в этом случае я бы вызвал его, и будут запускаться только те приложения.

Я исследовал предыдущие сценарии, сделанные умными людьми (ссылки на источники в конце), а также инвестировал время, чтобы научиться самостоятельно использовать iptables (все еще работая на этом фронте).

Вот результат проделанной работы:

РЕЗУЛЬТАТЫ:

Перед запуском скрипта оболочки создается группа с именем internet :

sudo groupadd internet

Сценарий оболочки:

 #!/bin/sh #only allow apps run from "internet" group to run # clear previous rules sudo iptables -F # accept packets for internet group sudo iptables -A OUTPUT -p tcp -m owner --gid-owner internet -j ACCEPT sudo iptables -A OUTPUT -p udp -m owner --gid-owner internet -j ACCEPT # also allow local connections sudo iptables -A OUTPUT -p tcp -d 127.0.0.1 -j ACCEPT sudo iptables -A OUTPUT -p tcp -d 192.168.0.1/24 -j ACCEPT # reject packets for other users sudo iptables -A OUTPUT -j REJECT # same process for IPv6: sudo ip6tables -A OUTPUT -p tcp -m owner --gid-owner internet -j ACCEPT sudo ip6tables -A OUTPUT -p udp -m owner --gid-owner internet -j ACCEPT sudo ip6tables -A OUTPUT -p tcp -d 127.0.0.1 -j ACCEPT sudo ip6tables -A OUTPUT -p tcp -d 192.168.0.1/24 -j ACCEPT sudo ip6tables -A OUTPUT -j REJECT 

Это другая часть оболочки, над которой я сейчас работаю, а не на 100% уверен в:

 #DROPS ALL INPUT and FORWARD sudo iptables -A INPUT -j DROP sudo iptables -A FORWARD -j DROP #ONLY ACCEPTS INPUT THAT WAS INITIATED BY SOME OUTPUT sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #SAME REPEATED FOR IPv6 sudo ip6tables -A INPUT -j DROP sudo ip6tables -A FORWARD -j DROP sudo ip6tables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 

После выполнения всего сценария выше, следующая команда откроет терминал, который будет частью internet группы, и, следовательно, любое приложение (например, firefox, например), открытое этим терминалом, будет иметь доступ в Интернет, тогда как все остальные INPUT / OUTPUT будет остановлен

 sudo -g internet -s 

ВОПРОС:

Является ли предыдущая логика в порядке? В настоящее время я работаю над тестированием всех функций, устанавливая программное обеспечение сетевого мониторинга (nethogs), тестируя каждую строку кода и видя, что результат такой же ожидаемый, НО в то же время я только начал изучать iptables 2 дня назад, Так что, хотя исходники исходного кода сделаны опытными кодерами, я не уверен на 100% в своей способности собрать все вместе, чтобы получить желаемый результат. Спасибо всем, кто нашел время, чтобы прочитать все это и принять участие в обсуждении !!!

источники:

Https://plus.google.com/+TobyKurien/posts/YZhZJCZmGgm https://serverfault.com/questions/429400/iptables-rule-to-allow-all-outbound-locally-originating-traffic

PS: Спасибо @dirkt за то, что помогли мне понять многие фундаментальные концепции iptables, а также ответить на некоторые из моих вопросов относительно исходного кода.


ОБНОВИТЬ:

Итак, после запуска кода, похоже, что-то не так. Что происходит, так это следующее. Я запускаю сценарий оболочки:

 bash myscript 

Я получаю 2 ошибки следующим образом:

Ip6tables v1.6.0: host / network 127.0.0.1 не найден. Попробуйте `ip6tables -h 'или' ip6tables -help 'для получения дополнительной информации.

Ip6tables v1.6.0: host / network 198.168.0.1 не найден. Попробуйте `ip6tables -h 'или' ip6tables -help 'для получения дополнительной информации.

Но все остальное работает хорошо, а когда я делаю sudo iptables -L я подтвердил, что все остальные правила действуют. ПОСЛЕ того, я попробовал следующее:

  • Запустите firefox вручную, дважды щелкнув значок. Результат был таким, как ожидалось, сразу же я получил ошибку « Сервер не найден» , что было хорошим знаком
  • После этого я запустил команду sudo -g internet -s в терминале, а затем firefox . СЕЙЧАС … когда я попытался загрузить сайт, он не показал мне, что сервер не найден , но он продолжает загружаться в течение длительного периода времени, очень долго. Это заставляет меня думать, что, возможно, выходной ответ был отправлен, НО вход блокировался.

Если кто-нибудь знает, почему это может произойти, я хотел бы узнать ваши отзывы!

  • Изменение цвета терминала при подключении к удаленному серверу, Linux
  • Прочитайте содержимое zipped-файла без извлечения?
  • Как сравнить двоичные файлы в Linux?
  • Что делает dd conv = sync, noerror do?
  • Linux / Unix в Windows
  • Известные проблемы с двойной загрузкой Windows 8 и Fedora 17
  • Ubuntu Netbook Remix на USB?
  • Каковы мои лучшие возможности для восстановления данных с неисправной микрокарты SD (используемой на сотовом телефоне Android)?
  • Черный экран Kali Linux 2016.2 на VirtualBox
  • Как отключить подсказки для пароля при выполнении git push / pull?
  • Не удается смонтировать жесткий диск. Ubuntu 12.04
  • Правило udev с bInterfaceNumber не работает
  • Interesting Posts

    Ошибка DriveImage XML с ошибкой службы теневой копии тома Windows

    Множественное умножение строки Excel

    Как перезагрузить настройки цвета Windows после изменения раздела реестра?

    Поиск и устранение неисправностей потенциально неисправного источника питания

    Как вы поддерживаете Microsoft Excel на полной скорости, даже если у него нет фокуса окна?

    Почему вы не можете дефрагментировать твердотельные диски?

    ECC-плагин в материнской плате без ECC

    Почему существует такая большая разница между «Размер» и «Размер на диске»?

    Что более эффективно для восстановления производительности – утилит очистки или переустановки ОС?

    Загрузка файлов в WebView

    Этот class обработчика должен быть статическим или может возникнуть утечка: IncomingHandler

    Использовать командную строку для отображения отключенных сетевых интерфейсов в Windows? (Мобильная широкополосная связь и регулярные соединения)

    Клонирование окон с жесткого диска на m.2 ssd

    Настройка адаптивной яркости в Windows 8

    Удаленное управление компьютером с использованием другого компьютера

    Давайте будем гением компьютера.