Czy dla Ubuntu 16.04 istnieje zapora ogniowa na poziomie aplikacji? (z GUI)

20

Muszę wyznać, że jestem nowy w świecie Linuksa i istnieją pojęcia, które wydają mi się bardzo nieznane.

Najbardziej tęsknię za dobrą, ale prostą zaporą na poziomie aplikacji. W tej chwili, przy całej tej wszechobecnej, natrętnej i stałej łączności z Internetem, musisz wiedzieć, co dokładnie robi twój komputer, dlaczego i z kim. Analizator protokołów jest w porządku, ale zbyt nieprzyjazny i czasochłonny, aby „analizować”, który jest praktycznie bezużyteczny dla użytkowników domowych.

Odkryłem wiele programów w środowiskach Windows, które nie powinny łączyć się z Internetem, ale robią to (i dzięki mojej zaporze sieciowej ZoneAlarm mogę je zatrzymać).

Z Gufw (i kilkoma innymi) musisz wiedzieć, które aplikacje już zainstalowałeś (i wiemy, że jest to prawie niemożliwe w tym nowoczesnym systemie operacyjnym z miliardami linii kodu).

To, czego szukam, to zapora ogniowa, która monitoruje połączenie NIC / WAN i wykrywa dowolny program / aplikację lub cokolwiek, co próbuje „rozmawiać” przez to proaktywnie, niezależnie od portu, który próbuje użyć (musi to być aplikacja, o której wspomniałem wcześniej, próbuje się połączyć przy użyciu dobrze znanych portów TCP: 80, 443, 8080). Czy to istnieje? (Jeśli nie, to skąd mam wiedzieć, co robi mój komputer?)

jonabrv1965
źródło
1
Ciekawe: czy ten olej wężowy ostatnio zapobiegał poważnym problemom (takim jak wannacry)?
Przywróć Monikę - M. Schröder

Odpowiedzi:

12

Douane

Douane jest osobistą zaporą ogniową, która chroni prywatność użytkownika, pozwalając użytkownikowi kontrolować, które aplikacje mogą łączyć się z Internetem z komputera GNU / Linux.


Instalacja

Do tej pory (2017/05/22) nie ma dostępnych pakietów Ubuntu. Musisz zbudować go ze źródła.

Te instrukcje instalacji są oparte na informacjach z Douane Wiki i przetestowane na Ubuntu 16.04.2 64-bit.

Otwórz terminal ( Ctrl+ Alt+ T), aby uruchomić polecenia.

Przygotowanie

Zaktualizuj swój system:

sudo apt update
sudo apt full-upgrade

Jeśli otrzymasz powiadomienie z prośbą o ponowne uruchomienie komputera, uruchom go ponownie.

Zainstaluj zależności

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

Utwórz katalog do kompilacji

cd
mkdir Douane
cd Douane

Zbuduj moduł jądra

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

Sprawdź, czy moduł został poprawnie zbudowany i zainstalowany:

lsmod | grep douane

Powinieneś zobaczyć coś takiego:

douane                 20480  0

Zbuduj demona

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

Zbuduj proces dialogu

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

Rozpocznij proces dialogu:

/opt/douane/bin/douane-dialog &

Następnie sprawdź, czy działa:

pgrep -a douane-dialog

Powinieneś zobaczyć coś takiego:

21621 /opt/douane/bin/douane-dialog

Zbuduj konfigurator

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

Uruchom demona i skonfiguruj automatyczne uruchamianie

Musiałem wstawić następujący tekst do pliku /etc/init.d/douane, aby umożliwić automatyczne uruchomienie demona:

### 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

Otwórz plik do edycji:

sudo nano /etc/init.d/douane

Następnie wklej powyższy tekst po opisie programu. Naciśnij Ctrl+ O, Enteraby zapisać, a następnie Ctrl+, Xaby wyjść z edytora.

To jest pierwsze 21 wierszy pliku po wstawieniu tekstu:

#!/bin/bash
#
# douane      This shell script takes care of starting and stopping
#             douane daemon (A modern firewall at application layer)
#
# Author: Guillaume Hain [email protected]
#
# 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

Teraz możesz skonfigurować automatyczne uruchamianie i uruchomienie demona:

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

Aktywuj filtr i automatycznie uruchom okno dialogowe

Uruchom konfigurator:

douane-configurator

Następnie upewnij się, że przełączniki Użyj Douane do filtrowania mojego ruchu sieciowego i Auto start Douane przy rozruchu są włączone.

Możesz przejrzeć reguły filtrowania w zakładce Reguły . Kliknij regułę prawym przyciskiem myszy, aby wyświetlić opcję jej usunięcia.

Test

Jeśli wszystko jest w porządku, powinieneś zobaczyć okno Douane z prośbą o pozwolenie podczas otwierania aplikacji korzystających z połączeń sieciowych.

Eric Carvalho
źródło
1
Cześć Eric, dziękuję bardzo za szybką odpowiedź. Jak wspomniano, jestem całkiem nowicjuszem w Linuksie. Znalazłem tę rzecz Douane przed opublikowaniem mojego pytania, zajrzałem na stronę Douane i nie ma „pakietu” dla Ubuntu, tylko coś o nazwie „Archlinux” (chyba kolejna dystrybucja Linuksa) ... znalazłem również że można to dostosować do dowolnej dystrybucji wykonującej ręczną rekompilację i instalację ... mam rację? ... nikt tego jeszcze nie skompilował i nie spakował dla Ubuntu?
jonabrv1965
1
Przede wszystkim jeszcze raz dziękuję Ericowi za wsparcie .. Uhm ... ponad 30 kroków, aby zainstalować i uruchomić aplikację w systemie Linux ... niezbyt przyjazny dla użytkownika, prawda? ... Zaczynam zobacz, dlaczego Linux ma bardzo niski odbiór poza ludźmi z branży ... Spróbuję (głównie dlatego, że za wszelką cenę muszę oderwać się od M $ Windoze)
jonabrv1965
Czy nie ma umowy PPA zapewniającej pliki binarne? Google znalazł launchpad.net/~zedtux/+archive/ubuntu/douane (ale go nie testowałem).
Melebius
4

Istnieje nowy projekt o nazwie OpenSnitch opisany na stronie

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

Strona projektu to https://www.opensnitch.io/

W tym momencie jest uważane za oprogramowanie alfa i, co dziwne, jest napisane w Pythonie, ale przynajmniej jest to nowa próba, podczas gdy Douane jest bardzo starym programem, który (myślę) jest znacznie trudniejszy do zainstalowania.

Oświadczenie: Nie testowałem osobiście żadnego programu, próbowałem tylko sprawdzić, czy są jakieś inne opcje i zauważyłem, że nikt jeszcze nie wspomniał o OpenSnitch.

użytkownik736189
źródło
> „dziwnie, że jest napisane w Pythonie” - nie, nie jest to dziwne, w rzeczywistości bardzo dobrym pomysłem jest używanie języka wysokiego poziomu do wszystkiego oprócz „gorących” części, aby zaoszczędzić czas i popełnić mniej błędów.
Sarge Barszcz
3

To jest naprawdę dobre pytanie, ale nienawidzę takich pytań, ponieważ naprawdę trudno na nie odpowiedzieć, nie mówiąc, że bezpieczeństwo nie jest ważne.

Po pierwsze, powiem, że bezpieczeństwo jest ważne, ale Linux radzi sobie z nim zupełnie inaczej niż Windows.

Więc rozwiążmy twoje pytanie.

Po pierwsze, nie będzie wychodzącej zapory ogniowej działającej w taki sam sposób jak alarm strefy. Linux po prostu nie ma takiej potrzeby. Wiele aplikacji działa w architekturze klient / serwer, nawet jeśli używasz ich na tym samym komputerze. Xorg jest świetnym przykładem. Najpierw masz serwer (w tym przypadku część, która rysuje na ekranie), a klient (gedit) gedit rozmawia z serwerem o narysowaniu przycisków, umieszczeniu tekstu i tak dalej. Nawet coś tak prostego jak mysz ma tę samą architekturę (lub może mieć). Program działa jak serwer nasłuchując informacji i wysyłając dane, gdy je otrzyma, a następnie klient „łączy” się z tym „serwerem myszy” i czeka na informacje.

Jest to tak powszechne w Linuksie, że jeśli utworzysz „zaporę ogniową”, która poprosi o pozwolenie na każde połączenie sieciowe, prawdopodobnie nie będziesz w stanie go skonfigurować, ponieważ nie będzie mógł połączyć się z własnym serwerem.

To jest bardzo szorstki przykład, niektóre wprowadzają w błąd, ponieważ są tak wysokie. Ale to wciąż bardzo prawda.

Aby chronić nas użytkowników Linuksa przed tym, mamy zestaw dwóch bardzo podstawowych zasad, które wykonują bardzo dobrą „podstawową” pracę.

Po pierwsze, żaden użytkownik oprócz roota nie może otworzyć żadnego portu poniżej 1024. (ponownie bardzo wysoki poziom). Oznacza to, że nawet uruchomić serwer FTP (na standardowym porcie), musisz mieć dostęp do konta root. Użytkownik jako użytkownik może zwykle otwierać „wysokie porty” (te powyżej 1024). Ale patrz zasada druga.

2. miejsce żaden proces nie może uzyskać dostępu do żadnego pliku, do którego użytkownik rozpoczynający proces nie miałby dostępu. (ponownie bardzo wysoki poziom) Więc jeśli „coteyr” miałby uruchomić serwer FTP, to ten serwer FTP w gorszym przypadku (wysoki poziom) miałby dokładnie taki sam dostęp jak użytkownik coteyr, który go uruchomił.

Z powodu połączenia tych dwóch reguł „oprogramowanie”, które pyta za każdym razem, gdy coś próbuje połączyć zaporę, staje się przeszkodą i nie ma na nią dużego popytu.

To powiedziawszy, zawsze możesz utworzyć regułę wychodzącej zapory ogniowej, aw wielu przypadkach prawdopodobnie nie jest to zły pomysł. Wiele usług można (i są domyślnie) skonfigurowanych do używania gniazd opartych na plikach (lub pamięci), a nie gniazd sieciowych.

Reguła zapory przychodzącej zwykle zamyka wszelkie nieparzyste przerwy pozostawione przez regułę 1 lub 2.

Chodzi mi o to. Bezpieczeństwo jest ważne i nie próbuję powiedzieć, że tak nie jest, właśnie tutaj, w Linuksie mamy różne narzędzia i cele. Polecam zajrzeć do uprawnień użytkownika i grupy w systemie Linux, a następnie użyć narzędzia takiego jak gfw i IPTABLES, aby wypełnić wszelkie luki.

Coteyr
źródło
3
> żaden proces nie może uzyskać dostępu do żadnego pliku, do którego użytkownik rozpoczynający proces nie miałby dostępu - co nie różni się od systemu Windows, jak się wydaje. To nie jest różnica w systemie operacyjnym. Szczerze mówiąc, jeśli po prostu zezwolisz na wszystkie połączenia pętli zwrotnej, taka zapora ogniowa nie będzie kolidować z żadnymi aplikacjami klient / serwer TCP na tym samym komputerze - możliwe jest skonfigurowanie takiego, który kontroluje tylko dostęp do sieci. (Również. O ile nie korzystasz z systemu Windows 9x, listy ACL systemu Windows są, jeśli w ogóle, potężniejsze niż tradycyjne uprawnienia uniksowe. Co znowu nie ma wiele wspólnego z ograniczaniem sieci.)
Bob
1
Właściwie ponowne przeczytanie odpowiedzi ... Nie jestem pewien, w jaki sposób niemożność korzystania ze znanych portów jest istotna - jest to przydatne tylko, aby zapobiec maskowaniu usług systemowych (np. Udawać, że ma sshd22 lata), ale pytanie wydaje się, że pytać o eksfiltrację danych. Które są prawie całkowicie połączeniami wychodzącymi i mają niewiele wspólnego z portami, z którymi możesz się łączyć.
Bob
1
Po pierwsze, nie będzie wychodzącej zapory ogniowej działającej w taki sam sposób jak alarm strefy. Linux po prostu nie ma takiej potrzeby - tabele IP będą kontrolować zarówno wychodzące, jak i nadchodzące, nie mów rzeczy, których tak naprawdę nie znasz.
djsmiley2k - CoW
Cześć Honza, podczas mojej trasy „odrabiania lekcji” widziałem kilka razy odpowiedzi podobne do twojej. I nieco to rozumiem, ale ... i to jest duże "ale" ... nie jest to, czego szukam ... Rozumiem port, małą ekspozycję (z powodu niskiej rozpowszechnienia platformy) i wszystkie inne pojęcia, o których wspomniałeś ... ale szukam w prosty sposób (np. zonealarm), co robi mój komputer poza samym komputerem .. (to Xorg / gedit, naśladując twój przykład, w muszę iść do internetu, aby coś zrobić? jeśli tak, chcę / muszę wiedzieć, dlaczego / kiedy / gdzie ...
jonabrv1965
Więc będziesz kopać trochę głębiej. spróbuj W netstattej chwili moje urządzenie ma 1354 otwarte połączenia. 65 z nich to połączenia sieciowe. To dla mnie dość niska liczba (nie mówiąc, że jest to dla wszystkich), ale wtedy zacząłbyś próbować dowiedzieć się, co robi każde z tych połączeń. Jak powiedziałem, nie jest tak, że bezpieczeństwo nie jest ważne, to po prostu zupełnie inne środowisko.
coteyr