Rsyslog Installation · 8 min read · Oct 17, 2025

Installation von voll funktionsfähigem Rsyslog 5.7.x auf CentOS 5.x

Installation von voll funktionsfähigem Rsyslog 5.7.x auf CentOS 5.x

Dieses Tutorial zeigt, wie Sie die neue Generation von Syslog-Servern mit Rsyslog installieren können. Laut der Rsyslog-Website (www.rsyslog.com) ist Rsyslog ein verbessertes syslogd, das unter anderem MySQL, PostgreSQL, Failover-Protokolle, syslog/tcp, feine Ausgabeformatkontrolle, hochpräzise Zeitstempel, warteschlangenbasierte Operationen und die Möglichkeit zur Filterung nach jedem Nachrichtenbestandteil unterstützt. Es ist ziemlich kompatibel mit dem Standard-sysklogd und kann als Drop-in-Ersatz verwendet werden. Seine erweiterten Funktionen machen es geeignet für unternehmensklassige, verschlüsselte Syslog-Relay-Ketten, während es gleichzeitig sehr einfach für den Anfänger einzurichten ist.

Ziele

Dieses Tutorial zeigt, wie Sie Rsyslog 5.7.9 mit vollem Funktionsumfang auf einem CentOS 5.5-Server kompilieren und installieren können. Ich gebe keine Garantie, dass dies bei Ihnen funktioniert!

Vorinstallation

Zuerst müssen wir die folgenden Pakete installieren:

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

Zusätzliches Paket herunterladen:

librelp (Reliable Event Logging Protocol Library) ist eine einfach zu verwendende Bibliothek für das RELP-Protokoll. RELP bietet zuverlässiges Ereignisprotokollieren über das Netzwerk. RELP (und damit) librelp stellt sicher, dass keine Nachricht verloren geht, selbst wenn Verbindungen abbrechen und ein Peer nicht mehr verfügbar ist. Bitte beachten Sie, dass RELP ein allgemeines, erweiterbares Protokoll zum Protokollieren ist. Obwohl es entwickelt wurde, um den dringenden Bedarf an rsyslog-to-rsyslog-Kommunikation zu lösen, unterstützt RELP viele weitere Anwendungen.

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

Rsyslog-Paket herunterladen:

Zum Zeitpunkt des Schreibens dieses Tutorials finde ich, dass rsyslog 5.7.9 die beste Version von Rsyslog ist, die die meisten der guten Funktionen unterstützt, die Sie benötigen könnten.

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

Rsyslog kompilieren und installieren:

Für weitere Informationen zu den in Rsyslog verfügbaren Optionen können Sie ./configure –help ausführen.

Der folgende Befehl aktiviert die meisten Rsyslog-Funktionen wie Kompression, Multithreading, MySQL, SNMP, Mail, RELP-Unterstützung usw.

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

MySQL-Datenbank vorbereiten:

Die Installation von MySQL ist obligatorisch, wenn Sie Syslog-Datensätze in der Datenbank speichern möchten, andernfalls überspringen Sie diesen Teil.

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;

Init-Skript konfigurieren

vi /etc/init.d/rsyslog

#!/bin/bash
#
# rsyslog        Startet rsyslogd/rklogd.
#
#
# chkconfig: - 12 88
# description: Syslog ist die Einrichtung, die viele Daemons verwenden, um 
# Nachrichten in verschiedene Systemprotokolldateien zu protokollieren. Es ist eine gute Idee, immer 
# rsyslog auszuführen.
### 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: Verbesserte Systemprotokollierung und Kernel-Nachrichten-Trapping-Daemons
# Description: Rsyslog ist ein verbessertes, mehrstufiges syslogd, das unter anderem 
# MySQL, syslog/tcp, RFC 3195, erlaubte 
# Senderlisten, Filterung nach jedem Nachrichtenbestandteil und feine 
# Ausgabeformatkontrolle unterstützt.
### END INIT INFO

# Quellfunktion Bibliothek.
. /etc/init.d/functions

RETVAL=0

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

        # Starten Sie rsyslog nicht, wenn sysklogd läuft
        if [ -e /var/run/syslogd.pid ] ; then
                echo "$"Shut down sysklogd before you run rsyslog";
                exit 1;
        fi

        # Konfiguration laden
        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 $?

Hinweis: Stellen Sie sicher, dass SYSLOGD_OPTIONS=”-c5” gesetzt ist!

Syslog und Rsyslog konfigurieren:

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

Das Init-Skript ist zum Download auf dem Iran Honeynet Project - Rsyslog verfügbar.

Rsyslog-Konfiguration

Einige Konfigurationen, die Funktionen umreißen, sind auf der Rsyslog.com-Website verfügbar.

vi /etc/rsyslog.conf

# Eingabemodule -----------------------------------Diese Zeile ist ein Kommentar
#--------------------------------------------------Diese Zeile ist ein Kommentar
$ModLoad impstats.so
$PStatsInterval 300
syslog.info  /var/log/rsyslog-stats
#--------------------------------------------------Diese Zeile ist ein Kommentar
$ModLoad immark.so      # bietet --MARK-- Nachrichtenfähigkeit
$ModLoad imuxsock.so    # bietet Unterstützung für lokale Systemprotokollierung (über den Logger-Befehl)
$ModLoad imklog.so      # bietet Unterstützung für Kernelprotokollierung (früher von rklogd durchgeführt)
#--------------------------------------------------Diese Zeile ist ein Kommentar
$ModLoad imudp.so       # bietet UDP-Syslog-Empfang
$UDPServerAddress *     # alle lokalen Schnittstellen
$UDPServerRun 514       # UDP-Server starten (Protokollserverempfänger)
#--------------------------------------------------Diese Zeile ist ein Kommentar
$ModLoad imtcp.so       # bietet TCP-Syslog-Empfang und GSS-API (wenn kompiliert)
$InputTCPServerRun 514  # TCP-Server starten (Protokollserverempfänger)
#--------------------------------------------------Diese Zeile ist ein Kommentar
$ModLoad imrelp.so      # RELP-Eingang
$InputRELPServerRun 20514 # RELP-Protokoll starten
#--------------------------------------------------Diese Zeile ist ein Kommentar
$ModLoad imfile.so      # Textdateieingang
$InputFileName /var/log/i-am-a-text-file.log
$InputFileTag my-text-file:
$InputFileStateFile stat-file1
$InputFileSeverity error
$InputFileFacility local7
$InputFilePollInterval 10 # alle 10 Sekunden nach neuen Zeilen suchen
$InputRunFileMonitor
#--------------------------------------------------Diese Zeile ist ein Kommentar
#$ModLoad imgssapi.so   # Einfaches TCP und GSSAPI
#$ModLoad im1395.so     # Nachrichten über RFC1395

# Ausgabemodule ----------------------------------Diese Zeile ist ein Kommentar
#--------------------------------------------------Diese Zeile ist ein Kommentar
$ModLoad omsnmp.so      # SNMP-Traps senden
#$actionsnmptransport udp
#$actionsnmptarget 192.168.x.x
#$actionsnmptargetport 162
#$actionsnmpversion 1
#$actionsnmpcommunity public
#*.* :omsnmp:
#--------------------------------------------------Diese Zeile ist ein Kommentar
$ModLoad ommysql.so     # In MySQL protokollieren
#$ModLoad ompgsql.so    # In PostgreSQL protokollieren
#--------------------------------------------------Diese Zeile ist ein Kommentar
$ModLoad ommail.so      # E-Mail senden
#$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
#--------------------------------------------------Diese Zeile ist ein Kommentar
$ModLoad omrelp.so      # An einen anderen Host über RELP senden
#$ModLoad omlibdbi.so   # Protokoll über generische DB-Ausgabe
#$ModLoad omgss.so      # GSS-aktivierte Ausgabe

# Globals -----------------------------------------Diese Zeile ist ein Kommentar
$umask 0000
$DirCreateMode 0640
$FileCreateMode 0640
$RepeatedMsgReduction on

$WorkDirectory /var/log/rsyslog  # Standardstandort für Arbeits- (Spool-)Dateien
$ActionQueueType LinkedList      # asynchrone Verarbeitung verwenden
$ActionQueueFileName queue       # Dateinamen festlegen, aktiviert auch den Festplattmodus
$ActionResumeRetryCount -1       # unendliche Wiederholungen bei Einfügefehlern
$ActionQueueSaveOnShutdown on    # speichert die im Speicher befindlichen Daten, wenn rsyslog heruntergefahren wird
$MainMsgQueueMaxFileSize 100M  
$ActionQueueMaxFileSize 5M     

#--------------------------------------------------Diese Zeile ist ein Kommentar
# Unten finden Sie einige Beispiele dafür, was eine Vorlage tun kann. Viel Spaß beim Entdecken, was sie tun [oder sie einfach tun] ;)

# Eine Vorlage, die dem traditionellen syslogd-Dateiausgang ähnelt:
$template TraditionalFormat,"%timegenerated% %HOSTNAME% %syslogtag%%msg:::drop-last-lf%\n"

# eine Vorlage, die nützlich ist, um Formatprobleme zu debuggen
$template DEBUG,"Debug-Zeile mit allen Eigenschaften:\nFROMHOST: '%FROMHOST%', HOSTNAME: '%HOSTNAME%', PRI: %PRI%,\nsyslogtag '%syslogtag%', programname: '%programname%', APP-NAME: '%APP-NAME%', PROCID: '%PROCID%', MSGID: '%MSGID%',\nTIMESTAMP: '%TIMESTAMP%', STRUKTURIERTE-DATEN: '%STRUCTURED-DATA%',\nmsg: '%msg%\nescaped msg: '%msg:::drop-cc%'\nrawmsg: '%rawmsg%'\n\n"

# Eine Vorlage, die dem RFC 3164-Format über das Netzwerk ähnelt:
# (ja, es gibt keinen Abstand zwischen syslogtag und msg! Das ist wichtig!)
$template RFC3164fmt,"<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag%%msg%"

# eine Vorlage, die dem traditionellen Wandnachrichtenformat ähnelt:
$template wallmsg,"\r\n\7Nachricht von syslogd@%HOSTNAME% um %timegenerated% ...\r\n %syslogtag%%msg%\n\r"

# Die folgende Vorlage emuliert das winsyslog-Format, aber wir müssen die Zeit überprüfen
# Stempel, die verwendet werden. Für jetzt ist es gut genug ;) Dieses Format funktioniert am besten mit
# anderen Mitgliedern der MonitorWare-Produktfamilie. Es ist auch ein gutes Beispiel,
# wo Sie den Eigenschaftsersatz in Aktion sehen können.
$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"

# Eine Vorlage, die zum Schreiben in die Datenbank verwendet wird (beachten Sie, dass es sich *um* eine tatsächliche
# sql-Anweisung handelt):
$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%\n"

$template ForwardFormat,"<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%"

# Selektorzeilen unterscheiden sich etwas von stock syslogd. Mit
# rsyslog können Sie ein Semikolon ";" nach dem Ziel hinzufügen und dann
# den Vorlagennamen. Das weist dieser Vorlage die jeweilige
# Aktion zu. Wenn kein Vorlagenname angegeben ist, wird eine fest codierte Vorlage verwendet.
# Wenn ein Vorlagenname angegeben ist, aber die Vorlage nicht definiert wurde, wird die
# Selektorzeile DEAKTIVIERT.
#--------------------------------------------------------------------

#--------------------------------------------------Diese Zeile ist ein Kommentar
# Weiterleiten über TCP mit maximaler Kompression:
#$AllowedSender TCP, 127.0.0.1, 192.0.2.0/24, [::1]/128, *.example.net, somehost.example.com
#*.*       @@(z9)192.168.x.x:514
# Weiterleiten über UDP mit maximaler Kompression:
#$AllowedSender UDP, 127.0.0.1, 192.0.2.0/24, [::1]/128, *.example.net, somehost.example.com
#*.*       @(z9)192.168.x.x:514
# Weiterleiten über RELP-Protokoll:
#*.*      :omrelp:192.168.2.4:20514;TraditionalFormat      
# Alle Protokolldateien in MySQL DB speichern:
#*.*       :ommysql:127.0.0.1,Syslog,rsyslog,your-mysql-password
#--------------------------------------------------Diese Zeile ist ein Kommentar


#--------------------------------------------------Diese Zeile ist ein Kommentar
# Protokollieren Sie alle Kernel-Nachrichten in die Konsole.
# Zu viel anderes Protokollieren verstopft den Bildschirm.
#kern.*                                                 /dev/console;TraditionalFileFormat

# Protokollieren Sie alles (außer Mail) der Stufe info oder höher.
# Protokollieren Sie keine privaten Authentifizierungsnachrichten!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# Die authpriv-Datei hat eingeschränkten Zugriff.
authpriv.*                                              /var/log/secure

# Protokollieren Sie alle E-Mail-Nachrichten an einem Ort.
mail.*                                                  -/var/log/maillog

# Protokollieren Sie Cron-Zeug
cron.*                                                  /var/log/cron

# Jeder erhält Notfallnachrichten
*.emerg                                                 *

# Speichern Sie Nachrichtenfehler der Stufe crit und höher in einer speziellen Datei.
uucp,news.crit                                          /var/log/spooler

# Speichern Sie Boot-Nachrichten auch in boot.log
local7.*                                                /var/log/boot.log

#--------------------------------------------------Diese Zeile ist ein Kommentar
$IncludeConfig /etc/rsyslog.d/*.conf

#--------------------------------------------------Diese Zeile ist ein Kommentar
#if message contains 'network error' then run the restart-network.sh shell script!!!
#:msg, contains, "network error" ^/root/restart-network.sh

Wichtiger Hinweis: Für weitere Informationen besuchen Sie bitte Rsyslog.com.

Die Rsyslog-Konfigurationsdatei ist zum Download auf dem Iran Honeynet Project - Rsyslog verfügbar.

Rsyslog starten

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

Rsyslog testen

logger “dies ist eine Testnachricht”
logger -p local0.info -t testtag “dies ist eine Testnachricht”

Links

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

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.