Was ist der Unterschied zwischen Benutzer- und Dienstkonto?

15

Ich möchte den Unterschied zwischen Benutzer- und Dienstkonto kennen.

Ich weiß, dass zB Jenkinsauf Ubuntu kein Benutzer, sondern ein Dienstkonto installiert ist .

  1. Was ist die Verwendung des Dienstkontos?
  2. Wann brauchen wir sie?
  3. Wie kann ich ein Dienstkonto erstellen?
Rudziankoŭ
quelle

Antworten:

17

Benutzerkonten werden von echten Benutzern verwendet, Dienstkonten von Systemdiensten wie Webservern, Mail-Transportagenten, Datenbanken usw. Gemäß Konvention und nur gemäß Konvention haben Dienstkonten Benutzer-IDs im niedrigen Bereich, z. B. <1000 oder so . Mit Ausnahme von UID 0 haben Dienstkonten keine besonderen Berechtigungen. Dienstkonten besitzen möglicherweise - und in der Regel auch - bestimmte Ressourcen, sogar Gerätedateien, verfügen jedoch nicht über Superuser-ähnliche Berechtigungen.

Dienstkonten können wie normale Benutzerkonten erstellt werden (z useradd. B. mit ). Dienstkonten werden jedoch in der Regel vom Paketmanager bei der Installation der Dienstsoftware erstellt und konfiguriert. Daher sollten Sie selbst als Administrator selten direkt mit der Erstellung von Dienstkonten befasst sein.

Aus gutem Grund: Im Gegensatz zu Benutzerkonten verfügen Dienstkonten häufig nicht über eine "richtige" Anmeldeshell, dh sie haben /usr/sbin/nologineine Anmeldeshell (oder früher /bin/false). Außerdem sind Dienstkonten normalerweise gesperrt, dh es ist nicht möglich, Login (für traditionelle /etc/passwdund /etc/shadowdies kann durch Setzen des Passwort - Hash auf beliebige Werte wie erreicht werden *oder x). Dies dient dazu, die Dienstkonten gegen Missbrauch abzusichern ( Tiefenverteidigung ).

Es dient zwei Hauptzwecken, für jeden Dienst ein eigenes Dienstkonto zu haben: Es ist eine Sicherheitsmaßnahme, um die Auswirkungen eines Vorfalls mit einem Dienst zu verringern ( Unterteilung ), und es vereinfacht die Verwaltung, da leichter ermittelt werden kann, welche Ressourcen zu welchem ​​Dienst gehören . Sehen Sie diese oder diese Antworten auf ähnliche Fragen für weitere Details.

Gegenmodus
quelle
4

Ursprünglich sollten Benutzer einem Menschen entsprechen, der das System verwendet, daher der Name. Jeder Prozess wird als bestimmter Benutzer ausgeführt und jede Datei gehört einem bestimmten Benutzer. Ein spezieller Benutzer namens root wird für Dinge verwendet, die keinem bestimmten menschlichen Benutzer gehören, dh dem Betriebssystem selbst. Da root dem Betriebssystem selbst entspricht, verfügt es über alle Berechtigungen.

Bald fanden die Leute, dass es bequem war, mehrere Systembenutzer ohne umfangreiche Berechtigungen zu erstellen. Auf diese Weise können die verschiedenen Dienste, die auf einem Computer ausgeführt werden, isoliert werden, sodass sie sich nicht gegenseitig auf die Füße treten. Ein Dienstkonto (oder „Systemkonto“, diese beiden Begriffe sind Synonyme) entspricht einem Dienst, der auf dem System ausgeführt wird, und nicht jemandem, der das System verwendet. Im Allgemeinen verfügen Sie über ein Dienstkonto für jede auf dem System ausgeführte Aufgabe, die über eigene Berechtigungen verfügt (z. B. eigene Dateien, eigene Netzwerkports usw.).

Es gibt keine formale Definition von Mensch vs. System / Dienstkonto. Der Kernel kümmert sich nicht darum (außer dem Benutzer mit der UID 0 viele Berechtigungen zu gewähren). Die meisten Administrationsbefehle kümmern sich auch nicht darum. Einige typische Unterschiede sind:

  • Ein menschlicher Benutzer hat einen echten Namen wie "John Doe", während ein Systembenutzer einen beschreibenden Namen wie "Nasal Daemon" oder gar keinen hat.
  • Ein menschlicher Benutzer hat eine echte Login - Shell (zB /bin/shoder /bin/bashoder /bin/csh. Einige Systembenutzer haben eine Shell (fast immer /bin/sh), andere nicht tun, je nachdem , wie sie verwendet werden sollen (zB su fooerfordert fooeine Schale haben).
  • Ein menschlicher Benutzer verfügt häufig über ein Kennwort. Dies ist jedoch nicht immer der Fall. Beispielsweise verfügt ein reiner Remote-Benutzer möglicherweise nur über einen SSH-Schlüssel. Beachten Sie, dass sich das Passwort bei modernen Unices nicht in, /etc/passwdsondern in einer anderen Datei befindet, z /etc/shadow.
  • Das Home-Verzeichnis eines menschlichen Benutzers befindet sich normalerweise unter /home(oder an einem standortspezifischen Ort), wohingegen sich das Home-Verzeichnis eines Systembenutzers normalerweise nicht unter befindet /homeund möglicherweise nicht existiert (es gibt jedoch Ausnahmen).
  • Die meisten Sites legen einen Bereich von Benutzer-IDs für Systembenutzer und einen nicht zusammenhängenden Bereich für menschliche Benutzer fest. Die Reservierung von 100 bis 65533 oder 500 bis 65533 oder 1000 bis 65533 ist typisch, und die meisten Verteilungen sind so eingerichtet, dass echte Benutzer-IDs ab 500 oder 1000 zugewiesen werden.

An Standorten, an denen Konten auf mehreren Computern gemeinsam genutzt werden, gibt es normalerweise einen zentralen Server mit Benutzerlisten, auf die über NIS oder LDAP zugegriffen werden kann . Der passwdEintrag in /etc/nsswitch.confgibt an, wo Benutzerinformationen zu finden sind. Es ist üblich, Systembenutzer in den lokalen /etc/passwdund realen Benutzern der netzwerkweiten Datenbank zu haben, aber manchmal gibt es Systembenutzer in der netzwerkweiten Datenbank (um konsistente UIDs zu erzwingen, was die Server- und Datenreplikation erleichtert), und manchmal gibt es solche Benutzer menschliche Benutzer in der lokalen Datei (damit sie sich anmelden können, auch wenn das Netzwerk überlastet ist).

Ein für Menschen zugängliches Konto, das als Systembenutzer getarnt ist, hat normalerweise keinen echten Namen, sondern eine Anmeldeshell und entweder ein Kennwort oder einen SSH-Schlüssel, während sich eine Benutzer-ID im Systembereich befindet. Tatsächlich wäre es besser, ein tatsächliches Systemkonto zu verwenden, dessen Entfernung dazu führen würde, dass ein Dienst nicht mehr funktioniert. Sie können jedoch keine festen Regeln für die Erkennung potenzieller Angriffe festlegen: Angreifer befolgen per Definition keine Regeln.

Dienstkonten und Benutzerkonten werden mit denselben Befehlen verwaltet und in denselben Dateien aufgezeichnet. Befehle zur Kontoerstellung können Optionen enthalten, mit denen Sie angemessene Standardeinstellungen für Benutzer im Vergleich zu Dienstbenutzern festlegen können, z. B. eine Benutzer-ID im richtigen Bereich auswählen und zur Eingabe eines Kennworts für einen Benutzer auffordern und die Kennwortauthentifizierung für einen Dienst deaktivieren können. Zum Beispiel adduservs adduser --systemoder useraddvs useradd -runter Linux.

Gilles 'SO - hör auf böse zu sein'
quelle
3
    1. Ein Dienstkonto, auch als technisches Konto bezeichnet, ist ein Konto, das nur von einem Dienst / einer Anwendung und nicht von einem normalen Benutzer verwendet werden kann.
    1. Anwendungs- und Dienstentwickler möchten, dass diese Konten die zugehörigen Prozessrechte und -privilegien einschränken, anstatt ihre Prozesse als Root auszuführen. Dienste, die von oder ähnlich gestartet wurden initund systemdals Root ausgeführt werden, werden schnell auf das Dienstkonto heruntergestuft, um die Risiken zu begrenzen. Je nach verwendetem Betriebssystem werden den Anwendungskonten möglicherweise mehr Berechtigungen als den regulären Konten gewährt, z. B. das Recht, sich an einen privilegierten TCP-Port zu binden, oder im Gegenteil, die Berechtigungen werden im Vergleich zu einem regulären Benutzer reduziert, um z. B. die Dienstprozesse zu verweigern anrufen fork/ exec. In diesem Fall müssen die Dienste nicht auf das Dienstkonto heruntergestuft werden, sondern können damit gestartet werden.
    1. Sie müssen nicht nur ein Konto ohne ein verwendbares Kennwort und mit einer nicht funktionierenden Shell erstellen (z. B. /bin/false), und es kann nicht von einem normalen Benutzer verwendet werden, dh, es gibt keine Möglichkeit, sich lokal oder remote anzumelden (z. B.) durch ssh) unter Verwendung des Kontonamens. Wie bei den meisten Einschränkungen können Sie das Root-Konto verwenden oder sudoes überwinden.
jlliagre
quelle
1

Ein Dienstkonto ist möglicherweise nicht in der Lage, beispielsweise eine Shell zu verwenden. Es wird zum Ausführen von Diensten (Daemon) mit eingeschränktem Umfang und eingeschränkten Berechtigungen verwendet. Ich bin der Meinung, dass Sie es als regulärer Benutzer erstellen können, indem Sie nur auf die Rechte und die Gruppenmitgliedschaft achten. Meistens tun Sie dies jedoch nicht, da Programme sie während der Installation automatisch erstellen. Schauen Sie rein/etc/passwd root:x:0:0:root:/root:/bin/bash

0 ist die UID, sie kennzeichnet die Hierarchie des Kontos im Benutzerbereich, root steht über jedem, dann hat man die Gruppenzugehörigkeit :rootdas Home-Verzeichnis und /rootschließlich die Shell, mit der sich das Konto /bin/bashim System "anmeldet".

Sie können /usr/sbin/nologinfür ein Konto verwenden, für das Sie keine Anmeldeberechtigung wünschen.

Kuruwan
quelle