Cours RechercherCtrl K

Sécuriser un serveur Leçon 6

Surveiller son serveur

Lire les journaux, repérer les tentatives d'intrusion et vérifier la santé de la machine.

20 min

À la fin de cette leçon, tu sauras

  • Trouver les tentatives de connexion dans les journaux
  • Vérifier qui s'est connecté et quels ports écoutent
  • Surveiller le disque, la mémoire et les services

Les journaux racontent tout

Un serveur note tout ce qui se passe dans ses journaux (logs). Pour la sécurité, le plus important est /var/log/auth.log : chaque connexion SSH réussie ou ratée y laisse une ligne. Il n'est lisible qu'en administrateur.

sudo tail -n 20 /var/log/auth.log                    # les 20 dernières lignes
sudo grep "Failed password" /var/log/auth.log        # mots de passe faux
sudo grep "Invalid user" /var/log/auth.log           # noms d'utilisateur qui n'existent pas
sudo grep "Accepted" /var/log/auth.log               # connexions RÉUSSIES : à surveiller de près
sudo grep -c "Failed password" /var/log/auth.log     # juste le nombre
last                                                  # les dernières connexions
journalctl -u ssh -n 30                              # les messages du service SSH

À retenir : des milliers de « Failed password » ou « Invalid user », c'est normal sur Internet : ce sont des robots. Ce qui doit t'inquiéter, c'est un « Accepted » depuis une adresse que tu ne connais pas.

Ce qui écoute

Chaque service ouvert est une porte possible. ss liste les ports en écoute : tout ce qui n'a rien à faire là doit être arrêté ou fermé au pare-feu.

sudo ss -tlnp        # t = TCP, l = en écoute, n = numéros, p = programme
sudo ufw status

La santé de la machine

df -h                         # disque : au-delà de 85 %, il faut faire le ménage
free -h                       # mémoire
uptime                        # depuis quand, et la charge
systemctl status nginx        # un service est-il en marche ?
systemctl --failed            # les services en échec

Sur un vrai serveur, on ne lance pas ces commandes à la main tous les jours : un petit script (ou un outil comme une page d'état) les exécute régulièrement et t'envoie un e-mail quand quelque chose cloche. Le principe reste le même : savoir ce qui est normal, pour remarquer ce qui ne l'est pas.

À retenir

  • /var/log/auth.log contient toutes les connexions ; il se lit avec sudo.
  • « Failed password » et « Invalid user » : des robots, c'est normal. « Accepted » d'une adresse inconnue : alerte !
  • last : les dernières connexions ; sudo ss -tlnp : ce qui écoute.
  • df -h, free -h, uptime, systemctl --failed : la santé.
  • Automatiser : un script qui vérifie et prévient par e-mail.

Voir la fiche de révision de cette leçon (à imprimer ou à relire avant un contrôle)

Exercice 1 · Qui frappe à la porte ?

Facile
  1. affiche les tentatives de connexion avec un mot de passe faux, dans /var/log/auth.log ;
  2. affiche les tentatives avec un utilisateur qui n'existe pas (« Invalid user ») ;
  3. écris le nombre de lignes « Failed password » dans le fichier ~/tentatives.txt ;
  4. affiche les dernières connexions réussies avec last.
commandes.sh
eleve@cours: ~

Tape tes commandes ici ou dans le fichier à gauche : chaque commande tapée dans le terminal est ajoutée au fichier.

Consignes à réussir

  • À faire : Les mots de passe faux sont affichés
  • À faire : Les utilisateurs inconnus sont affichés
  • À faire : ~/tentatives.txt contient le bon nombre (2)
  • À faire : last est utilisé
Toujours bloqué ? Voir une solution
sudo grep "Failed password" /var/log/auth.log
sudo grep "Invalid user" /var/log/auth.log
sudo grep "Failed password" /var/log/auth.log | wc -l > ~/tentatives.txt
last

Exercice 2 · Le bilan de santé

Moyen

Fais le tour du serveur, comme chaque lundi matin :

  1. l'espace disque et la mémoire, en unités lisibles ;
  2. les ports TCP en écoute, avec le programme qui les ouvre ;
  3. l'état du pare-feu ;
  4. les 30 derniers messages du service ssh ;
  5. l'heure du serveur (indispensable pour les codes de double authentification).
commandes.sh
eleve@cours: ~

Tape tes commandes ici ou dans le fichier à gauche : chaque commande tapée dans le terminal est ajoutée au fichier.

Consignes à réussir

  • À faire : df -h
  • À faire : free -h
  • À faire : Les ports en écoute avec leur programme (ss -tlnp)
  • À faire : L'état du pare-feu
  • À faire : Les 30 derniers messages de ssh
  • À faire : L'heure est vérifiée
Toujours bloqué ? Voir une solution
df -h
free -h
sudo ss -tlnp
sudo ufw status
journalctl -u ssh -n 30
timedatectl

Quiz

1Quelle ligne de auth.log doit le plus t'inquiéter ?
2Que montre sudo ss -tlnp ?
3À partir de quand l'espace disque devient-il inquiétant ?