Gibt es eine Firewall auf Anwendungsebene für Ubuntu 16.04? (mit GUI)

20

Ich muss gestehen, dass ich sehr neu in der Linux-Welt bin und es Konzepte gibt, die mir sehr unbekannt erscheinen.

Am meisten vermisse ich eine gute und dennoch einfache Firewall auf Anwendungsebene. Ab sofort ist es bei all dieser durchdringenden und ständigen Internetverbindung ein Muss zu wissen, was genau Ihr Computer tut, warum und mit wem. Ein Protokollanalysator ist in Ordnung, aber zu unfreundlich und zeitaufwendig, um "zu analysieren", was für Heimanwender praktisch unbrauchbar ist.

Ich habe viele Programme in Windows-Umgebungen entdeckt, die keine Verbindung zum Internet herstellen sollten, dies jedoch tun (und mit meiner kostenlosen ZoneAlarm-Firewall kann ich sie stoppen).

Bei Gufw (und einigen anderen) müssen Sie wissen, welche Apps Sie bereits installiert haben (und wir wissen, dass dies mit diesen modernen Betriebssystemen mit Milliarden von Codezeilen fast unmöglich ist).

Was ich suche, ist eine Firewall, die die NIC / WAN-Verbindung überwacht und jedes Programm / jede App oder was auch immer erkennt, das versucht, proaktiv durch sie zu "kommunizieren", unabhängig davon, welchen Port es zu verwenden versucht (muss von den Apps, die ich zuvor erwähnt habe, versuchen, eine Verbindung herzustellen) Verwendung bekannter TCP-Ports: 80, 443, 8080). Existiert das? (Wenn nicht, woher weiß ich dann mit Sicherheit, was auf meinem Computer läuft?)

jonabrv1965
quelle
1
Nur neugierig: Hat dieses Schlangenöl in letzter Zeit ernsthafte Probleme (wie Wannacry) verhindert?
Wiedereinsetzung von Monica - M. Schröder

Antworten:

12

Douane

Douane ist eine persönliche Firewall, die die Privatsphäre eines Benutzers schützt, indem ein Benutzer steuern kann, welche Anwendungen von seinem GNU / Linux-Computer aus eine Verbindung zum Internet herstellen können.


Installation

Bis jetzt (22.05.2017) sind keine Ubuntu-Pakete verfügbar. Sie müssen es aus dem Quellcode erstellen.

Diese Installationsanleitung basiert auf Informationen aus dem Douane Wiki und wurde unter Ubuntu 16.04.2 64-Bit getestet.

Öffnen Sie ein Terminal ( Ctrl+ Alt+ T), um die Befehle auszuführen.

Vorbereitung

Aktualisieren Sie Ihr System:

sudo apt update
sudo apt full-upgrade

Wenn Sie gefragt werden, ob Sie Ihren Computer neu starten möchten, starten Sie ihn neu.

Installieren Sie die Abhängigkeiten

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

Erstellen Sie ein Verzeichnis für die Kompilierung

cd
mkdir Douane
cd Douane

Erstellen Sie das Kernelmodul

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

Überprüfen Sie, ob das Modul ordnungsgemäß erstellt und installiert wurde:

lsmod | grep douane

Sie sollten etwas sehen wie:

douane                 20480  0

Baue den Daemon

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

Erstellen Sie den Dialogprozess

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

Starten Sie den Dialogprozess:

/opt/douane/bin/douane-dialog &

Überprüfen Sie dann, ob es ausgeführt wird:

pgrep -a douane-dialog

Sie sollten etwas sehen wie:

21621 /opt/douane/bin/douane-dialog

Erstellen Sie den Konfigurator

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

Starten Sie den Daemon und richten Sie den automatischen Start ein

Ich musste folgenden Text in die Datei einfügen /etc/init.d/douane, um das automatische Starten des Daemons zu ermöglichen:

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

Öffnen Sie die Datei zum Bearbeiten:

sudo nano /etc/init.d/douane

Fügen Sie dann den obigen Text nach der Programmbeschreibung ein. Drücken Sie Ctrl+ O, um Enterzu speichern und dann Ctrl+ X, um den Editor zu verlassen.

Dies sind die ersten 21 Zeilen der Datei, nachdem ich den Text eingefügt habe:

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

Jetzt können Sie den Autostart einrichten und den Daemon starten:

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

Aktivieren Sie den Filter und starten Sie den Dialog automatisch

Starten Sie den Konfigurator:

douane-configurator

Stellen Sie dann sicher, dass die Schalter Douane zum Filtern des Netzwerkverkehrs verwenden und Douane beim Booten automatisch starten aktiviert sind.

Sie können die Filterregeln in der Bewertung Regeln Registerkarte. Wenn Sie mit der rechten Maustaste auf eine Regel klicken, wird eine Option zum Löschen angezeigt.

Prüfung

Wenn alles in Ordnung ist, sollte das Douane-Fenster beim Öffnen von Anwendungen, die Netzwerkverbindungen verwenden, nach Erlaubnis fragen.

Eric Carvalho
quelle
1
Hallo Eric, vielen Dank für deine prompte Antwort. Wie gesagt, ich bin ein Anfänger mit Linux. Ich habe diese Douane-Sache vor dem Posten meiner Frage gefunden, ich habe mir die Douane-Site angesehen und es gibt kein "Paket" für Ubuntu, nur für etwas namens "Archlinux" (ich vermute, eine andere Linux-Distribution) ... Ich habe auch gefunden dass man dies an jede Distribution anpassen kann, die manuell eine Neukompilierung und Installation durchführt ... habe ich recht? ... hat dies noch niemand für Ubuntu kompiliert und gepackt?
Jonabrv1965
1
Zunächst noch einmal vielen Dank, Eric, für die Unterstützung. Ähm ... mehr als 30 Schritte, um eine App unter Linux einzurichten und auszuführen ... nicht sehr benutzerfreundlich, oder? ... Ich fange an sehen, warum Linux außerhalb der Technikfreaks so wenig Zuspruch findet ... Ich werde es versuchen (hauptsächlich, weil ich mich um jeden Preis von M $ Windoze trennen muss)
jonabrv1965
Gibt es keine PPA , die Binärdateien bereitstellt? Google hat launchpad.net/~zedtux/+archive/ubuntu/douane gefunden (aber ich habe es nicht getestet).
Melebius
4

Es gibt ein neues Projekt namens OpenSnitch, das unter beschrieben wird

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

Die Projektseite ist https://www.opensnitch.io/

Zu diesem Zeitpunkt wird es als Alpha-Software betrachtet, und seltsamerweise ist es in Python geschrieben, aber zumindest ist es ein neuer Versuch, wohingegen Douane ein sehr altes Programm ist, das (wie ich finde) viel schwieriger zu installieren ist.

Haftungsausschluss: Ich habe keines der beiden Programme persönlich getestet. Ich habe nur versucht herauszufinden, ob es noch andere Optionen gibt. Dabei ist mir aufgefallen, dass hier noch niemand OpenSnitch erwähnt hat.

user736189
quelle
> "seltsamerweise ist es in Python geschrieben" - nein, es ist nicht seltsamerweise eine sehr gute Idee, für alles außer den "heißen" Teilen eine Hochsprache zu verwenden, um Zeit zu sparen und weniger Fehler zu machen.
Sarge Borsch
3

Dies ist eine wirklich gute Frage, aber ich hasse Fragen wie diese, weil sie wirklich schwer zu beantworten sind, ohne zu sagen, dass Sicherheit nicht wichtig ist.

Lassen Sie mich zunächst sagen, dass die Sicherheit wichtig ist, Linux sie jedoch ganz anders behandelt als Windows.

Lassen Sie uns also Ihre Frage angehen.

Erstens wird es keine ausgehende Firewall geben, die genauso funktioniert wie ein Zonenalarm. Linux hat einfach keinen großen Bedarf. Viele Anwendungen arbeiten in einer Client / Server-Architektur, obwohl Sie sie auf demselben Computer verwenden. Xorg ist ein gutes Beispiel. Zuerst haben Sie einen Server (in diesem Fall den Teil, der auf dem Bildschirm gezeichnet wird) und einen Client (gedit), der mit dem Server über das Zeichnen der Schaltflächen, das Platzieren des Texts usw. spricht. Sogar etwas so Einfaches wie eine Maus hat dieselbe Architektur (oder könnte es haben). Ein Programm fungiert als Server, der auf Informationen wartet und Daten sendet, wenn sie empfangen werden. Dann "verbindet" sich ein Client mit diesem "Mausserver" und wartet auf Informationen.

Dies ist unter Linux so verbreitet, dass Sie möglicherweise keine Netzwerkverbindung konfigurieren können, wenn Sie eine "Firewall" erstellen, die nach der Berechtigung für jede Netzwerkverbindung fragt, da keine Verbindung zum eigenen Server hergestellt werden kann.

Dies ist alles ein sehr grobes Beispiel, einiges davon ist irreführend, weil es so hoch ist. Aber es ist immer noch sehr wahr.

Um uns Linux-Benutzer davor zu schützen, haben wir zwei sehr grundlegende Regeln, die eine sehr gute "grundlegende" Arbeit leisten.

Erstens kann kein Benutzer außer root einen Port unter 1024 öffnen (wieder ein sehr hohes Level). Dies bedeutet, dass Sie zum Ausführen eines FTP-Servers (an einem Standardport) Root-Zugriff benötigen. Sie als Benutzer können normalerweise "hohe Ports" (über 1024) öffnen. Aber siehe Regel zwei.

2nd. Kein Prozess kann auf eine Datei zugreifen, auf die der Benutzer, der den Prozess startet, nicht zugreifen konnte. (wieder sehr hohes Level) Wenn also "coteyr" einen FTP-Server starten würde, dann hätte dieser FTP-Server im schlimmsten Fall (hohes Level) nur genau den gleichen Zugriff wie der Benutzer coteyr, der ihn gestartet hat.

Aufgrund der Kombination dieser beiden Regeln wird eine "Software", die jedes Mal fragt, wenn versucht wird, eine Verbindung zur Firewall herzustellen, nur behindert, und es besteht keine große Nachfrage danach.

Das heißt, Sie können immer eine ausgehende Firewall-Regel erstellen, und in vielen Fällen ist dies wahrscheinlich keine schlechte Idee. Viele Dienste können (und sind standardmäßig) so konfiguriert, dass sie dateibasierte Sockets (oder speicherbasierte Sockets) und keine netzwerkbasierten Sockets verwenden.

Eine eingehende Firewall-Regel schließt normalerweise alle ungeraden Lücken, die von Regel 1 oder 2 übrig bleiben.

Mein Punkt ist das. Sicherheit ist wichtig und ich versuche nicht zu sagen, dass dies nicht der Fall ist. Nur hier im Linux-Land haben wir verschiedene Tools und Ziele. Ich würde empfehlen, dass Sie sich die Benutzer- und Gruppenberechtigungen von Linux ansehen und dann ein Tool wie gfw und IPTABLES verwenden, um etwaige Lücken zu schließen.

coteyr
quelle
3
> Kein Prozess kann auf eine Datei zugreifen, auf die der Benutzer, der den Prozess startet, nicht zugreifen konnte. Dies unterscheidet sich nicht von Windows, wie Sie vermuten. Das ist kein Unterschied zum Betriebssystem. Wenn Sie jedoch nur alle Loopback-Verbindungen zulassen, würde eine solche Firewall keine TCP-Client / Server-Anwendungen auf demselben Computer beeinträchtigen - es ist durchaus möglich, eine einzurichten, die nur den Netzwerkzugriff steuert. (Außerdem: Sofern Sie nicht Windows 9x ausführen, sind Windows-ACLs eher leistungsfähiger als herkömmliche Unix-Berechtigungen. Dies hat wiederum wenig mit der Einschränkung des Netzwerks zu tun.)
Bob,
1
Eigentlich lese ich die Antwort noch einmal ... Ich bin mir nicht sicher, wie wichtig es ist, bekannte Ports nicht nutzen zu können - das ist nur nützlich, um das Maskieren von Systemdiensten zu verhindern (z. B. so zu tun, als wäre es sshdauf 22 eingestellt), aber die Frage scheint mehr über Datenexfiltration zu fragen. Bei diesen handelt es sich fast ausschließlich um ausgehende Verbindungen, die wenig mit den Ports zu tun haben, an die Sie sich binden dürfen.
Bob
1
Erstens wird es keine ausgehende Firewall geben, die genauso funktioniert wie ein Zonenalarm. Linux hat einfach keinen großen Bedarf an einem - IP-Tabellen steuern das Ausgehen genauso gut wie das Kommen. Bitte sagen Sie keine Dinge, die Sie nicht wirklich wissen.
djsmiley2k - CoW
Hallo Honza, während meiner "Hausaufgaben" -Tour habe ich mehrmals Antworten wie deine gesehen. Und ich verstehe es ein wenig, aber ... und es ist ein großes "aber" ... ist nicht das, wonach ich suche ... Ich verstehe den Hafen, geringe Exposition (aufgrund der geringen Verbreitung der Plattform) und alle anderen von Ihnen erwähnten Konzepte ... aber was ich suche, ist auf einfache Weise zu verstehen (zB zonealarm), was mein Computer außerhalb des Computers selbst tut. (Ist Xorg / gedit, um Ihrem Beispiel zu folgen, in Wenn ja, ich möchte / muss wissen, warum / wann / wo ...
Jonabrv1965
Dann wirst du etwas tiefer graben. Momentan hat netstatmeine Box 1354 offene Verbindungen. 65 davon sind Netzwerkverbindungen. Das ist für mich eine recht niedrige Zahl (nicht für alle), aber dann würden Sie versuchen herauszufinden, was jede dieser Verbindungen bewirkt. Wie ich schon sagte, Sicherheit ist nicht so wichtig, es ist nur eine ganz andere Umgebung.
Coteyr