← retour aux snippets

rsyslog: expédier les logs en TLS vers un serveur distant

Configurer un envoi fiable des journaux système vers une destination sécurisée via TLS.

bash logging #rsyslog#tls#logs

objectif

Transmettre les logs système vers une collecteur distant en TLS, avec queue persistante.

code minimal

sudo tee /etc/rsyslog.d/90-remote-tls.conf >/dev/null <<'EOF'
module(load="imuxsock")
module(load="imjournal")
module(load="omfwd")
module(load="gtls")

action(
  type="omfwd"
  target="logs.data.pm"
  port="6514"
  protocol="tcp"
  StreamDriver="gtls"
  StreamDriverMode="1"
  StreamDriverAuthMode="x509/name"
  StreamDriverPermittedPeers="logs.data.pm"
  action.resumeRetryCount="-1"
  queue.type="linkedList"
  queue.filename="fwdqueue"
  queue.maxdiskspace="200m"
  queue.saveonshutdown="on"
)
EOF
sudo systemctl restart rsyslog

utilisation

# envoyer un test
logger -p user.info "test rsyslog tls"

# vérifier les files et erreurs
sudo rsyslogd -N1

variante(s) utile(s)

# forcer un CA custom
sudo mkdir -p /etc/rsyslog.d/certs
# placez votre CA dans /etc/rsyslog.d/certs/ca.crt puis:
sudo sed -i '1i$DefaultNetstreamDriverCAFile /etc/rsyslog.d/certs/ca.crt' /etc/rsyslog.d/90-remote-tls.conf
sudo systemctl restart rsyslog

notes

  • ouvrez le port 6514 côté serveur (RFC5425). Vérifiez le nom cert (CN/SAN) avec StreamDriverPermittedPeers.
  • la queue persistante évite la perte de logs en cas de panne réseau.
  • adaptez modules d’entrée selon votre distro (imjournal vs imuxsock).