Analyser les journaux système pour les entrées anormales
Dans cette étape, vous apprendrez à analyser les journaux système pour trouver des preuves d'activité suspecte. Les journaux système sont des enregistrements des événements qui se produisent sur le système, et ils constituent une source d'information essentielle pour la surveillance de la sécurité et l'analyse forensique. Nous nous concentrerons sur les journaux d'authentification, qui suivent les connexions des utilisateurs et les escalades de privilèges, et utiliserons des outils Linux standard comme grep, tail et journalctl pour trouver les entrées anormales.
La plupart des journaux système sur un système Linux sont stockés dans le répertoire /var/log. L'un des plus importants pour la sécurité est /var/log/auth.log, qui enregistre les événements liés à l'authentification, y compris les connexions SSH et l'utilisation de la commande sudo. Commençons par visualiser les dernières lignes de ce fichier à l'aide de la commande tail. Vous avez besoin de sudo car ce fichier est protégé.
sudo tail /var/log/auth.log
Vous verrez une série d'entrées horodatées. Le format comprend généralement la date, l'heure, le nom d'hôte, le processus qui a généré le journal et le message de l'événement.
Jul 22 10:30:01 labex-vm sudo: labex : TTY=pts/0 ; PWD=/home/labex/project ; USER=root ; COMMAND=/usr/bin/tail /var/log/auth.log
Jul 22 10:30:01 labex-vm sudo: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=1000)
Jul 22 10:30:01 labex-vm sudo: pam_unix(sudo:session): session closed for user root
Maintenant, simulons un événement suspect courant : une tentative de connexion échouée. Les attaquants essaient souvent de deviner les mots de passe pour des noms d'utilisateur valides ou courants. Nous pouvons simuler cela en essayant de nous connecter en SSH à notre propre machine (localhost) avec un nom d'utilisateur qui n'existe pas, comme baduser.
ssh baduser@localhost
Le système vous demandera un mot de passe (vous pouvez utiliser labex comme mot de passe). Comme l'utilisateur n'existe pas, n'importe quel mot de passe échouera. Appuyez simplement sur Ctrl+C pour annuler la demande de mot de passe et revenir au terminal. La tentative de connexion échouera, mais elle sera enregistrée.
Maintenant, chassons les preuves. Nous pouvons utiliser la commande grep pour filtrer le fichier auth.log pour les lignes contenant le mot "Failed". Cela isole rapidement les événements infructueux.
sudo grep "Failed" /var/log/auth.log
La sortie montrera maintenant clairement l'entrée de journal de notre tentative de connexion SSH échouée, ce qui est un fort indicateur d'une tentative d'intrusion potentielle.
Jul 22 10:35:15 labex-vm sshd[12345]: Failed password for invalid user baduser from 127.0.0.1 port 54321 ssh2
Les systèmes Linux modernes utilisant systemd disposent également d'un système de journalisation centralisé géré par journald. La commande journalctl est un outil puissant pour interroger ces journaux. Utilisons-la pour trouver le même événement de connexion échouée en recherchant les messages du processus sshd. Notez que vous devez utiliser sudo pour afficher les journaux au niveau du système.
sudo journalctl | grep sshd
Faites défiler la sortie (en utilisant les touches fléchées, et appuyez sur q pour quitter) et vous trouverez la même entrée "Failed password". Pour faciliter encore plus les choses, vous pouvez filtrer par priorité du message. Demandons à journalctl de n'afficher que les entrées avec une priorité "error" (err) ou supérieure pour le service sshd.
sudo journalctl -p err | grep sshd
Cette commande vous donne une vue beaucoup plus concise des seules conditions d'erreur, ce qui la rend très efficace pour repérer les problèmes.
-- Logs begin at ... --
Jul 22 10:35:15 labex-vm sshd[12345]: Failed password for invalid user baduser from 127.0.0.1 port 54321 ssh2
-- End of logs --
Enfin, vous pouvez également injecter manuellement des messages dans les journaux à l'aide de la commande logger. Ceci est utile pour que les scripts personnalisés signalent les événements de sécurité. Créons une alerte personnalisée.
logger "SECURITY-ALERT: Unauthorized file access detected in /etc"
Maintenant, recherchez cette alerte spécifique dans les journaux système.
sudo grep "SECURITY-ALERT" /var/log/syslog
Vous verrez votre message personnalisé, démontrant comment vous pouvez intégrer votre propre surveillance à la fonction de journalisation du système.
Jul 22 10:40:00 labex-vm labex: SECURITY-ALERT: Unauthorized file access detected in /etc
Vous avez maintenant appris les bases de la navigation dans les journaux système pour trouver des preuves d'activité anormale et potentiellement malveillante.