Ist es möglich, ein Konto vor /etc/passwd zu „verstecken“?

Ist es möglich, ein Konto vor /etc/passwd zu „verstecken“?

Ein typisches Linux-System hat nicht nur Konten für die eigentlichen Benutzer des Systems, sondern auch verschiedene Systemkonten.

Gibt es eine Datei wie /etc/passwdfür Daemons oder andere Ressourcen, in der ein Konto definiert werden könnte?

Ich habe gehört, dass es möglich ist, ein Konto als Dienstkonto zu tarnen. Ich versuche, solche Konten auf einem Computer zu finden.

Antwort1

Daemon-Benutzer und echte Benutzer werden in denselben Dateien aufgelistet. Die „Datei wie /etc/passwdfür Daemons“ ist /etc/passwd.

Es gibt keine formale Definition von menschlichen und Systembenutzern. Dem Kernel ist das egal (außer dass er dem Benutzer mit UID 0 viele Privilegien gewährt). Den meisten Administrationsbefehlen ist das 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 verfügt über eine echte Anmelde-Shell (z. B. /bin/shoder /bin/bashoder ) /bin/csh. Einige Systembenutzer verfügen über eine Shell (fast immer /bin/sh), andere nicht, je nachdem, wie sie verwendet werden sollen (z. B. ist eine Shell su fooerforderlich ).foo
  • Ein menschlicher Benutzer hat oft ein Passwort – aber das ist nicht immer der Fall, beispielsweise hat ein Remote-Only-Benutzer möglicherweise nur einen SSH-Schlüssel. Beachten Sie, dass sich das Passwort auf modernen Unix-Systemen nicht in , /etc/passwdsondern in einer anderen Datei befindet, z. B. /etc/shadow.
  • Das Home-Verzeichnis eines menschlichen Benutzers befindet sich normalerweise unter /home(oder an einem ortsspezifischen Ort), während das Home-Verzeichnis eines Systembenutzers normalerweise nicht unter liegt /homeund möglicherweise nicht existiert (es gibt jedoch Ausnahmen).
  • Die meisten Sites legen einen Bereich von Benutzer-IDs für Systembenutzer und einen disjunkten Bereich für menschliche Benutzer fest. Die Reservierung von 100–65533 oder 500–65533 oder 1000–65533 ist typisch, und die meisten Distributionen sind so eingerichtet, dass sie ab 500 oder 1000 mit der Zuweisung echter Benutzer-IDs beginnen.

Auf Websites, auf denen Konten auf mehreren Rechnern gemeinsam genutzt werden, gibt es normalerweise einen zentralen Server mit Benutzerlisten, auf den überNISoderLDAPDer passwdEintrag in/etc/nsswitch.confgibt an, wo Benutzerinformationen zu finden sind. Normalerweise gibt es Systembenutzer in der lokalen /etc/passwdund echte Benutzer in der netzwerkweiten Datenbank, aber manchmal gibt es Systembenutzer in der netzwerkweiten Datenbank (um konsistente UIDs durchzusetzen, was die Server- und Datenreplikation erleichtert) und manchmal gibt es menschliche Benutzer in der lokalen Datei (damit sie sich auch dann anmelden können, wenn das Netzwerk lahmgelegt ist).

Ein für Menschen zugängliches Konto, das als Systembenutzer getarnt ist, hätte normalerweise keinen echten Namen, aber eine Login-Shell und entweder ein Passwort oder einen SSH-Schlüssel, während es eine Benutzer-ID im Systembereich hätte. Tatsächlich wäre es eine bessere Tarnung, ein echtes Systemkonto zu verwenden, dessen Entfernung dazu führen würde, dass ein Dienst nicht mehr funktioniert. Es gibt jedoch keine festen Regeln zum Erkennen potenzieller Angriffe: Angreifer befolgen per Definition keine Regeln.

Antwort2

Es gibt keinen Grund, eine separate Benutzerdefinitionsdatei zu haben. Systembenutzer und echte Benutzer sind nicht technisch, sondern organisatorisch getrennt: durch den Bereich, aus dem ihre UIDs stammen. Sehen Sie sich die Datei an /etc/login.defs. Mein openSUSE hat diese Einträge:

SYSTEM_UID_MIN            100
SYSTEM_UID_MAX            499
UID_MIN                  1000
UID_MAX                 60000

Die Distro-Tools verwenden diese Werte, um die beiden Gruppen voneinander zu unterscheiden. Wenn Sie jedoch ein Benutzerkonto mit der UID 300 erstellt haben, wird es wahrscheinlich nicht in einem Anmeldemenü angezeigt, aber Sie können dieses Konto wie jedes andere verwenden.

Antwort3

Wenn Sie Benutzer- und Systemkonten wirklich trennen möchten (beim Lesen einiger Kommentare zu anderen Posts scheint es, als wären Sie neugierig darauf), können Sie alle Systembenutzer in der filesDatenbank (d. h. /etc/passwd) belassen und die Personenbenutzer in einer zweiten Datenbank ablegen (ähnlich wie bei LDAP).

Hierzu können Sie das Berkeley DB NSS-Modul verwenden (auf vielen Systemen über ein zusätzliches glibc-Paket namens verfügbar nss_db). Ich bin nicht sicher, welches Betriebssystem Sie verwenden, aber diese Site bietet einige Einblicke für Linux:http://www.linuxfromscratch.org/hints/downloads/files/nss_db.txt

Dies ist nichts für schwache Nerven, da die Dokumentation nicht gerade umfangreich ist, aber es könnte Spaß machen, damit herumzuexperimentieren, wenn Sie mehr darüber erfahren möchten, wie diese Dinge funktionieren (der Vorschlag von @Hauke ​​Laging, eine eigene Implementierung durchzuführen, ist ebenfalls großartig).

Antwort4

Die meisten Daemons laufen als Root, einige (aus Sicherheitsgründen, um ihr Schadenspotenzial zu begrenzen) laufen als ihre eigenen Benutzer. Sie sind in der /etc/passwdDatei aufgeführt. Die meisten Distributionen begrenzen die UID des „Systembenutzers“ auf einen bestimmten Wert, etwa 500 oder 1000, das gibt also einen Hinweis. Einige Daemons haben GECOS-Einträge (Benutzerbeschreibung) mit der Aufschrift „Daemon“, andere haben seltsame Shells. Aber es gibt auch Phantombenutzer für NFS und andere Anwendungen.

verwandte Informationen