# Firewall top, Bedienung flop

## schmidicom

Mir ist klar das dies kein reines Gentoo Problem ist aber da ich nun mal primär mit Gentoo arbeite bringe ich das jetzt eben hier mal zu Sprache.

Linux hat ja angeblich die beste Firewall die ein Betriebssystem haben kann aber leider nützt diese herzlich wenig wenn sie nicht oder nur selten entsprechend gehandhabt wird. Ich persönlich sehe den Grund dafür vor allem in der ziemlich schlechten Bedienung. Es gibt wohl kaum viele Leute die Lust haben irgendwelche kryptischen Regeln mit Hilfe von seitenlangen Dokumentationen die möglicherweise nicht einmal in der eigenen Sprache verfügbar sind zu erstellen und zu testen. Auch fehlt es an der nötigen dynamischen Zusammenarbeit mit dem User um so schnell und unkompliziert auf neue Situationen reagieren zu können und temporäre oder permanente Ausnahmen zuzulassen.

Selbst ein einfaches statisches Konfigurationstool für die Firewall zu finden das sich in die eigene Desktopumgebung einfügt ist eine fast unlösbare Aufgabe geschweige den ein interaktives.

Alle Projekte (Firestarter,Guarddog,KMyFirewall,knetfilter) die ich mit Google ausfindig machen konnte sind veraltet und/oder inaktiv.

Wieso ist das so?

----------

## bell

Naja, eigentlich heisst es dass ein vernünftig konfiguriertes System keine Firewall braucht. Die meisten Dienste können so konfiguriert werden dass sie nur auf bestimmten Interface hören und auch nur von bestimmten IP's die Verbindung annehmen.

Aber sicher ist sicher, ich nutze auch iptables als "Doppelten Boden" falls doch an irgend einer Konfig was nicht stimmt.

Früher nutzte ich net-firewall/fwbuilder zum Bauen der Firewall. Das Tool ist mächtig und erschlägt Dich erstmal. Der Einstieg also ist etwas schwer, daher sollte man das generierte erstmal reviewen und auch die Sicherheit testen, bis man verstanden hat wie das Tool tickt. Aber wenn Du eine stabile Firewall erstellt hast, so kann man mit dem FWBuilder gut leben. Das Tool wir noch gut aktiv weiterentwickelt.

Inzwischen bin ich dazu übergegangen eigene Skripte zu schreiben.

Wahrscheinlich ist es der Grund dass die Frontends verweisen. Jeder der  dem Thema wichtig nimmt landet irgendwann beim Texteditor.

----------

## schmidicom

 *bell wrote:*   

> Naja, eigentlich heisst es dass ein vernünftig konfiguriertes System keine Firewall braucht. Die meisten Dienste können so konfiguriert werden dass sie nur auf bestimmten Interface hören und auch nur von bestimmten IP's die Verbindung annehmen.

 

Prinzipiell würde ich dir da recht geben aber wie du selber ja schreibst:

 *bell wrote:*   

> Aber sicher ist sicher, ich nutze auch iptables als "Doppelten Boden" falls doch an irgend einer Konfig was nicht stimmt.

 

Abgesehen von einer fehlerhaften Konfiguration würde es schon reichen wenn irgendein Hintergrunddienst mit Netzwerkanbindung eine Lücke aufweist von der man selbst nichts weiss.

 *bell wrote:*   

> Früher nutzte ich net-firewall/fwbuilder zum Bauen der Firewall. Das Tool ist mächtig und erschlägt Dich erstmal. Der Einstieg also ist etwas schwer, daher sollte man das generierte erstmal reviewen und auch die Sicherheit testen, bis man verstanden hat wie das Tool tickt. Aber wenn Du eine stabile Firewall erstellt hast, so kann man mit dem FWBuilder gut leben. Das Tool wir noch gut aktiv weiterentwickelt.
> 
> Inzwischen bin ich dazu übergegangen eigene Skripte zu schreiben.
> 
> Wahrscheinlich ist es der Grund dass die Frontends verweisen. Jeder der  dem Thema wichtig nimmt landet irgendwann beim Texteditor.

 

Wenn ich mir das Programm ansehe habe ich auch das Gefühl das ich bald schneller wäre die Konfig direkt selbst zu schreiben.

Abgesehen davon besitzt dieses Programm ebenfalls nicht die wünschenswerte Interaktivität wie man sie Beispielswiese von diversen Firewalllösungen unter Windows kennt.

----------

## bell

Du kannst es mit Windows nicht vergleichen. Da ist eine andere Ausgangslage.

Unter Windows vertraut man den installierten Programmen nicht. Daher gibt es diese Interaktivität "Darf das Programm X nach Hause telefonieren". Unter Linux vertraut man den installierten Programmen.  Daher gibt es das in der Form nicht. 

Wenn Du Deiner installierten Software unter Linux nicht vertrauen kannst, so ist eher Selinux & Co die Lösung. Damit kannst Du nicht nur Netzwerk sondern auch Dein Dateisystem absichern. Aber auch da gibt es nichts interaktives oder einfach zu handhabendes.

Iptables ist ein reiner Paketfilter. Die Windows-Firewalls sind Paketfilter+Proxy+Selinux+Popup-Blocker+++. Unter Linux musst Du hierfür einzelne Komponenten installieren, wenn Du diese wirklich benötigst. Im Normalbetrieb wird das alles unter Linux nicht benötigt. Und wo es benötigt wird sind Spezialisten dran die keine GUI benötigen.

----------

## schmidicom

Windows habe ich nur als Beispiel erwähnt um zu zeigen wie diese Interaktivität aussehen sollte.

Mir ist schon klar das man unter Linux den installierten Programmen normalerweise vertrauen kann, aber was ist mit Verbindungen die von aussen initiiert werden?

Hier kann man ohne interaktiven GUI nur im Vorfeld pauschal festlegen ob eine Verbindung dieser Art erlaubt werden soll oder nicht. Viel besser wäre aber wenn diese Entscheidung in dem Moment getroffen werden kann wo eine solche Verbindung zum ersten mal vorkommt. Auf diese Weise kann man von Fall zu Fall entscheiden ob es erlaubt werden soll oder nicht und für wie lange (temp/perm).

----------

## bell

Windows blockt doch genauso die eingehenden Verbindungen ohne zu fragen, oder? Sonst hättest Du Spaß wenn Du im Internet unterwegs bist und jeder Ping aus dem Internet bei Dir ein Popup auf den Bildschirm bringt. Da muss du doch genauso die Ports freischalten wenn du was erlauben willst. Die Interaktivität ist doch nur für die ausgehenden Verbindungen. Ausgehend ist bei mir alles erlaubt. Ich schränke mich doch selbst nicht ein.

----------

## schmidicom

Wie gesagt das mit Windows war nur ein Beispiel für die Interaktivität an sich um das Bild zu vervollständigen.

Ich weiss das Windows nur bei ausgehenden Verbindungen fragt und das bemängele ich dort schon seit es diese Firewall gibt. Dadurch wäre dies doch aber auch eine super Gelegenheit für Linux zu glänzen in Sachen Sicherheit wenn es hier eben möglich wäre.

----------

## bell

Wie gesagt, dann hättest Du Spaß im Internet zu surfen wenn irgend ein Skript-Kiddie einen Portscan macht.

Aber unter Linux gibt es was: net-misc/knock

Damit kannst Du bei Verbindungsversuchen auf bestimmten Ports Skrite ausführen. Ich nutze dies zB. für mein OpenVPN. Mit einer Sequence wird der Port dann nur für meine aktuelle IP im VPN-Server geöffnet so dass ich reinkommen kann, für alle anderen der Port jedoch weiterhin zu ist.

Wenn Du magst kannst Du auch mit x11-misc/xdialog es interaktiv machen.

----------

## bell

Da ich gern ungewöhnliches skripte, hier schonmal die Super-Turbo-Firewall  :Wink: 

/etc/knockd.conf

```
[openSSH]

       sequence    = 22,22

       seq_timeout = 5

       command     = /bin/bash /usr/local/bin/super-fw.sh %IP% tcp 22

       tcpflags    = syn

       cmd_timeout   = 10

       stop_command  = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

```

/usr/local/bin/super-fw.sh 

```
#!/bin/sh

IP=$1

PROTO=$2

PORT=$3

export DISPLAY=:0.0

/usr/bin/Xdialog --title "Super-Firewall" --yesno "Von der IP $IP wird versucht \nauf den $PROTO Port $PORT zuzugreifen. \nZugriff erlauben?" 10 50

if [ "$?" == 0 ]; then

   /sbin/iptables -A INPUT -s $IP -p $PROTO --dport $PORT -j ACCEPT

fi

```

Leider kann knock anscheinend keine 1x Sequenzen. Daher folgendes Verhalten

ssh rechner # Connection refused

ssh rechner # Connection refused + Du wirst am Rechner gefragt

ssh rechner # Du bist drin  :Wink: 

----------

## mv

schmidicom, Du hast ein ziemlich verkehrtes Bild, was eine Firewall leisten sollte. Lies Dir vielleich einmal die FAQ der deutschen Firewall-Usenet-Gruppe durch. Mir scheint, Du nimmst Dir die sog. "private firewalls" aus Windows gar als Vorbild: Die bringen genau das Gegenteil von Sicherheit (mehr dazu findet sich in der erwähnten FAQ).

Wenn man iptables benutzt (ich nehme an, mit Firewall meinst Du iptables), dann sollte man da ziemlich genau wissen, was man tut. Ein iptables-Generator kann sinnvoll sein (BTW: Du kannst Dir auch mal das firewall-Script aus dem mv-Overlay anschauen - für einfache Konfigurationen sollte dies mehr als ausreichend sein), aber interaktive Regeln sind per se verkehrt.

Interaktive Reaktion auf Anfragen von außen sowieso: Die Wahrscheinlichkeit, dass in dem für die Interaktivität notwendigen Teil ein Bug steckt, der einen Exploit erlaubt, ist wesentlich größer, als dass der Dienst, der dadurch "geschützt" werden soll, einen Exploit erlaubt. (Denn nur dieser Schutz ist der Zweck einer iptables-Firewall). 

 *Quote:*   

> Auch fehlt es an der nötigen dynamischen Zusammenarbeit mit dem User um so schnell und unkompliziert auf neue Situationen reagieren zu können und temporäre oder permanente Ausnahmen zuzulassen

  Der Benutzer hat nicht die Erfahrung, das Gefahrenpotential abzuschätzen, wenn er ein Loch in der Firewall öffnet. Der Administrator sollte diese Erfahrung haben, und wenn er sie hat, ist es für ihn auch ein Leichtes, z.B. den gewünschten Port permanent freizugeben oder - falls der Port tatsächlich nur temporär bei bestimmten Situationen geöffnet werden soll - den Start von Programmen mit bestimmten sudo-Skripten zu verbinden, die die Firewall geeignet verändern, oder eine Portknocking-Lösung o.ä. einzurichten.

bell, ich würde knockd nicht benutzen, weil dies einen Fehler enthalten und damit einen zusätzlichen möglichen Angriffsvektor darstellen könnte. Seit etlicher Zeit gibt es das "recent"-Modul in iptables, mit dem es leicht möglich ist, nach einer knocking-Sequenz andere Ports zu öffnen oder zu schließen. (In dem erwähnten firewall-Script aus dem mv-Overlay ist so etwas implementiert).

----------

## schmidicom

@mv

Das kann man sehen wie man will, ich persönlich finde schon das eine Interaktivität beim Datenverkehr mit dem User sinnvoll sein kann.

Zugegeben beim DAU ist das wohl eher kontraproduktiv da dieser gar nicht weiss worum es geht oder was passieren könnte wenn Verbindung XYZ zugelassen oder abgelehnt wird aber ich rede ja auch nicht davon dies jedem aufzuzwingen sondern eben optional zur Verfügung zu stellen.

Doch von der Interaktivität mal ganz abgesehen gibt es unter den grossen Desktopumgebungen von Haus aus ja nicht einmal die Möglichkeit das Regelwerk für iptables in vereinfachter form zu verwalten und das irritiert mich doch sehr. Alles mögliche wird in die Desktopumgebungen eingebaut aber wenn es mal um die Sicherheit an sich geht ist die Luft scheinbar ziemlich schnell raus.

@bell

nettes Skript  :Wink: 

----------

## mv

 *schmidicom wrote:*   

> ich persönlich finde schon das eine Interaktivität beim Datenverkehr mit dem User sinnvoll sein kann.

 

Dann nenne ein konkretes Beispiel, das nicht an den Start oder Ende eines bestimmten Programms gekoppelt ist. In allen Beispielen, die mir einfallen, würde so etwas nur ein Sicherheitsloch aufreißen.

 *Quote:*   

> Doch von der Interaktivität mal ganz abgesehen gibt es unter den grossen Desktopumgebungen von Haus aus ja nicht einmal die Möglichkeit das Regelwerk für iptables in vereinfachter form zu verwalten

 

Weil es auch nicht auf das Desktop-Level gehört, sondern in das darunterliegende System. Stelle Dir nur vor, der User-Account wird gehackt, und mit User-Rechten kann man nun an der Firewall herumfuhrwerken. Was ist dann der Sinn der Firewall?

 *Quote:*   

> Alles mögliche wird in die Desktopumgebungen eingebaut aber wenn es mal um die Sicherheit an sich geht ist die Luft scheinbar ziemlich schnell raus.

 

Weil GNOME OS alles mögliche einbaut, ist aus der Sicherheit die Luft raus. Auf einem System, auf dem *kit läuft, brauchst Du keine Firewall, weil es dort konzeptionell sowieso keine faktische Sicherheit mehr gibt. Das ist so, wie wenn Du ein Haus aus Papier baust, aber darauf bestehst, eine panzerfeste Tür mit Präzisionsschloss zu haben.

----------

## bell

 *Quote:*   

> Weil GNOME OS alles mögliche einbaut, ist aus der Sicherheit die Luft raus. Auf einem System, auf dem *kit läuft, brauchst Du keine Firewall, weil es dort konzeptionell sowieso keine faktische Sicherheit mehr gibt.

 

Wo Du davon redest, stimmt, hier passt es konzeptionell wiederum rein  :Wink: 

https://fedoraproject.org/wiki/Features/DynamicFirewall

----------

## Treborius

 *mv wrote:*   

> 
> 
> Dann nenne ein konkretes Beispiel, das nicht an den Start oder Ende eines bestimmten Programms gekoppelt ist. In allen Beispielen, die mir einfallen, würde so etwas nur ein Sicherheitsloch aufreißen.

 

Ich weiss gerade nicht, was du mit "an den Start oder Ende eines bestimmten Programms" meinst, aber auf anhieb fallen

mir schon 2 Beispiele ein (im letzten Monat selbst erfahren)

- net-misc/tightvnc 

der Server lässt sich zB (soweit ich rausgefunden habe) nicht an ein Interface binden, 

wenn ich nun aber VNC nur im internen Netz unverschlüsselt haben will, nach aussen

aber über VPN laufen lassen möchte, muss ich schon iptables bemühen

- beim I2P client sieht es auch nicht anders aus (proxy, tunnel, alles läuft auf allen Interfaces)

Kann bei dem Projekt aber auch an Java liegen ...

==> Ich würde mir schon ein GUI-Prog wünschen, was per Klick iptables-rules erstellt.

Das man diese dann kapieren sollte, bevor man sie anwendet, ist wohl klar.

Aber so ist man in Linux erstmal gezwungen sich wochenlang in iptables einzuarbeiten,

obwohl man eigentlich weiss was man erreichen will.

----------

## mv

In beiden Beispielen gibst Du einmalig die passenden Ports frei (über vpn bzw. lokales Netzwerk) und gut ist. Das gehört quasi zur Konfiguration der Programme bei Erstinstallation mit dazu. Für Echtzeit-Interaktivität besteht bei diesen Beispielen kein Bedarf.

----------

