rss logo

Configurer un serveur Rsyslog sous Debian pour des switchs Cisco

Logo Rsyslog

Introduction

J’ai récemment eu besoin de mettre en place un serveur Rsyslog afin de centraliser les journaux de plusieurs switchs Cisco.

Dans ce guide, je vais vous montrer comment configurer Rsyslog sous Debian pour recevoir et enregistrer les messages Syslog envoyés par des commutateurs réseau Cisco.

Schéma réseau

Tous les switchs Cisco enverront leurs messages Syslog au serveur Debian.

Dans cette configuration, les switchs transmettent leurs journaux au serveur Rsyslog en UDP, via le port Syslog standard 514.

Schéma réseau montrant un serveur Rsyslog sous Debian collectant les messages Syslog de trois switchs Cisco via le port UDP 514.
Serveur Rsyslog sous Debian centralisant les messages Syslog de plusieurs switchs Cisco via le port UDP 514.

Configuration des switchs Cisco

  • Configurez les paramètres réseau du switch Cisco :

💡 Note: Je configure également la passerelle par défaut et les paramètres DNS afin que le switch puisse accéder à des services externes, comme un serveur NTP. Vous pouvez consulter ce guide pour apprendre à configurer NTP. Une synchronisation précise de l'heure est recommandée afin que les messages Syslog soient correctement horodatés.

Switch# conf t
Switch(config)# ip name-server 86.54.11.100
Switch(config)# ip domain lookup
Switch(config)# interface vlan1
Switch(config-if)# ip address 10.0.0.1 255.255.255.0
Switch(config-if)# no ip address dhcp
Switch(config-if)# ip default-gateway 10.0.0.254
  • Définissez le serveur Rsyslog distant comme destination Syslog :
Switch(config)# logging host 10.0.0.200 port 514

Serveur Debian

Commencez par installer un serveur Debian qui fera office de serveur Rsyslog central. Vous pourrez ensuite installer et configurer Rsyslog afin de recevoir les journaux des switchs Cisco.

Installation et configuration de Rsyslog

  • Installez le paquet rsyslog :
root@host:~# apt update && apt install rsyslog
  • Modifiez le fichier /etc/rsyslog.conf :
# /etc/rsyslog.conf configuration file for rsyslog
#
# For more information install rsyslog-doc and see
# /usr/share/doc/rsyslog-doc/html/configuration/index.html


#################
#### MODULES ####
#################

module(load="imuxsock") # provides support for local system logging
module(load="imklog")   # provides kernel logging support
#module(load="immark")  # provides --MARK-- message capability

# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# Allow syslog from localhost and the 10.0.0.0/24 network only
$AllowedSender UDP, 127.0.0.1, 10.0.0.0/24
# On newer Rsyslog versions (rsyslog >= 8.2608.0) AllowedSender can be configured
# directly as an imudp module/input parameter.
# module(load="imudp" allowedSender=["10.0.0.0/24"])
# OLD version of rsyslog :
# $UDPServerRun 514

# provides TCP syslog reception
#module(load="imtcp")
#input(type="imtcp" port="514")
#$InputTCPServerRun 514

###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Set the default permissions for all log files.
#
$FileOwner root
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022

#
# Where to place spool and state files
#
$WorkDirectory /var/spool/rsyslog

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf

# template
# OLD version of rsyslog :
#$template Incoming-logs,"/var/log/%HOSTNAME%/logging.log"
# NEW version of rsyslog :
template(
    name="Incoming-logs"
    type="string"
    string="/var/log/%HOSTNAME%/logging.log"
)

###############
#### RULES ####
###############

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*			/var/log/auth.log
*.*;auth,authpriv.none		-/var/log/syslog
#cron.*				/var/log/cron.log
daemon.*			-/var/log/daemon.log
kern.*				-/var/log/kern.log
lpr.*				-/var/log/lpr.log
mail.*				-/var/log/mail.log
user.*				-/var/log/user.log
local7.*				-/var/log/cisco.log # store all local7 messages in this file
*.*  ?Incoming-logs # store logs in separate directories by hostname

#
# Logging for the mail system.  Split it up so that
# it is easy to write scripts to parse these files.
#
mail.info			-/var/log/mail.info
mail.warn			-/var/log/mail.warn
mail.err			/var/log/mail.err

#
# Some "catch-all" log files.
#
*.=debug;\
	auth,authpriv.none;\
	news.none;mail.none	-/var/log/debug
*.=info;*.=notice;*.=warn;\
	auth,authpriv.none;\
	cron,daemon.none;\
	mail,news.none		-/var/log/messages

#
# Emergencies are sent to everybody logged in.
#
*.emerg				:omusrmsg:*
  • Vérifiez que la configuration de Rsyslog ne contient aucune erreur de syntaxe à l’aide de la commande rsyslogd :
root@host:~# rsyslogd -N1
rsyslogd: version 8.2504.0, config validation run (level 1), master config /etc/rsyslog.conf
rsyslogd: End of config validation run. Bye.
  • Si aucune erreur de configuration n’est signalée, redémarrez le service Rsyslog :
root@host:~# systemctl restart rsyslog.service

Vérification des journaux reçus

  • Après quelques secondes, les messages Syslog envoyés par les switchs Cisco devraient apparaître dans les fichiers journaux configurés :
root@host:~# cat /var/log/cisco.log
Dec 25 16:25:03 10.0.0.2 %PNPAGENT-I-PNPSRVRDETECT: PnP Server devicehelper.cisco.com was detected  
Dec 25 16:25:06 10.0.0.2 %PNPAGENT-I-RESPSUCCESS: PnP Response Success  
Dec 25 16:25:22 10.0.0.2 %PNPAGENT-I-PNPSRVRDETECT: PnP Server devicehelper.cisco.com was detected  
Dec 25 16:25:23 10.0.0.1 %PNPAGENT-I-PNPSRVRDETECT: PnP Server devicehelper.cisco.com was detected

💡 Remarque : Rsyslog enregistre les messages reçus dans des répertoires distincts selon le nom d’hôte de l’émetteur. Celui-ci peut apparaître sous la forme de l’adresse IP de l’équipement, selon le contenu du message Syslog reçu.

root@host:~# cat /var/log/10.0.0.1/logging.log
Dec 25 16:25:23 10.0.0.1 %PNPAGENT-I-PNPSRVRDETECT: PnP Server devicehelper.cisco.com was detected

Références