it-swarm.com.de

Was ist der Unterschied zwischen Benutzer und Dienstkonto?

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

Ich weiß, dass z.B. Jenkins, das auf Ubuntu installiert ist, ist kein Benutzer, aber ein Dienstkonto .

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

Benutzerkonten werden von echten Benutzern verwendet, Dienstkonten werden von Systemdiensten wie Webservern, Posttransportagenten, Datenbanken usw. verwendet. Gemäß Konvention und nur gemäß Konvention haben Dienstkonten Benutzer-IDs im niedrigen Bereich, z. <1000 oder so. Mit Ausnahme von UID 0 haben Dienstkonten keine besonderen Berechtigungen. Dienstkonten können - und in der Regel - bestimmte Ressourcen besitzen, sogar spezielle Gerätedateien, haben jedoch keine Superuser-ähnlichen Berechtigungen.

Dienstkonten können wie normale Benutzerkonten erstellt werden (z. B. mit useradd). Dienstkonten werden jedoch normalerweise vom Paketmanager bei der Installation der Dienstsoftware erstellt und konfiguriert. Selbst als Administrator sollten Sie sich daher selten direkt mit der Erstellung von Dienstkonten befassen.

Aus gutem Grund: Im Gegensatz zu Benutzerkonten haben Dienstkonten häufig keine "richtige" Login-Shell, dh sie haben /usr/sbin/nologin Als Login-Shell (oder früher /bin/false). Darüber hinaus sind Dienstkonten normalerweise gesperrt, dh es ist nicht möglich, sich anzumelden (für herkömmliche /etc/passwd Und /etc/shadow Dies kann erreicht werden, indem der Kennwort-Hash auf beliebige Werte wie * oder x). Dies dient dazu, die Dienstkonten gegen Missbrauch zu schützen ( Tiefenverteidigung ).

Das Vorhandensein individueller Dienstkonten für jeden Dienst dient zwei Hauptzwecken: Es ist eine Sicherheitsmaßnahme, um die Auswirkungen eines Vorfalls mit einem Dienst zu verringern ( Unterteilung ). Dies vereinfacht die Verwaltung, da leichter nachverfolgt werden kann, welche Ressourcen zu welchem ​​Dienst gehören. Weitere Informationen finden Sie unter this oder this Antworten auf verwandte Fragen.

19
countermode

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, root genannt, wird für Dinge verwendet, die keinem bestimmten menschlichen Benutzer gehören, d. H. 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 Zehen treten. Ein Dienstkonto (oder „Systemkonto“, diese beiden Begriffe sind Synonyme) entspricht einem Dienst, der auf dem System ausgeführt wird, und nicht einer Person, die das System verwendet. Sie haben im Allgemeinen ein Dienstkonto für jede Aufgabe, die auf dem System ausgeführt wird und über eigene Berechtigungen verfügt (z. B. eigene Dateien, eigene Netzwerkports usw.).

Es gibt keine formale Definition von Mensch gegen System/Dienstkonto. Dem Kernel ist das egal (abgesehen davon, dass er dem Benutzer mit UID 0 viele Berechtigungen gewährt). Die meisten Administrationsbefehle sind auch egal. 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 (z. B. /bin/sh Oder /bin/bash Oder /bin/csh. Einige Systembenutzer haben eine Shell (fast immer /bin/sh), Andere nicht Dies hängt nicht davon ab, wie sie verwendet werden sollen (z. B. erfordert su foo, dass foo eine Shell hat).
  • Ein menschlicher Benutzer hat häufig ein Kennwort - dies ist jedoch nicht immer der Fall. Beispielsweise verfügt ein Nur-Remote-Benutzer möglicherweise nur über einen SSH-Schlüssel. Beachten Sie, dass sich das Kennwort auf modernen Unices nicht in /etc/passwd Befindet, sondern in einer anderen Datei wie /etc/shadow.
  • Das Home-Verzeichnis eines menschlichen Benutzers befindet sich normalerweise unter /home (Oder einem standortspezifischen Speicherort), während sich das Home-Verzeichnis eines Systembenutzers normalerweise nicht unter /home Befindet und möglicherweise nicht vorhanden ist (es gibt jedoch Ausnahmen).
  • Die meisten Websites legen einen Bereich von Benutzer-IDs für Systembenutzer und einen disjunkten Bereich für menschliche Benutzer fest. Das Reservieren von 100–65533 oder 500–65533 oder 1000–65533 ist typisch, und die meisten Distributionen sind so eingerichtet, dass echte Benutzer-IDs von 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 ZUGEGRIFFEN WERDEN KANN ] LDAP . Der Eintrag passwd in /etc/nsswitch.conf gibt an, wo Benutzerinformationen zu finden sind. Es ist üblich, Systembenutzer in der lokalen /etc/passwd Und echte Benutzer aus 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 befinden sich menschliche Benutzer in der lokalen Datei (damit sie sich auch dann anmelden können, wenn das Netzwerk abgespritzt ist).

Ein als Systembenutzer getarntes Konto, auf das von Menschen zugegriffen werden kann, hat normalerweise keinen echten Namen, sondern eine Anmeldeshell und entweder einen Kennwortsatz oder einen SSH-Schlüssel, während eine Benutzer-ID im Systembereich liegt. In der Tat wäre es eine bessere Tarnung, 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 haben, um potenzielle Angriffe zu erkennen: Per Definition befolgen Angreifer keine Regeln.

Dienstkonten und Benutzerkonten werden mit denselben Befehlen verwaltet und in denselben Dateien aufgezeichnet. Befehle zur Kontoerstellung können Optionen zum Festlegen angemessener Standardeinstellungen für Benutzer im Vergleich zu Benutzern von Diensten enthalten, z. um eine Benutzer-ID im richtigen Bereich auszuwählen und nach einem Kennwort für einen Menschen zu fragen und die Kennwortauthentifizierung für einen Dienst zu deaktivieren. Zum Beispiel adduser vs adduser --system Oder useradd vs useradd -r Unter Linux.

    1. ein Dienstkonto, ein technisches Konto, ist ein Konto, das nur von einem Dienst/einer Anwendung und nicht von einem normalen Benutzer verwendet werden soll.
    1. Anwendungs- und Serviceentwickler möchten, dass diese Konten die zugehörigen Prozessrechte und -berechtigungen einschränken, anstatt ihre Prozesse als Root auszuführen. Dienste, die von init, systemd oder ähnlichem gestartet wurden und als root ausgeführt werden, werden schnell auf das Dienstkonto heruntergestuft, um die Risiken zu begrenzen. Abhängig vom verwendeten Betriebssystem erhalten die Anwendungskonten möglicherweise mehr Berechtigungen als reguläre Konten, z. Das Recht, an einen privilegierten TCP Port oder im Gegenteil zu binden, hat im Vergleich zu einem normalen Benutzer weniger Berechtigungen, z. B. das Verweigern des Aufrufs von fork/exec durch die Serviceprozesse. In diesem Fall gibt es Wenn die Dienste nicht auf das Dienstkonto heruntergestuft werden müssen, können sie damit gestartet werden.
    1. Sie sollten nicht einfach ein Konto ohne ein verwendbares Kennwort und mit einer nicht funktionierenden Shell (z. B. /bin/false) Erstellen müssen, das von einem normalen Benutzer nicht verwendet werden kann, dh es gibt keine Möglichkeit zum Protokollieren in lokal oder remote (z. B. über ssh) unter Verwendung des Kontonamens. Wie bei den meisten Einschränkungen können Sie das Root-Konto oder Sudo überwinden.
3
jlliagre

Ein Dienstkonto kann beispielsweise keine Shell verwenden. Es wird verwendet, um Dienste (Daemon) mit eingeschränktem Umfang und Berechtigungen auszuführen. Meiner Meinung nach können Sie es als regulärer Benutzer erstellen, indem Sie nur auf die Rechte und die Gruppenmitgliedschaft achten. Meistens jedoch nicht, da Programme diese während der Installation automatisch erstellen. Schauen Sie in /etc/passwdroot:x:0:0:root:/root:/bin/bash

0 ist die UID, sie charakterisiert die Hierarchie des Kontos im Benutzerbereich, root steht über allen, dann haben Sie die Gruppenmitgliedschaft :root Das Home-Verzeichnis /root Und schließlich die vom Konto verwendete Shell /bin/bash, Um sich im System anzumelden.

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

1
Kuruwan