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

45

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

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

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

    
задан guerda 25.05.2011 в 11:30
источник

11 ответов

6

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

ответ дан Florian Diesch 25.05.2011 в 13:02
источник
28

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

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

Взгляните на сайт ;-)

    
ответ дан ZedTuX 08.08.2013 в 19:56
11

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

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

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

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

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

    
ответ дан Tim 19.02.2014 в 13:17
4

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

Ссылка

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

Ссылка

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

Ссылка

    
ответ дан heiko81 23.12.2011 в 15:30
3

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

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

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

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

    
ответ дан ccpizza 13.02.2017 в 22:34
3

@psusi: Я действительно хочу, чтобы люди не продавали плохую и не полезную информацию. IPTables позволяет это сделать, поэтому я вряд ли буду считать это «безрассудным». Просто говорю «НЕТ», не понимая, что пример использования несколько узкомыслен. Ссылка

EDIT bodhi.zazen

ПРИМЕЧАНИЕ. ЭТО ВАРИАНТЫ УДАЛИТЬСЯ ОТ IPTABLES В 2005 ГОДУ, 8 ЛЕТ ПЕРЕД НАСТОЯЩИМ ОТВЕТОМ ПОСЛЕ ТОГО,

SEE - Ссылка

  

commit 34b4a4a624bafe089107966a6c56d2a1aca026d4 Автор: Christoph   Hellwig Дата: Вс Авг 14 17:33:59 2005 -0700

     

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

     

Вырвать сопоставление cmd / sid / pid с момента его нефиксируемого сломанного и находится в       способ блокировки изменений в tasklist_lock.

Signed-off-by: Christoph Hellwig <[email protected]>
Signed-off-by: Patrick McHardy <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
    
ответ дан user141987 20.03.2013 в 14:36
2

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

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

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

См:

Ссылка

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

    
ответ дан Panther 20.03.2013 в 18:06
2

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

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

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

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

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

    #!/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
    
  4. Запустив указанный выше сценарий, вы получите оболочку, в которой вы можете запускать приложения с доступом в Интернет.

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

    
ответ дан Mark 26.08.2015 в 21:12
1

Это было в iptables до версии 2.6.24 ядра Если вы используете машину 2.x - 2.6.24, и ваше ядро ​​выполнило это, вы можете это сделать. по какой-то причине они вытащили его, поэтому нет его не microsoft. Ссылка

    
ответ дан not really 09.09.2013 в 06:11
1

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

    
ответ дан brand 13.12.2011 в 10:55
0

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

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

    
ответ дан psusi 25.05.2011 в 15:35