Интерактивный брандмауэр для ubuntu 16.04 [dубликат]

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

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

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

47
задан 13 April 2017 в 15:25

90 ответов

На немецком форуме Ubuntu (с переводом на Google на английский язык) есть сценарий Perl, который, похоже, делает это. Я никогда не пробовал, и я больше не рассматривал сценарий, но, возможно, он работает на вас. Описание доступно только на немецком языке, так что вам может понадобиться услуга перевода (например, Google Translate, см. Выше).

6
ответ дан 18 July 2018 в 05:46

На немецком форуме Ubuntu (с переводом на Google на английский язык) есть сценарий Perl, который, похоже, делает это. Я никогда не пробовал, и я больше не рассматривал сценарий, но, возможно, он работает на вас. Описание доступно только на немецком языке, так что вам может понадобиться услуга перевода (например, Google Translate, см. Выше).

6
ответ дан 24 July 2018 в 18:26

В немецком форуме Ubuntu есть скрипт Perl ( Google, переведенный на английский язык ), который, похоже, делает это. Я никогда не пробовал, и я больше не рассматривал сценарий, но, возможно, он работает на вас. Описание доступно только на немецком языке, так что вам может понадобиться услуга перевода (например, Google Translate, см. Выше).

6
ответ дан 31 July 2018 в 21:28

В немецком форуме Ubuntu есть скрипт Perl ( Google, переведенный на английский язык ), который, похоже, делает это. Я никогда не пробовал, и я больше не рассматривал сценарий, но, возможно, он работает на вас. Описание доступно только на немецком языке, так что вам может понадобиться услуга перевода (например, Google Translate, см. Выше).

6
ответ дан 2 August 2018 в 14:45

В немецком форуме Ubuntu есть скрипт Perl ( Google, переведенный на английский язык ), который, похоже, делает это. Я никогда не пробовал, и я больше не рассматривал сценарий, но, возможно, он работает на вас. Описание доступно только на немецком языке, так что вам может понадобиться услуга перевода (например, Google Translate, см. Выше).

6
ответ дан 3 August 2018 в 18:48

В немецком форуме Ubuntu есть скрипт Perl ( Google, переведенный на английский язык ), который, похоже, делает это. Я никогда не пробовал, и я больше не рассматривал сценарий, но, возможно, он работает на вас. Описание доступно только на немецком языке, так что вам может понадобиться услуга перевода (например, Google Translate, см. Выше).

6
ответ дан 5 August 2018 в 03:43

В немецком форуме Ubuntu есть скрипт Perl ( Google, переведенный на английский язык ), который, похоже, делает это. Я никогда не пробовал, и я больше не рассматривал сценарий, но, возможно, он работает на вас. Описание доступно только на немецком языке, так что вам может понадобиться услуга перевода (например, Google Translate, см. Выше).

6
ответ дан 6 August 2018 в 20:40

В немецком форуме Ubuntu есть скрипт Perl ( Google, переведенный на английский язык ), который, похоже, делает это. Я никогда не пробовал, и я больше не рассматривал сценарий, но, возможно, он работает на вас. Описание доступно только на немецком языке, так что вам может понадобиться услуга перевода (например, Google Translate, см. Выше).

6
ответ дан 9 August 2018 в 01:10

В немецком форуме Ubuntu есть скрипт Perl ( Google, переведенный на английский язык ), который, похоже, делает это. Я никогда не пробовал, и я больше не рассматривал сценарий, но, возможно, он работает на вас. Описание доступно только на немецком языке, так что вам может понадобиться услуга перевода (например, Google Translate, см. Выше).

6
ответ дан 14 August 2018 в 19:20
  • 1
    Я посмотрю на это. Интересно, что это правильный инструмент. К сожалению, нет gui, но это не должно меня останавливать :) – guerda 25 May 2011 в 16:13

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

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

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

29
ответ дан 18 July 2018 в 05:46

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

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

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

Подробнее см. man unshare.

3
ответ дан 18 July 2018 в 05:46

Попробуйте Leopard Flower. У этого есть ограничения GUI и каждого приложения.

1
ответ дан 18 July 2018 в 05:46

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

https://help.ubuntu.com/8.04/serverguide/C/firewall.html

Или вы можете использовать программу с графическим интерфейсом над ним, gufw, который устанавливается непосредственно из программного обеспечения Ubuntu Software Center:

https://help.ubuntu.com/8.04/serverguide/C/firewall.html

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

http://sourceforge.net/projects/leopardflower/

4
ответ дан 18 July 2018 в 05:46

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

Чтобы добавить то, что находится в сообщении, которое я связал выше:

Создайте группу «Интернет», введя следующую в оболочку: sudo groupadd internet Убедитесь, что пользователь, который запустит сценарий ниже, добавляется в группу sudo в /etc/group. Если вы в конечном итоге измените этот файл, вам нужно будет выйти из системы и вернуться к нему, прежде чем скрипт будет работать. Создайте сценарий, содержащий следующее, и запустите его: #!/bin/sh # Firewall apps - 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 # 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 -p tcp -j REJECT # open a shell with internet access sudo -g internet -s Запустив вышеуказанный скрипт, вы получите оболочку, в которой вы можете запускать приложения с доступом в Интернет.

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

2
ответ дан 18 July 2018 в 05:46

Это было в iptables до версии ядра 2.6.24. Если вы используете машину 2.x - 2.6.24, и ваше ядро ​​выполнило это, вы можете это сделать. по какой-то причине они вытащили его, поэтому нет его не microsoft. http://cateee.net/lkddb/web-lkddb/IP_NF_MATCH_OWNER.html

1
ответ дан 18 July 2018 в 05:46

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

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

]

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

См .:

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

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

2
ответ дан 18 July 2018 в 05:46

Нет, это невозможно. Он также не является частью традиционного определения брандмауэра. Это то, что Microsoft придумала довольно недавно, пытаясь разобраться в своих принципиально нарушенных проблемах безопасности ОС. [0]

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

0
ответ дан 18 July 2018 в 05:46

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

Создайте группу no-internet. Не присоединяйтесь к этой группе. Добавьте правило iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP в таблицы ip, которое запрещает использование всех процессов, принадлежащих группе no-internet, к сети. Выполните sudo -g no-internet YOURCOMMAND вместо YOURCOMMAND.

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

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

или что-то похожее на ваш /etc/sudoers.

15
ответ дан 18 July 2018 в 05:46

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

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

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

29
ответ дан 24 July 2018 в 18:26
  • 1
    Круто! Я также посмотрел на ppa, но там нет пакета, несмотря на то, что приложение создано там. Также интересно, может ли он показать, что ip разрешен для удобочитаемого имени сайта? И я собираюсь следовать инструкциям компиляции, я видел много советов для пакетов ubuntu dep, и я буду использовать checkinstall для создания моей локальной копии пакетов .deb, чтобы легко управлять обновлениями (удалять / устанавливать). Может быть, checkinstall может быть использован для создания ваших дистрибутивов тоже, я думаю. – Aquarius Power 8 October 2014 в 09:47
  • 2
    Вы можете открыть запрос функции на Github ( github.com/Douane/Douane/issues ) :) – ZedTuX 8 October 2014 в 14:50
  • 3
    Кажется, именно то, что мне нужно! Но я не могу найти пакет для установки на Ubuntu. – azerafati 14 March 2016 в 18:06
  • 4
    Еще не пакет для Ubuntu? – Anwar 30 April 2016 в 09:05
  • 5
    Нет, никто не пришел ко мне в отношении Ubuntu :( – ZedTuX 30 April 2016 в 11:23

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

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

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

Подробнее см. man unshare.

3
ответ дан 24 July 2018 в 18:26

Попробуйте Leopard Flower. У этого есть ограничения GUI и каждого приложения.

1
ответ дан 24 July 2018 в 18:26

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

https://help.ubuntu.com/8.04/serverguide/C/firewall.html

Или вы можете использовать программу с графическим интерфейсом над ним, gufw, который устанавливается непосредственно из программного обеспечения Ubuntu Software Center:

https://help.ubuntu.com/8.04/serverguide/C/firewall.html

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

http://sourceforge.net/projects/leopardflower/

4
ответ дан 24 July 2018 в 18:26

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

Чтобы добавить то, что находится в сообщении, которое я связал выше:

Создайте группу «Интернет», введя следующую в оболочку: sudo groupadd internet Убедитесь, что пользователь, который запустит сценарий ниже, добавляется в группу sudo в /etc/group. Если вы в конечном итоге измените этот файл, вам нужно будет выйти из системы и вернуться к нему, прежде чем скрипт будет работать. Создайте сценарий, содержащий следующее, и запустите его: #!/bin/sh # Firewall apps - 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 # 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 -p tcp -j REJECT # open a shell with internet access sudo -g internet -s Запустив вышеуказанный скрипт, вы получите оболочку, в которой вы можете запускать приложения с доступом в Интернет.

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

2
ответ дан 24 July 2018 в 18:26

Это было в iptables до версии ядра 2.6.24. Если вы используете машину 2.x - 2.6.24, и ваше ядро ​​выполнило это, вы можете это сделать. по какой-то причине они вытащили его, поэтому нет его не microsoft. http://cateee.net/lkddb/web-lkddb/IP_NF_MATCH_OWNER.html

1
ответ дан 24 July 2018 в 18:26

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

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

]

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

См .:

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

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

2
ответ дан 24 July 2018 в 18:26
  • 1
    Любой, кто считает, что это помечено: вместо этого это не комментарий, он отвечает на вопрос, заданный . @ user141987 Я рекомендую расширить это, чтобы предоставить дополнительную информацию о том, как настроить iptables для реализации ограничений для каждого приложения. Я рекомендую включить важную информацию в свой ответ (и все еще предоставляя ссылку, для справки). – Eliah Kagan 20 March 2013 в 19:50
  • 2
    iptables НЕ фильтрует приложение. – Panther 20 March 2013 в 22:58
  • 3
    Эта статья представляется дезинформацией, поскольку такой вариант отсутствует. Причина, по которой просьбы о создании такого варианта в прошлом были отвергнуты, заключается в том, что она была бы по своей сути ненадежной; приложение может просто изменить свое имя. – psusi 21 March 2013 в 19:24
  • 4
    @psusi Вы говорите «Если ваше ядро ​​было скомпилировано с помощью CONFIG_IP_NF_MATCH_OWNER, тогда вы можете настроить брандмауэр iptables для разрешения или отклонения пакетов на основе каждой команды». это неверно? Или просто, что большинство ядер не включают эту опцию? Если это неверно, есть ли источники информации, которые его развенчали? (Кроме того, обратите внимание, что основной целью ограничений брандмауэра для каждого приложения является не попытка сделать его совершенно безопасным для запуска ненадежных приложений. Цель состоит прежде всего в том, чтобы предоставить пользователю контроль над возможностями встроенных параметров приложений. ) – Eliah Kagan 21 March 2013 в 23:27
  • 5
    Эта опция была удалена из ядра в 2005 году, за 8 лет до того, как этот ответ был дан - spinics.net/lists/netfilter/msg49716.html и, несмотря на утверждения об обратном, неточно, вы не можете использовать фильтр приложения с iptables. – Panther 21 July 2017 в 01:49

Нет, это невозможно. Он также не является частью традиционного определения брандмауэра. Это то, что Microsoft придумала довольно недавно, пытаясь разобраться в своих принципиально нарушенных проблемах безопасности ОС. [0]

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

0
ответ дан 24 July 2018 в 18:26
  • 1
    Брандмауэр Microsoft был не первым основным брандмауэром, предлагающим эту функцию. Это даже не первый Windows брандмауэр. BlackIce Defender, ZoneAlarm и множество других программных брандмауэров для Windows предшествуют внедрению брандмауэра Windows Internet Connection через годы. Кроме того, в сообществе Linux такого согласия нет. Мы часто используем AppArmor (или SELinux) для ограничения поведения приложений (и мне интересно, можно ли адаптировать AppArmor для этой цели ...). Нет причин, чтобы это было «неправильно». чтобы контролировать, какие приложения могут получить доступ к Интернету. – Eliah Kagan 20 March 2013 в 19:40
  • 2
    И, как может подтвердить несколько других ответов, ограничения на брандмауэр для каждого приложения вполне возможны ; эта функциональность встроена в iptables / netfilter! – Eliah Kagan 20 March 2013 в 19:46
  • 3
    Нет, ни сетевой фильтр, ни iptables не могут фильтровать для каждого приложения. Они могут фильтроваться пользователем и портом, но не для каждого приложения. – Panther 20 March 2013 в 22:56
  • 4
    «Может просто запустить другой»? Тогда, очевидно, создатель такой программы, которая не блокирует дочерние процессы целевой программы, имеет огромные недостатки. – trusktr 3 August 2013 в 11:16

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

Создайте группу no-internet. Не присоединяйтесь к этой группе. Добавьте правило iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP в таблицы ip, которое запрещает использование всех процессов, принадлежащих группе no-internet, к сети. Выполните sudo -g no-internet YOURCOMMAND вместо YOURCOMMAND.

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

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

или что-то похожее на ваш /etc/sudoers.

15
ответ дан 24 July 2018 в 18:26
  • 1
    Я попробовал ваш гид, sudo -g no-internet firefox подключается быстрее, чем по умолчанию. Это не работает. – kenn 14 April 2014 в 17:22
  • 2
    @kenn Я могу только сказать, что он отлично работает здесь. Я бы предположил, что вы делаете что-то неправильно при создании правила. Не сохранять правило, не делая исполняемый файл сценария или что-то в этом роде. – Tim 14 April 2014 в 18:53
  • 3
    Я перезагрузился и снова применил выше правил без везения – kenn 14 April 2014 в 19:32
  • 4
    Для меня было sudo iptables -A OUTPUT -m owner --gid-owner no-internet -j DROP, sudo требовалось. – Artur Klesun 29 March 2018 в 19:38

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

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

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

screen shot [/g1]

29
ответ дан 31 July 2018 в 21:28

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

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

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

Подробнее см. man unshare .

3
ответ дан 31 July 2018 в 21:28

Попробуйте Leopard Flower . Он имеет ограничения GUI и для каждого приложения.

1
ответ дан 31 July 2018 в 21:28

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

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