Rsyslog Install · 9 min read · Oct 17, 2025

Installazione di Rsyslog 5.7.x con tutte le funzionalità su CentOS 5.x

Installazione di Rsyslog 5.7.x con tutte le funzionalità su CentOS 5.x

Questo tutorial mostra come puoi installare la nuova generazione di server syslog utilizzando Rsyslog. Secondo il sito web di Rsyslog (www.rsyslog.com), Rsyslog è un syslogd migliorato che supporta, tra le altre cose, MySQL, PostgreSQL, destinazioni di log di failover, syslog/tcp, controllo fine del formato di output, timestamp ad alta precisione, operazioni in coda e la possibilità di filtrare su qualsiasi parte del messaggio. È abbastanza compatibile con il sysklogd standard e può essere utilizzato come sostituto diretto. Le sue funzionalità avanzate lo rendono adatto per catene di relay syslog protette da crittografia di classe enterprise, pur essendo molto facile da configurare per l’utente novizio.

Obiettivi

Questo tutorial mostra come puoi compilare e installare Rsyslog 5.7.9 con tutte le funzionalità su un server CentOS 5.5. Non garantisco che questo funzionerà per te!

Pre-Installazione

Prima dobbiamo installare i seguenti pacchetti:

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

Scarica pacchetto aggiuntivo:

librelp (Libreria del Protocollo di Registrazione degli Eventi Affidabile) è una libreria facile da usare per il protocollo RELP. RELP a sua volta fornisce registrazione di eventi affidabile sulla rete. RELP (e quindi) librelp assicura che nessun messaggio venga perso, nemmeno quando le connessioni si interrompono e un peer diventa non disponibile. Si prega di notare che RELP è un protocollo di registrazione generico e estensibile. Anche se è stato progettato per risolvere l’urgente necessità di comunicazione rsyslog-to-rsyslog, RELP supporta molte altre applicazioni.

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

Scarica pacchetto Rsyslog:

Al momento della scrittura di questo tutorial, trovo che rsyslog 5.7.9 sia la migliore versione di Rsyslog che supporta la maggior parte delle buone funzionalità di cui potresti aver bisogno.

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

Compila e Installa Rsyslog :

Per ulteriori informazioni sulle opzioni disponibili in Rsyslog, puoi eseguire ./configure –help

Il seguente comando abilita la maggior parte delle funzionalità di rsyslog come Compressione, Multithreading, MySql, SNMP, Mail, supporto RELP, ecc.

./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

Prepara il database MySQL:

Installare mySQL è obbligatorio se desideri salvare i record syslog nel database, altrimenti salta questa parte

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;

Configura lo script di avvio

vi /etc/init.d/rsyslog

#!/bin/bash
#
# rsyslog        Avvia rsyslogd/rklogd.
#
#
# chkconfig: - 12 88
# description: Syslog è la struttura tramite la quale molti demoni utilizzano per registrare 
# messaggi in vari file di log di sistema. È una buona idea eseguire sempre 
# 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: Demoni di registrazione del sistema migliorati e di trappola dei messaggi del kernel
# Description: Rsyslog è un syslogd multi-threaded migliorato che supporta, 
#              tra le altre cose, MySQL, syslog/tcp, RFC 3195, liste di 
#              mittenti autorizzati, filtraggio su qualsiasi parte del messaggio e controllo fine 
#              del formato di output.
### END INIT INFO

# Libreria di funzioni sorgente.
. /etc/init.d/functions

RETVAL=0

start() {
        [ -x /usr/local/sbin/rsyslogd ] || exit 5
        #[ -x /usr/local/sbin/rklogd ] || exit 5

        # Non avviare rsyslog quando sysklogd è in esecuzione
        if [ -e /var/run/syslogd.pid ] ; then
                echo "$Shut down sysklogd before you run rsyslog";
                exit 1;
        fi

        # Sorgente 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 "$Starting system logger: "
        daemon /usr/local/sbin/rsyslogd $SYSLOGD_OPTIONS
        RETVAL=$?
        echo
        #echo -n "$Starting kernel logger: "
        #daemon rklogd $KLOGD_OPTIONS
        #echo
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/rsyslog
        return $RETVAL
}
stop() {
        #echo -n "$Shutting down kernel logger: "
        #killproc rklogd
        #echo
        echo -n "$Shutting down system logger: "
        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 "Ricaricamento del registratore di sistema..."
    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 "Ricaricamento del registratore del kernel..."
    #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 $?

Nota: assicurati che SYSLOGD_OPTIONS=”-c5” sia impostato!

Configura Syslog e Rsyslog:

service syslog stop
chkconfig syslog off
chmod 755 /etc/init.d/rsyslog
chkconfig –add rsyslog
chkconfig rsyslog on

Lo script di avvio è disponibile per il download su Iran Honeynet Project - Rsyslog

Configurazione di Rsyslog

Alcune configurazioni che delineano le funzionalità sono disponibili sul sito Web Rsyslog.com.

vi /etc/rsyslog.conf

# Moduli di input -----------------------------------Questa riga è un commento
#--------------------------------------------------Questa riga è un commento
$ModLoad impstats.so
$PStatsInterval 300
syslog.info  /var/log/rsyslog-stats
#--------------------------------------------------Questa riga è un commento
$ModLoad immark.so      # fornisce la capacità di messaggio --MARK--
$ModLoad imuxsock.so    # fornisce supporto per la registrazione locale del sistema (tramite il comando logger)
$ModLoad imklog.so      # fornisce supporto per la registrazione del kernel (precedentemente eseguito da rklogd) 
#--------------------------------------------------Questa riga è un commento
$ModLoad imudp.so       # fornisce ricezione syslog UDP
$UDPServerAddress *     # tutte le interfacce locali
$UDPServerRun 514       # avvia il server UDP (ricevitore del server di log)
#--------------------------------------------------Questa riga è un commento
$ModLoad imtcp.so       # fornisce ricezione syslog TCP e GSS-API (se compilato)
$InputTCPServerRun 514  # avvia il server TCP (ricevitore del server di log)
#--------------------------------------------------Questa riga è un commento
$ModLoad imrelp.so      # input RELP
$InputRELPServerRun 20514 # avvia il Protocollo RELP
#--------------------------------------------------Questa riga è un commento
$ModLoad imfile.so      # Input file di testo
$InputFileName /var/log/i-am-a-text-file.log
$InputFileTag my-text-file:
$InputFileStateFile stat-file1
$InputFileSeverity error
$InputFileFacility local7
$InputFilePollInterval 10 # controlla nuove righe ogni 10 secondi
$InputRunFileMonitor
#--------------------------------------------------Questa riga è un commento
#$ModLoad imgssapi.so   # TCP semplice e GSSAPI
#$ModLoad im1395.so     # Messaggi tramite RFC1395

# Moduli di output ----------------------------------Questa riga è un commento
#--------------------------------------------------Questa riga è un commento
$ModLoad omsnmp.so      # Invia trappole SNMP
#$actionsnmptransport udp
#$actionsnmptarget 192.168.x.x
#$actionsnmptargetport 162
#$actionsnmpversion 1
#$actionsnmpcommunity public
#*.* :omsnmp:
#--------------------------------------------------Questa riga è un commento
$ModLoad ommysql.so     # Registra su MySQL
#$ModLoad ompgsql.so    # Registra su PostgreSQL
#--------------------------------------------------Questa riga è un commento
$ModLoad ommail.so      # Invia email
#$ActionMailSMTPServer mail.example.net
#$ActionMailFrom [email protected]
#$ActionMailTo [email protected]
#$ActionMailTo [email protected]
#$template mailSubject,"problema disco su %hostname%"
#$template mailBody,"RSYSLOG Alert\r\nmsg='%msg%'"
#$ActionMailSubject mailSubject
#$ActionExecOnlyOnceEveryInterval 21600
#if $msg contains 'hard disk fatal failure' then :ommail:;mailBody
#--------------------------------------------------Questa riga è un commento
$ModLoad omrelp.so      # Invia a un altro host tramite RELP
#$ModLoad omlibdbi.so   # Registra tramite output DB generico
#$ModLoad omgss.so      # Output abilitato GSS

# Globals -----------------------------------------Questa riga è un commento
$umask 0000
$DirCreateMode 0640
$FileCreateMode 0640
$RepeatedMsgReduction on

$WorkDirectory /var/log/rsyslog  # posizione predefinita per i file di lavoro (spool)
$ActionQueueType LinkedList      # utilizza l'elaborazione asincrona
$ActionQueueFileName queue       # imposta il nome del file, abilita anche la modalità disco
$ActionResumeRetryCount -1       # tentativi infiniti in caso di errore di inserimento
$ActionQueueSaveOnShutdown on    # salva i dati in memoria se rsyslog si arresta
$MainMsgQueueMaxFileSize 100M  
$ActionQueueMaxFileSize 5M     

#--------------------------------------------------Questa riga è un commento
# Di seguito trovi alcuni esempi di cosa può fare un template. Buon
# divertimento a scoprire cosa fanno [o semplicemente eseguili] ;)

# Un template che assomiglia all'output del file syslogd tradizionale:
$template TraditionalFormat,"%timegenerated% %HOSTNAME% %syslogtag%%msg:::drop-last-lf%\n"

# un template utile per il debug dei problemi di formato
template DEBUG,"Debug line with all properties:\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 template che assomiglia al formato RFC 3164 on-the-wire:
# (sì, NON c'è spazio tra syslogtag e msg! è importante!)
$template RFC3164fmt,"<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag%%msg%"

# un template che assomiglia al formato tradizionale del messaggio di wall:
$template wallmsg,"\r\n\7Messaggio da syslogd@%HOSTNAME% alle %timegenerated% ...\r\n %syslogtag%%msg%\n\r"

# Il template di seguito emula il formato winsyslog, ma dobbiamo controllare i timestamp
# utilizzati. per ora, è abbastanza buono ;) Questo formato funziona meglio con
# altri membri della famiglia di prodotti MonitorWare. È anche un buon esempio
# dove puoi vedere il sostituto delle proprietà in azione.
$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 template utilizzato per la scrittura nel database (nota che *è* un vero
# sql-statement):
$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%"

# Le righe di selezione sono leggermente diverse da syslogd standard. Con
# rsyslog, puoi aggiungere un punto e virgola ";" dopo il target e poi
# il nome del template. Questo assegnerà questo template all'azione rispettiva.
# Se non viene fornito un nome di template, viene utilizzato un template hardcoded.
# Se viene fornito un nome di template, ma il template non è stato definito, la
# riga di selezione viene DISATTIVATA.
#--------------------------------------------------------------------

#--------------------------------------------------Questa riga è un commento
# Inoltra tramite TCP con compressione massima:
#$AllowedSender TCP, 127.0.0.1, 192.0.2.0/24, [::1]/128, *.example.net, somehost.example.com
#*.*       @@(z9)192.168.x.x:514
# Inoltra tramite UDP con compressione massima:
#$AllowedSender UDP, 127.0.0.1, 192.0.2.0/24, [::1]/128, *.example.net, somehost.example.com
#*.*       @(z9)192.168.x.x:514
# Inoltra tramite Protocollo RELP :
#*.*      :omrelp:192.168.2.4:20514;TraditionalFormat      
# Memorizza tutti i file di log nel DB MySQL  :
#*.*       :ommysql:127.0.0.1,Syslog,rsyslog,your-mysql-password
#--------------------------------------------------Questa riga è un commento


#--------------------------------------------------Questa riga è un commento
# Registra tutti i messaggi del kernel sulla console.
# Registrare molto altro ingombra lo schermo.
#kern.*                                                 /dev/console;TraditionalFileFormat

# Registra qualsiasi cosa (eccetto la posta) di livello info o superiore.
# Non registrare messaggi di autenticazione privati!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# Il file authpriv ha accesso ristretto.
authpriv.*                                              /var/log/secure

# Registra tutti i messaggi di posta in un unico posto.
mail.*                                                  -/var/log/maillog

# Registra le cose cron
cron.*                                                  /var/log/cron

# Tutti ricevono messaggi di emergenza
*.emerg                                                 *

# Salva errori di notizie di livello critico e superiore in un file speciale.
uucp,news.crit                                          /var/log/spooler

# Salva i messaggi di avvio anche in boot.log
local7.*                                                /var/log/boot.log

#--------------------------------------------------Questa riga è un commento
$IncludeConfig /etc/rsyslog.d/*.conf

#--------------------------------------------------Questa riga è un commento
#if message contains 'network error' then run the restart-network.sh shell script!!!
#:msg, contains, "network error" ^/root/restart-network.sh

Nota Importante: Per ulteriori informazioni, controlla Rsyslog.com

Il file di configurazione di Rsyslog è disponibile per il download su Iran Honeynet Project - Rsyslog

Avvia Rsyslog

chmod 640 /etc/rsyslog.conf
service rsyslog start
tail -f /var/log/messages

Testa Rsyslog

logger “questo è un messaggio di test”
logger -p local0.info -t testtag “questo è un messaggio di test”

Link

Iran Honeynet Project: http://www.honeynet.ir/
Rsyslog Project: http://www.rsyslog.com/
CentOS: http://www.centos.org/

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.