Warum wird empfohlen, für einige Anwendungen eine Gruppe und einen Benutzer zu erstellen?

11

In den meisten Fällen wird bei der Installation eines Programms aus dem Quellcode empfohlen, einen neuen Benutzer und eine neue Gruppe zu erstellen und /usr/local/<myapp>dem kürzlich erstellten Benutzer und der Gruppe den Besitz zu erteilen .

  • Warum wird eine solche Praxis als gute Praxis angesehen?

  • Was verbessert es?

Beispiel: MySQL-Benutzer / MySQL-Gruppe für den MySQL-Datenbankserver.

Spredzy
quelle

Antworten:

11

Es wird nicht ein Benutzer und eine Gruppe pro Anwendung, sondern pro Dienst erstellt. Das heißt, Programme, die von einem lokalen Benutzer ausgeführt werden, müssen nicht als anderer Benutzer als root installiert werden. Es sind Dämonen , Programme, die im Hintergrund ausgeführt werden und Anforderungen ausführen, die über das Netzwerk oder andere Kommunikationsmittel eingehen, die als dedizierter Benutzer ausgeführt werden sollten.

Der Dämon wird als dedizierter Benutzer ausgeführt, sodass der Schaden, den er anrichten kann, begrenzt ist, wenn er sich schlecht verhält (aufgrund eines Fehlers, der wahrscheinlich von einem Angreifer ausgelöst wird): Nur die Datendateien des Dämons sind betroffen (es sei denn, der Angreifer hat es geschafft, ein lokales Stammloch zu finden , was passieren kann). Beispielsweise wird der Datenbankdämon mysqldals dedizierter Benutzer und Gruppe ausgeführt, mysql:mysqlund die Datendateien der Datenbank ( /var/lib/mysql/*) gehören dazu mysql:mysql.

Beachten Sie, dass die ausführbare Datei des Dämons und andere statische Daten und Konfigurationsdateien, die verwendet werden, aber nicht vom Dämon geändert werden sollten, nicht dem dedizierten Benutzer gehören dürfen. Sie sollten root:rootwie die meisten Programm- und Konfigurationsdateien Eigentum von sein . Der mysqldProzess hat kein geschäftliches Überschreiben /usr/sbin/mysqldoder /etc/mysql/my.cnf, daher dürfen diese Dateien nicht dem mysqlBenutzer gehören oder vom mysqlBenutzer oder der mysqlGruppe beschreibbar sein. Wenn einige Dateien nur vom Dämon und vom Administrator gelesen werden müssen, sollten sie dem Benutzer root und der dedizierten Gruppe gehören und den Modus 0640 ( rw-r-----) haben.

Eine spezielle Kategorie von ausführbaren Dateien, deren Eigentümer nicht sein kann root:root, sind Programme, die von einem Benutzer aufgerufen werden, aber mit zusätzlichen Berechtigungen ausgeführt werden müssen. Diese ausführbaren Dateien müssen setuid root sein, wenn sie (zumindest teilweise) als root ausgeführt werden müssen. dann muss die ausführbare Datei den Modus 4755 ( rwsr-xr-x) haben. Wenn das Programm zusätzliche Berechtigungen benötigt, jedoch nicht als Root, sollte das Programm auf setgid gesetzt werden, damit die zusätzlichen Berechtigungen über eine Gruppe und nicht über einen Benutzer erfolgen. Die ausführbare Datei hat dann den Modus 2755 ( rwxr-sr-x). Es gibt zwei Gründe:

  • Die ausführbare Datei sollte sich nicht selbst ändern dürfen. Wenn ein Benutzer eine Sicherheitsanfälligkeit ausnutzt, kann er möglicherweise die vom Programm verwendeten Datendateien ändern, jedoch kein Trojaner in die ausführbare Datei einfügen, um andere Benutzer anzugreifen, die das Programm ausführen .
  • Die Datendatei der ausführbaren Datei gehört zur Gruppe. Ein setuid-Programm müsste zwischen dem realen Benutzer (dem Benutzer, der das Programm aufgerufen hat) wechseln, um mit dem Benutzer zu interagieren, und dem effektiven Benutzer (dem Benutzer, unter dem das Programm ausgeführt wird), um auf seine privaten Datendateien zuzugreifen (der Grund dafür) zusätzliche Privilegien haben). Ein setgid-Programm kann außerdem Benutzerdaten trennen, auf die nur die Gruppe zugreifen kann (z. B. indem Dateien des Benutzers in einem Verzeichnis gespeichert werden, auf das nur root und die Programmgruppe zugreifen können).
Gilles 'SO - hör auf böse zu sein'
quelle
3

Es sind nicht Anwendungen im Allgemeinen, sondern Dämonen, für die dies ist. Der Grund dafür ist, dass der Dämon als nicht privilegierter Benutzer anstelle von root ausgeführt werden kann. Wenn er eine Sicherheitslücke aufweist und gefährdet ist, ist der Schaden, der angerichtet werden kann, nur auf die Bereiche beschränkt, auf die der Benutzer Zugriff hat.

psusi
quelle
1

Der Grund, warum dies als bewährte Methode angesehen wird, besteht darin, zu verhindern, dass andere Benutzer des Systems Daten und Konfigurationsdateien für die jeweilige Anwendung überschreiben.

Als Beispiel mysql/ mysqlals Eigentümer des Speichers für MySQL-Datenbankdateien wird verhindert, dass jemand, der die Anwendungs-API nicht verwendet, die Datenbanken beschädigt. Außerdem hat der Benutzer mysqlnormalerweise keine echte Shell, sodass sich auch niemand als dieser Benutzer anmelden kann.

Karlson
quelle
Sie haben einen kritischen Punkt übersehen, nämlich, dass es darauf ankommt, auf welchen Benutzer und welche Gruppe die Anwendung ausgeführt wird, und dass die ausführbare Datei und andere statische Dateien im Besitz von root sein sollten.
Gilles 'SO - hör auf böse zu sein'
@ Gilles Sie können Root gehören und die meisten Anwendungen, die über Distributionen installiert werden, sind es, müssen es aber nicht sein und müssen es auch nicht sein. In der Tat /usr/bin/atist im Besitz von daemon/daemonauf Ubuntu
Karlson
1
atist kein Daemon. Es ist daemonso eingestellt, dass es atdüber private Dateien mit dem Dämon kommunizieren kann .
Gilles 'SO - hör auf böse zu sein'
1

Das Erstellen einer neuen Gruppe / eines neuen Benutzers für einen neu installierten Daemon verbessert die Sicherheit. Wenn der Serverprozess unter einem solchen Benutzer ausgeführt wird, ist er auf die Zugriffsrechte dieses Benutzers beschränkt. Im Vergleich: Wenn es als Root ausgeführt wird, kann es alles.

Dieser Unterschied ist wichtig, wenn Ihr Daemon falsch konfiguriert ist und / oder einen sicherheitsrelevanten Fehler enthält.

Ich bin mir nicht sicher, was Sie mit dem zweiten Teil Ihrer Frage meinen, dh dem Teil über das /usr/localEigentum. Im Allgemeinen ist es nicht sinnvoll, dass derselbe Benutzer, Xunter dem ein Dämon aus Sicherheitsgründen ausgeführt wird, auch das Verzeichnis mit den Binärdateien besitzt (da er sie in diesem Fall im Falle eines Exploits ändern könnte). Auf das Verzeichnis mit den Datendateien, an denen der Dämon arbeitet, sollte jedoch zugegriffen werden können. XDer einfachste Weg, dies zu konfigurieren, besteht darin, Xden Eigentümer der Datenverzeichnisse / -dateien festzulegen.

Das Ausführen eines Daemons unter einem eigenen speziellen Benutzer ist nur eine Sicherheitstechnik, andere umfassen eine Art "Chrooting" oder die Verwendung eines MAC-Systems (obligatorisches Zugriffskontrollsystem) (z. B. SELinux).

maxschlepzig
quelle
1

Dies ist eine Sicherheitsüberlegung. Es begrenzt den Schaden, den jemand anrichten kann, der in eine Daemon-Anwendung einbricht. Benutzeranwendungen gehören normalerweise einer Standardbenutzer-ID wie z root.

Wenn Ihr Webserver, Mailserver und Ihre Datenbank alle als derselbe Benutzer ausgeführt werden, können Sie diese leichter kompromittieren. Wenn einer von ihnen einen Fehler oder eine Fehlkonfiguration aufweist, die den Systemzugriff ermöglichen, kann dieser Zugriff verwendet werden, um auf alle drei Anwendungen zuzugreifen.

Wenn alle wie empfohlen über separate Konten verfügen, ist wahrscheinlich nur auf die gefährdete Anwendung zugegriffen. Während öffentliche Konfigurationsdetails des anderen gelesen werden können, ist es unwahrscheinlich, dass Änderungen vorgenommen werden können.

Bei vielen Daemons können Benutzer Dateien hochladen und herunterladen und ansonsten Dinge tun, die Sie nicht möchten, dass sie die Konfigurationen für andere Daemons ausführen können. Wenn jede Anwendung eine eigene Benutzer-ID und Gruppe hat, ist es einfacher, die Daemons zu sichern.

Mit einer daemon-spezifischen Gruppe ist es einfacher, Dateien und Verzeichnissen einen sicheren schreibgeschützten Zugriff für einen Daemon zu gewähren. Wenn die Datei oder das Verzeichnis einem anderen Benutzer gehört, aber zur Dämonengruppe gehört, ist sie normalerweise schreibgeschützt. Zugriffsberechtigungen können mit Tools wie find einfach überprüft und korrigiert werden.

BillThor
quelle
Sie haben einen kritischen Punkt übersehen, nämlich, dass es darauf ankommt, auf welchen Benutzer und welche Gruppe die Anwendung ausgeführt wird, und dass die ausführbare Datei und andere statische Dateien im Besitz von root sein sollten.
Gilles 'SO - hör auf böse zu sein'
@ Gilles: Notiert und entsprechend bearbeitet.
BillThor