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 syslog
ein Benutzer sein?
/etc/passwd
rein. Ich zähle 36 Rollennutzer, ohne root. Versuchenman users
Sie auch - Sie nehmen (falsch) an, was der Befehl tut.Antworten:
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/passwd
fü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.
quelle
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
users
Ihnen 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/passwd
oder eine der anderen hier beschriebenen Methoden verwenden , um eine Liste aller Benutzer (Mensch und System) auf Ihrem System zu erhalten.quelle
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/log
Ordner.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.quelle