Ovion
Hiho Leute,
ich weiß, das Thema wurde schon häufiger abgehandelt, aber ich habe es leider nirgendwo zu meiner Zufriedenheit abgehandelt gefunden. Da ich nun auch Arch als Hauptsystem verwende, meine Frage: Welchen Vorteil hätte es, wenn ich mir hier auf dem Rechner eine Firewall (z.B. via Paketfilter iptables) implementiere, welche Nachteile hätte es und bringt es überhaupt einen Sicherheitsgewinn? Oder ist es mehr als ausreichend, wenn ich meinen Router das Firewalling übernehmen lasse (auch wenn der, wie der Name schon sagt, eigentlich das Gegenteil tun soll, aber die heutigen All-in-one-ins-Internet-Boxen haben sowas ja in der Regel implementiert)? In meinem Fall geht es um ein Privat-Netzwerk, würde eine Firewall in einem öffentlichen Netzwerk ((noch) mehr) Sinn machen (da man dort ja ggf. ohne Firewall auf einem anderen Gerät mit Fremdsystemen in Kontakt kommen kann)?
Creshal
Welche Serversoftware hast du auf deinem Rechner überhaupt laufen, die eine Firewall benötigt? Wir sind hier nicht bei Windows, wo im Auslieferungszustand 30 Serverdienste laufen, die mit jedem dahergelaufenen Client kommunizieren. 😉
Der Router filtert alles, was nicht explizit durch Portfreigabe erlaubt wurde. Entsprechend brauchst du in einem privaten LAN auch so keine Firewall. In einem öffentlichen LAN ist eine sinnvoll, sofern du Serverdienste laufen hast, die nicht öffentlich erreichbar sein sollen.
Ovion
Ich selbst habe keine Serverdienste und arbeite mich aktuell in die Thematik ein (deswegen auch der Fred hier).
Also alles, was auf einen nicht-offenen Port trifft, wird sowieso verworfen und alles, was auf einen offenen Port trifft, wird verworfen, wenn das lauschende Programm nichts damit anfangen kann?
Und wieso macht eine Firewall auf einem Server mehr Sinn als auf einem "normalen Rechner"? Die Serverdienste sollen doch gerade erreichbar sein?
Wie sieht das mit Software aus, die eine Verbindung nach außen aufbaut, obwohl ich das nicht will? Zugegebenermaßen gerade unter Arch jetzt nicht so wahrscheinlich, aber zum einen hobby-administriere ich ja auch noch andere Pinguine und zum anderen kann ich ja (theoretisch 😉) auch mal was übersehen.
Creshal
> Also alles, was auf einen nicht-offenen Port trifft, wird sowieso verworfen
Genau.
> und alles, was auf einen offenen Port trifft, wird verworfen, wenn das lauschende Programm nichts damit anfangen kann?
Sollte, ja. Wenn nicht, hast du einen Exploit entdeckt. 🙂
SSH bspw. ist sicher genug, dass du dafür keine Firewall brauchen solltest…
> Die Serverdienste sollen doch gerade erreichbar sein?
Nicht alles sollte von allen erreichbar sein. 🙂 Ein Datenbankserver bspw. nur von "seinen" Webservern. (Die gängigen Datenbanken haben zwar auf dem Papier auch Authentifizierung, aber die hat sich in der Vergangenheit nicht immer als wirksam erwiesen.)
> Wie sieht das mit Software aus, die eine Verbindung nach außen aufbaut, obwohl ich das nicht will?
Solche Software benutzt man nicht. Beste, einfachste und sicherste Lösung.
Ovion
Also faktisch ist eine Softwarefirewall überflüssig, es sei denn, ich möchte auf bestimmten Ports nur selektiven Zugriff von bestimmten Adressen erlauben? Und gegen einen Angriff von außen, wie häufig genannt, hilft eine Firewall somit auch nicht, richtig?
Creshal
> Also faktisch ist eine Softwarefirewall überflüssig, es sei denn, ich möchte auf bestimmten Ports nur selektiven Zugriff von bestimmten Adressen erlauben?
Genau.
> Und gegen einen Angriff von außen, wie häufig genannt, hilft eine Firewall somit auch nicht, richtig?
Naja, beim genannten Datenbankbeispiel schon. Aber das sind Einzelfälle, die dich als Desktopuser eigentlich nicht betreffen.
Bei Windows ists wie gesagt ärger, da laufen in der Defaultkonfiguration 4 oder 5 Dienste, die jeden beliebigen Client erlauben. Aber selbst da reicht die Windows-Firewall. ZoneAlarm und wie der ganze andere Schmarn heißt, sind echt nur Schlangenöl.
Zugriff von innen nach außen wäre prinzipiell ein Anwendungsgebiet, aber da gibt es so viele Wege, die Beschränkungen zu umgehen … außer, du verbietest allen Programmen, auf alle Ports zuzugreifen. Ohne. Jede. Ausnahme. Dafür brauchts dann keine Firewall, das ist idempotent zu "Stecker ziehen".
Ovion
Was wäre mit einem Programm aus dem AUR, über das mir Schadware untergejubelt wird (ist ja unsigniert und ich weiß nicht, inwiefern bzw. überhaupt ob da Prüfungsmechanismen existieren)? Wäre das ein sinnvolles Anwendungsgebiet, einfach alle Ports innen dichtzumachen und dann selektiv dem Browser, dem Mailclient, pacman den Ausgang zu erlauben?
Wenn der sich dann in einen anderen Prozess einklinkt, bringt mir das nicht viel, aber wenn er das eben nicht tut?
Creshal
Anders gefragt: Warum sollte er das nicht tun?
Browser, Mailclient und Pacman sind schon Angriffsvektoren genug. Außerdem gibts mit curl, wget, dig, nslookup usw. usf. dutzende Kommandozeilenprogramme, die einfache Kommunikation mit der Außenwelt erlauben, und die harmlos genug aussehen, dass du sie wahrscheinlich erlauben wirst. Oder musst, weil das System sonst nicht funktioniert…
Dirk
Ovion schriebWas wäre mit einem Programm aus dem AUR, über das mir Schadware untergejubelt wird […]? Wäre das ein sinnvolles Anwendungsgebiet, einfach alle Ports innen dichtzumachen und dann selektiv dem Browser, dem Mailclient, pacman den Ausgang zu erlauben?
Würde sich so ein Programm denn als „UBER 1337 HAXX0R TOOL“ melden, und auf Port 6666 raus senden wollen?
Schadsoftware wird sich in der Regel als harmlose Anwendung tarnen, oder gängige Ports nutzen. Du müsstest da schon nach Protokoll filtern, also die Nutzdaten analysieren, und nicht bloß nach Port.
Ovion
Creshal schriebBrowser, Mailclient und Pacman sind schon Angriffsvektoren genug. Außerdem gibts mit curl, wget, dig, nslookup usw. usf. dutzende Kommandozeilenprogramme, die einfache Kommunikation mit der Außenwelt erlauben, und die harmlos genug aussehen, dass du sie wahrscheinlich erlauben wirst. Oder musst, weil das System sonst nicht funktioniert…
Das ist ein Wort.
@Dirk
Schon klar, dass sich das als nützliche Software tarnt, aber iptables soll doch ziemlich mächtig sein, wenn ich richtig informiert bin...
Dirk
Ovion schriebSchon klar, dass sich das als nützliche Software tarnt, aber iptables soll doch ziemlich mächtig sein, wenn ich richtig informiert bin...
Nun, du müsstest rausfinden, ob Datenpakete, die über Port 80 TCP tatsächlich HTTP sind, oder nicht. Dazu brauchst du so viele Datenpakete, um eindeutig HTTP identifizieren zu können.
iptables kann ’ne ganze Menge, aber es wäre mir neu, dass es die Nutzdaten (keinerlei IPs, Keinerlei Checksummen, Keine MAC-Adressen, keine Pakettypen, etc, die reinen Nutzdaten-Bits im Payload der einzelnen Datenpakete!) analysieren, und abgleichen kann, ob diese Art der Nutzung mit der gängigen Nutzung des verwendeten Ports übereinstimmt.
Und selbst da: Schadsoftware kann natürlich auch mittels sauberem HTTP über Port 80 aktiv werden.
Ovion
Kann ich bei iptables nicht sagen, Pakete dieses Ports nur für dieses Programm? Wenn die Schadsoftware dann HTTP über Port 80 sprechen will, könnte sie das nicht, weil über Port 80 nur der Firefox darf, geht sowas?
Geht natürlich nur für ausgehenden Traffic, einkommenden Traffic kann die Schadware ja einfach über wget abwickeln, da kann ich dann kaum adäquat intervenieren.
Bleibt natürlich noch das Problem, dass sich eine Schadware in einen anderen Prozess einklinken kann, da greift das dann auch nicht mehr.
Wo wir gerade beim Thema sind: Wie funktioniert das technisch? Ich weiß, dass es geht, aber die technischen Hintergründe sind mir noch nicht so klar.