AA_sec.jpg

Sicherheitsdienst

Desktop-Sicherheit mit Sudo und Policykit

Policykit ermöglicht unter Ubuntu Lucid Lynx eine bessere Feinabstimmung sicherheitsrelevanter Aufgaben, als das bislang mit "sudo" möglich war.

Bei Desktop-Systemen gestaltet sich eine lupenreine Trennung zwischen Systemverwalter und Anwender schon deshalb schwierig, weil Sie am heimischen PC meist beide Hüte aufhaben. Da immer mehr Anwendungen tief in die Systemkonfiguration eingreifen, ist ein administrativer Zugriff aufs System beinahe unabdingbar. So erfordert schon das Einbinden eines Laufwerks den privilegierten Zugriff auf bestimmte Funktionen. Auch DVB-T-, Bluetooth- und WLAN-Geräte benötigen sowohl beim Einrichten als auch beim Konfigurieren administrative Rechte. In diesen Fällen bieten Ihnen sudo und Policykit geeignete Möglichkeiten, die notwendigen Legitimationen zu erteilen, ohne das komplette System zu gefährden.

Sudo

Der konsequente Einsatz von sudo sorgt unter Ubuntu dafür, dass Sie als erster angelegter User privilegierte Rechte in Anspruch nehmen, wenn es nötig ist. Ubuntu richtet zwar das obligatorische Root-Konto ein, allerdings ohne eine Login-Shell. Trotzdem schränkt Sie dieser Umstand bei der Verwaltung des Systems kaum ein, da Sie nur in seltenen Fällen eine vollständige Root-Umgebung benötigen. Als adäquaten Ersatz stellt Ihnen sudo -s eine Fakeroot-Umgebung auf der Konsole bereit.

Sämtliche Aufgaben, die einen privilegierten Zugriff erfordern, erledigen Sie mit dem vorangestellten Kommando sudo. Um grafische Programme mit administrativen Rechten zu laden, helfen unter Gnome das Hilfsprogramm gksudo und unter KDE kdesudo. Möchten Sie Anwendungen mit privilegierten Rechten per Mausklick ausführen, setzen Sie diese Hilfsprogramme auch in Schnellstartverknüpfungen und Desktop-Links ein. So lädt der Aufruf gksudo gedit nach Eingabe des Benutzerpassworts den Editor Gedit mit privilegierten Rechten.

Beim Aufruf schlägt sudo in der Konfiguration /etc/sudoers nach, welche Berechtigungen Sie besitzen. Diese Datei dürfen Sie nur mit dem Programm Visudo bearbeiten, der Befehl lautet sudo visudo. Die wichtigsten Einträge in der Grundeinstellung sehen so aus:

root    ALL=(ALL) ALL
%admin  ALL=(ALL) ALL

Sie erlauben dem Benutzer root und den Mitgliedern der Gruppe admin das Ausführen jedes Befehls auf dem System. Warum also der Aufwand, wenn Sie als Benutzer der Gruppe admin ohnehin alles dürfen?

Auch wenn der Benutzer damit alle Kompetenzen besitzt, ist der Unterschied zwischen root und sudo sicherheitstechnisch gewaltig. So protokolliert sudo sämtliche Aktionen in der Datei /var/log/auth.log. Programme, die Sie mit sudo aufrufen, sind entsprechend nicht in der Lage, unbemerkt Veränderungen am System vorzunehmen. Des weiteren erfordert jede sudo-Sitzung, die 5 Minuten überschreitet, die erneute Eingabe des Passworts. Diesen Zeitraum ändern Sie auf eine Minute, indem Sie für Ihren administrativen Benutzer folgendes in die Datei /etc/sudoers eintragen:

Defaults:user timestamp_timeout=1

An die Stelle von user setzen Sie dabei Ihren Benutzernamen. Ändern Sie die 1 zu einer 0, müssen Sie jedes Mal bei der Eingabe von sudo Ihr Passwort angeben. Um nicht die ganze Macht zu übertragen, erlaubt sudo darüber hinaus das Feinjustieren der Berechtigungen. Folgender Eintrag in die Datei /etc/sudoers legitimiert beispielsweise den Benutzer fred dazu, die Datei /etc/sudoers über den Befehl sudo less /etc/sudoers zu lesen:

fred    ALL=/usr/bin/less, /etc/sudoers

Fehlt der Eintrag, erscheint eine Fehlermeldung, die besagt, dass fred nicht in der Datei /etc/sudoers steht. Der jeweiligen Anwendung spricht sudo dabei vollständig das Vertrauen aus. Um den Zugriff auf einzelne Funktionen komplexerer Anwendungen zu delegieren, eignet sich sudo hingegen weniger: Hier kommt Policykit ins Spiel.

Policykit

Das Sicherheitssystem Policykit ist ein Kind von Redhat-Entwickler David Zeuthen. Es wurde unter Ubuntu erstmals in Version 8.04 eingeführt und erlaubt die Feinabstimmung der Benutzerrechte für bestimmte Aktionen wie das Ändern der Benutzereigenschaften oder das Stellen der Uhr. Policykit greift dafür auf eine XML-Skript-Sammlung zurück, die Sie im Pfad /usr/share/polkit-1/actions finden (Abbildung 1). Jede einzelne XML-Datei enthält dabei mehrere Regeln für Aktionen im Umgang mit bestimmten Programmen. So finden Sie in der Datei org.freedesktop.SystemToolsBackends.policy Einstellungen für den Umgang mit der Benutzerverwaltung.

Abbildung 1

Abbildung 1: Die Policy-Dateien von Policykit liegen im XML-Format vor. Sie regeln die Rechtevergabe für verschiedene Funktionen, die einen privilegierten Zugriff erfordern.

Unter Ubuntu 10.04 kommt genau genommen Polkit-1 zum Einsatz, der offizielle Nachfolger des ursprünglichen Policykit. Dessen Entwicklung endete mit Version 0.9. Zwar trägt das gesamte Framework weiterhin den Namen Policykit, doch die Polkit-1-Bibliotheken sind nicht abwärtskompatibel und funktionieren etwas anders als in der Vorgängerversion.

Für Ubuntu 10.04 wurden eine Reihe von Anwendungen zu Polkit-1 migriert [1], dazu gehören unter anderem Gdm, Udisks und Network-Manager-Gnome. Da Policykit ursprünglich von HAL abhing, das komplett aus Ubuntu 10.04 verschwunden ist, wurden die alten HAL-Bezüge entfernt. Die grafische Verwaltungsoberfläche, die man noch in Ubuntu 9.10 über System |Systemverwaltung|Authorizations erreichte (Abbildung 2), gibt es auch nicht mehr – das Framework lässt sich nur noch über die Kommandozeile steuern. Zudem nutzen nicht alle Anwendungen Policykit: Die Entwickler müssen die Nutzung des Frameworks als Feature in ihre Anwendungen einbauen.

Für KDE existiert eine Qt-Variante namens polkit-qt-1, die offiziell erst mit KDE 4.5 SC zum Einsatz kommen soll. Kubuntu 10.04 liefert zwar KDE 4.4 SC aus, nutzt allerdings bereits Polkit-1, weil der Paketmanager KPackageKit 0.5 das neue Framework benötigt.

Abbildung 2

Abbildung 2: Die grafische Oberfläche zum Verwalten die Policykit-Regeln, existiert in Ubuntu 10.04 nicht mehr.

Einem Freund empfehlen