ubuntuusers.de

Programme abschotten

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/security.png Potentiell schadhafter Programmcode (eingeschleust z.B. durch Fehler im Browser oder unachtsames öffnen von Emails) wird immer mit den Rechten des Benutzerkontos ausgeführt unter dem das Programm (z.B. der Browser) läuft. Ist das das selbe Benutzerkonto mit dem man seine privaten oder geschäftlichen Daten bearbeitet, bekommt ein Eindringling also Zugriff auf all diese Daten. Der Umfang der gefährdeten Daten kann stark vermindert werden, indem man Programme (wie z.B. Browser und E-Mail Programme, die Daten aus dem Netz auswerten) unter einem separaten Benutzerkonto laufen lässt.

Indem man nur Unterbenutzer (selektiv) ans Netz lässt, isoliert man zudem alle anderen laufenden Programme vom Netz. Zumindest können dadurch nicht alle Programme einfach so irgendwelche Verbindungen aufbauen. Falls z.B ein ausführbares Programm heruntergeladen wurde und versehentlich vom Hauptbenutzer ausgeführt wird (statt in einer Gastsitzung oder einem speziellem Unteraccount), kann das Programm dann wenigstens nicht so ohne Weiteres ins Netz, wenn es schon an private oder geschäftliche Daten herankommt.

Mit Archiv/Arkose gibt es auch ein benutzerfreundliches Programm, mit dem sich eine Sandbox für Programme leicht realisieren lässt. Eine andere Möglichkeit besteht darin, eine Gastsitzung einzurichten.

Einrichtungsbeispiel

Es werden separate Unterkonten für E-Mail und Browser eingerichtet.

Rechtesystem für die Zusammenarbeit zwischen Benutzern umstellen

Zunächst muss die Vorkonfiguration der Installation für eine Zusammenarbeit von Benutzern untereinander korrekt eingestellt werden. (hierzu siehe Multi User Management 🇬🇧).

Anlegen von Unterkonten

Für dieses Beispiel werden unter System ->Systemverwaltung → Benutzer und Gruppen zwei neue Benutzerkonten otto-email und otto-browser ohne besondere Privilegien als Unterkonten für otto angelegt.

  • Als Passwort kann das Passwort des zugehörigen Hauptbenutzers verwendet werden (hier otto)

  • Damit die Unterkonten nicht am Anmeldebildschirm angezeigt werden, müssen deren nummerische IDs noch in den "system users" Bereich zwischen 100 und 999 geändert werden. (991 und 992 sollten frei sein)

Alternativ, die Befehle zum direkten Anlegen der Benutzer:

sudo adduser --uid 991 otto-email
sudo adduser --uid 992 otto-browser 

(Am Besten noch überprüfen welche Gruppenrechte die neu angelegten Benutzer haben.)

Gruppenmitgliedschaften und Datenverzeichnisse anpassen

Damit man als Hauptbenutzer auch die Daten der Unterbenutzer bearbeiten kann, wird der Hauptbenutzer als Mitglied in die privaten Unterbenutzer-Gruppen[2] eingetragen,

sudo adduser otto otto-browser
sudo adduser otto otto-email 

und die Datenverzeichnisse der Unterbenutzer, in denen man ohne Rechteprobleme auch als Hauptbenutzer speichern und löschen können möchte, werden zu "sgid" (set-group-id) Gruppenverzeichnissen gemacht (alle neu angelegten Dateien gehören dann der Gruppe und sind bei umask 002 für die Gruppe schreibbar). Beispiel:

sudo chmod g+s /home/otto-browser/Downloads
sudo chmod g+s /home/otto-email/Mail 

Das Verzeichnis /home/otto-browser/Downloads wird nicht etwa beim Anlegen des Benutzers erstellt, sondern wenn es erstmalig benötigt wird.

Da die Daten in den Homeverzeichnissen der Unterbenutzer gespeichert werden, ist es auch noch recht praktisch Symlinks in das Homeverzeichnis des Hauptbenutzers zu legen. Zum Beispiel für die Downloads von otto-browser:

cd /home/otto
cp -a Downloads/* ../otto-browser/Downloads/
rm -r Downloads
ln -s ../otto-browser/Downloads Downloads 

Richtigen Befehl zum Starten von Programmen unter anderem Benutzer erproben

Die Befehle zum Starten von Programmen unter einem anderen Benutzerkonto unterscheiden sich zwischen GNOME und KDE und funktionierten leider nur für den root-Account ohne Umwege. Genaueres dazu muss unter Programme im Kontext anderer Benutzer ausfuehren in Erfahrung gebracht werden.

  • In GNOME lautet ein vollständiger Befehl z.B.

    gksu -u otto-browser -w "firefox %u" 

In diesem Fall wird (als workaround) statt dem sudo Mechanismus su genutzt (option -w), und es ist das Passwort des Zielbenutzers anzugeben. Um die unnötige Abfrage des Passwort durch des aufrufenden Hauptbenutzer zu vermeiden, kann man das Passwort in einem Schlüsselbund speichern. Das automatische öffnen des Schlüsselbunds funktioniert aber leider nicht in allen Fällen (z.B. wenn Schlüsselbund verschlüsselt gespeichert ist, bei Autologin und zwischen E-Mail/Browser).

In KDE (Kubuntu) funktioniert kdesu standardmäßig mit sudo.

  • Ein vollständiger KDE Befehl zum Starten lautet z.B.

    kdesudo -u otto-browser "firefox %u" 

Wenn sudo zu regulären Benutzern genutzt werden kann, kann man die Passwortabfrage abschalten indem man die Datei /etc/sudoers (wie unter sudo/Konfiguration genauer beschrieben) um Folgendes zu ergänzt:

otto ALL =   (otto-browser) NOPASSWD: /usr/bin/firefox
otto ALL =   (otto-email)   NOPASSWD: /usr/bin/<Email-Programm>
otto-email    ALL =   (otto-browser) NOPASSWD: /usr/bin/firefox
otto-browser  ALL =   (otto-email)   NOPASSWD: /usr/bin/<Email-Programm>

Experten-Info:

Falls es mit älteren Ubuntu Versionen nicht klappt, die Programme per sudo direkt aufzurufen, kann es nötig sein, diese evtl. über ein zusätzliches explizites "su"-Terminal und zusätzliche Startskripte aufzurufen, so dass Folgendes in /etc/sudoers nötig ist:

otto ALL =   (otto-browser) NOPASSWD: /bin/su otto-browser
otto ALL =   (otto-email)   NOPASSWD: /bin/su otto-email

Ermittelte Startbefehle unter "Bevorzuge Anwendungen" eintragen

Die beiden vollständigen Befehle für den Browser und das E-Mail-Betrachten werden nun unter "System → Einstellungen → Bevorzugte Anwendungen" als Benutzer otto eingetragen. Damit man auch aus dem Browser heraus eine E-Mail schreiben kann bzw. ein Link in einer E-Mail auch richtig geöffnet wird, wird der jeweils andere Befehl als bevorzugte Anwendung für otto-browser und otto-email eingetragen, z.B. mit

gksu -u otto-email -w gnome-default-applications-properties

# bzw. mit Xfce statt gnome:
gksu -u otto-email -w exo-preferred-applications 

Starter und Menüeinträge des Hauptbenutzers anpassen

In den Eigenschaften von Desktop- oder Panelbuttons und Menüeinträgen für Browser und E-Mail (im Konto otto) wird der reguläre Startbefehl jeweils um den oben ermittelten Startbefehl ergänzt.

Firewall-Regeln aufstellen

Nun den Paketfilter / die Firewall so einstellen, dass nur das otto-browser-Unterkonto ins Netz kommt (und keine beliebigen anderen Programme/Skripte, die unter einem anderen Konto ausgeführt werden).

Beispiel: Recht einfach und übersichtlich ist die Konfiguration, wenn man die Paketfilterregeln (iptables) vom Paket firehol erstellen lässt. Dazu firehol installieren, in /etc/default/firehol aktivieren und eine /etc/firehol/firehol.conf wie die folgende erstellen. Das Beispiel lässt keinerlei eingehenden Verbindungen zu (lokaler server) zu, ausgehend (lokaler client) werden nur dhcp und dns zugelassen und lediglich dem Benutzer otto-browser werden noch http- und https-Ports erlaubt:

version 5
interface any world
        protection strong
        server ident reject with tcp-reset
        client dhcp accept
        client dns  accept
        client "http https" accept user otto-browser

Sicherheitshinweis

Wenn Programmen, obwohl sie unter einem anderen Benutzerkonto laufen, direkter Zugriff auf Tastatur, Maus und Monitor (genauer den X-Server) gewährt wird (so wie hier mit gksu bzw. kdesu), besteht eine gewisse Sicherheitslücke. Leider gibt es in Ubuntu noch keine einfache Abhilfe wie sandbox -X 🇬🇧 in Fedora, das eine abgeschottete Umgebung für graphische Programme zur Verfügung stellt. Alternativ käme eine kompliziertere lokale Konfiguration von VNC oder xnest zwischen den Benutzern in Frage.

Diese Revision wurde am 6. Februar 2020 22:15 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Sicherheit, Internet, System, Netzwerk