Personne ne lit les journaux d'un serveur tous les jours. Logwatch le fait à votre place : chaque nuit, il parcourt les journaux du système et vous envoie un résumé lisible. Connexions SSH, erreurs des services, espace disque, adresses bannies par Fail2ban, erreurs du serveur web : en deux minutes de lecture le matin, vous savez si quelque chose d'anormal s'est produit.
1. Pourquoi un rapport quotidien
Les alertes, décrites dans surveiller son VPS, préviennent quand un seuil est dépassé. Le rapport quotidien montre ce qui ne déclenche pas d'alerte mais mérite votre attention : une connexion SSH réussie depuis un pays inattendu, un service qui redémarre toutes les nuits, des erreurs PHP qui s'accumulent, un disque qui se remplit lentement.
2. Installer Logwatch
apt update && apt install -y logwatch
Selon votre système, l'installation peut proposer d'installer aussi un serveur de messagerie : si une fenêtre de configuration de Postfix apparaît, choisissez Pas de configuration pour l'instant. L'envoi des e-mails est traité à l'étape 5.
3. Afficher un premier rapport
Avant de configurer quoi que ce soit, affichez le rapport du jour dans le terminal :
logwatch --detail med --range today --output stdout | less
Le rapport est découpé par service : sshd, fail2ban, httpd pour le serveur web, disk space, etc. Seuls les services présents sur votre serveur apparaissent.
4. Configurer l'envoi quotidien
L'installation ajoute déjà une tâche quotidienne dans /etc/cron.daily/00logwatch. Il suffit de lui dire quoi envoyer et à qui. Créez /etc/logwatch/conf/logwatch.conf :
Output = mail
Format = html
MailTo = [email protected]
MailFrom = [email protected]
Range = yesterday
Detail = Med
Service = All
Range = yesterday: le rapport envoyé le matin couvre la journée complète de la veille.Detail:Lowpour l'essentiel,Medpour un bon équilibre,Highpour tout voir, ce qui devient vite illisible.Service: pour retirer un service trop bavard, ajoutez une ligne commeService = "-http"sousService = All.
5. Faire partir les e-mails
Logwatch confie l'envoi au programme de messagerie du système. Il en faut donc un, correctement configuré, sinon les rapports partent dans le vide ou arrivent en spam. La méthode la plus fiable pour un serveur qui ne fait qu'envoyer des notifications consiste à relayer les e-mails par un fournisseur SMTP, comme décrit dans configurer Postfix en envoi seul.
Testez ensuite l'envoi immédiat :
logwatch --detail low --range today --output mail --mailto [email protected]
Si rien n'arrive, regardez les journaux d'envoi avec journalctl -u 'postfix*' -n 30. Un rapport qui arrive dans les indésirables signale un problème d'authentification du domaine expéditeur : voir configurer SPF, DKIM et DMARC.
6. Lire le rapport en deux minutes
Concentrez-vous sur ces sections, dans cet ordre :
- sshd, connexions réussies : chaque ligne doit correspondre à une connexion de votre part. Une connexion que vous ne reconnaissez pas est l'alerte la plus sérieuse du rapport.
- Disk Space : l'occupation de chaque partition. Au-delà de 80 %, faites du ménage.
- fail2ban : le nombre d'adresses bannies. Un nombre stable est normal ; une explosion soudaine peut précéder une attaque ciblée.
- Erreurs des services : les services qui échouent au démarrage ou redémarrent en boucle.
Les tentatives de connexion SSH échouées se comptent souvent par centaines : c'est le bruit de fond d'Internet. Si les mots de passe sont désactivés, elles sont sans danger. Voir sécuriser SSH.
7. Compléter avec journalctl
Quand le rapport signale quelque chose, remontez à la source avec le journal du système :
journalctl -p err --since yesterday # toutes les erreurs depuis hier
journalctl -u nginx --since "2 hours ago" # un service précis
journalctl --disk-usage # place occupée par les journaux
journalctl --vacuum-time=30d # ne garder que 30 jours
Pour limiter durablement la taille des journaux, ajoutez SystemMaxUse=500M dans /etc/systemd/journald.conf, puis redémarrez le service avec systemctl restart systemd-journald.