Installation Rsyslog · 9 min read · Oct 17, 2025
Installation de Rsyslog 5.7.x Complet sur CentOS 5.x
Installation de Rsyslog 5.7.x Complet sur CentOS 5.x
Ce tutoriel montre comment vous pouvez installer la nouvelle génération de serveurs syslog en utilisant Rsyslog. Selon le site web de Rsyslog (www.rsyslog.com), Rsyslog est un syslogd amélioré prenant en charge, entre autres, MySQL, PostgreSQL, des destinations de journalisation de secours, syslog/tcp, un contrôle fin du format de sortie, des horodatages de haute précision, des opérations en file d’attente et la capacité de filtrer sur n’importe quelle partie du message. Il est assez compatible avec le sysklogd standard et peut être utilisé comme un remplacement direct. Ses fonctionnalités avancées le rendent adapté aux chaînes de relais syslog de classe entreprise, protégées par cryptage, tout en étant très facile à configurer pour l’utilisateur novice.
Objectifs
Ce tutoriel montre comment vous pouvez compiler et installer Rsyslog 5.7.9 complet sur un serveur CentOS 5.5. Je ne donne aucune garantie que cela fonctionnera pour vous !
Pré-installation
Tout d’abord, nous devons installer les paquets suivants :
yum install -y pcre pcre-devel mysql-server mysql-devel gnutls gnutls-devel gnutls-utils net-snmp net-snmp-devel net-snmp-libs net-snmp-perl net-snmp-utils libnet libnet-devel
Télécharger le paquet supplémentaire :
librelp (Bibliothèque de protocole de journalisation d’événements fiable) est une bibliothèque facile à utiliser pour le protocole RELP. RELP, à son tour, fournit une journalisation d’événements fiable sur le réseau. RELP (et donc) librelp assure qu’aucun message n’est perdu, même lorsque les connexions se rompent et qu’un pair devient indisponible. Veuillez noter que RELP est un protocole de journalisation général, extensible. Même s’il a été conçu pour résoudre le besoin urgent de communication rsyslog-à-rsyslog, RELP prend en charge de nombreuses autres applications.
cd /tmp
wget http://sourceforge.net/projects/libestr/files/libestr-0.1.0.tar.gz/download
tar -xvf libestr-0.1.0.tar.gz
cd libestr-0.1.0
./configure –prefix=/usr
make
make install
cd /tmp
wget http://www.libee.org/files/download/libee-0.1.0.tar.gz
tar -xvf libee-0.1.0.tar.gz
cd libee-0.1.0
./configure –prefix=/usr
make
make install
cd /tmp
wget http://honeynet.ir/software/rsyslog/librelp-1.0.0.tar.gz
tar -xvf librelp-1.0.0.tar.gz
cd librelp-1.0.0
./configure –prefix=/usr
make
make install
Télécharger le paquet Rsyslog :
Au moment de la rédaction de ce tutoriel, je trouve que rsyslog 5.7.9 est la meilleure version de Rsyslog qui prend en charge la plupart des bonnes fonctionnalités dont vous pourriez avoir besoin.
cd /tmp
wget http://www.rsyslog.com/files/download/rsyslog/rsyslog-5.7.9.tar.gz
tar -xvf rsyslog-5.7.9.tar.gz
cd rsyslog-5.7.9
Compiler et Installer Rsyslog :
Pour plus d’informations sur les options disponibles dans Rsyslog, vous pouvez exécuter ./configure –help
La commande suivante active la plupart des fonctionnalités de rsyslog telles que la compression, le multithreading, MySql, SNMP, Mail, le support RELP, etc.
./configure –enable-regexp –enable-zlib –enable-pthreads –enable-klog –enable-inet –enable-unlimited-select –enable-debug –enable-rtinst –enable-memcheck –enable-diagtools –enable-mysql –enable-snmp –enable-gnutls –enable-rsyslogrt –enable-rsyslogd –enable-extended-tests –enable-mail –enable-imptcp –enable-omruleset –enable-valgrind –enable-imdiag –enable-relp –enable-testbench –enable-imfile –enable-omstdout –enable-omdbalerting –enable-omuxsock –enable-imtemplate –enable-omtemplate –enable-pmlastmsg –enable-omudpspoof –enable-omprog –enable-impstats
make
make install
Préparer la base de données MySQL :
L’installation de mySQL est obligatoire si vous souhaitez enregistrer les enregistrements syslog dans la base de données, sinon passez cette partie
mysql -u root -p < plugins/ommysql/createDB.sql
mysql -u root -p mysql
GRANT ALL ON Syslog.* TO rsyslog@localhost IDENTIFIED BY ‘your-mysql-password’;
flush privileges;
Configurer le script d’initialisation
vi /etc/init.d/rsyslog
#!/bin/bash
#
# rsyslog Démarre rsyslogd/rklogd.
#
#
# chkconfig: - 12 88
# description: Syslog est le service par lequel de nombreux démons utilisent pour enregistrer \# des messages dans divers fichiers journaux système. Il est bon de toujours \# exécuter rsyslog.
### BEGIN INIT INFO
# Provides: $syslog
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Default-Stop: 0 1 2 3 4 5 6
# Short-Description: Démons de journalisation système améliorés et de capture de messages du noyau
# Description: Rsyslog est un syslogd multi-threadé amélioré prenant en charge, \# entre autres, MySQL, syslog/tcp, RFC 3195, listes d'expéditeurs autorisés, \# filtrage sur n'importe quelle partie du message, et un contrôle fin \# du format de sortie.
### END INIT INFO
# Source function library.
. /etc/init.d/functions
RETVAL=0
start() {
[ -x /usr/local/sbin/rsyslogd ] || exit 5
#[ -x /usr/local/sbin/rklogd ] || exit 5
# Ne pas démarrer rsyslog lorsque sysklogd est en cours d'exécution
if [ -e /var/run/syslogd.pid ] ; then
echo "$Arrêtez sysklogd avant d'exécuter rsyslog";
exit 1;
fi
# Source config
if [ -f /etc/sysconfig/rsyslog ] ; then
. /etc/sysconfig/rsyslog
else
#SYSLOGD_OPTIONS="-c3"
SYSLOGD_OPTIONS="-c5"
#KLOGD_OPTIONS="-2"
fi
if [ -z "$SYSLOG_UMASK" ] ; then
SYSLOG_UMASK=077;
fi
umask $SYSLOG_UMASK
echo -n "$Démarrage du journal système : "
daemon /usr/local/sbin/rsyslogd $SYSLOGD_OPTIONS
RETVAL=$?
echo
#echo -n "$Démarrage du journal du noyau : "
#daemon rklogd $KLOGD_OPTIONS
#echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/rsyslog
return $RETVAL
}
stop() {
#echo -n "$Arrêt du journal du noyau : "
#killproc rklogd
#echo
echo -n "$Arrêt du journal système : "
killproc rsyslogd
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/rsyslog
return $RETVAL
}
reload() {
RETVAL=1
syslog=`cat /var/run/rsyslogd.pid 2>/dev/null`
echo -n "Rechargement du journal système..."
if [ -n "${syslog}" ] && [ -e /proc/"${syslog}" ]; then
kill -HUP "$syslog";
RETVAL=$?
fi
if [ $RETVAL -ne 0 ]; then
failure
else
success
fi
echo
RETVAL=1
#echo -n "Rechargement du journal du noyau..."
#klog=`cat /var/run/rklogd.pid 2>/dev/null`
#if [ -n "${klog}" ] && [ -e /proc/"${klog}" ]; then
#kill -USR2 "$klog";
# RETVAL=$?
#fi
#if [ $RETVAL -ne 0 ]; then
#failure
#else
#success
#fi
#echo
return $RETVAL
}
rhstatus() {
status rsyslogd
#status rklogd
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload|force-reload)
reload
;;
status)
rhstatus
;;
condrestart)
[ -f /var/lock/subsys/rsyslog ] && restart || :
;;
*)
echo "$Usage: $0 {start|stop|restart|reload|force-reload|condrestart}"
exit 2
esac
exit $?Remarque : assurez-vous que SYSLOGD_OPTIONS=”-c5” est défini !
Configurer Syslog et Rsyslog :
service syslog stop
chkconfig syslog off
chmod 755 /etc/init.d/rsyslog
chkconfig –add rsyslog
chkconfig rsyslog on
Le script d’initialisation est disponible en téléchargement sur le projet Iran Honeynet - Rsyslog
Configuration de Rsyslog
Certaines configurations qui décrivent les fonctionnalités sont disponibles sur le site Web Rsyslog.com.
vi /etc/rsyslog.conf
# Modules d'entrée -----------------------------------Cette ligne est un commentaire
#--------------------------------------------------Cette ligne est un commentaire
$ModLoad impstats.so
$PStatsInterval 300
syslog.info /var/log/rsyslog-stats
#--------------------------------------------------Cette ligne est un commentaire
$ModLoad immark.so # fournit la capacité de message --MARK--
$ModLoad imuxsock.so # fournit le support pour la journalisation système locale (via la commande logger)
$ModLoad imklog.so # fournit le support de journalisation du noyau (précédemment réalisé par rklogd)
#--------------------------------------------------Cette ligne est un commentaire
$ModLoad imudp.so # fournit la réception syslog UDP
$UDPServerAddress * # toutes les interfaces locales
$UDPServerRun 514 # démarrer le serveur UDP (récepteur de serveur de journal)
#--------------------------------------------------Cette ligne est un commentaire
$ModLoad imtcp.so # fournit la réception syslog TCP et GSS-API (si compilé)
$InputTCPServerRun 514 # démarrer le serveur TCP (récepteur de serveur de journal)
#--------------------------------------------------Cette ligne est un commentaire
$ModLoad imrelp.so # entrée RELP
$InputRELPServerRun 20514 # démarrer le protocole RELP
#--------------------------------------------------Cette ligne est un commentaire
$ModLoad imfile.so # Entrée de fichier texte
$InputFileName /var/log/i-am-a-text-file.log
$InputFileTag my-text-file:
$InputFileStateFile stat-file1
$InputFileSeverity error
$InputFileFacility local7
$InputFilePollInterval 10 # vérifier les nouvelles lignes toutes les 10 secondes
$InputRunFileMonitor
#--------------------------------------------------Cette ligne est un commentaire
#$ModLoad imgssapi.so # TCP simple et GSSAPI
#$ModLoad im1395.so # Messages via RFC1395
# Modules de sortie ----------------------------------Cette ligne est un commentaire
#--------------------------------------------------Cette ligne est un commentaire
$ModLoad omsnmp.so # Envoyer des pièges SNMP
#$actionsnmptransport udp
#$actionsnmptarget 192.168.x.x
#$actionsnmptargetport 162
#$actionsnmpversion 1
#$actionsnmpcommunity public
#*.* :omsnmp:
#--------------------------------------------------Cette ligne est un commentaire
$ModLoad ommysql.so # Journaliser vers MySQL
#$ModLoad ompgsql.so # Journaliser vers PostgreSQL
#--------------------------------------------------Cette ligne est un commentaire
$ModLoad ommail.so # Envoyer un mail
#$ActionMailSMTPServer mail.example.net
#$ActionMailFrom [email protected]
#$ActionMailTo [email protected]
#$ActionMailTo [email protected]
#$template mailSubject,"problème de disque sur %hostname%"
#$template mailBody,"Alerte RSYSLOG\r\nmsg='%msg%'"
#$ActionMailSubject mailSubject
#$ActionExecOnlyOnceEveryInterval 21600
#if $msg contains 'hard disk fatal failure' then :ommail:;mailBody
#--------------------------------------------------Cette ligne est un commentaire
$ModLoad omrelp.so # Envoyer à un autre hôte via RELP
#$ModLoad omlibdbi.so # Journaliser via la sortie DB générique
#$ModLoad omgss.so # Sortie activée GSS
# Globals -----------------------------------------Cette ligne est un commentaire
$umask 0000
$DirCreateMode 0640
$FileCreateMode 0640
$RepeatedMsgReduction on
$WorkDirectory /var/log/rsyslog # emplacement par défaut pour les fichiers de travail (spool)
$ActionQueueType LinkedList # utiliser le traitement asynchrone
$ActionQueueFileName queue # définir le nom de fichier, active également le mode disque
$ActionResumeRetryCount -1 # tentatives infinies en cas d'échec d'insertion
$ActionQueueSaveOnShutdown on # enregistrer les données en mémoire si rsyslog s'arrête
$MainMsgQueueMaxFileSize 100M
$ActionQueueMaxFileSize 5M
#--------------------------------------------------Cette ligne est un commentaire
# Ci-dessous, trouvez quelques exemples de ce qu'un modèle peut faire. Amusez-vous à \# découvrir ce qu'ils font [ou juste les exécuter] ;)
# Un modèle qui ressemble à la sortie de fichier syslogd traditionnelle :
$template TraditionalFormat,"%timegenerated% %HOSTNAME% %syslogtag%%msg:::drop-last-lf%\n"
# un modèle utile pour déboguer les problèmes de format
$template DEBUG,"Ligne de débogage avec toutes les propriétés :\nFROMHOST: '%FROMHOST%', HOSTNAME: '%HOSTNAME%', PRI: %PRI%,\nsyslogtag '%syslogtag%', programname: '%programname%', APP-NAME: '%APP-NAME%', PROCID: '%PROCID%', MSGID: '%MSGID%',\nTIMESTAMP: '%TIMESTAMP%', STRUCTURED-DATA: '%STRUCTURED-DATA%',\nmsg: '%msg%'\nescaped msg: '%msg:::drop-cc%'\nrawmsg: '%rawmsg%'\n\n"
# Un modèle qui ressemble au format RFC 3164 sur le fil :
# (oui, il n'y a PAS d'espace entre syslogtag et msg ! c'est important !)
$template RFC3164fmt,"<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag%%msg%"
# un modèle ressemblant au format traditionnel de message mural :
$template wallmsg,"\r\n\7Message de syslogd@%HOSTNAME% à %timegenerated% ...\r\n %syslogtag%%msg%\n\r"
# Le modèle ci-dessous émule le format winsyslog, mais nous devons vérifier les temps
# horodatages utilisés. pour l'instant, c'est assez bon ;) Ce format fonctionne mieux avec
# d'autres membres de la famille de produits MonitorWare. C'est aussi un bon exemple
# où vous pouvez voir le remplaçant de propriété en action.
$template WinSyslogFmt,"%HOSTNAME%,%timegenerated:1:10:date-rfc3339%,%timegenerated:12:19:date-rfc3339%,%timegenerated:1:10:date-rfc3339%,%timegenerated:12:19:date-rfc3339%,%syslogfacility%,%syslogpriority%,%syslogtag%%msg%\n"
# Un modèle utilisé pour l'écriture dans la base de données (remarquez qu'il *est* un
# sql-statement réel) :
$template dbFormat,"insert into SystemEvents (Message, Facility,FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values ('%msg%', %syslogfacility%, '%HOSTNAME%',%syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag%')",sql
$template FileFormat,"%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
$template ForwardFormat,"<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%"
# Les lignes de sélection sont quelque peu différentes de celles de syslogd standard. Avec
# rsyslog, vous pouvez ajouter un point-virgule ";" après la cible et ensuite
# le nom du modèle. Cela assignera ce modèle à l'action respective. Si aucun nom de modèle n'est donné, un modèle codé en dur est utilisé.
# Si un nom de modèle est donné, mais que le modèle n'a pas été défini, la
# ligne de sélection est DÉSACTIVÉE.
#--------------------------------------------------------------------
#--------------------------------------------------Cette ligne est un commentaire
# Transférer via TCP avec compression maximale :
#$AllowedSender TCP, 127.0.0.1, 192.0.2.0/24, [::1]/128, *.example.net, somehost.example.com
#*.* @@(z9)192.168.x.x:514
# Transférer via UDP avec compression maximale :
#$AllowedSender UDP, 127.0.0.1, 192.0.2.0/24, [::1]/128, *.example.net, somehost.example.com
#*.* @(z9)192.168.x.x:514
# Transférer via le protocole RELP :
#*.* :omrelp:192.168.2.4:20514;TraditionalFormat
# Stocker tous les fichiers journaux dans la base de données MySQL :
#*.* :ommysql:127.0.0.1,Syslog,rsyslog,your-mysql-password
#--------------------------------------------------Cette ligne est un commentaire
#--------------------------------------------------Cette ligne est un commentaire
# Journaliser tous les messages du noyau sur la console.
# Journaliser beaucoup d'autres encombre l'écran.
#kern.* /dev/console;TraditionalFileFormat
# Journaliser tout (sauf le mail) de niveau info ou supérieur.
# Ne pas journaliser les messages d'authentification privés !
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# Le fichier authpriv a un accès restreint.
authpriv.* /var/log/secure
# Journaliser tous les messages de mail en un seul endroit.
mail.* -/var/log/maillog
# Journaliser les choses cron
cron.* /var/log/cron
# Tout le monde reçoit des messages d'urgence
*.emerg *
# Enregistrer les erreurs de nouvelles de niveau crit et supérieur dans un fichier spécial.
uucp,news.crit /var/log/spooler
# Enregistrer les messages de démarrage également dans boot.log
local7.* /var/log/boot.log
#--------------------------------------------------Cette ligne est un commentaire
$IncludeConfig /etc/rsyslog.d/*.conf
#--------------------------------------------------Cette ligne est un commentaire
#if message contains 'network error' then run the restart-network.sh shell script!!!
#:msg, contains, "network error" ^/root/restart-network.sh
Remarque importante : Pour plus d’informations, veuillez consulter Rsyslog.com
Le fichier de configuration Rsyslog est disponible en téléchargement sur le projet Iran Honeynet - Rsyslog
Démarrer Rsyslog
chmod 640 /etc/rsyslog.conf
service rsyslog start
tail -f /var/log/messages
Tester Rsyslog
logger “c’est un message de test”
logger -p local0.info -t testtag “c’est un message de test”
Liens
Projet Iran Honeynet : http://www.honeynet.ir/
Projet Rsyslog : http://www.rsyslog.com/
CentOS : http://www.centos.org/
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.