Rsyslog instalación · 9 min read · Oct 17, 2025
Instalación de Rsyslog 5.7.x con todas las funciones en CentOS 5.x
Instalación de Rsyslog 5.7.x con todas las funciones en CentOS 5.x
Este tutorial muestra cómo puedes instalar la nueva generación de servidores syslog utilizando Rsyslog. Según el sitio web de Rsyslog (www.rsyslog.com), Rsyslog es un syslogd mejorado que soporta, entre otros, MySQL, PostgreSQL, destinos de registro de failover, syslog/tcp, control de formato de salida de grano fino, marcas de tiempo de alta precisión, operaciones en cola y la capacidad de filtrar en cualquier parte del mensaje. Es bastante compatible con el sysklogd estándar y puede ser utilizado como un reemplazo directo. Sus características avanzadas lo hacen adecuado para cadenas de retransmisión syslog protegidas por cifrado de clase empresarial, al mismo tiempo que es muy fácil de configurar para el usuario novato.
Objetivos
Este tutorial muestra cómo puedes compilar e instalar Rsyslog 5.7.9 con todas las funciones en un servidor CentOS 5.5. ¡No garantizo que esto funcione para ti!
Pre-Instalación
Primero necesitamos instalar los siguientes paquetes:
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
Descargar paquete adicional:
librelp (Biblioteca de Protocolo de Registro de Eventos Confiable) es una biblioteca fácil de usar para el protocolo RELP. RELP, a su vez, proporciona registro de eventos confiable a través de la red. RELP (y por lo tanto) librelp asegura que ningún mensaje se pierda, ni siquiera cuando las conexiones se rompen y un par se vuelve no disponible. Ten en cuenta que RELP es un protocolo de registro de propósito general y extensible. Aunque fue diseñado para resolver la necesidad urgente de comunicación rsyslog-a-rsyslog, RELP soporta muchas más aplicaciones.
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
Descargar paquete Rsyslog:
En el momento de escribir este tutorial, considero que rsyslog 5.7.9 es la mejor versión de Rsyslog que soporta la mayoría de las buenas características que podrías necesitar.
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
Compilar e Instalar Rsyslog:
Para más información sobre las opciones disponibles en Rsyslog, puedes ejecutar ./configure –help
El siguiente comando habilita la mayoría de las características de rsyslog como Compresión, Multihilo, MySql, SNMP, Correo, soporte 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
Preparar base de datos MySQL:
Instalar mySQL es obligatorio si deseas guardar registros syslog en la base de datos, de lo contrario, omite esta parte
mysql -u root -p < plugins/ommysql/createDB.sql
mysql -u root -p mysql
GRANT ALL ON Syslog.* TO rsyslog@localhost IDENTIFIED BY ‘tu-contraseña-mysql’;
flush privileges;
Configurar script de inicio
vi /etc/init.d/rsyslog
#!/bin/bash
#
# rsyslog Inicia rsyslogd/rklogd.
#
#
# chkconfig: - 12 88
# description: Syslog es la instalación por la cual muchos demonios utilizan para registrar
# mensajes en varios archivos de registro del sistema. Es una buena idea siempre
# ejecutar 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: Demonios de registro del sistema mejorados y captura de mensajes del núcleo
# Description: Rsyslog es un syslogd mejorado y multihilo que soporta,
# entre otros, MySQL, syslog/tcp, RFC 3195, listas de
# remitentes permitidos, filtrado en cualquier parte del mensaje, y un control de
# formato de salida de grano fino.
### END INIT INFO
# Fuente de la biblioteca de funciones.
. /etc/init.d/functions
RETVAL=0
start() {
[ -x /usr/local/sbin/rsyslogd ] || exit 5
#[ -x /usr/local/sbin/rklogd ] || exit 5
# No iniciar rsyslog cuando sysklogd está en ejecución
if [ -e /var/run/syslogd.pid ] ; then
echo "$"Shut down sysklogd before you run rsyslog";
exit 1;
fi
# Fuente de configuración
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 "Reloading system logger..."
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 "Reloading kernel logger..."
#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: ¡asegúrate de que SYSLOGD_OPTIONS=”-c5” esté configurado!
Configurar Syslog y Rsyslog:
service syslog stop
chkconfig syslog off
chmod 755 /etc/init.d/rsyslog
chkconfig –add rsyslog
chkconfig rsyslog on
El script de inicio está disponible para descargar en el Proyecto Honeynet de Irán - Rsyslog
Configuración de Rsyslog
Algunas configuraciones que describen características están disponibles en el sitio web Rsyslog.com.
vi /etc/rsyslog.conf
# Módulos de Entrada -----------------------------------Esta línea es un comentario
#--------------------------------------------------Esta línea es un comentario
$ModLoad impstats.so
$PStatsInterval 300
syslog.info /var/log/rsyslog-stats
#--------------------------------------------------Esta línea es un comentario
$ModLoad immark.so # proporciona capacidad de mensaje --MARK--
$ModLoad imuxsock.so # proporciona soporte para registro del sistema local (a través del comando logger)
$ModLoad imklog.so # proporciona soporte para registro del núcleo (anteriormente hecho por rklogd)
#--------------------------------------------------Esta línea es un comentario
$ModLoad imudp.so # proporciona recepción de syslog UDP
$UDPServerAddress * # todas las interfaces locales
$UDPServerRun 514 # iniciar servidor UDP (receptor de registro)
#--------------------------------------------------Esta línea es un comentario
$ModLoad imtcp.so # proporciona recepción de syslog TCP y GSS-API (si se compila)
$InputTCPServerRun 514 # iniciar servidor TCP (receptor de registro)
#--------------------------------------------------Esta línea es un comentario
$ModLoad imrelp.so # entrada RELP
$InputRELPServerRun 20514 # iniciar Protocolo RELP
#--------------------------------------------------Esta línea es un comentario
$ModLoad imfile.so # Entrada de archivo de texto
$InputFileName /var/log/i-am-a-text-file.log
$InputFileTag my-text-file:
$InputFileStateFile stat-file1
$InputFileSeverity error
$InputFileFacility local7
$InputFilePollInterval 10 # comprobar nuevas líneas cada 10 segundos
$InputRunFileMonitor
#--------------------------------------------------Esta línea es un comentario
#$ModLoad imgssapi.so # TCP simple y GSSAPI
#$ModLoad im1395.so # Mensajes a través de RFC1395
# Módulos de Salida ----------------------------------Esta línea es un comentario
#--------------------------------------------------Esta línea es un comentario
$ModLoad omsnmp.so # Enviar trampas SNMP
#$actionsnmptransport udp
#$actionsnmptarget 192.168.x.x
#$actionsnmptargetport 162
#$actionsnmpversion 1
#$actionsnmpcommunity public
#*.* :omsnmp:
#--------------------------------------------------Esta línea es un comentario
$ModLoad ommysql.so # Registrar en MySQL
#$ModLoad ompgsql.so # Registrar en PostgreSQL
#--------------------------------------------------Esta línea es un comentario
$ModLoad ommail.so # Enviar correo
#$ActionMailSMTPServer mail.example.net
#$ActionMailFrom [email protected]
#$ActionMailTo [email protected]
#$ActionMailTo [email protected]
#$template mailSubject,"disk problem on %hostname%"
#$template mailBody,"RSYSLOG Alert\r\nmsg='%msg%'"
#$ActionMailSubject mailSubject
#$ActionExecOnlyOnceEveryInterval 21600
#if $msg contains 'hard disk fatal failure' then :ommail:;mailBody
#--------------------------------------------------Esta línea es un comentario
$ModLoad omrelp.so # Enviar a otro host a través de RELP
#$ModLoad omlibdbi.so # Registrar a través de salida de DB genérica
#$ModLoad omgss.so # Salida habilitada para GSS
# Globals -----------------------------------------Esta línea es un comentario
$umask 0000
$DirCreateMode 0640
$FileCreateMode 0640
$RepeatedMsgReduction on
$WorkDirectory /var/log/rsyslog # ubicación predeterminada para archivos de trabajo (spool)
$ActionQueueType LinkedList # usar procesamiento asíncrono
$ActionQueueFileName queue # establecer nombre de archivo, también habilita modo disco
$ActionResumeRetryCount -1 # reintentos infinitos en caso de fallo de inserción
$ActionQueueSaveOnShutdown on # guardar datos en memoria si rsyslog se apaga
$MainMsgQueueMaxFileSize 100M
$ActionQueueMaxFileSize 5M
#--------------------------------------------------Esta línea es un comentario
# A continuación, encuentra algunos ejemplos de lo que puede hacer una plantilla. Diviértete
# descubriendo lo que hacen [o simplemente ejecutándolas] ;)
# Una plantilla que se asemeja a la salida de archivo tradicional de syslogd:
$template TraditionalFormat,"%timegenerated% %HOSTNAME% %syslogtag%%msg:::drop-last-lf%\n"
# una plantilla útil para depurar problemas de 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"
# Una plantilla que se asemeja al formato en línea de RFC 3164:
# (sí, ¡no hay espacio entre syslogtag y msg! ¡eso es importante!)
$template RFC3164fmt,"<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag%%msg%"
# una plantilla que se asemeja al formato de mensaje de pared tradicional:
$template wallmsg,"\r\n\7Message from syslogd@%HOSTNAME% at %timegenerated% ...\r\n %syslogtag%%msg%\n\r"
# La plantilla a continuación emula el formato winsyslog, pero necesitamos verificar los tiempos
# marcas utilizadas. por ahora, es lo suficientemente buena ;) Este formato funciona mejor con
# otros miembros de la familia de productos MonitorWare. También es un buen ejemplo
# donde puedes ver el reemplazo de propiedades en acción.
$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"
# Una plantilla utilizada para escritura en base de datos (ten en cuenta que *es* una
# declaración sql real):
$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%"
# Las líneas de selector son algo diferentes de syslogd estándar. Con
# rsyslog, puedes agregar un punto y coma ";" después del objetivo y luego
# el nombre de la plantilla. Eso asignará esta plantilla a la respectiva
# acción. Si no se da un nombre de plantilla, se utiliza una plantilla codificada.
# Si se da un nombre de plantilla, pero la plantilla no fue definida, la
# línea del selector se DESACTIVA.
#--------------------------------------------------------------------
#--------------------------------------------------Esta línea es un comentario
# Reenviar a través de TCP con compresión máxima:
#$AllowedSender TCP, 127.0.0.1, 192.0.2.0/24, [::1]/128, *.example.net, somehost.example.com
#*.* @@(z9)192.168.x.x:514
# Reenviar a través de UDP con compresión máxima:
#$AllowedSender UDP, 127.0.0.1, 192.0.2.0/24, [::1]/128, *.example.net, somehost.example.com
#*.* @(z9)192.168.x.x:514
# Reenviar a través del Protocolo RELP :
#*.* :omrelp:192.168.2.4:20514;TraditionalFormat
# Almacenar todos los archivos de registro en la base de datos MySQL :
#*.* :ommysql:127.0.0.1,Syslog,rsyslog,tu-contraseña-mysql
#--------------------------------------------------Esta línea es un comentario
#--------------------------------------------------Esta línea es un comentario
# Registrar todos los mensajes del núcleo en la consola.
# Registrar mucho más desordena la pantalla.
#kern.* /dev/console;TraditionalFileFormat
# Registrar cualquier cosa (excepto correo) de nivel info o superior.
# ¡No registrar mensajes de autenticación privados!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# El archivo authpriv tiene acceso restringido.
authpriv.* /var/log/secure
# Registrar todos los mensajes de correo en un solo lugar.
mail.* -/var/log/maillog
# Registrar cosas de cron
cron.* /var/log/cron
# Todos reciben mensajes de emergencia
*.emerg *
# Guardar errores de noticias de nivel crit y superior en un archivo especial.
uucp,news.crit /var/log/spooler
# Guardar mensajes de arranque también en boot.log
local7.* /var/log/boot.log
#--------------------------------------------------Esta línea es un comentario
$IncludeConfig /etc/rsyslog.d/*.conf
#--------------------------------------------------Esta línea es un comentario
#if message contains 'network error' then run the restart-network.sh shell script!!!
#:msg, contains, "network error" ^/root/restart-network.shNota importante: Para más información, consulta Rsyslog.com
El archivo de configuración de Rsyslog está disponible para descargar en el Proyecto Honeynet de Irán - Rsyslog
Iniciar Rsyslog
chmod 640 /etc/rsyslog.conf
service rsyslog start
tail -f /var/log/messages
Probar Rsyslog
logger “este es un mensaje de prueba”
logger -p local0.info -t testtag “este es un mensaje de prueba”
Enlaces
Proyecto Honeynet de Irán: http://www.honeynet.ir/
Proyecto Rsyslog: http://www.rsyslog.com/
CentOS: http://www.centos.org/
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.