Warum ist Syslog ein Benutzer?

15

Wenn ich das überprüfe /var/log, finde ich etwas sehr Seltsames

me@me:~$ ls -lt /var/log |head -6 '
total 160368
-rw-r-----  1 syslog            adm              19919118 Jan 15 16:55 auth.log
-rw-r-----  1 syslog            adm             139702302 Jan 15 16:55 syslog
-rw-r-----  1 syslog            adm                191122 Jan 15 16:55 mail.log
-rw-r-----  1 syslog            adm               2210432 Jan 15 16:32 kern.log
-rw-r--r--  1 root              root              1741863 Jan 15 14:22 dpkg.log

Beachten Sie, dass der Besitzer der ersten vier Protokolldateien ist syslog. Es ist komisch, weil es nur einen Benutzer auf meinem System gibt:

me@me~$ users
me

Warum kann ein Dateiname syslogein Benutzer sein?

Alice
quelle
6
Ich versichere Ihnen, dass es auf Ihrem System weit mehr als einen Benutzer gibt. Ich weiß, Sie meinen "menschlicher Benutzer, der mit einem Konto und einem Home-Verzeichnis verbunden ist", aber der Begriff "Benutzer" ist für alle Systeme weiter gefasst.
Schauen Sie mal /etc/passwdrein. Ich zähle 36 Rollennutzer, ohne root. Versuchen man usersSie auch - Sie nehmen (falsch) an, was der Befehl tut.
chrylis -on strike-

Antworten:

26

Dies hat mit der Sicherheit und den Berechtigungen für den Zugriff auf Ihr System zu tun.

Und nein, Sie haben viel mehr Benutzer als nur Ihren eigenen. Es gibt "root", "daemon", "bin", "games", "nobody" und "list".

Führen Sie a more /etc/passwdfür eine Liste der Benutzer auf Ihrem System aus. Sie werden viele Zeilen mit "/ usr / sbin / nologin" sehen. Das heißt, diese können nicht wie Ihr eigener Benutzer als normaler Benutzer mit einem Login verwendet werden. Die dritte Spalte ist die Benutzer-ID. Alle Benutzer-IDs unter 1000 sind Pseudobenutzer. Ihr erster Sudo-Benutzer (derjenige, der das System installiert hat) hat standardmäßig 1000.

Grundsätzlich darf der Benutzer syslog das /var/log/Verzeichnis verwenden, das als Stammverzeichnis festgelegt ist . Um die Berechtigungen für das Verzeichnis nicht zu gefährden (dh die Berechtigungen zu verringern, damit andere Benutzer es verwenden können), wurde dieser Benutzer erstellt.

Das Gleiche geschieht mit dem Benutzer für Apache und MySQL (bei der Installation werden ein Benutzer und eine Gruppe von www-data sowie ein Benutzer und eine Gruppe von MySQL angezeigt), wird jedoch für viele Zwecke verwendet. Es gibt eine Gruppe "Dialout", die verwendet wird, um auf externe Geräte zuzugreifen. Benutzer werden dieser Gruppe hinzugefügt, damit der Benutzer diese Geräte verwenden kann. Andernfalls erhalten Sie eine Fehlermeldung, dass die Berechtigung verweigert wurde. Es gibt zwei Möglichkeiten: Einen Benutzerzugriff zu verweigern bedeutet, die Gruppe zu entfernen.

Rinzwind
quelle
Diese Zahl war jedoch nicht immer 1000. Ich habe an Systemen gearbeitet, deren Historie lang genug war, dass die IDs der realen Benutzer vom 20.
15.
1
Ich weiß, aber Ubuntu startet immer um 1000. Redhat zum Beispiel startet um 500.
Rinzwind
Ja, aber die Benutzer werden nicht unbedingt lokal erstellt. In meinem Fall wurden sie über NIS empfangen, heutzutage wäre es wahrscheinlich LDAP gewesen.
Kasperd
Echte Benutzer, die mit 20 anfangen, würden eine Debian-basierte Distribution schwer beschädigen. UIDs 0-99 auf Debian-basierten Systemen werden vom Debian-Projekt statisch bestimmten Verwendungen zugewiesen.
Peter Green
1
@PaddyLandau / bin / false beendet eine Anmeldung ohne Benachrichtigung. nologin sollte eine Meldung anzeigen "Dieses Konto ist derzeit nicht verfügbar." (/etc/nologin.txt enthält diesen Hinweis)
Rinzwind
8

Der Syslog-Dienst, der vom Kernel und anderen Diensten erstellte Protokollnachrichten in verschiedene Protokolldateien, die Konsole und / oder andere Ziele schreibt, wird unter einem eigenen, speziellen Benutzerkonto ausgeführt. So viele andere Dienstleistungen. Dies ist das Prinzip des geringsten Privilegs zu implementieren :

Um die möglichen Auswirkungen eines gefährdeten oder fehlerhaften Dienstes zu minimieren (z. B. ein Dienst, der einen Fehler aufweist, der wiederum von einem Angreifer ausgenutzt wird, oder ein Dienst, der einen Fehler aufweist, der zufällige unerwünschte Dinge verursacht, oder ein Dienst, der wurde absichtlich von einem bösartigen Entwickler entwickelt, um böse Dinge zu tun.) Sie möchten, dass jeder Dienst nur auf das zugreifen kann, was er für seinen Betrieb benötigt, und auf nichts anderes.

Auf jedem Unix-ähnlichen Betriebssystem (das alle GNU / Linux-Distributionen wie Ubuntu enthält) können Sie am einfachsten Berechtigungen zuweisen (dies ist meist das Recht, bestimmte Dateien oder dateiähnliche Dinge wie z. B. zu lesen und / oder zu schreiben) Geräteknoten) basierend auf Benutzern und Gruppen. Es gibt andere Möglichkeiten, aber sie sind oft mühsamer und fehleranfälliger einzurichten oder arbeiten nur in bestimmten Kontexten.

Daher wird der Syslog-Dienst unter dem Syslog-Benutzerkonto ausgeführt. Wenn ein Angreifer beispielsweise jetzt den Syslog-Dienst veranlassen kann, das zu tun, was er ihm sagt, anstatt das zu tun, was er soll, ist der Syslog-Dienst weiterhin eingeschränkt (erzwungen vom Kernel basierend auf dem Benutzerkonto, nicht erzwungen vom Syslog) Software selbst, die nutzlos wäre, weil sie kompromittiert wurde, nur in die Protokolldateien zu schreiben (die einzigen Dateien, auf die der Syslog-Benutzer Schreibzugriff hat). Daher kann der Angreifer den kompromittierten Syslog-Dienst nicht verwenden, um z. B. den Inhalt einer Website oder Datenbank zu ändern, die auf demselben Computer gehostet wird, da die relevanten Dateien so eingerichtet sind, dass sie nur von einer bestimmten Gruppe anderer (menschlicher oder System- ) Benutzer beschreibbar sind Konten, nicht vom Syslog-Benutzerkonto.

Um mehr Schaden zu verursachen als nur das Löschen / Ändern der Protokolldateien und das Lesen von "öffentlichen" Dateien (mit "Leseberechtigung" für alle), müsste der Angreifer zuerst einen zweiten Fehler ausnutzen, entweder im Kernel oder in einer Software Diese wird installiert, um mit anderen Berechtigungen als der Benutzer ausgeführt zu werden, der sie aufgerufen hat ( setuid ), und erhält somit zusätzliche Berechtigungen (erweiterte Berechtigungen ).


Der von usersIhnen verwendete Befehl zeigt gemäß seiner Manpage nur die Benutzer an, die aktuell angemeldet sind . Da der Syslog-Benutzer ein Systembenutzer ist , wird er sich niemals anmelden, sodass er niemals in dieser Liste angezeigt wird. Sie können in die Datei schauen /etc/passwdoder eine der anderen hier beschriebenen Methoden verwenden , um eine Liste aller Benutzer (Mensch und System) auf Ihrem System zu erhalten.

Hans-Jakob
quelle
7

Weil Syslog keine Datei ist; Es ist ein Daemon, der vom System zum Speichern von System-Daemon- und Anwendungsnachrichten (Debug, Fehler, Warnung und Info) in Dateien verwendet wird.

Lesen Sie hier eine kurze Geschichte von Syslog.

In anderen Distributionen, beispielsweise auf Basis von Red Hat Linux, wird die Syslog-Ausgabe für das System in einer Datei namens gespeichert /var/log/messages. Das hängt von der Konfiguration ab.

Wie Rinzwind sagt, laufen aus Sicherheitsgründen verschiedene Komponenten des Betriebssystems mit einem bestimmten Benutzer und jeder Benutzer hat seine eigenen Rechte. Zum Beispiel hat Syslog mindestens Schreibrechte für den /var/logOrdner.

Ein System hat viele Dienste, und normalerweise gibt es Benutzer für jeden Dienst oder für eine kleine Gruppe von Diensten. Zum Beispiel apache get www-data|httpd|apache. Normalerweise erhalten diese Daemon-Benutzer keinen Bash-Zugriff, um Sicherheitslücken zu vermeiden.

AtomiX84
quelle