Adiscon Rsyslog
Aller à la navigation
Aller à la recherche
Le wiki : Accueil - Administrateur - Bureautique - Développeur - Intégrateur - Marketing - Multimédia - Objets numériques - Jeux - We make Hack
Adiscon Rsyslog
Présentation de Adiscon Rsyslog
# En 2004, Gerhards Rainer propose un nouveau démon syslog pour rivaliser avec syslog-ng. # Rainer Gerhards a travaillé sur le projet Rsyslog au sein de sa propre entreprise, Adiscon GmbH. # Selon Gerhards Rainer, "Un nouvel acteur majeur permettra d'éviter les monocultures et offrira une richesse dans le choix". # Rsyslog est donc un remplaçant direct de syslogd. Il implémente le protocole syslog de base, des fonctionnalités de sécurité et une conception modulaire.
# Rsyslog est un programme open source performant qui permet de transférer les messages de journalisation sur un réseau IP pour les systèmes UNIX et de type Unix. # Syslog-ng, ng pour New Generation, est une autre solution de journalisation open-source disponible dans les dépôts. Il comporte également une version payante. # Rsyslog est une solution de journalisation totalement open-source, disponible dans les dépôts.
# Rsyslog et Syslog-ng peuvent être utilisés et configurés en tant que client ou serveur. # Le client sera configuré pour envoyer ses logs sur le réseau au format syslog. # Le serveur pourra centraliser les logs les logs d'un ou plusieurs client(s).
# Lors de l'installation d'un nouveau service de journalisation, il remplace automatiquement le service de journalisation présent, de ce fait, syslogd sera automatiquement désactivé. # Rsyslog permet de stocker les logs dans une base de données MySQL, MariaDB, MongoDB ou PostgreSQL pouvant être configurée avec dbconfig-common pour une configuration facile via debconf. # Rsyslog ajoute des fonctionnalités de filtrage du contenu, des options de configuration flexibles et ajoute des fonctionnalités tel que l'utilisation de TCP, SSL et RELP pour le transport.
# Les règles de journalisation existantes dans "syslog.conf" peuvent être copiées dans "/etc/rsyslog.conf" ou dans le dossier "/etc/rsyslog.conf.d". # Consulter les pages de manuel syslogd, syslog.conf et logrotate.
# Les données issues des logs pourront être exploitées par un programme complémentaire, comme par exemple, l'interface Web de Adiscon LogAnalyzer.
Historique du passage de Sysklogd vers Rsyslog
# Sysklogd qui était installé par défaut n'est pas mauvais mais le paquet n'a presque pas été entretenu ses dernières années. # Le service Rsyslogd est intégré à Debian avec le paquet rsyslog depuis Debian Lenny pour remplacer l'ancien syslog : sysklogd. # Voir la note d'information partagée de Debian Lenny release notes : https://www.debian.org/releases/lenny/i386/release-notes/ch-whats-new#system-changes
Installation
Prérequis
# Prérequis : apache2
# Vérifier si le paquet rsyslog est déjà présent avec la commande : sudo dpkg -l rsyslog # Vérifier si le paquet apache2 est déjà présent avec la commande : sudo dpkg -l apache2
# Rsyslog permet le stockage des logs de syslog dans une base de données. # Si une base de données est configurée, l'interface Web de LogAnalyzer pourra utiliser les données de logs fournies par la base de données. # Si aucune base de données n'est configurée, l'interface Web de LogAnalyzer pourra utiliser les données de logs fournies par syslog depuis le disque.
Installer la version 8.39.0 de Rsyslog depuis les dépôts officiels pour Mint et Ubuntu
Ajouter un des deux référentiels : Ajouter le référentiel PPA stable : sudo add-apt-repository ppa:adiscon/v8-stable Ajouter le référentiel PPA en développement : sudo add-apt-repository ppa:adiscon/v8-devel
sudo apt update sudo apt-get install rsyslog
Installer la version 8.39.0 de Rsyslog depuis les dépôts officiels pour Debian
Installer la clé PGP dans votre système apt : sudo apt-key adv --recv-keys --keyserver keys.gnupg.net AEF0CF8E
Dépôt Adiscon pour v8-stable sur Debian (7) Wheezy. Éditer votre /etc/apt/sources.list et ajouter ces lignes à la fin :
deb http://debian.adiscon.com/v8-stable wheezy/ deb-src http://debian.adiscon.com/v8-stable wheezy/
sudo apt update sudo apt-get install rsyslog
Installer la version 8.39.0 de Rsyslog depuis les dépôts officiels pour Alpine
cd /etc/apk/keys wget http://alpine.adiscon.com/rsyslog@lists.adiscon.com-5a55e598.rsa.pub echo "http://alpine.adiscon.com/3.7/stable" >> /etc/apk/repositories apk update apk add rsyslog
Installer la version 8.39.0 de Rsyslog depuis les dépôts officiels pour RHEL et CentOS
cd /etc/yum.repos.d/ wget http://rpms.adiscon.com/v8-stable/rsyslog.repo yum install rsyslog
Installer la version 8.39.0 de Rsyslog depuis les sources officielles
Code sources et support officiel sur Github : https://github.com/rsyslog/rsyslog/tree/master Télécharger la source de Rsyslog 8.39.0 : https://www.rsyslog.com/downloads/download-v8-stable/ https://www.rsyslog.com/doc/v8-stable/installation/install_from_source.html
Installer la documentation de Rsyslog
Documentation installée, par défaut sur Debian, avec le service rsyslogd : man rsyslogd
Installer la documentation complète de Rsyslog au format HTML : sudo apt install rsyslog-doc cat /usr/share/doc-base/rsyslog-doc
Document: rsyslog-doc Title: Rsyslog Documentation Author: Rainer Gerhards Abstract: This documentation covers the configuration of rsyslog. Section: System/Administration Format: HTML Index: /usr/share/doc/rsyslog-doc/html/manual.html Files: /usr/share/doc/rsyslog-doc/html/*.html
Installer rsyslog-mysql pour configurer la base de données MySQL qui va stocker les logs de syslog
Les bases MySQL, MariaDB, MongoDB ou PostgreSQL sont correctement supportées.
sudo apt install rsyslog-mysql
La configuration de rsyslog-mysql se fait automatiquement avec dbconfig-common. Une base MySQL nommée Syslog contenant deux tables SystemEvents et SystemEventsProperties est créée. Un utilisateur rsyslog@localhost est ajouté, il possède le contrôle total sur la base de données Syslog. La configuration de la connexion à la base de données MySQL est disponible depuis le fichier /etc/rsyslog.d/mysql.conf.
Configurer le fichier de connexion mysql.conf
Éditer mysql.conf, le fichier de configuration de MySQL. Permet de se connecter à la base de données Syslog pour stocker les logs de syslog.
sudo nano /etc/rsyslog.d/mysql.conf
Faire les modifications suivantes pour une version de serveur sous Mint Tara 19 ou Ubuntu 18.04 Lts. Remarque : Il semble important d’utiliser les espaces de tabulation entre les entrées de la configuration.
# Charger le module et enregistrer tous les messages de syslog en base de données : module (load="ommysql") *.* action(type="ommysql" server="localhost" db="Syslog" uid="rsyslog" pwd="Password_BDD")
# Cette commande filtre le niveau d'alertes des messages a enregistrer en base de données : *.emerg >localhost,Syslog,Utilisateur_BDD,Password_BDD *.alert >localhost,Syslog,Utilisateur_BDD,Password_BDD *.crit >localhost,Syslog,Utilisateur_BDD,Password_BDD *.err >localhost,Syslog,Utilisateur_BDD,Password_BDD *.warning >localhost,Syslog,Utilisateur_BDD,Password_BDD *.notice >localhost,Syslog,Utilisateur_BDD,Password_BDD *.info >localhost,Syslog,Utilisateur_BDD,Password_BDD *.debug >localhost,Syslog,Utilisateur_BDD,Password_BDD
#?# Syntaxe a vérifier pour un système Debian Strech 9 : #?# $ModLoad ommysql #?# *.* :ommysql:localhost,Syslog,Utilisateur_BDD,Password_BDD
Créer la base de données Syslog pour stocker les données de syslog avec Rsyslog et MySQL
Si le paquet rsyslog-mysql n'a pas été utilisé pour créer la base de données, la base de données peut être créée manuellement.
Première méthode
Créer la structure de base de données avec le script officiel pour stocker les messages de journalisation dans MySQL : La définition du schéma de base de données donnée est disponible depuis le fichier createDB.sql depuis l’archive de Rsyslog 8.39.0. Le chemin d'accès au fichier est ./rsyslog-8.39.0/plugins/ommysql/createDB.sql. Lancer l'import de la base :
mysql -u rsyslog -D Syslog -p < ./rsyslog-8.39.0/plugins/ommysql/createDB.sql
Deuxième méthode
Se connecter à MySQL :
sudo bash mysql -u root -p
Si besoin, renseigner le mot de passe de l'utilisateur pour la base de données. Continuer avec la touche entrée. Créer la structure de base de données manuellement pour stocker les messages de journalisation dans MySQL :
CREATE DATABASE Syslog; USE Syslog; CREATE TABLE SystemEvents ( ID int unsigned not null auto_increment primary key, CustomerID bigint, ReceivedAt datetime NULL, DeviceReportedTime datetime NULL, Facility smallint NULL, Priority smallint NULL, FromHost varchar(60) NULL, Message text, NTSeverity int NULL, Importance int NULL, EventSource varchar(60), EventUser varchar(60) NULL, EventCategory int NULL, EventID int NULL, EventBinaryData text NULL, MaxAvailable int NULL, CurrUsage int NULL, MinUsage int NULL, MaxUsage int NULL, InfoUnitID int NULL , SysLogTag varchar(60), EventLogType varchar(60), GenericFileName VarChar(60), SystemID int NULL ); CREATE TABLE SystemEventsProperties ( ID int unsigned not null auto_increment primary key, SystemEventID int NULL , ParamName varchar(255) NULL , ParamValue text NULL );
Créer un utilisateur rsyslog pour utiliser la base de données Syslog
Se connecter à MySQL en ligne de commande. Le mot de passe est vide sur le système local, valider avec la touche entrée pour se connecter. Il faudra sécuriser MySQL avec un mot de passe pour un système en production.
mysql -u root -p
Si l'utilisateur rsyslog n'existe pas encore, créer l'utilisateur rsyslog pour gérer la base de données.
CREATE USER 'rsyslog'@'localhost' IDENTIFIED BY 'Analyzer';
Donner les droits à l'utilisateur rsyslog.
GRANT ALL PRIVILEGES ON Syslog.* TO rsyslog@localhost IDENTIFIED BY 'Analyzer'; FLUSH PRIVILEGES; exit;
Optimiser la base de données Syslog
La table MySQL SystemEvents peut se remplir rapidement et devenir très volumineuse. Un script d’archivage placé dans une tâche Cron permettra d’éviter les mauvaises surprises.
Proposition script Cron 1
# L'archivage semble fonctionner correctement. # Vérifier la suppression des données en base.
#!/bin/bash # Archivage mensuel des logs de la base MySQL Syslog RETENTION=180 # Durée de rétention des logs (en jours) DESTDIR="/var/backups/syslog" # Répertoire de stockage des archives ARCHIVE="syslog-$(date '+%Y-%m-%d-%Hh%M').gz" # Paramètres MySQL MYSQL_HOST="localhost" MYSQL_DB="Syslog" MYSQL_USER="rsyslog" MYSQL_PASSWD="motdepasse" # Archivage sql="SELECT * FROM SystemEvents WHERE DATEDIFF(NOW(), DeviceReportedTime) > $RETENTION" mysql -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASSWD -e "$sql" -B -s $MYSQL_DB | gzip > $DESTDIR/$ARCHIVE # Suppression des enregistrements MySQL sql="DELETE FROM SystemEvents WHERE DATEDIFF(NOW(), DeviceReportedTime) > $RETENTION" mysql -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASSWD -e "$sql" -B -s $MYSQL_DB
Proposition script Cron 2
# Ce script efface les données de plus de deux jours qui sont stockées dans la base de données. # Les informations texte des lignes echo ne se sont pas affichées dans le terminal lors de mes essais.
#!/bin/bash # Purge des logs de la base MySQL Syslog RETENTION=2 # Durée de rétention des logs (en jours) # Initialisation variables MYSQL_HOST="localhost" MYSQL_DB="bddloganalyzer" MYSQL_USER="Logs" MYSQL_PASSWD="Analyzer" TMP_LOG="/tmp/cron.log" # Comptage des enregistrements à supprimer sql="SELECT COUNT(*) FROM SystemEvents WHERE DATEDIFF(NOW(), DeviceReportedTime) > $RETENTION" compteur='mysql -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASSWD -e "$sql" -B -s $MYSQL_DB' if [ "$compteur" = "0" ]; then echo "(I) Il n'y a pas d'enregistrements plus vieux que $RETENTION jours" >> $TMP_LOG else echo "(I) Il y a $compteur enregistrements à supprimer" >> $TMP_LOG # Suppression des enregistrements MySQL sql="DELETE FROM SystemEvents WHERE DATEDIFF(NOW(), DeviceReportedTime) > $RETENTION" mysql -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASSWD -e "$sql" -B -s $MYSQL_DB cr=$? if [ $cr -gt 0 ]; then echo "(E) Erreur lors de la suppression des enregistrements. Code retour $cr" >> $TMP_LOG else echo "(I) L'opération s'est déroulée correctement" >> $TMP_LOG fi fi
Utiliser InnoDB et des tables compressées
# Ce script n'a pas été testé.
# Pour utiliser InnoDB et des tables compressées : ALTER TABLE SystemEvents ENGINE=innodb DEFAULT CHARSET=latin1 row_format=COMPRESSED KEY_BLOCK_SIZE=4;
Indexer les champs qui serviront souvent dans les requêtes
# Ce script n'a pas été testé.
# Après quelques mois d’exploitation, les requêtes lancées depuis LogAnalyser peuvent devenir plus lentes, rendant l’outil pénible à utiliser. # Avec la version du plugin MySQL de rsyslog (v 4.6.4) les index ne sont pas créés dans la table SystemEvents à l’installation. # Quand les enregistrements se comptent en millions dans la table ce n'est plus adapté. # La solution est d’indexer les champs qui serviront souvent dans les requêtes, par exemple, Facility, Priority, FromHost, SysLogTag et DeviceReportedTime. ALTER TABLE `SystemEvents` ADD INDEX(`Facility`); ALTER TABLE `SystemEvents` ADD INDEX(`Priority`); ALTER TABLE `SystemEvents` ADD INDEX(`FromHost`); ALTER TABLE `SystemEvents` ADD INDEX(`SysLogTag`); ALTER TABLE `SystemEvents` ADD INDEX(`DeviceReportedTime`);
Vérifier que la table MySQL est bien alimentée avec les logs
# Créer une entrée de journal avec la commande suivante : logger Fonctionne!
# Tester si il existe des enregistrements depuis le terminal avec la commande suivante : mysql -u rsyslog -p -Bsr -e "SELECT Message FROM SystemEvents LIMIT 0,20" Syslog
# Tester si il existe des enregistrements depuis l'interface en ligne de commande de MySQL avec les commandes suivantes : mysql -u root -p # Saisir votre mot de passe utilisateur pour root ou appuyer directement sur entrée si le mot de passe est vide. # Sélectionner la base de données Syslog sur laquelle la requête va être lancée. mysql> use Syslog; mysql> select * from SystemEvents limit 1;
# Cette commande fonctionne également et devrait être plus rapide en sélectionnant moins d'informations. # mysql> select ReceivedAt,Message from SystemEvents;
Configurer l'écoute du réseau dans la configuration de Rsyslog
# Paramétrer le fichier de configuration de Rsyslog. sudo nano /etc/rsyslog.conf
# Charger ce module semble indispensable pour réceptionner les données syslog en local depuis le Disque ou la base de données MySQL. # La commande utilisée sous Mint Tara 19 ou Ubuntu 18.04 Lts : module(load="imuxsock") # Charger le module pour les anciennes systèmes : # $ModLoad imuxsock
# Les informations de syslog peuvent être reçues via UDP ou TCP. # Les instructions de configuration sont un peu différentes entre UDP et TCP. # Dans la plupart des cas, UDP Syslog devrait être entièrement suffisant et performant. # Si la mémoire tampon système pour UDP est saturée lors d'un enchaînement de messages volumineux, les messages seront perdus. # Ce n'est pas le cas avec TCP syslog car l'expéditeur et le destinataire communiquent à propos de l'arrivée des paquets réseau. # Certains périphériques, tels que les routeurs, ne peuvent pas envoyer TCP Syslog par conception. Dans ce cas, il faut tout de même utiliser UDP. # TCP syslog est adapté pour les environnements dans lesquels les messages de journal ne doivent pas être perdus ou qui doivent assurer la conformité PCI, par exemple, les banques.
# Préférer l'utilisation du protocole RELP : # Sur la (non) fiabilité de plain TCP syslog, utiliser le protocole RELP semblerait être encore plus pertinent. # On the (un)reliability of plain TCP syslog : https://rainer.gerhards.net/2008/04/on-unreliability-of-plain-tcp-syslog.html
# Activer la réception des logs distants : # Le syslog UDP est reçu sur le port 514 par défaut. # Le syslog TCP nécessite un port différent car le service RPC utilise souvent ce port également.
# Syntaxe pour Debian. ( A vérifier ! ) # Fournit une réception UDP syslog : ## $ModLoad imudp ## $UDPServerRun 514 # Fournit une réception TCP syslog : ## $ModLoad imtcp ## $InputTCPServerRun 1514
# Syntaxe pour Ubuntu 16.04 LTS / Ubuntu 18.04 LTS et Mint Tara 19. # Fournit une réception UDP syslog : module(load="imudp") input(type="imudp" port="514") # Fournit une réception TCP syslog : module(load="imtcp") input(type="imtcp" port="1514")
# Liste des sous réseaux autorisés à se connecter : # $AllowedSender UDP, 127.0.0.1, 192.168.1.0/24 # $AllowedSender TCP, 127.0.0.1, 192.168.1.0/24
# Le serveur est maintenant configuré pour enregistrer les logs dans la base de données. # Il écoute sur le port 514 et 1514 les messages entrant.
Exemple de configuration pour Adiscon Rsyslog avec LogAnalyzer
# /etc/rsyslog.conf Fichier de configuration pour Rsyslog. $EscapeControlCharactersOnReceive off #### MODULES #### # $ModLoad imuxsock module(load="imuxsock") # UDP syslog reception # module(load="imudp") # input(type="imudp" port="1514") # ou # $Modload imudp # $UDPServerRun 1514 # TCP syslog reception # module(load="imtcp") # input(type="imtcp" port="1514") # ou # $ModLoad imtcp # $InputTCPServerRun 1514 # Support de connexion Kernel et activation des non-kernel klog messages module(load="imklog" permitnonkernelfacility="on") # Règles de connexion par défaut : /etc/rsyslog.d/50-default.conf auth,authpriv.* /var/log/auth.log *.*;auth,authpriv.none /var/log/syslog syslog.* /var/log/rsyslog.log cron.* /var/log/cron.log kern.* /var/log/kern.log #daemon.* /var/log/daemon.log #lpr.* /var/log/lpr.log #user.* /var/log/user.log #mail.* /var/log/mail.log #mail.info /var/log/mail.info #mail.warn /var/log/mail.warn #mail.err /var/log/mail.err #news.crit /var/log/news/news.crit #news.err /var/log/news/news.err #news.notice /var/log/news/news.notice # Propriétaires du fichier cron.log passé a syslog:logadmin # Ajouter une ligne pour faire gérer d'autres logs par Rsyslog (Apache2, Mysql, ...) : syslog.* /var/log/apache2/error.log #### GLOBAL DIRECTIVES #### # Semble être obsolète : # $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat # Filtre les messages dupliqués : $RepeatedMsgReduction on $WorkDirectory /var/spool/rsyslog # Include all config files in /etc/rsyslog.d/ # $IncludeConfig /etc/rsyslog.d/*.conf $IncludeConfig /etc/rsyslog.d/mysql.conf
Exemple de configuration pour Adiscon Rsyslog sans LogAnalyzer
# La configuration suivante est fonctionnelle sur un serveur VPS mais elle n'a pas été testé avec Adiscon LogAnalyzer. # Dans cet exemple, le fichier messages et syslog resteront vide, puisque les logs seront filtrés une seule fois vers d'autres fichiers.
# Éditer la configuration de Rsyslog : sudo nano /etc/rsyslog.conf
#### Règles pour configurer Rsyslog #### ################################################################# # Déboguer Rsyslog : # Observer en détail le nom des programmes qui écrivent dans les logs et leurs entrées. # *.* /var/log/msgfields.log;RSYSLOG_DebugFormat
# /etc/rsyslog.conf configuration file for rsyslog #### MODULES #### module(load="imuxsock") # provides support for local system logging module(load="imklog") # provides kernel logging support #module(load="immark") # provides --MARK-- message capability # provides UDP syslog reception #module(load="imudp") #input(type="imudp" port="514") # provides TCP syslog reception #module(load="imtcp") #input(type="imtcp" port="514") #### GLOBAL DIRECTIVES #### # Use traditional timestamp format. # To enable high precision timestamps, comment out the following line. $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat # Set the default permissions for all log files. $FileOwner root $FileGroup adm $FileCreateMode 0640 $DirCreateMode 0755 $Umask 0022 # Where to place spool and state files $WorkDirectory /var/spool/rsyslog # Include all config files in /etc/rsyslog.d/ $IncludeConfig /etc/rsyslog.d/*.conf ################################################################# # Certains fichiers ne sont pas des fichiers utilisés par défaut. # Vérifier dans logrotate qu'ils soient pris en considération. # Utiliser de petits fichiers pour faciliter l'écriture. # Journaliser les messages du kernel contenant DROP IN correspondant à iptables. :msg,contains,"INPUT:DROP:" /var/log/iptables.log # Ne plus journaliser ses informations dans aucun autre fichier avec "& stop" & stop # Journaliser les messages du kernel avec le mot clé warn ou error : :msg,contains,"warn" /var/log/kern.warn.log & stop :msg,contains,"error" /var/log/kern.warn.log & stop # Les logs en erreur pour le kernel : kern.info /var/log/kern.info.log & stop # Les autres logs du kernel : kern.* /var/log/kern.log # Les logs de connexion et les tentatives de connexion : auth,authpriv.* /var/log/auth.log & stop # Les logs des tâches cron : cron.* /var/log/cron.log & stop # Les logs des daemon : daemon.* /var/log/daemon.log & stop # Les logs lpr concernent le service d'impression : # lpr.* /var/log/lpr.log # & stop # Les logs des utilisateurs du système : user.* /var/log/user.log & stop # Le fichier mail.log n'est pas utilisé par Exim ni par PHP. # Ce fichier restera très certainement vide si uniquement Exim et PHP sont utilisés. # Dovecot, Postfix, Sendmail, écrivent dans ce fichier. mail.* /var/log/mail.log # Je n'arrive pas à loguer le contenu sur le nom du programme Exim. # Je contourne avec un filtre sur le contenu du message "queued as". # Ne fonctionne pas non plus pour loguer les logs de Exim. # :msg, contains, "queued as" /var/log/mailexim.log # Pareil pour les logs de PHP envoyés avec mail() : # :msg, contains, "mail() on" /var/log/mailphp.log # Activer les logs des mails dans 4 fichiers différents : # mail.info /var/log/mail.info # mail.warn /var/log/mail.warn # mail.err /var/log/mail.err # mail.notice /var/log/mail.notice # Suite au filtrage, je ne journalise presque plus rien dans messages et syslog : *.=info;*.=notice;*.=warn; /var/log/messages & stop # Le reste sera journalisé dans /var/log/syslog : *.*; /var/log/syslog ################################################################# # Tout enregistrer pour le mode debug. *.=debug;\ auth,authpriv.none;\ news.none;mail.none /var/log/debug # Emergencies are sent to everybody logged in. *.emerg :omusrmsg:* #################################################################
En savoir plus sur les actions de Rsyslog avec RSYSLOG_DebugFormat
# Déboguer Rsyslog : # Observer en détail le nom des programmes qui écrivent dans les logs et leurs entrées. # *.* /var/log/msgfields.log;RSYSLOG_DebugFormat
Filtrer par mot clé
# Utiliser un mot clé pour loguer une chaîne, ou, la négation pour ne pas loguer une chaîne contenant le mot clé : :msg, contains, "error" /var/log/fichier.log :msg, !contains, "error" /var/log/fichier.log
Exim et Rsyslog
# Le fichier mail.log n'est pas utilisé par Exim ni par PHP. # Ce fichier restera très certainement vide si uniquement Exim et PHP sont utilisés. # Dovecot, Postfix, Sendmail, écrivent dans ce fichier. mail.* /var/log/mail.log
# Une issue est ouverte sur le Github de Rsyslog pour savoir si Rsyslog peut loguer les paquets de Exim : https://github.com/rsyslog/rsyslog/issues/4303
# Tester de loguer les paquets de Exim : # Exemple de filtre de la forme facility.severity : local4.info /var/log/exim4/exim_info.log # Exemple de filtre basé sur les propriétés : :programname, contains, "exim" /var/log/exim4/exim_test0.log # Exemple de filtre basé sur les expressions. # Les variables sont les mêmes que précédemment : if $programname == 'exim' then /var/log/exim4/exim_test1.log
# Malgré les trois essais précédents, je n'arrive toujours pas à loguer les logs de Exim avec Rsyslog. # Au lieu du mot clé Exim, je contourne le problème en utilisant le mot clé "queued as" qui se retrouve dans chaque log de Exim, dans le fichier /var/log/exim/mainlog # Je n'arrive pas à loguer le contenu sur le nom du programme Exim. # Je tente de contourne avec un filtre sur le contenu du message "queued as" mais ça ne fonctionnera pas non plus ! :msg, contains, "queued as" /var/log/mail.log
# La facility est LOG_MAIL et la variable programme a pour valeur exim. # Les contenus des logs mainlog, rejectlog et paniclog se voient attribuer les niveaux respectifs info, notice, alert. Source : https://www.cadoles.com/blog/gestion-des-logs-en-mode-conteneurs
Utiliser logrotate pour archiver de nouveaux fichiers de journalisation
# Utiliser logrotate pour archiver régulièrement le contenu de /var/log/iptables.log Exemple pour la rotation d'un nouveau fichier de log iptables.log.
Redémarrer Rsyslog pour appliquer la nouvelle configuration
# Recharger Rsyslog pour appliquer les changements de configurations : sudo service rsyslog reload
# Redémarrer le démon Rsyslog pour appliquer la nouvelle configuration :
# Anciennes commandes : sudo service rsyslog restart sudo /etc/init.d/rsyslog restart
# Nouvelle commande à privilégier : sudo systemctl restart rsyslog sudo systemctl restart rsyslog.service
Erreurs rencontrées dans les logs de syslog
Résoudre une erreur action qui boucle plusieurs fois
Cette erreur s'affiche plusieurs fois : action 'action-1-builtin:omfile' resumed (module 'builtin:omfile') [v8.39.0 try http://www.rsyslog.com [More Information] /e/2359 ] Des messages d'actions à répétition signifient souvent que la configuration n'est pas correcte. Par exemple, un module inutilisé est peut être chargé.
# Je vérifie que les fichiers de logs existent bien, et, ont les bons droits de lecture. sudo touch cron.log sudo chown root:root /var/log/cron.log sudo chmod 666 /var/log/cron.log
# Les propriétaires pour le fichier auth.log sont modifiés de root:logadmin pour syslog:logadmin. sudo chown syslog:logadmin auth.log
# Si les lignes qui s'affichent sont toujours présentes malgré les changements de droits précédents, tenter le changer de droits récursif du dossier /var/log/. # Éviter cette commande de préférence, donner des droits chmod aussi élevés ne devrait pas être nécessaire. sudo chmod 775 /var/log/
# Pour le moment, cette erreur boucle encore, notamment, au démarrage de la machine virtuelle. # J'ai tout de même pu diminuer le nombre d'alertes en réduisant la configuration au minimum nécessaire. Une issue Github a été ouverte : https://github.com/rsyslog/rsyslog/issues/3287
Résoudre la NOTICE Syslog : couldn't access control socket
AUTH - NOTICE - MyNameOS - gnome-keyring-daemon - Syslog - couldn't access control socket: /run/user/1000/keyring/control: Aucun fichier ...
Créer un fichier gnome-keyring-daemon.desktop dans le dossier ~/.config/autostart/ Ajouter le code suivant : [Desktop Entry] Type=Application Exec=/usr/bin/gnome-keyring-daemon Hidden=false NoDisplay=false X-GNOME-Autostart-enabled=true Name=Gnome Keyring Daemon Comment=Load gnome keyring daemon
Résoudre un daemon warning depuis une machine virtuelle VirtualBox Mint Tara 19
# Le message d'erreur : Using degraded feature set (UDP) for DNS server 10.0.2.3.
# Consulter : systemd-resolve --status # Les dernières lignes affichent : Link 2 (enp0s3) Current Scopes: DNS LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no DNS Servers: 10.0.2.3 DNS Domain: home
# Notes : DNS Orange = 91.121.161.184 91.121.164.227 2001:41d0:1:e2b8::1 2001:41d0:1:e5e3::1 DNS Google = 8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844
Modifier le nameserver : sudo nano resolv.conf # Laisser ou commenter : # nameserver 127.0.0.53 # Ajouter : nameserver 10.0.2.3 nameserver 127.0.0.1 nameserver ::1 # Par défaut : search home
Consulter les logs. L'alerte ne semble plus être affichée et résolue de façon temporaire. Le redémarrage de la machine fera disparaître cette configuration. Le message d'erreur apparaît à nouveau.
Pour une configuration permanente, cliquer droit sur network-manager et modifier la configuration du réseau. Ma connexion sur la machine virtuelle est considérée comme filaire. Ajouter le DNS secondaire 10.0.2.3. Le message ne semble plus s'afficher une fois la machine allumée. Le message d'erreur semble toujours s'afficher une fois par démarrage.
Centraliser les logs sur un serveur de logs avec Rsyslog
Rsyslog en tant que serveur
# Compléter la configuration proposée précédemment pour utiliser Rsyslog comme serveur de logs centralisé. # Je n'ai pas testé cette possibilité.
# Le fichier de configuration de Rsyslog, serveur ou client, se trouve dans /etc/rsyslog.conf.
# Créer un fichier modèle dans lequel nous créerons un nouveau format de journal personnalisé depuis /etc/rsyslog.d/tmpl.conf
# Autoriser le port par défaut de Rsyslog UDP 514 sur votre pare-feu. # Autoriser le port modifié de Rsyslog TCP 1514 sur votre pare-feu. # Les commandes suivantes ouvriront ce port via UFW : sudo ufw allow 514/udp sudo ufw allow 1514/tcp
# Redémarrer le service UFW pour prendre en compte les modifications : sudo ufw reload
# Recharger le service Rsyslog en utilisant la commande suivante : systemctl restart rsyslog
# Dans le cas ou le serveur de logs se trouve derrière un routeur : # Penser a activer les règles NAT adaptées aux ports sélectionnés dans la configuration. # Rediriger le trafic UDP 514->514 vers le serveur de logs. # Rediriger le trafic TCP 1514->1514 vers le serveur de logs.
Rsyslog en tant que client
# Le fichier de configuration de Rsyslog, client ou serveur, se trouve dans /etc/rsyslog.conf.
Rsyslog en tant que serveur : https://phelepjeremy.wordpress.com/2017/06/20/configuration-dun-serveur-syslog-ng/
Ajouter de nouveaux clients Rsyslog
# Configurer les machines clients pour qu'elles puissent envoyer leurs logs à la machine qui aura le rôle de serveur de logs. # Fonctionne avec syslog ou syslog-ng, avec un paramétrage différent pour syslog-ng. # Cette fonctionnalité n'a pas été testée lors de la rédaction de ce tutoriel.
# Étape 1 : Installer le paquet rsyslog sur chaque client : apt-get install rsyslog
# Étape 2 : Créer un répertoire de travail : mkdir /var/spool/rsyslog
# Étape 3 : Ouvrir le fichier de configuration de Rsyslog : nano /etc/rsyslog.conf
# Modifier la configuration qui permet l'envoi des logs au serveur de logs : # Emplacement par défaut pour les fichiers de travail (spool). $WorkDirectory /var/spool/rsyslog
# Commencer la règle de transfert 1 : $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'espace de 1 Go. $ActionQueueSaveOnShutdown on # Enregistrer les données sur le disque si Rsyslog est arrêté. $ActionResumeRetryCount -1 # Tentatives infinies en cas d'échec de connexion avec l'hôte. # jouter les lignes suivantes dans la section RULES : # Envoyer tous les messages sur le serveur de journalisation distant avec la commande suivante : *.* @@Cible_IP_serveur_1_LogAnalayzer:514 # Ou 514 est le port d'écoute qui a été défini dans la configuration.
# Commencer la règle de transfert 2 : $ActionQueueType LinkedList # Exécuter le traitement de façon asynchrone. $ActionQueueFileName srvrfwd2 # Préfixe de nom unique pour les fichiers spool. Active également le mode disque. $ActionQueueMaxDiskSpace 1g # Limite d'espace de 1 Go. $ActionQueueSaveOnShutdown on # Enregistrer les données sur le disque si Rsyslog est arrêté. $ActionResumeRetryCount -1 # Tentatives infinies en cas d'échec de connexion avec l'hôte. # jouter les lignes suivantes dans la section RULES : # Envoyer tous les messages sur le serveur de journalisation distant avec la commande suivante : *.* @@Cible_IP_serveur_1_LogAnalayzer:514 # Ou 514 est le port d'écoute qui a été défini dans la configuration.
# Étape 4 : Redémarrer le service RSyslog sudo /etc/init.d/rsyslog restart
# Consigner le message en erreur standard (écran), ainsi que le journal système à l’aide de la commande suivante : logger -s " Ceci est un client Rsyslog "
# Aller sur le serveur Rsyslog sous le répertoire /var/log/client_logs. # Un nouveau dossier nommé avec le nom d'hôte de votre client Rsyslog devrait être disponible. /var/log/client_logs/Client01/
Rsyslog et SSL
Le cryptage SSL pour l'échange entre Syslog et Rsyslog.
Encrypting Syslog Traffic with TLS (SSL) [short version] : https://www.rsyslog.com/doc/v8-stable/tutorials/tls.html Encrypting Syslog Traffic with TLS (SSL) : https://www.rsyslog.com/doc/v8-stable/tutorials/tls_cert_summary.html
Ajouter des plugins pour Rsyslog
apt-cache search rsyslog rsyslog - démon fiable de journalisation système et noyau gosa-plugin-rsyslog - greffon rsyslog pour GOsa² rsyslog-gssapi - Authentification GSSAPI et prise en charge du chiffrement pour rsyslog rsyslog-mysql - Module de sortie MySQL pour rsyslog rsyslog-pgsql - Module de sortie PostgreSQL pour rsyslog fusiondirectory-plugin-rsyslog - rsyslog plugin for FusionDirectory librelp-dev - Reliable Event Logging Protocol (RELP) library - development files librelp0 - Reliable Event Logging Protocol (RELP) library rsyslog-doc - documentation for rsyslog rsyslog-elasticsearch - Elasticsearch output plugin for rsyslog rsyslog-gnutls - TLS protocol support for rsyslog rsyslog-relp - RELP protocol support for rsyslog uwsgi-core - fast, self-healing application container server (core)
Déboguer Rsyslogd et obtenir ses logs
Méthode DebugFile et DebugLevel
# Ouvrir le fichier de configuration de Rsyslog : sudo nano /etc/rsyslog.conf
# Ajouter les deux lignes suivantes : $DebugFile /home/USER/Bureau/debug.txt $DebugLevel 2
# <0|1|2> - Définir le niveau de débogage : # 0 correspond au mode débogage désactivé. # 1 au mode débogage à la demande activé mais le mode débogage désactivé. # 2 correspond au mode débogage complet.
# Redémarrer Rsyslog : sudo service rsyslog restart
Documentation : Rsyslog Debug Support : https://www.rsyslog.com/doc/v8-stable/troubleshooting/debug.html Documentation : Debugging Rsyslogd : https://web.archive.org/web/20191212214536/https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/s1-debugging_rsyslog
Les niveaux d'erreurs avec syslog
# Les fonctionnalités, facilities, sont des catégories de log qui correspondent à un type de service. # Les facilities permettent principalement de filtrer les logs pour les ranger. Valeur Facility Description 1 user user-level messages 2 mail mail system 3 deamon system daemons 4 auth security/authorization messages 5 syslog messages generated internally by syslogd 6 lpr line printer subsystem 7 news network news subsystem 8 uucp UUCP subsystem 9 cron clock daemon 10 authpriv security/authorization messages 11 ftp FTP daemon 12 ntp NTP subsystem 13 security log audit 14 console log alert 15 solaris-cron clock daemon 16 - 23 local0/local7 locally used facilities (local0-local7)
# Les sévérités, priorities, sont les 8 niveaux de gravité des erreurs de log. # Plus le niveau de priority est proche de 0, plus l'erreur est grave. # Plus le niveau de sévérité est haut, proche de 7, plus la machine enverra de log. Valeur Priority Description 0 Emergency system is unusable 1 Alert must be taken immediately 2 Critical critical conditions 3 Error error conditions 4 Warning warning conditions 5 Notice normal but significant condition 6 Informational informational messages 7 Debug debug-level messages
# Noter que syslog a été remplacé par journald sur la grande majorité des systèmes d'exploitation Linux.
Ajouter une interface Web avec LogAnalyzer
# Maintenant que Rsyslog est installé et correctement configuré, ajouter une interface Web pour visualiser les logs de façon graphique, comme par exemple, l'interface Web Adiscon LogAnalyzer.
Bibliographie
Sites officiels
Site officiel de Rsyslog : https://www.rsyslog.com Le dépôt officiel de Rsyslog sur Github : https://github.com/rsyslog/rsyslog Documentation officielle générale : https://www.rsyslog.com/doc/master/index.html Documentation officielle Version 8 stable : https://www.rsyslog.com/doc/v8-stable/ Documentation de configuration Version 8 stable : https://www.rsyslog.com/doc/v8-stable/configuration/index.html Des exemples de configuration Version 8 stable : https://www.rsyslog.com/doc/v8-stable/configuration/examples.html
Arguments en faveur de Rsyslog
Changing the default syslog daemon for Lenny : https://lists.debian.org/debian-devel/2008/01/thrd3.html#01002 Changing the default syslog daemon for Lenny : https://lists.debian.org/debian-devel/2008/01/msg01002.html Status of default syslog daemon for Lenny : https://lists.debian.org/debian-release/2008/07/msg00117.html
Rsyslog et Loganalyzer
Ce contenu de recherche effectué par Visionduweb sur Rsyslog est partagé sur le wiki officiel de Debian : https://wiki.debian.org/Rsyslog -> https://wiki.debian.org/fr/Rsyslog
Gestion des logs avec Rsylog, Mysql et Loganalyzer : https://web.archive.org/web/20161211103924/https://journaldunadminlinux.fr/tutoriel-consolidation-des-logs-avec-rsylog-mysql-et-loganalyzer How to Setup LogAnalyzer with Rsyslog On Ubuntu 16.04 LTS / Ubuntu 18.04 LTS : http://yallalabs.com/linux/how-to-setup-loganalyzer-with-rsyslog-on-ubuntu-16-04-lts-ubuntu-18-04-lts/ How to Setup A Centralized Log Server Using Rsyslog on Ubuntu 16.04 LTS : http://yallalabs.com/linux/how-to-setup-a-centralized-log-server-using-rsyslog-on-ubuntu-16-04-lts/ Consolidation des logs avec rsyslog, MySQL et LogAnalyser : http://tavie.onsenfout.com/2011/07/05/consolidation-des-logs-avec-rsyslog-mysql-et-loganalyser/ How to install Rsyslog with loganalyzer in Ubuntu : http://techies-world.com/how-to-install-rsyslog-with-loganalyzer-in-ubuntu/ How to Setup LogAnalyzer with Rsyslog and MySQL : https://tecadmin.net/setup-loganalyzer-with-rsyslog-and-mysql/ Optimisations LogAnalyser : http://tavie.onsenfout.com/2012/03/08/optimisations-loganalyser/ Using the syslog receiver module : https://www.rsyslog.com/using-the-syslog-receiver-module/ Gérer ses logs avec rsyslog sous Linux : https://www.tutos.eu/7193
Rsyslog propose quatre différents types de conditions de filtrage : https://www.rsyslog.com/doc/v8-stable/configuration/filters.html
https://www.youtube.com/watch?v=z1313LUe3xQ Rsyslog en russe : http://www.k-max.name/linux/rsyslog-na-debian-nastrojka-servera/ rsyslogd - syslogd fiable et étendu : https://manpages.debian.org/stretch/rsyslog/rsyslogd.8.en.html Install a Centralized Log Server with Rsyslog in Debian 9 : https://www.howtoforge.com/tutorial/rsyslog-centralized-log-server-in-debian-9/ How to Setup Centralized Logging Server using Rsyslog : https://tecadmin.net/setup-centralized-logging-server-using-rsyslogd/
Configuration Syslog-ng
Configuration Syslog-ng : https://www.supinfo.com/articles/single/2497-solution-journalisation-rsyslog-syslog-ng
NAVIGATION
PARTICIPER ET PARTAGERBienvenue sur le wiki de Amis SH. De nombreuses pages sont partagées sur ce wiki. Créer un compte utilisateur pour participer sur le wiki. Les pages présentées sur le wiki évoluent tous les jours. Certaines recherches sont peu abouties et incluent des erreurs. Utiliser la recherche interne du wiki pour trouver votre contenu. La page de discussion de Amis SH vous permet de poser vos questions. Consulter le site amis-sh.fr pour installer votre propre serveur web. Améliorer le contenu des pages avec vos retours depuis l'onglet discussion. Ce contenu ne doit pas servir à nuire à autrui ou à un système informatique. Protéger votre système Linux ou Windows avec cette page dédiée à la sécurité. |
SOUTENIR CE WIKISoutenir le wiki avec un don en monnaie numérique : AEON - Bitcoins - Bitcoins Cash - Bitcoins Gold - Bitcore - Blackcoins - Basic Attention Token - Bytecoins - Clams - Dash - Monero - Dogecoins - Ğ1 - Ethereum - Ethereum Classique - Litecoins - Potcoins - Solarcoins - Zcash OBTENIR DE LA MONNAIE NUMERIQUEObtenir gratuitement de la monnaie numérique : Miner de la cryptomonnaie. |