Qui, quand et d’où? Les bonnes pratiques de sécurité indiquent que vous devez savoir qui a accédé à votre ordinateur Linux. Nous vous montrons comment.
Table des matières
Le fichier wtmp
Linux et d’autres systèmes d’exploitation de type Unix tels que MacOS sont très bons pour la journalisation. Quelque part dans les entrailles du système, il y a un journal pour à peu près tout ce à quoi vous pouvez penser. Le fichier journal qui nous intéresse s’appelle wtmp. Le «w» pourrait signifier «quand» ou «qui» – personne ne semble d’accord. La partie «tmp» signifie probablement «temporaire», mais elle peut également signifier «horodatage».
Ce que nous savons, c’est que wtmp est un journal qui capture et enregistre chaque événement de connexion et de déconnexion. L’examen des données dans le journal wtmp est une étape de base pour adopter une approche axée sur la sécurité dans vos tâches d’administrateur système. Pour un ordinateur familial typique, ce n’est peut-être pas si critique du point de vue de la sécurité, mais il est intéressant de pouvoir revoir votre utilisation combinée de l’ordinateur.
Contrairement à de nombreux fichiers journaux textuels sous Linux, wtmp est un fichier binaire. Pour accéder aux données qu’il contient, nous devons utiliser un outil conçu pour cette tâche.
Cet outil est la dernière commande.
La dernière commande
La dernière commande lit les données du journal wtmp et les affiche dans une fenêtre de terminal.
Si vous tapez le dernier et appuyez sur Entrée, afficher tous les enregistrements à partir du fichier journal.
last
Chaque enregistrement de wtmp est affiché dans la fenêtre du terminal.
De gauche à droite, chaque ligne contient:
Le nom d’utilisateur de la personne qui s’est connectée.
Le terminal auquel ils étaient connectés. Une entrée de terminal de: 0 signifie qu’ils ont été connectés sur l’ordinateur Linux lui-même.
L’adresse IP de la machine à laquelle ils ont été connectés.
L’heure et la date de connexion.
La durée de la session.
La dernière ligne nous indique la date et l’heure de la première session enregistrée dans le journal.
Une entrée de connexion pour l’utilisateur fictif «reboot» est inscrite dans le journal à chaque démarrage de l’ordinateur. Le champ terminal est remplacé par la version du noyau. La durée de la session connectée pour ces entrées représente le temps de fonctionnement de l’ordinateur.
Affichage d’un nombre spécifique de lignes
L’utilisation de la dernière commande seule produit un vidage de l’ensemble du journal, la plupart passant devant la fenêtre du terminal. La partie qui reste visible correspond aux données les plus anciennes du journal. Ce n’est probablement pas ce que vous vouliez voir.
Vous pouvez dire au dernier de vous donner un nombre spécifique de lignes de sortie. Pour ce faire, indiquez le nombre de lignes que vous souhaitez sur la ligne de commande. Notez le trait d’union. Pour voir cinq lignes, vous devez taper -5 et non 5:
last -5
Cela donne les cinq premières lignes du journal, qui sont les données les plus récentes.
Affichage des noms de réseau pour les utilisateurs distants
L’option -d (Domain Name System) indique au dernier d’essayer de résoudre les adresses IP des utilisateurs distants en un nom de machine ou de réseau.
last -d
Il n’est pas toujours possible pour le dernier de convertir l’adresse IP en nom de réseau, mais la commande le fera quand elle le pourra.
Masquage des adresses IP et des noms de réseau
Si vous n’êtes pas intéressé par l’adresse IP ou le nom du réseau, utilisez l’option -R (pas de nom d’hôte) pour supprimer ce champ.
Étant donné que cela donne une sortie plus nette sans enveloppements laids, cette option a été utilisée dans tous les exemples suivants. Si vous utilisiez last pour essayer d’identifier une activité inhabituelle ou suspecte, vous ne supprimeriez pas ce champ.
Sélection des enregistrements par date
Vous pouvez utiliser l’option -s (depuis) pour restreindre la sortie afin d’afficher uniquement les événements de connexion qui ont eu lieu depuis une date spécifique.
Si vous ne vouliez voir que les événements de connexion qui ont eu lieu à partir du 26 mai 2019, vous utiliseriez la commande suivante:
last -R -s 2019-05-26
La sortie affiche les enregistrements avec les événements de connexion qui ont eu lieu à partir de l’heure 00:00 le jour spécifié, jusqu’aux enregistrements les plus récents du fichier journal.
Recherche jusqu’à une date de fin
Vous pouvez utiliser l’option -t (jusqu’à) pour spécifier une date de fin. Cela vous permet de sélectionner un ensemble d’enregistrements de connexion qui ont eu lieu entre deux dates d’intérêt.
Cette commande demande au dernier de récupérer et d’afficher les enregistrements de connexion de 00:00 (aube) le 26 jusqu’à l’heure 00:00 (aube) le 27. Cela réduit la liste aux sessions de connexion qui ont eu lieu le 26 uniquement.
Formats d’heure et de date
Vous pouvez utiliser des heures ainsi que des dates avec les options -s et -t.
Les différents formats d’heure pouvant être utilisés avec les dernières options utilisant des dates et des heures sont (prétendument):
AAAAMMJJhhmmss
AAAA-MM-JJ hh: mm: ss
AAAA-MM-JJ hh: mm – les secondes sont définies sur 00
AAAA-MM-JJ – l’heure est réglée sur 00:00:00
hh: mm: ss – la date est définie sur aujourd’hui
hh: mm – la date sera définie sur aujourd’hui, les secondes sur 00
maintenant
hier – l’heure est réglée à 00:00:00
aujourd’hui – l’heure est réglée à 00:00:00
demain – l’heure est réglée à 00:00:00
+ 5min
-5 jours
Pourquoi «prétendument»?
Les deuxième et troisième formats de la liste n’ont pas fonctionné pendant la recherche de cet article. Ces commandes ont été testées sur les distributions Ubuntu, Fedora et Manjaro. Ce sont des dérivés des distributions Debian, RedHat et Arch, respectivement. Cela couvre toutes les principales familles de distribution Linux.
last -R -s 2019-05-26 11:00 -t 2019-05-27 13:00
Comme vous pouvez le voir, la commande n’a renvoyé aucun enregistrement.
L’utilisation du premier format de date et d’heure de la liste avec la même date et heure que la commande précédente renvoie des enregistrements:
last -R -s 20190526110000 -t 20190527130000
Recherche par unités relatives
Vous spécifiez également des périodes de temps mesurées en minutes ou en jours, par rapport à la date et à l’heure actuelles. Ici, nous demandons des enregistrements d’il y a deux jours jusqu’à il y a un jour.
last -R -s -2days -t -1days
Hier, aujourd’hui et maintenant
Vous pouvez utiliser hier et demain comme raccourci pour la date d’hier et la date d’aujourd’hui.
last -R -s yesterday -t today
Non pas que cela n’inclura aucun enregistrement pour aujourd’hui. C’est le comportement attendu. La commande demande des enregistrements de la date de début à la date de fin. Il n’inclut pas les enregistrements de la date de fin.
L’option maintenant est un raccourci pour «aujourd’hui à l’heure actuelle». Pour voir les événements de connexion qui ont eu lieu depuis 00h00 (aube) jusqu’au moment où vous émettez la commande, utilisez cette commande:
last -R -s today -t now
Cela affichera tous les événements de connexion à l’heure actuelle, y compris ceux qui sont toujours connectés.
L’option actuelle
L’option -p (présent) vous permet de savoir qui était connecté à un moment donné.
Peu importe le moment où ils se sont connectés ou déconnectés, mais s’ils étaient connectés à l’ordinateur au moment que vous spécifiez, ils seront inclus dans la liste.
Si vous spécifiez une heure sans date pour la dernière fois, vous supposez que vous voulez dire « aujourd’hui ».
last -R -p 09:30
Les personnes qui sont toujours connectées (évidemment) n’ont pas d’heure de déconnexion; ils sont décrits comme toujours connectés. Si l’ordinateur n’a pas été redémarré depuis l’heure que vous spécifiez, il sera répertorié comme toujours en cours d’exécution.
Si vous utilisez le raccourci now avec l’option -p (present), vous pouvez savoir qui est connecté au moment où vous exécutez la commande.
last -R -p now
C’est une façon quelque peu longue de réaliser ce qui peut être accompli en utilisant la commande who.
La commande lastb
La commande lastb mérite d’être mentionnée. Il lit les données d’un journal appelé btmp. Il y a un peu plus de consensus sur ce nom de journal. Le «b» signifie mauvais, mais la partie «tmp» est toujours sujette à débat.
lastb répertorie les mauvaises tentatives de connexion (échouées). Il accepte les mêmes options que le dernier. Comme il s’agissait de tentatives de connexion infructueuses, leurs entrées auront toutes une durée de 00:00.
Vous devez utiliser sudo avec lastb.
sudo lastb -R
Le dernier mot sur la matière
Savoir qui s’est connecté à votre ordinateur Linux, quand et d’où sont des informations utiles. Combiner cela avec les détails des tentatives de connexion infructueuses vous donne les premières étapes pour enquêter sur un comportement suspect.