Как я могу запретить доступ в Интернет ко всем процессам, кроме избранных?

Иногда я вынужден использовать очень узкую полосу пропускания в сети с пропускной способностью 56 Кбит / с. На моем рабочем столе Ubuntu у меня слишком много программ, которые часто проверяют что-то в сети – и охота и отключение их по очереди действительно хлопотно.

Я хотел бы иметь некоторый инструмент, который запретил бы доступ в Интернет (любыми способами) к каждому процессу, за исключением, например, почтового клиента.

Это вообще возможно? Если да, то как?

Я полагаю, что одним из способов добиться этого является открыть другое сетевое устройство (например, /dev/tap1 ) и настроить его на маршрут в /dev/wlan0 (мое обычное интернет-устройство) и защищать все с помощью пользовательских правил iptables , которые могут быть включен и выключен. Но я не эксперт в iptables, так что решение сортировки, если только кто-то не дает мне конкретных инструкций, бесполезен.

2 Solutions collect form web for “Как я могу запретить доступ в Интернет ко всем процессам, кроме избранных?”

Вы также можете использовать iptables для разрешения / ограничения портами udp / tcp на желаемых интерфейсах. Например, давайте представим правило в таблице filter в цепочке OUTPUT чтобы разрешить весь трафик на tcp / udp port 143 (IMAP).

 (sudo) iptables -A OUTPUT -o eth0 -p udp --destination-port 143 -j ACCEPT (sudo) iptables -A OUTPUT -o eth0 -p tcp --destination-port 143 -j ACCEPT (sudo) iptables -A OUTPUT -o eth0 -j DROP 

Я думаю, что IMAP переходит через TCP, но на всякий случай я ограничиваю также протокол UDP. В этом отношении я предполагаю, что ваш интерфейс к Интернету является eth0 . И ваш почтовый клиент использует протокол IMAP для подключения удаленного почтового сервера. Я просто попробовал это сам, и у меня есть только доступ к почтовому серверу. Помните, что порядок правил важен, иначе он не будет делать то, что вы ожидаете.

Редактировать # 1: как вы просили в комментарии. Чтобы восстановить интернет-трафик, просто удалите введенные вами правила. Вы можете сделать это следующим образом:

Долгий путь:

 (sudo) iptables -D OUTPUT -o eth0 -p udp --destination-port 143 -j ACCEPT (sudo) iptables -D OUTPUT -o eth0 -p tcp --destination-port 143 -j ACCEPT (sudo) iptables -D OUTPUT -o eth0 -j DROP 

Короткий путь:

 (sudo) iptables -nvL --line-numbers 

Выполняя приведенную выше команду, вы увидите перед каждым правилом соответствующее число, которое поможет вам удалить правила, используя этот номер, вместо того, чтобы переписать все правило. Пример вывода будет следующим:

 Chain OUTPUT (policy ACCEPT 73 packets, 8766 bytes) num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT udp -- * eth0 0.0.0.0/0 0.0.0.0/0 udp dpt:143 

И затем, чтобы удалить правило, просто запустите эту команду:

 (sudo) iptables -D OUTPUT 1 

Короткий путь также рекомендуется, если вы не настроили правило, и вы действительно не знаете, как именно. Хотя вы можете восстановить правило из вывода iptables с параметрами -nvL .

Примечание. Это non-persistent способ использования iptables что означает, что вы не будете поддерживать правила при перезагрузке вашей системы. Если вы хотите, чтобы ваши правила были persistent самым простым способом является выполнение следующих действий:

 (sudo) iptables-save > /etc/iptables/rules.v4 

который сохраняет / выгружает ваши текущие правила в /etc/iptables/rules.v4 . Затем после перезагрузки iptables прочитает сохраненную конфигурацию из этих файлов. Для IPv6 вы используете этот другой файл rules.v6 . Имейте в виду, что это относится к Debian где вам нужно установить дополнительный пакет. Подробное объяснение см. В этом руководстве . Для Ubuntu я нашел это другое руководство . Для других систем вы можете просматривать Интернет, но принцип тот же: You dump your current rules to file and set up a script at boot time to apply those saved rules to the current iptables configuration.

Вы можете запускать свои процессы на нескольких виртуальных машинах. Затем вы можете убить сетевой доступ для некоторых виртуальных машин, но не других.

  • Опрос на сервере SFTP (лучший способ скопировать новые файлы с сервера SFTP на локальный компьютер через регулярные промежутки времени)
  • Получить сменный путь диска по метке в сценарии bash
  • Сетевой накопитель Mount Freecom Classic SL (NDAS) в Ubuntu 11.10
  • start-stop-daemon, сервисы, переменные среды и недоступные
  • Отключение OpenVPN для каждого временного интервала
  • Сбой плагина Java на Ubuntu 16.04 / Firefox ESR 52.2.0
  • Понимание прав на домашнюю папку
  • Почему мой супервизор не запускается при перезагрузке?
  • Потерянное соединение samba на компьютере с Windows 10 после обновления samba
  • xinerama, 2 карты, 3 монитора
  • Внешний привод не распознается
  • Interesting Posts

    Как ядро ​​«отказывается» от контроля инициализации, специфичной для дистрибутива?

    Можно ли увидеть ошибки при выполнении скрипта внутри скрипта?

    Как изменить TTY по умолчанию после загрузки?

    Помощь в применении плохо упакованных патчей?

    clonezilla – восстановить образ раздела ОС ОС Windows для большего / меньшего раздела

    tmux / screen ctrl + стрелка (слева направо) не работает на SSH

    Почему пользовательское пространство медленнее ядра?

    Как правильно добавить путь к PATH?

    Поддерживайте две установки tomcat с apt-get

    Могу ли я присоединиться к команде?

    QEMU может эмулировать SD-карту из Linux, но не из OSX

    Добавление столбца значений в файле с разделителями табуляции

    Доступ к удаленным службам, как локальным, с использованием одного SSH-соединения

    Linux Mint обнаруживает микрофон, но микрофон не подбирает звук

    исключить файл перенаправления целевых объектов из цикла for for

    Linux и Unix - лучшая ОС в мире.