Internet-Zugriff für Sublime Text unter Debian unterbinden
Als Texteditor ist hier Sublime Text in der lizenzierten Version im Einsatz.
Es ist aus meiner Sicht vollkommen legitim, daß ein Lizenzinhaber gelegentlich überprüft, ob die zugewiesene Lizenz noch gültig ist. Sublime Text führt diese Online-Überprüfung aber nach jedem Start durch, was im Hinblick auf die Privatsphäre suboptimal ist - letzendlich geht es im Rahmen der erworbenen Lizenz die Entwickler nichts an, ob der Editor fünfzig mal am Tag oder um drei Uhr nachts gestartet wird.
Eine Diskussion mit dem Thema “Sublime Text calling home to license.sublimehq.com on every start?” im offiziellen Sublime Text-Forum hat leider zu keinem greifbaren Ergebnis geführt. Da auch die Sales FAQ nicht verlangt, daß das Programm nach Hause telefonieren darf / kann / soll / muss, ist eine anwendungsbezogene Sperrung des Netzwerk-Zugriffs eine naheliegende Option.
Unter Windows konnte der Internet-Zugriff für ein beliebiges Programm mit Hilfe der bordeigenen Firewall mit wenigen Klicks blockiert werden, unter Linux ist dies etwas komplizierter. Unter Linux blockiert die Firewall Internetzugriffe von außen basierend auf IP-Adresse und Port und eben nicht wie im aktuellen Fall gewünscht unabhängig von IP und Port den Zugriff einer Anwendung nach aussen.
Zur Realisierung bietet sich AppArmor an, das unter Debian 10 standardmäßig installiert und aktiviert ist, so daß keine zusätzliche Software benötigt wird. AppArmor verfügt über weitreichende Konfigurationsmöglichkeiten, wer aber einen kurzen Blick in die unter “/etc/apparmor.d” gespeicherten Profile wirft, wird davon ohne Vorkenntnisse regelrecht erschlagen.
Glücklicherweise gibt es mit den AppArmor Utils die Möglichkeit, ein Profil für eine Anwendung interaktiv zu erstellen.
An der Kommandozeile wird als erster Schritt die Erstellung eines neuen Profils gestartet:
$ sudo aa-genprof /opt/sublime_text/sublime_text
Anschließend wird Sublime Text gestartet und nach Möglichkeit alle darin benötigten Aktionen ausgeführt.
Nach dem Beenden von Sublime Text wird mit Druch auf “S” im ursprünglichen Fenster die interaktive Generierung gestartet. “aa-genprof” untersucht nun die anwendungsbezogenen Einträge im Syslog und stellt zu jedem Eintrag die Frage, ob eine Aktion erlaubt sein soll oder nicht.
Das Ergebnis ist ein Profil, das in der Datei “/etc/apparmor.d/opt.sublime_text.sublime_text” erzeugt wird und nur recht wenige Zeilen enthält.
Um den Netzwerkzugriff zu blockieren, muß - falls vorhanden - die Zeile
#include <abstractions/nameservice>
entfernt werden, denn diese schaltet den Netzwerkzugriff frei, so daß ein anschließend eingefügtes
deny network
keinerlei Wirkung mehr zeigt.
Das fertige Minimal-Profil für Sublime Text sieht dann wie folgt aus:
# 2020-05-11 athul/initial
#include <tunables/global>
/opt/sublime_text/sublime_text {
#include <abstractions/X>
#include <abstractions/base>
#include <abstractions/dbus-session-strict>
#include <abstractions/evince>
deny network,
/opt/sublime_text/ r,
/opt/sublime_text/** r,
/opt/sublime_text/plugin_host mrix,
/opt/sublime_text/sublime_text mr,
/proc/filesystems r,
owner /dev/shm/* rwl,
owner /home/** rw,
}
Direkt nach Erzeugung startet AppArmor das Profil im “Enforce”-Modus, d.h. alles, was nicht explizit erlaubt ist, wird verboten. Sofern Build-Systeme o.ä. eingesetzt werden, sind noch Nachabeiten notwendig.
Diese können entweder manuell erfolgen oder durch das Wechseln des Profils in den “Complain”-Modus, dessen Aufzeichnungen anschließend wieder interaktiv ausgewertet werden können.
Zum Start von Perl als Build-System reicht z.B. das Hinzufügen von
/usr/bin/perl mrix,
welches das Starten des Perl-Internpreters mit den geerbten Berechtigungen von Sublime Text erlaubt.