Как управлять доступом в Интернет для каждой программы?

Я хотел бы использовать программное обеспечение для управления, какая программа может соединиться с Интернетом. Я знаю, что это поведение связано со словом "брандмауэр", но некоторые пользователи Linux очень расстроены, если кто-то требует Персональный Брандмауэр. Я не хочу расстраивать Вас спросом такая программа.
Я не хочу к "защищенным портам" или другому материалу, который Персональный Брандмауэр обещает в Windows. Я изучил iptables но это не соответствует моим требованиям.

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

Существует ли программное обеспечение, которое просит каждую программу, если это может получить доступ к Интернету?

72
задан 13 April 2017 в 05:25

12 ответов

Нет, это невозможно. Это также не является частью традиционного определения брандмауэра. Это то, что Microsoft придумала сравнительно недавно, пытаясь описать их фундаментальные проблемы безопасности операционной системы. В сообществе Linux это считается глупым и неработоспособным, потому что одна программа, которая не разрешена, может просто запустить другую программу и получить доступ таким образом.

Если вам не нравится, что программа делает в сети, когда вы её запускаете, то не запускайте эту программу.

0
ответ дан 22 November 2019 в 23:39

В Ubuntu уже есть брандмауэр, ufw , но по умолчанию он отключен. Вы можете включить и использовать его из командной строки или его внешнего интерфейса, gufw , который можно установить непосредственно из Центра программного обеспечения Ubuntu.

Если вам нужно заблокировать доступ в Интернет для определенного приложения, вы можете попробуйте LeopardFlower , который все еще находится в бета-версии и недоступен в Центре программного обеспечения Ubuntu:

5
ответ дан 22 November 2019 в 23:39

Попробуйте Цветок леопарда . Он имеет ограничения для графического интерфейса и приложений.

1
ответ дан 22 November 2019 в 23:39

ПРИМЕЧАНИЕ: Douane больше не разрабатывается активно и, как сообщается, не работает в более поздних версиях Ubuntu. Это решение может не работать, но ответ остается неизменным по историческим причинам.

Если вы все еще ищете такое приложение,В настоящее время я разрабатываю именно это приложение: http://douaneapp.com/ https://gitlab.com/douaneapp/Douane

Мое приложение блокирует любые неизвестные приложения (новые версии авторизованного приложения заблокирован) и спросит вас, разрешите или запретите его трафик.

Посмотрите на веб-сайт; -)

screen shot

36
ответ дан 22 November 2019 в 23:39

@psusi: Очень хочу, чтобы люди не разносили плохую и бесполезную информацию. IPTables позволяет это делать, поэтому я бы не счел это «безрассудным». Просто сказать «НЕТ» без понимания варианта использования - это несколько узкий кругозор. http://www.debian-administration.org/article/120/Application_level_firewalling

ИЗМЕНИТЬ bodhi.zazen

ПРИМЕЧАНИЕ. ЭТА ВАРИАНТ БЫЛА УДАЛЕН ИЗ IPTABLES В 2005 году, за 8 ЛЕТ ДО ПОДАЧИ ЭТОГО ОТВЕТА

SEE - http://www.spinics.net/lists/netfilter/msg49716.html

commit 34b4a4a624bafe089107966a6c56d2a1aca026d4 Автор: Christoph Хеллвиг Дата: Вс, 14 августа, 17:33:59 2005 -0700

[NETFILTER]: Удалите злоупотребление tasklist_lock в ipt {, 6} owner

Удалите сопоставление cmd / sid / pid, так как его нефиксируемое нарушение и стоит в способ блокировки изменений в tasklist_lock.

 Подписано: Christoph Hellwig 
Подписано: Патрик МакХарди 
Подписано: Дэвид С. Миллер 
 
3
ответ дан 22 November 2019 в 23:39

Хорошо это или плохо, но Linux использует другой подход. Нет простого графического интерфейса, предлагающего эту функцию. В Интернете есть много дискуссий по этой теме, и вы можете найти интересные обсуждения, если выполните поиск в Google. Хотя дебаты интересны, на сегодняшний день не было специальной группы программистов, желающих написать и поддерживать эту функцию.

Инструменты, которые предлагают эту функциональность в Linux, - это Apparmor, Selinux и Tomoyo.

Ни один из этих инструментов чрезмерно просты в освоении, и все они имеют свои преимущества и недостатки. Лично я предпочитаю SELinux, хотя у SELinux более крутая кривая обучения.

См .:

http://www.linuxbsdos.com/2011/12/06/3-application-level-firewalls-for-linux-distributions /

Было (есть) приложение, на которое уже ссылались, leopardflower. Я не уверен в статусе / обслуживании.

1
ответ дан 22 November 2019 в 23:39

I нашёл удобное решение, которое решает эту проблему. Создается группа, которой никогда не разрешается использовать интернет и запускать программу в качестве члена этой группы.

  1. Создайте группу no-internet. Присоединитесь к этой группе не, а

    sudo addgroup no-internet.
    
  2. Добавить в iptables правило, запрещающее всем процессам, принадлежащим к группе no-internet, использовать сеть (используйте ip6tables для предотвращения трафика IPv6)

    sudo iptables -A OUTPUT -m owner --gid-владелец no-internet -j DROP
    
  3. Выполнить sudo -g no-internet YOURCOMMAND вместо YOURCOMMAND.

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

%sudo     ALL=(:no-internet)      NOPASSWD: ALL

или, что-то подобное с sudo visudo

Используйте iptables-save и iptables- restore, чтобы сохранить правила брандмауэра.

31
ответ дан 22 November 2019 в 23:39

Tas bija iptables līdz kodola 2.6.24 versijai Ja jūs izmantojat 2.x - 2.6.24 mašīnu un jūsu kodols to ievēro, varat to izdarīt. nez kāpēc viņi to izņēma, tāpēc nē tas nav microsoft. http://cateee.net/lkddb/web-lkddb/IP_NF_MATCH_OWNER.html

1
ответ дан 22 November 2019 в 23:39

Я нашел решение, опубликованное здесь , как хорошее. Он включает в себя создание группы пользователей, для которой разрешен доступ в Интернет , и настройку правил брандмауэра, разрешающих доступ только для этой группы. Единственный способ для приложения получить доступ к Интернету - это запустить его членом этой группы. Вы можете запускать программы в этой группе, открыв оболочку с помощью sudo -g internet -s .

Подведем итоги сообщения, которое я указал выше:

  1. Создайте группу «Интернет», набрав в оболочку: sudo groupadd internet

  2. Убедитесь, что пользователь, который будет запускать приведенный ниже сценарий, добавлен в группу sudo в / etc / group . Если вы в конечном итоге измените этот файл, вам нужно будет выйти из системы и снова войти в нее, прежде чем скрипт, приведенный ниже, заработает.

  3. Создайте скрипт, содержащий следующее, и запустите его:

     #! / Bin / sh
     # Приложения брандмауэра -разрешить запуск приложений только из группы "Интернет"
    
     # очистить предыдущие правила
    sudo iptables -F
    
     # принимать пакеты для интернет-группы
    sudo iptables -A ВЫХОД -p tcp -m owner --gid-owner internet -j ПРИНЯТЬ
    
     # также разрешить локальные подключения
    sudo iptables -A ВЫХОД -p tcp -d 127.0.0.1 -j ПРИНЯТЬ
    sudo iptables -A ВЫХОД -p tcp -d 192.168.0.1/24 -j ПРИНЯТЬ
    
     # отклонить пакеты для других пользователей
    sudo iptables -A OUTPUT -p tcp -j REJECT
    
     # открыть оболочку с доступом в Интернет
    sudo -g internet -s
     
  4. Запустив приведенный выше сценарий, вы получите оболочку, в которой вы можете запускать приложения с доступом в Интернет.

Обратите внимание, что этот сценарий ничего не делает для сохранения и восстановления правил брандмауэра. Вы можете изменить сценарий, чтобы использовать команды оболочки iptables-save и iptables-restore .

3
ответ дан 22 November 2019 в 23:39

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

Это решение, которое не требует изменения правил брандмауэра и работает под тот же пользователь (через sudo ) с измененной средой, где ваш пользователь - my_user , а приложение, которое вы хотите запустить, - my_app :

# run app without access to internet
sudo unshare -n sudo -u my_user my_app

Подробнее см. man unshare и этот ответ .

Linux GUI firewall

Если вы ищете межсетевой экран GUI, у меня были хорошие результаты с OpenSnitch - его еще нет в репозиториях ubuntu, и я бы не назвал его производственным уровнем, но выполнение шагов сборки со страницы github у меня сработало. 97]

5
ответ дан 22 November 2019 в 23:39

Другой вариант - firejail . Он запускает приложение внутри песочницы, где вы контролируете, может ли приложение видеть сеть:

firejail --net=none firefox

Эта команда запустит браузер Firefox без доступа в Интернет. Обратите внимание, что дистрибутив firejail в репозитории Ubuntu устарел -Лучше скачайте последнюю версию LTS с домашней страницы firejail.

7
ответ дан 22 November 2019 в 23:39

Другие вопросы по тегам:

Похожие вопросы: