tech:log_syslog_rsyslog
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| tech:log_syslog_rsyslog [2025/03/24 15:06] – créée - modification externe 127.0.0.1 | tech:log_syslog_rsyslog [2026/06/07 19:12] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | < | ||
| + | {{tag> | ||
| + | |||
| + | # Notes Rsyslog | ||
| + | |||
| + | Voir : | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | Voir aussi : | ||
| + | * Syslog-ng | ||
| + | * NXLog | ||
| + | * Snare | ||
| + | * Graylog2 | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ## Généralités | ||
| + | |||
| + | Voir : | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | Exemple de fichier de conf : | ||
| + | * https:// | ||
| + | |||
| + | Vérifier la syntax du fichier de conf | ||
| + | ~~~bash | ||
| + | rsyslogd -N1 | ||
| + | ~~~ | ||
| + | |||
| + | Supprimer certaines classes de messages | ||
| + | ~~~ | ||
| + | *.=debug stop | ||
| + | *.=info stop | ||
| + | *.=notice stop | ||
| + | # | ||
| + | # | ||
| + | ~~~ | ||
| + | |||
| + | Supprimer des messages | ||
| + | voir https:// | ||
| + | ~~~ | ||
| + | # discards everything | ||
| + | #*.* ~ | ||
| + | *.* stop | ||
| + | ~~~ | ||
| + | |||
| + | `/ | ||
| + | ~~~ | ||
| + | $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat | ||
| + | |||
| + | $SystemLogRateLimitInterval 0 | ||
| + | $SystemLogRateLimitBurst 0 | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | `/ | ||
| + | ~~~bash | ||
| + | # Options for rsyslogd | ||
| + | # -x disables DNS lookups for remote messages | ||
| + | # See rsyslogd(8) for more details | ||
| + | # | ||
| + | RSYSLOGD_OPTIONS=" | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Conf client / serveur | ||
| + | |||
| + | Voir : https:// | ||
| + | |||
| + | Il est possible d' | ||
| + | |||
| + | |||
| + | ### Conf serveur | ||
| + | |||
| + | ~~~bash | ||
| + | apt-get install rsyslog rsyslog-relp | ||
| + | ~~~ | ||
| + | |||
| + | `/ | ||
| + | ~~~python | ||
| + | module(load=" | ||
| + | # | ||
| + | input(type=" | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | iptables -A INPUT -i ens2 -s 51.91.254.172 -p tcp --dport 1514 -j ACCEPT | ||
| + | iptables -A INPUT -i ens2 -p tcp --dport 1514 -j REJECT | ||
| + | ~~~ | ||
| + | |||
| + | Voir **`$AllowedSender`** | ||
| + | |||
| + | ~~~bash | ||
| + | system restart rsyslog | ||
| + | ~~~ | ||
| + | |||
| + | Par défaut les logs arriverons ici : | ||
| + | / | ||
| + | |||
| + | Pour changer le fichier de destination | ||
| + | |||
| + | `/ | ||
| + | ~~~ | ||
| + | $template syslog,"/ | ||
| + | *.* ?syslog | ||
| + | |||
| + | # Plus de log dans / | ||
| + | & stop | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Conf client | ||
| + | |||
| + | `/ | ||
| + | ~~~ | ||
| + | $ActionQueueType LinkedList # Exécuter le traitement de façon asynchrone. | ||
| + | $ActionQueueFileName srvrfwd1 # Préfixe de nom unique pour les fichiers spool. Active également le mode disque. | ||
| + | $ActionQueueMaxDiskSpace 1g # Limite d' | ||
| + | $ActionQueueSaveOnShutdown on # Enregistrer les données sur le disque si Rsyslog est arrêté. | ||
| + | $ActionResumeRetryCount -1 # Tentatives infinies en cas d' | ||
| + | # jouter les lignes suivantes dans la section RULES : | ||
| + | # Envoyer tous les messages sur le serveur de journalisation distant avec la commande suivante : | ||
| + | |||
| + | # Les @@ doivent figurer dans la ligne de commande, le fait qu'il y en ai deux indique que les échanges se feront en TCP. | ||
| + | *.* @@192.168.1.10: | ||
| + | ~~~ | ||
| + | |||
| + | Test | ||
| + | ~~~bash | ||
| + | logger -s "TEST plop" | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Les filtres | ||
| + | |||
| + | Voir : | ||
| + | * https:// | ||
| + | |||
| + | |||
| + | 3 types de filtres : | ||
| + | * Facility/ | ||
| + | * Property-based filters | ||
| + | * Expression-based filters | ||
| + | |||
| + | |||
| + | ### Facility/ | ||
| + | |||
| + | ### Property-based filters | ||
| + | |||
| + | ~~~ | ||
| + | :msg, contains, "123: Message for bucket 123" -/ | ||
| + | ~~~ | ||
| + | |||
| + | `/ | ||
| + | ~~~ | ||
| + | # Log kernel generated UFW log messages to file | ||
| + | : | ||
| + | |||
| + | # Uncomment the following to stop logging anything that matches the last rule. | ||
| + | # Doing this will stop logging kernel generated UFW log messages to the file | ||
| + | # normally containing kern.* messages (eg, / | ||
| + | #& stop | ||
| + | ~~~ | ||
| + | ### Expression-based filters | ||
| + | |||
| + | |||
| + | ## Conf input | ||
| + | |||
| + | Voir | ||
| + | * https:// | ||
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | # Old | ||
| + | |||
| + | ## Serveur rsyslog distant | ||
| + | |||
| + | Voir http:// | ||
| + | |||
| + | Voir aussi : | ||
| + | * journald | ||
| + | * imjournal | ||
| + | |||
| + | ~~~bash | ||
| + | apt-get install rsyslog | ||
| + | ~~~ | ||
| + | |||
| + | ou | ||
| + | |||
| + | ~~~bash | ||
| + | yum install rsyslog | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | netstat -taupen | grep 514 | ||
| + | ~~~ | ||
| + | |||
| + | Aucun processus n' | ||
| + | |||
| + | Utilisation du port UDP 514. Il suffit de dé-commenter ces lignes : | ||
| + | |||
| + | `/ | ||
| + | ~~~ | ||
| + | # UDP | ||
| + | $ModLoad imudp | ||
| + | $UDPServerRun 514 | ||
| + | |||
| + | # TCP | ||
| + | #$ModLoad imtcp | ||
| + | # | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | systemctl restart rsyslog | ||
| + | netstat -taupen | grep 514 | ||
| + | ~~~ | ||
| + | |||
| + | ~~~ | ||
| + | udp 0 0 0.0.0.0: | ||
| + | udp6 | ||
| + | ~~~ | ||
| + | |||
| + | Sur les clients, à la fin du fichier de conf, nous précisons où envoyer les logs | ||
| + | |||
| + | `/ | ||
| + | ~~~ | ||
| + | # UDP | ||
| + | *.* @IP_Adress_ou_FQDN: | ||
| + | |||
| + | # TCP | ||
| + | #*.* @@IP_Adress_ou_FQDN: | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | Après le bloc « **RULES** » dans le fichier de configuration du serveur : | ||
| + | ~~~ | ||
| + | $template syslog,"/ | ||
| + | ~~~ | ||
| + | |||
| + | On va ensuite appliquer ce template à tous les logs entrants : | ||
| + | ~~~ | ||
| + | *.* ?syslog | ||
| + | ~~~ | ||
| + | |||
| + | Règle iptables | ||
| + | ~~~bash | ||
| + | iptables -A INPUT -m state --state NEW -m udp -p udp --dport 514 -j ACCEPT | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ### Autres | ||
| + | |||
| + | `/ | ||
| + | ~~~ | ||
| + | $SystemLogSocketName / | ||
| + | ~~~ | ||
| + | |||
| + | `/ | ||
| + | ~~~ | ||
| + | # | ||
| + | $OmitLocalLogging off | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | systemctl restart rsyslog | ||
| + | systemctl restart systemd-journald | ||
| + | ~~~ | ||
| + | |||
| + | Voir `/ | ||
| + | |||
| + | |||
| + | A tester | ||
| + | |||
| + | `/ | ||
| + | ~~~ | ||
| + | |||
| + | if $msg contains ' | ||
| + | |||
| + | if $msg contains ' | ||
| + | | ||
| + | } | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | ## Exemple | ||
| + | |||
| + | ~~~ | ||
| + | $SystemLogRateLimitInterval 5 | ||
| + | $SystemLogRateLimitBurst 1200 | ||
| + | |||
| + | # In order to gain read access to logs, make user ' | ||
| + | |||
| + | $Template PreciseFormat," | ||
| + | # Decomment to apply PreciseFormat template to every log | ||
| + | # $ActionFileDefaultTemplate PreciseFormat | ||
| + | |||
| + | # Base for system with Coding Control | ||
| + | local3.* | ||
| + | local3.notice | ||
| + | |||
| + | # Finally discard local messages so they are not going to be written in other log files | ||
| + | local0.*, | ||
| + | ~~~ | ||
| + | |||
| + | ~~~bash | ||
| + | logger -p local0.notice -t MYTAG "my message" | ||
| + | ~~~ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ## Infos utiles | ||
| + | |||
| + | Valider la configuration | ||
| + | ~~~bash | ||
| + | rsyslogd -N1 | ||
| + | ~~~ | ||
| + | |||
| + | ## Docker et Rsyslog | ||
| + | |||
| + | ~~~yaml | ||
| + | docker-compose | ||
| + | | ||
| + | driver: syslog | ||
| + | options: | ||
| + | tag: " | ||
| + | syslog-facility: | ||
| + | ~~~ | ||
| + | |||
| + | rsyslog | ||
| + | |||
| + | ~~~ | ||
| + | $Template CustomFormat," | ||
| + | $ActionFileDefaultTemplate CustomFormat | ||
| + | $IMUXSockRateLimitBurst 2000 | ||
| + | $template syslogDocker, | ||
| + | $umask 0002 | ||
| + | local5.* ? | ||
| + | local5.* stop | ||
| + | ~~~ | ||
| + | |||
| + | ## Pb | ||
| + | |||
| + | ### Erreur : SystemLogRateLimitBurst is currently not permitted | ||
| + | |||
| + | ~~~bash | ||
| + | journalctl -p warning -u rsyslog | ||
| + | ~~~ | ||
| + | |||
| + | ~~~ | ||
| + | command ' | ||
| + | ~~~ | ||
| + | |||
| + | Solution | ||
| + | Remplacer `$SystemLogRateLimitBurst 2000` par `$IMUXSockRateLimitBurst 2000` | ||
| + | |||
| + | `/ | ||
| + | ~~~ | ||
| + | # | ||
| + | $IMUXSockRateLimitBurst 2000 | ||
| + | ~~~ | ||
| + | |||
| + | Et redémarrer le service rsyslog | ||
| + | |||
| + | Voir : http:// | ||
| + | |||
