Есть ли брандмауэр уровня приложений для Ubuntu 16.04? (с графическим интерфейсом)

20

Я должен признаться, что я очень новичок в мире Linux, и есть концепции, которые кажутся мне очень незнакомыми.

Больше всего мне не хватает хорошего, но простого брандмауэра на уровне приложений. На данный момент, при всей этой распространяющейся навязчивой и постоянной связи с Интернетом, необходимо знать, что именно делает ваш компьютер, почему и с кем. Анализатор протоколов в порядке, но слишком недружелюбен и требует много времени для «анализа», что практически бесполезно для домашних пользователей.

Я обнаружил множество программ в средах Windows, которые не должны подключаться к Интернету, но они подключаются (и с помощью моего бесплатного межсетевого экрана ZoneAlarm я могу их остановить).

С Gufw (и несколькими другими) вы должны знать, какие приложения вы уже установили (и мы знаем, что это практически невозможно с этой современной ОС с миллиардами строк кода).

Мне нужен брандмауэр, который контролирует соединение NIC / WAN и обнаруживает любую программу / приложение или все, что пытается «разговаривать» через него с упреждением, независимо от того, какой порт пытается использовать (обязательно из приложений, о которых я упоминал ранее, пытаться подключиться). используя хорошо известные порты TCP: 80, 443, 8080). Это существует? (Если нет, то откуда я точно знаю, что делает мой компьютер?)

jonabrv1965
источник
1
Просто любопытно: это змеиное масло предотвращало какие-либо серьезные проблемы (например, подражание) в последнее время?
Восстановите Монику - М. Шредер

Ответы:

12

Douane

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


Установка

До сих пор (2017/05/22) нет доступных пакетов Ubuntu. Вы должны построить его из источника.

Эти инструкции по установке основаны на информации из Douane Wiki и протестированы на 64-битной Ubuntu 16.04.2.

Откройте терминал ( Ctrl+ Alt+ T) для запуска команд.

подготовка

Обновите вашу систему:

sudo apt update
sudo apt full-upgrade

Если вы получили уведомление с просьбой перезагрузить компьютер, перезагрузите его.

Установите зависимости

sudo apt install git build-essential dkms libboost-filesystem-dev libboost-regex-dev libboost-signals-dev policykit-1 libdbus-c++-dev libdbus-1-dev liblog4cxx10-dev libssl-dev libgtkmm-3.0-dev python3 python3-gi python3-dbus

Создать каталог для компиляции

cd
mkdir Douane
cd Douane

Сборка модуля ядра

git clone https://github.com/Douane/douane-dkms
cd douane-dkms
sudo make dkms

Проверьте, правильно ли был собран и установлен модуль:

lsmod | grep douane

Вы должны увидеть что-то вроде:

douane                 20480  0

Построй демона

cd ~/Douane
git clone --recursive https://github.com/Douane/douane-daemon
cd douane-daemon
make
sudo make install

Построить процесс диалога

cd ~/Douane
git clone --recursive https://github.com/Douane/douane-dialog
cd douane-dialog
make
sudo make install

Запустите процесс диалога:

/opt/douane/bin/douane-dialog &

Затем проверьте, работает ли он:

pgrep -a douane-dialog

Вы должны увидеть что-то вроде:

21621 /opt/douane/bin/douane-dialog

Постройте конфигуратор

cd ~/Douane
git clone https://github.com/Douane/douane-configurator
cd douane-configurator
sudo python3 setup.py install

Запустите демон и настройте автоматический запуск

Мне пришлось вставить следующий текст в файл /etc/init.d/douane, чтобы включить автоматический запуск демона:

### BEGIN INIT INFO
# Provides:          douane
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Douane firewall
### END INIT INFO

Откройте файл для редактирования:

sudo nano /etc/init.d/douane

Затем вставьте приведенный выше текст после описания программы. Нажмите Ctrl+ O, Enterчтобы сохранить, затем Ctrl+, Xчтобы выйти из редактора.

Это первые 21 строка файла после того, как я вставил текст:

#!/bin/bash
#
# douane      This shell script takes care of starting and stopping
#             douane daemon (A modern firewall at application layer)
#
# Author: Guillaume Hain zedtux@zedroot.org
#
# description: douane is the daemon process of the Douane firewall application. \
# This firewall is limiting access to the internet on application bases.

### BEGIN INIT INFO
# Provides:          douane
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Douane firewall
### END INIT INFO

# Source function library.
. /lib/lsb/init-functions

Теперь вы можете настроить автоматический запуск и запуск демона:

sudo systemctl daemon-reload
sudo systemctl enable douane
sudo systemctl start douane

Активируйте фильтр и автоматически запустите диалог

Запустите конфигуратор:

douane-configurator

Затем убедитесь, что оба переключателя Использовать Douane для фильтрации сетевого трафика и Автозапуск Douane при загрузке включены.

Вы можете просмотреть правила фильтрации на вкладке Правила . Щелкнув правой кнопкой мыши на правиле, вы получите возможность удалить его.

Тестовое задание

Если все в порядке, вы должны увидеть окно Douane, запрашивающее разрешение при открытии приложений, использующих сетевые подключения.

Эрик Карвалью
источник
1
Привет Эрик, большое спасибо за быстрый ответ. Как уже упоминалось, я довольно новичок в Linux. Я нашел эту вещь Douane перед тем, как опубликовать мой вопрос, я посмотрел на сайте Douane, и для Ubuntu нет «пакета», только для чего-то под названием «Archlinux» (я думаю, еще один дистрибутив linux) ... Я также нашел что можно адаптировать это к любому дистрибутиву, выполняя перекомпиляцию и установку вручную ... я прав? ... никто не имеет этого уже скомпилированного и упакованного для Ubuntu?
jonabrv1965
1
Прежде всего, еще раз спасибо, Эрик, за поддержку ... Хм ... более 30 шагов для установки и запуска приложения в Linux ... не очень удобно для пользователя, не так ли? ... Я начинаю Понимаю, почему у Linux такой низкий уровень приема у технарей ... Я попробую (в основном потому, что я должен любой ценой
отделиться
Разве нет PPA для обеспечения двоичных файлов? Google нашел launchpad.net/~zedtux/+archive/ubuntu/douane (но я не проверял это).
Мелебиус
4

Существует новый проект под названием OpenSnitch, описанный в

https://www.cyberciti.biz/python-tutorials/opensnitch-the-little-snitch-application-like-firewall-tool-for-linux/

Страница проекта - https://www.opensnitch.io/

На данный момент это считается альфа-программным обеспечением, и, как ни странно, оно написано на Python, но, по крайней мере, это новая попытка, в то время как Douane - очень старая программа, которую (я думаю) установить гораздо сложнее.

Отказ от ответственности: я лично не тестировал ни одну из программ, я просто пытался выяснить, есть ли другие варианты, и заметил, что никто еще не упомянул OpenSnitch здесь.

user736189
источник
> «как ни странно, это написано на Python» - нет, это не странно, на самом деле очень хорошая идея использовать язык высокого уровня для всего, кроме «горячих» частей, чтобы сэкономить время и сделать меньше ошибок.
Sarge Borsch
3

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

Итак, во-первых, позвольте мне сказать, что безопасность важна, но Linux обрабатывает ее совсем иначе, чем Windows.

Итак, давайте займемся вашим вопросом.

Во-первых, не будет исходящего брандмауэра, который работает так же, как зональная сигнализация. У Linux просто нет большой потребности в этом. Многие приложения работают в архитектуре клиент-сервер, даже если вы используете их на одной машине. Xorg - отличный пример. Сначала у вас есть сервер (в данном случае часть, которая рисует на экране) и клиент (gedit) gedit говорит с сервером о том, как нарисовать его кнопки, разместить его текст и так далее. Даже такая простая архитектура, как у мыши, имеет такую ​​же архитектуру (или может иметь). Программа действует как сервер, который прослушивает информацию и отправляет данные, когда получает их, затем клиент «подключается» к этому «серверу мыши» и ожидает информацию.

Это настолько распространено в Linux, что если вы создадите «брандмауэр», который запрашивает разрешение для каждого сетевого подключения, вы, вероятно, не сможете его настроить, поскольку он не может подключиться к своему собственному серверу.

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

Чтобы защитить нас, пользователей Linux, от этого, у нас есть набор из двух очень простых правил, которые выполняют очень хорошую «базовую» работу.

Во-первых, ни один пользователь, кроме root, не может открыть любой порт ниже 1024. (опять же очень высокий уровень). Это означает, что даже для запуска FTP-сервера (на стандартном порте) вам необходим root-доступ. Вы, как пользователь, обычно можете открывать «высокие порты» (те, что выше 1024). Но см. Правило два.

Второй. ни один процесс не может получить доступ к любому файлу, к которому пользователь, запустивший процесс, не может получить доступ. (снова очень высокий уровень) Так что, если бы «coteyr» должен был запустить FTP-сервер, то этот FTP-сервер в худшем случае (высокий уровень) имел бы только тот же самый доступ, что и пользовательский coteyr, который его запустил.

Из-за сочетания этих двух правил «программное обеспечение», которое запрашивает каждый раз, когда что-то пытается подключить брандмауэр, просто мешает, и на него нет большого спроса.

При этом вы всегда можете создать исходящее правило брандмауэра, и во многих случаях это, вероятно, неплохая идея. Многие сервисы могут быть (и по умолчанию) настроены на использование файловых сокетов (или на основе памяти), а не сетевых сокетов.

Правило входящего межсетевого экрана обычно закрывает любые нечетные пробелы, оставленные правилом 1 или 2.

Моя точка зрения такова. Безопасность важна, и я не пытаюсь сказать, что это не так, просто здесь, на земле Linux, у нас разные инструменты и цели. Я бы порекомендовал вам изучить права пользователей и групп Linux, а затем использовать такие инструменты, как gfw и IPTABLES, чтобы заполнить все пробелы.

coteyr
источник
3
> ни один процесс не может получить доступ к какому-либо файлу, к которому пользователь, запустивший процесс, не может получить доступ - что, как вам кажется, не отличается от Windows. Это не разница ОС. Хотя, если честно, если вы просто разрешите все петлевые соединения, то такой брандмауэр не будет мешать каким-либо TCP-клиентским / серверным приложениям на одной и той же машине - вполне возможно настроить тот, который контролирует только сетевой доступ. (Также. Если вы не используете Windows 9x, списки ACL для Windows, во всяком случае, более мощные, чем традиционные разрешения Unix. И опять-таки, это не имеет ничего общего с ограничением сети.)
Боб
1
На самом деле, прочитав ответ еще раз ... Я не уверен, что неуместна возможность использования хорошо известных портов - это полезно только для предотвращения маскирования системных служб (например, притворяется, что он включен sshdна 22), но вопрос кажется больше спрашивать об эксфильтрации данных. Которые являются почти полностью исходящими соединениями и имеют мало общего с тем, какие порты вам разрешено связывать.
Боб
1
Во-первых, не будет исходящего брандмауэра, который работает так же, как зональная сигнализация. У Linux просто нет особой необходимости - таблицы IP будут контролировать как исходящие, так и будущие, не говорите ничего такого, чего вы на самом деле не знаете.
djsmiley2k - CoW
Привет, Хонза, во время моего тура по домашним заданиям я несколько раз видел ответы, подобные твоему. И я немного понимаю это, но ... и это большое "но" ... это не то, что я ищу ... Я понимаю порт, низкую экспозицию (из-за низкой распространенности платформы) и все другие концепции, которые вы упомянули ... но я ищу, чтобы легко понять (например, zonealarm), что мой компьютер делает вне самого компьютера ... (это Xorg / gedit, чтобы следовать вашему примеру, в нужно идти в Интернет , чтобы сделать что - нибудь , если так что я хочу / нужно знать , почему / когда / где ...?
jonabrv1965
Тогда вы будете копать немного глубже. попробуйте netstatпрямо сейчас моя коробка имеет 1354 открытых соединений. 65 из них являются сетевыми подключениями. Это довольно низкое значение для меня (не говоря уже о том, что это для всех), но тогда вы начинаете пытаться выяснить, что делает каждое из этих соединений. Как я уже сказал, это не значит, что безопасность не важна, это просто совсем другая среда.
Котейр