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/

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.