Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
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 Arkose gibt es inzwischen auch ein benutzerfreundliches Programm, mit dem sich eine Sandbox für Programme leicht realisieren lässt. Eine weitere Möglichkeit bietet der Einsatz von LXC. Eine andere Möglichkeit besteht darin, eine Gastsitzung einzurichten.
Es werden separate Unterkonten für E-Mail und Browser eingerichtet.
Zunächst muss die Vorkonfiguration der Installation für eine Zusammenarbeit von Benutzern untereinander korrekt eingestellt werden. (hierzu siehe Multi User Management ).
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.)
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
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>
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
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
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.
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
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 2. Juli 2014 21:05 von Motörhead80 erstellt.