Portable Firewall für QubesOS

Stefanie Schirmer  

Welches Problem willst Du mit Deinem Projekt lösen?

Aktivisten, Journalisten und andere Personen mit Threat Model sind auf ein sicheres Betriebssystem angewiesen, Kommunikation kann ansonsten für sie unter Umständen lebensbedrohlich sein. Wenn sie TOR- oder VPN-Virtual Machines in QubesOS benutzen, muss sichergestellt sein, dass keine Netzwerk-Pakete an dieser sicheren Verbindung vorbei gelangen.
Um das zu verhindern, braucht jede VM jeweils eine eigene Firewall. Die bestehende Firewall in QubesOS benötigt 350MB Arbeitsspeicher. Durch das Betreiben mehrerer VMs in Qubes ist der Arbeitsspeicher daher oft zu knapp, um darüber hinaus die gewünschten Firewalls zu betreiben.
QubesOS gilt als sehr sicheres Betriebssystem, es wird sogar von Edward Snowden empfohlen. Wir wollen daher eine sparsame Firewall für QubesOS entwickeln. Eine Firewall verbietet durch Paketfilter-Regeln unbefugten Zugriff auf Netzwerkkommunikation und ist wichtiger Teil des Sicherheitskonzepts. QubesOS führt jede Applikation isoliert in einer anderen virtuellen Maschine (VM) aus. Ein Angriff, z.B. des Browsers, bleibt begrenzt auf dessen VM. Die existierende Linux-Firewall für QubesOS belegt viel Arbeitsspeicher, der unter allen VMs geteilt werden muss und daher knapp ist. Eine Firewall basierend auf dem Minimal-Betriebssystem MirageOS belegt weniger Arbeitsspeicher und bietet weniger Angriffsfläche.

Wie löst Dein Projekt das Problem?

Die Firewall hat verschiedene Komponenten: ein Regelsystem zum Filtern von Paketen, die sog. Packet-Filter-Syntax(pf), einfach und verbreitet, sowie als Kommunikationskanal für Regeländerungen den Anschluss an QubesDB, eine State-Machine, die ein- und ausgehende Pakete nach den Regeln klassifiziert und wenn gewünscht, blockiert. Außerdem ein Network-Address-Translation-Modul: eine öffentliche Adresse kann von mehreren VMs geteilt werden. Sowie eine Bibliothek, die auf die virtuelle Netzwerkschnittstelle lesen und schreiben kann. Diese kombinieren wir zu einem MirageOS-Unikernel.
Interessant ist die State-Machine, die auf Pakete reagiert: hier muss über jede TCP-Verbindung Buch geführt werden, um die Filter-Regeln anzuwenden. Das Update von Regeln ist mitunter komplex: Wenn eine neue Regel Verbindungen zu einer IP-Adresse verbietet, müssen alle bestehenden Verbindungen zu dieser IP gekappt werden. Die Firewall ist eine sicherheitskritische Anwendung, und muss stabil und gut getestet sein. Neben Unit-Testing werden wir Fuzz-Testing mit zufällig erzeugtem Netzwerkverkehr nutzen. Die Bauteile können für Firewalls auf anderen Betriebssystemen wiederverwendet werden. Durch die Verwendung der sicheren Sprache OCaml vermeiden wir häufige Programmierfehler und können Bedingungen durch das Typsystem garantieren.

An wen richtet sich Dein Tool?

Die allgemeine QubesOS-Nutzerbasis ist auch unsere Zielgruppe: Aktivist*innen, Journalist*innen, und Hacker*innen. Um diese zu erreichen, haben wir mit dem Hauptentwickler von QubesOS gesprochen: die Mirage-Firewall wird in das QubesOS-Contributions-Repository aufgenommen. Dann kann die Mirage-Firewall direkt von Benutzer*innen installiert werden.

Logo: Das Bundesministerium für Bildung und Forschung (BMBF)
Logo: Open Knowledge Foundation Deutschland