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/
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.