Surveiller son serveur Linux avec Logwatch

Administrer un serveur sans surveillance, c’est naviguer à l’aveugle. Logwatch est un outil simple qui analyse chaque nuit les logs de ton serveur et t’envoie un résumé par email: tentatives d’intrusion SSH, requêtes HTTP suspectes, tâches cron, erreurs système. Un coup d’œil quotidien dans ta boîte mail suffit pour garder un œil sur ce qui se passe réellement sur ta machine.

Qu’est-ce que Logwatch ?

Logwatch est un analyseur de logs open-source disponible dans les dépôts Ubuntu. Il agrège et résume les logs de nombreux services (SSH, nginx, cron, PAM, systemd…) et produit un rapport lisible envoyé par email ou affiché en console.

Contrairement à un outil de monitoring en temps réel, Logwatch fonctionne en mode batch, il traite les logs de la veille et produit un rapport consolidé. C’est suffisant pour détecter des patterns d’attaque, des erreurs récurrentes ou des comportements anormaux.

Prérequis: un relais SMTP

Logwatch a besoin d’un agent de transport de mail (MTA) pour envoyer ses rapports. Sur un VPS sans serveur mail dédié, la solution la plus simple est msmtp qui relaie les emails vers un compte Gmail via SMTP.

Installation:

sudo apt install logwatch msmtp msmtp-mta mailutils -y

Durant l’installation, msmtp te demandera si tu veux activer le support AppArmor: réponds Oui pour une sécurité optimale!

Créer un mot de passe d’application Google

Gmail n’accepte plus les mots de passe classiques pour les connexions SMTP externes. Il faut créer un mot de passe d’application :

  1. Va sur myaccount.google.com
  2. Sécurité → Validation en deux étapes (doit être activée)
  3. Mots de passe des applications → Autre → tape un nom (ex: VPS)
  4. Clique Générer — note le mot de passe à 16 caractères

Configuration de msmtp

sudo nano /etc/msmtprc
defaults
auth           on
tls            on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
syslog         on

account        gmail
host           smtp.gmail.com
port           587
from           TON_ADRESSE@gmail.com
user           TON_ADRESSE@gmail.com
password       MOTDEPASSE_APPLICATION_SANS_ESPACES

account default : gmail

Protection du fichier, il contient ton mot de passe :

sudo chmod 600 /etc/msmtprc
sudo chown root:root /etc/msmtprc

Test d’envoi:

echo "Test msmtp" | sudo msmtp -v TON_ADRESSE@gmail.com

La sortie doit se terminer par exitcode=EX_OK et smtpstatus=250 l’email est bien parti. Note que les logs transitent par syslog grâce à la directive syslog on :

sudo grep msmtp /var/log/syslog | tail -3

Configuration de Logwatch

sudo nano /etc/logwatch/conf/logwatch.conf
Output = mail
MailTo = TON_ADRESSE@gmail.com
MailFrom = logwatch@monsite.fr
Detail = Med
Range = yesterday
Format = text

Test

Lance Logwatch manuellement pour vérifier que tout fonctionne :

sudo logwatch --output mail --mailto TON_ADRESSE@gmail.com --detail med

Tu dois recevoir un email dans les secondes qui suivent avec le rapport du serveur.

Un rapport Logwatch typique sur un serveur web contient plusieurs sections :

Cron — liste des tâches planifiées exécutées dans la journée (sauvegardes, certbot, nettoyages système).

httpd — statistiques des requêtes nginx : volume transféré, codes de réponse, tentatives d’exploitation de failles connues, scans de fichiers sensibles. C’est souvent la section la plus révélatrice — on y voit clairement les bots qui cherchent des fichiers .env, .git/config, wp-config.php ou tentent d’exploiter des vulnérabilités PHPUnit.

pam_unix — échecs d’authentification par service. Sur un serveur exposé, la section SSH peut afficher des milliers de tentatives en une seule journée, avec les noms d’utilisateurs testés (admin, root, ubuntu, test…).

sshd — détail des connexions SSH échouées avec les IPs sources et les logins tentés.

Automatisation

Logwatch s’installe avec une tâche cron quotidienne dans /etc/cron.daily/ — le rapport est envoyé automatiquement chaque nuit sans intervention supplémentaire. Vérifie sa présence :

ls /etc/cron.daily/ | grep logwatch

Interpréter le rapport

Un rapport sur un serveur exposé contiendra systématiquement des tentatives d’attaque — c’est inévitable et normal. L’objectif n’est pas d’avoir un rapport vide mais de repérer des anomalies par rapport aux jours précédents :

  • Une IP qui tente des milliers de connexions SSH → action Fail2ban attendue
  • Des requêtes vers des fichiers inexistants (.env, .git) → scans automatisés normaux
  • Une augmentation soudaine du volume de requêtes → potentiel incident à investiguer
  • Des erreurs PHP ou nginx inhabituelles → problème applicatif à corriger

Conclusion

Logwatch transforme des gigaoctets de logs bruts en un résumé lisible en quelques minutes. C’est un outil indispensable pour tout administrateur qui veut garder un œil sur son infrastructure sans y passer ses journées. Le rapport quotidien devient vite un réflexe matinal, comme consulter ses emails, on jette un œil au rapport Logwatch pour s’assurer que tout s’est bien passé dans la nuit.

Dans le prochain article, nous verrons comment Fail2ban complète Logwatch en bannissant automatiquement les IP malveillantes détectées dans ces mêmes logs.

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *