[[Vorlage(archiviert)]] {{{#!vorlage Wissen [:Sicherheits_1x1: Sicherheits-Einmaleins] [:Benutzer_und_Gruppen: Benutzer und Gruppen verwalten] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:sudo: Root-Rechte] }}} [[Inhaltsverzeichnis]] [[Bild(Wiki/Icons/security.png, 64, left)]] 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 [wikipedia: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 [ubuntu:MultiUserManagement:Multi User Management] {en}). == 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: {{{#!vorlage Befehl 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, {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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: {{{#!vorlage Befehl 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 [:sudo#Programme-im-Kontext-anderer-Benutzer-ausfuehren:Programme im Kontext anderer Benutzer ausfuehren] in Erfahrung gebracht werden. * In [:GNOME:] lautet ein vollständiger Befehl z.B. {{{#!vorlage Befehl 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. {{{#!vorlage Befehl 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/ otto-email ALL = (otto-browser) NOPASSWD: /usr/bin/firefox otto-browser ALL = (otto-email) NOPASSWD: /usr/bin/ }}} {{{#!vorlage Experten 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 {{{#!vorlage Befehl 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 [http://danwalsh.livejournal.com/31146.html sandbox -X] {en} in Fedora, das eine abgeschottete Umgebung für graphische Programme zur Verfügung stellt. Alternativ käme eine kompliziertere lokale Konfiguration von [:VNC:] oder [wikipedia:xnest:] zwischen den Benutzern in Frage. ##aasche: geht ab 9.10 nicht mehr ##Evtl. auch ##{{{#!vorlage Befehl ##gdmflexiserver --xnest ##}}} #tag: Netzwerk, Internet, System, Sicherheit, bis-xenial