Quand je vérifie le /var/log
, je trouve quelque chose de très étrange
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
Notez que le propriétaire des quatre premiers fichiers journaux est syslog
. C'est bizarre, car il n'y a qu'un seul utilisateur sur mon système:
me@me~$ users
me
Pourquoi un nom de fichier syslog
peut-il être un utilisateur?
/etc/passwd
. Je compte 36 utilisateurs de rôle, hors root. Essayez également -man users
vous supposez (incorrectement) ce que fait la commande.Réponses:
Cela concerne la sécurité et les autorisations d'accès à votre système.
Et non, vous avez beaucoup plus d' utilisateurs que votre propre utilisateur. Il y a "root", "daemon", "bin", "games", "nobody" et "list".
Effectuez une
more /etc/passwd
pour une liste d'utilisateurs sur votre système. Vous verrez beaucoup de lignes avec "/ usr / sbin / nologin". Cela signifie que ceux-ci ne peuvent pas être utilisés en tant qu'utilisateur normal avec une connexion comme votre propre utilisateur. La troisième colonne est l'ID utilisateur. Tous les ID utilisateur inférieurs à 1 000 sont des pseudo-utilisateurs. Votre 1er utilisateur sudo (celui qui a installé le système) en a 1000 par défaut.Fondamentalement, l'utilisateur syslog est autorisé à utiliser le
/var/log/
répertoire défini comme répertoire appartenant à root . Pour ne pas avoir à compromettre les autorisations sur le répertoire (c.-à-d. Réduire les autorisations afin que d'autres utilisateurs puissent l'utiliser), cet utilisateur a été créé.La même chose est faite avec l'utilisateur pour Apache et MySQL (vous verrez un utilisateur et un groupe www-data et un utilisateur et un groupe MySQL lorsque vous les installerez), mais il est utilisé pour de nombreuses choses. Il existe un groupe "dialout" qui est utilisé pour accéder aux périphériques externes. Les utilisateurs sont ajoutés à ce groupe pour permettre à l'utilisateur d'utiliser ces appareils. Sinon, vous obtiendrez une erreur d'autorisation refusée. Cela fonctionne de deux manières: refuser l'accès à un utilisateur signifie supprimer le groupe.
la source
Le service syslog, qui écrit les messages de journal créés par le noyau et par d'autres services dans divers fichiers journaux, la console et / ou d'autres destinations, s'exécute sous son propre compte utilisateur spécial. Il en va de même de nombreux autres services. Il s'agit de mettre en œuvre le principe du moindre privilège :
Afin de minimiser l'impact possible d'un service compromis ou défectueux (par exemple, un service qui a un bogue qui à son tour est exploité par un attaquant, ou un service qui a un bogue qui provoque est de faire des choses indésirables au hasard, ou un service qui a été délibérément conçu par un développeur malin pour faire de mauvaises choses), vous voulez que chaque service n'ait accès qu'à ce dont il a besoin pour son fonctionnement et rien d'autre.
Sur n'importe quel système d'exploitation de type Unix (qui inclut toutes les distributions GNU / Linux telles que Ubuntu), vous pouvez le plus facilement attribuer des privilèges (c'est-à-dire le droit de lire et / ou d'écrire à partir de / vers certains fichiers ou des éléments similaires à des fichiers tels que nœuds de périphériques) en fonction des utilisateurs et des groupes. Il existe d'autres possibilités, mais elles sont souvent plus fastidieuses et sujettes aux erreurs à configurer, ou ne fonctionnent que dans des contextes spécifiques.
Ainsi, le service syslog s'exécute sous le compte d'utilisateur syslog. Si maintenant, par exemple, un attaquant peut amener le service syslog à faire ce qu'il lui dit au lieu de ce qu'il est censé faire, le service syslog est toujours restreint (appliqué par le noyau en fonction du compte utilisateur, non appliqué par le syslog logiciel lui-même, ce qui serait inutile car il est compromis) pour écrire uniquement dans les fichiers journaux (les seuls fichiers auxquels l'utilisateur syslog a accès en écriture). Ainsi, l'attaquant ne peut pas utiliser le service syslog compromis pour par exemple modifier le contenu d'un site Web ou d'une base de données hébergée sur le même ordinateur, car les fichiers pertinents sont configurés pour être accessibles en écriture uniquement par un ensemble particulier d'un autre utilisateur (humain ou système ) comptes, pas par le compte utilisateur syslog.
Afin de causer plus de tort que de simplement supprimer / modifier les fichiers journaux et lire les fichiers "publics" (avec la permission "lecture" pour tout le monde), l'attaquant devrait d'abord exploiter en plus un deuxième bogue, soit dans le noyau, soit dans certains logiciels. qui est installé pour s'exécuter avec des privilèges différents de l'utilisateur qui l'a invoqué ( setuid ), et ainsi gagner des privilèges supplémentaires ( escalade de privilèges ).
La
users
commande que vous avez utilisée, selon sa page de manuel , affiche uniquement les utilisateurs actuellement connectés . Étant donné que l'utilisateur syslog est un utilisateur système , il ne se connectera jamais, il n'apparaîtra donc jamais dans cette liste. Vous pouvez consulter le fichier/etc/passwd
ou utiliser l'une des autres méthodes décrites ici pour obtenir une liste de tous les utilisateurs (humains et système) de votre système.la source
Parce que syslog n'est pas un fichier; il s'agit d'un démon utilisé par le système pour stocker le démon système et les messages d'application (débogage, erreur, avertissement et informations) dans des fichiers.
Lisez ici pour un bref historique de syslog.
Dans d'autres distributions, par exemple celles basées sur Red Hat Linux, la sortie syslog du système est stockée dans un fichier appelé
/var/log/messages
. Cela dépend de la configuration.Comme le dit Rinzwind, pour des raisons de sécurité, différents composants du système d'exploitation s'exécutent avec un utilisateur spécifique, et chaque utilisateur a ses propres droits. Par exemple, syslog dispose au moins d'une autorisation d'écriture sur le
/var/log
dossier.Un système possède de nombreux services et il y a généralement des utilisateurs pour chaque service ou pour un petit groupe de services. Par exemple
apache get www-data|httpd|apache
,. Normalement, ces utilisateurs démons n'obtiennent pas d'accès Bash pour éviter les fuites de sécurité.la source