Чи є брандмауер рівня програми для Ubuntu 16.04? (із графічним інтерфейсом)


20

Я мушу визнати, що я дуже новачок у світі Linux, і є концепції, які мені здаються дуже незнайомими.

Я найбільше сумую за хорошим, але простим брандмауером рівня додатків. На сьогоднішній день, з усією цією нав'язливою нав'язливою та постійною підключенням до Інтернету, необхідно знати, що саме робить ваш комп’ютер, чому і з ким. Аналізатор протоколів нормальний, але занадто недоброзичливий і забирає багато часу для "аналізу", який практично не марний для домашніх користувачів.

Я виявив багато програм у середовищах Windows, які не повинні підключатися до Інтернету, але вони це роблять (і за допомогою мого безкоштовного брандмауера ZoneAlarm я можу їх зупинити).

За допомогою Gufw (та кількох інших) ви повинні знати, які додатки ви вже встановили (і ми знаємо, що це майже неможливо в цій сучасній ОС з мільярдами кодових рядків).

Що я шукаю - це брандмауер, який відстежує підключення NIC / WAN і виявляє будь-яку програму / додаток або все, що намагається "розмовляти" через нього проактивно, незалежно від того, який порт намагається використовувати (обов'язково з програм, про які я згадував раніше, намагаюся підключитися використовуючи добре відомі порти TCP: 80, 443, 8080). Чи існує це? (Якщо ні, то як я точно знаю, що робить мій комп'ютер?)


1
Цікаво: Чи змішала ця зміїна олія останнім часом серйозні проблеми (наприклад, wannacry)?
Відновіть Моніку - М. Шредер

Відповіді:


12

Дуейн

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, і немає "пакету" для Ubuntu, лише для чогось, що називається "Archlinux" (я думаю, інший дистрибутив Linux) ... Я також знайшов що можна пристосувати це до будь-якого дистрибутива, роблячи перекомпіляцію та інсталяцію вручну ... я прав?
jonabrv1965

1
Перш за все, дякую ще раз Еріку за підтримку. Ум ... більше 30 кроків для налаштування та запуску програми в Linux ... не дуже зручно для користувачів, чи не так? ... Починаю дивіться, чому Linux має дуже низький прийом поза людьми техніків ... я спробую це (головним чином, тому що мені доведеться будь-якою ціною відірватися від M $ Windoze)
jonabrv1965,

Чи не існує PPA для надання бінарних файлів? Google знайшов startpad.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.


> "як не дивно це написано на Python" - ні, це не дивно, насправді дуже гарна ідея використовувати мову високого рівня для всього, крім "гарячих" частин, щоб заощадити час і зробити менше помилок.
Sarge Borsch

3

Це дійсно гарне запитання, але я ненавиджу такі питання, тому що на них дуже важко відповісти, не відриваючись, мовляв, безпека не важлива.

Отже, спершу дозвольте сказати, що безпека важлива, але що Linux обробляє її зовсім інакше, ніж це робить Windows.

Тож давайте вирішимо ваше питання.

По-перше, не збирається існувати брандмауер, який працює аналогічно зоні тривоги. У Linux просто немає великої потреби в цьому. Багато додатків працюють в архітектурі клієнт / сервер, навіть якщо ви використовуєте їх на одній машині. Xorg - чудовий приклад. Спочатку у вас є сервер (у цьому випадку частина, яка малює на екрані) і клієнт (gedit) gedit розмовляє з сервером про те, як намалювати його кнопки, розмістити текст та інше. Навіть щось настільки просте ос миша має таку саму архітектуру (чи могла мати). Програма діє як сервер, який прослуховує інформацію та надсилає дані, коли вона їх отримує, тоді клієнт "підключається" до цього "мишачого сервера" і чекає інформації.

Це настільки поширено в Linux, що якщо ви створили брандмауер, який запитував дозвіл на кожне мережеве з'єднання, ви, ймовірно, не змогли б його налаштувати, оскільки він не міг підключитися до власного сервера.

Це все дуже грубий приклад, дещо це вводить в оману, оскільки це настільки високий рівень. Але це все ще дуже правда.

Щоб захистити нас від користувачів Linux від цього, ми маємо набір двох дуже основних правил, які виконують дуже хорошу "основну" роботу.

По-перше, жоден користувач, крім root, не може відкрити будь-який порт нижче 1024. (знову ж таки дуже високий рівень). Це означає, що навіть для запуску FTP-сервера (на стандартному порту) вам потрібно мати root-доступ. Ви як користувач зазвичай можете відкривати "високі порти" (ті, які перевищують 1024). Але дивіться правило два.

2-й. жоден процес не може отримати доступ до жодного файлу, до якого користувач, який розпочав процес, не зміг отримати доступ. (знову дуже високий рівень) Отже, якщо "coteyr" повинен був запустити FTP-сервер, то цей FTP-сервер у гіршому випадку (високий рівень) матиме лише такий самий доступ, як і користувачевий котейр, який його запустив.

Через поєднання цих двох правил, "програмне забезпечення", яке запитує кожен раз, коли щось намагається підключити брандмауер, просто стає на шляху, і попиту на нього не так багато.

Це означає, що ви завжди можете створити правило для вихідного брандмауера, і в багатьох випадках це, мабуть, не погана ідея. Багато сервісів можуть бути (і за замовчуванням) налаштовані на використання файлових сокетів (або на основі пам'яті), а не на мережевих сокетах.

Правило вхідного брандмауера зазвичай закриває будь-які непарні проміжки, залишені за правилами 1 або 2.

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


3
> жоден процес не може отримати доступ до будь-якого файлу, до якого користувач, що розпочав процес, не міг отримати доступ - який нічим не відрізняється від Windows, як ви, мабуть, маєте на увазі. Це не різниця в ОС. Чесно кажучи, якщо ви просто дозволили всі з'єднання із зворотним зв'язком, то такий брандмауер не заважатиме жодному TCP-клієнту / серверному застосуванню на одній машині - цілком можливо встановити таке, що контролює лише доступ до мережі. (Крім того, якщо ви не працюєте з Windows 9x, Windows ACL, якщо не що, є більш потужними, ніж традиційні дозволи Unix. Що знову ж таки мало спільного з обмеженням мережі.)
Боб

1
Насправді, прочитавши відповідь ще раз ... Я не впевнений, як не в змозі користуватися відомими портами - це корисно лише для запобігання маскування системних служб (наприклад, прикидаючи себе sshdна 22), але питання здається запитати більше про ексфільтрацію даних. Які майже повністю вихідні з'єднання і мало стосуються того, з якими портами ви можете мати зв'язок.
Боб

1
По-перше, не збирається існувати брандмауер, який працює аналогічно зоні тривоги. У Linux просто немає великої потреби в одній - IP-таблиці будуть контролювати вихідні так само добре, як і в майбутньому, будь ласка, не кажіть речі, яких ви насправді не знаєте.
djsmiley2k - Корова

Привіт, Хонза, під час моєї екскурсії по "домашнім завданням" я кілька разів бачив відповіді, як і ваша. І я дещо це розумію, але ... і це велике "але" ... це не те, що я шукаю ... Я розумію порт, низька експозиція (через низьку поширеність платформи) і всі інші поняття, про які ви згадали ... але те, що я шукаю, - зрозуміти легким способом (наприклад, zonealarm), що робить мій комп'ютер поза самим комп'ютером .. (це Xorg / gedit, щоб наслідувати ваш приклад, у потрібно зайти в Інтернет, щоб щось робити? якщо так, я хочу / мені потрібно знати, чому / коли / де ...
jonabrv1965,

Тоді ви збираєтесь копати трохи глибше. спробуйте netstatзараз у моєму вікні 1354 відкритих з'єднань. 65 з них - мережеві з'єднання. Для мене це досить низька кількість (не кажучи, що це для всіх), але тоді ви б почали намагатися з'ясувати, що робить кожен з цих з'єднань. Як я вже говорив, це не те, що безпека не важлива, це просто зовсім інше середовище.
coteyr
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.