Wie kann ich einen D-Bus-Dienst auf die schwarze Liste setzen?

8

Wie kann ein nicht privilegierter Benutzer verhindern, dass ein D-Bus-Dienst gestartet wird? Wird beispielsweise /usr/share/dbus-1/services/org.bluez.obex.servicevom Sitzungsbus gestartet. Es scheint keinen Weg zu geben, es auf die "schwarze Liste" zu setzen.

Es ist der Sitzungsbus, auf den sich meine Frage bezieht. Ich würde gerne wissen, ob es möglich ist, zu verhindern, dass bestimmte Dienste auf dem Sitzungsbus gestartet werden.

Nathan Osman
quelle
Ein nicht privilegierter Benutzer? Bedeutet man eins ohne Sudo-Privileg? Hat der Benutzer Zugriff auf die physische Hardware?
Elder Geek
@ElderGeek nein, nicht unbedingt.
Nathan Osman
Können Sie genau erklären, was Sie dann meinen? Ich würde hoffen, dass ein nicht privilegierter Benutzer den Start eines Dienstes nicht verhindern kann. Tritt dies auf, das Sie zu stoppen versuchen, oder etwas, das Sie erreichen möchten?
Elder Geek
@ElderGeek Es gibt zwei D-Bus ... Busse (: P), mit denen Anwendungen interagieren können. Der Systembus steuert Aspekte des Systems, die Benutzern gemeinsam sind, und der Sitzungsbus bietet Zugriff auf Dienste, die für den aktuellen Benutzer spezifisch sind. Es ist der Sitzungsbus, auf den sich meine Frage bezieht. Ich würde gerne wissen, ob es möglich ist, zu verhindern, dass bestimmte Dienste auf dem Sitzungsbus gestartet werden.
Nathan Osman

Antworten:

2

Die standardmäßigen systemweiten und sitzungsbezogenen Nachrichtenbus-Setups sind in den Dateien /usr/share/dbus-1/system.confund konfiguriert /usr/share/dbus-1/session.conf. Diese Dateien sind normalerweise eine system-local.conf oder eine session-local.conf in / etc / dbus-1; Sie können lokale Überschreibungen in diese Dateien einfügen, um zu vermeiden, dass die primären Konfigurationsdateien geändert werden.

Die Konfigurationsdatei ist ein XML-Dokument. Es muss die folgende Doctype-Deklaration enthalten:

Ich glaube, Sie müssen ändern, /usr/share/dbus-1/session.confwomit / etc / dbus-1 in Ubuntu verknüpft ist.

Hinweis: Limits sind normalerweise nur für den systemweiten Bus von Interesse, nicht für die Benutzersitzungsbusse, aber ich denke, Sie können sie für den Sitzungsbus verwenden.

Das Element definiert eine Sicherheitsrichtlinie, die auf einen bestimmten Satz von Verbindungen zum Bus angewendet werden soll. Eine Richtlinie besteht aus und Elementen. Richtlinien werden normalerweise mit dem systemweiten Bus verwendet. Sie sind insofern analog zu einer Firewall, als sie erwarteten Datenverkehr zulassen und unerwarteten Datenverkehr verhindern.

Später angewendete Richtlinien überschreiben die früher angewendeten Richtlinien, wenn sich die Richtlinien überschneiden. Mehrere Richtlinien mit demselben Benutzer / derselben Gruppe / demselben Kontext werden in der Reihenfolge angewendet, in der sie in der Konfigurationsdatei angezeigt werden.

Sie können wahrscheinlich einfach so etwas am Ende /usr/share/dbus-1/session.confvor der </busconfig>Zeile anheften, um den Zugriff für diejenigen in der LP-Gruppe zu ermöglichen und es für alle anderen zu verweigern. Natürlich müssen Sie dies an Ihre Umgebung und Ihre Bedürfnisse anpassen.

<policy group="lp">
    <allow send_destination="org.bluez"/>
    <allow send_destination="org.bluez.obex"/>
  </policy>

  <policy context="default">
    <deny send_destination="org.bluez"/>
    <deny send_destination="org.bluez.obex"/>
  </policy>

Quellen:

https://github.com/netblue30/firejail/issues/796 http://www.linuxfromscratch.org/blfs/view/svn/general/dbus.html https://dbus.freedesktop.org/doc/dbus- daemon.1.html https://github.com/ghent360/bluez/blob/master/src/bluetooth.conf

Elder Geek
quelle