Journalisation : syslog, journald, centralisation
Lire, configurer et centraliser les journaux des équipements, des serveurs Linux et des serveurs Windows pour dépanner vite, détecter une attaque et garder des preuves.
L'essentiel
- Les journaux servent à dépanner, détecter une attaque, prouver et respecter la loi : à condition d'être produits, transportés, conservés et lus.
- Un message syslog contient une priorité (facilité × 8 + gravité), une heure, une machine, une source et un texte.
- Gravités de 0 (emerg) à 7 (debug) : un seuil garde son niveau et tous les plus graves.
- rsyslog : règle =
facilité.gravité+ action ;@envoie en UDP,@@en TCP, port 514. - Le serveur central charge
imudp/imtcpet range chaque machine dans son fichier ;rsyslogd -N1vérifie la syntaxe. journalctl -u,-p,--since,-b -1,-f;Storage=persistentpour garder l'historique.- Windows : Application, Système, Sécurité ; ID 4624, 4625, 4740, 4720, 1102 ; abonnements pour centraliser.
- NTP partout et
service timestamps log datetime msec: sans heure commune, pas de chronologie. - logrotate fait tourner et compresse ; conservation des journaux d'accès : 6 mois à 1 an (CNIL).
- Cisco :
logging host,logging trap informational,logging source-interface; centraliser protège aussi contre l'effacement des traces.
Moyen mnémotechnique
Dans l'ordre de 0 à 7 : Emergency, Alert, Critical, Error, Warning, Notice, Informational, Debugging : « Every Awesome Cisco Engineer Will Need Ice-cream Daily ». Plus le chiffre est petit, plus c'est grave.
Piège classique
Une arobase envoie en UDP (@), deux arobases en TCP (@@). UDP ne garantit rien : si le serveur est arrêté ou si le réseau sature, les messages sont perdus sans prévenir. Pour les journaux de sécurité, préfère TCP, et ouvre le port 514 dans le pare-feu du serveur.
Rendre le journal persistant
Si le dossier /var/log/journal n'existe pas, journald garde tout en mémoire et perd l'historique à chaque redémarrage. Pour le conserver : Storage=persistent dans /etc/systemd/journald.conf (ou créer le dossier), puis sudo systemctl restart systemd-journald. La taille se limite avec SystemMaxUse=500M.
Commandes clés
| Pour… | Commandes |
|---|---|
| Envoyer vers le central (Debian) | *.info @@172.16.50.30:514 · rsyslogd -N1 · systemctl restart rsyslog |
| Recevoir (Debian) | module(load="imudp") · input(type="imudp" port="514") · idem imtcp |
| Chercher (Debian) | journalctl -u ssh -p err --since today · journalctl -b -1 · logger -p auth.warning "test" |
| Chercher (Windows) | Get-WinEvent -FilterHashtable @{LogName='Security';Id=4625} |
| Envoyer (Cisco) | logging host 172.16.50.30 · logging trap informational · logging source-interface vlan 99 |
| Horodater (Cisco) | ntp server 172.16.99.252 · service timestamps log datetime msec |
| Vérifier (Cisco) | show logging · show ntp status · show clock |