Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
20.5. Configurer rsyslog sur un serveur d'enregistrement
Le service
rsyslog
fournit une installation pour exécuter un serveur d'enregistrement et pour configurer des systèmes individuels pour qu'ils envoient leurs fichiers journaux sur le serveur d'enregistrement. Veuillez consulter Exemple 20.12, « Transférer des messages journaux sur un serveur de manière fiable » pour obtenir des informations sur la configuration rsyslog
du client.
Le service
rsyslog
doit être installé sur le système que vous comptiez utiliser en tant que serveur d'enregistrement et sur tous les systèmes qui seront configurés pour y envoyer leurs journaux. Rsyslog est installé par défaut sur Red Hat Enterprise Linux 7. Si requis, pour vous assurer que c'est bien le cas, veuillez saisir la commande suivante en tant qu'utilisateur root
:
~]# yum install rsyslog
Le protocole et le port par défaut du trafic syslog est
UDP
et 514
, comme indiqué dans le fichier /etc/services
. Cependant, rsyslog
utilise par défaut TCP
sur le port 514
. Dans le fichier de configuration, /etc/rsyslog.conf
, TCP
est indiqué par @@
.
D'autres ports sont parfois utilisés en exemples, mais SELinux n'est configuré que pour permettre d'envoyer ou de recevoir sur les ports par défaut suivants :
~]# semanage port -l | grep syslog
syslogd_port_t tcp 6514, 601
syslogd_port_t udp 514, 6514, 601
L'utilitaire semanage
est fourni dans le cadre du paquet policycoreutils-python. Si nécessaire, installez le package comme suit :
~]# yum install policycoreutils-python
De plus, le type SELinux de
rsyslog
, rsyslogd_t
par défaut est configuré de façon à permettre d'envoyer et de recevoir dans le port de shell distant (rsh
) ayant comme type de SELinux rsh_port_t
, avec par défaut TCP
sur le port 514
. De ce fait, vous n'avez pas besoin d'utiliser semanage
pour permettre explicitement TCP
sur le port 514
. Ainsi, pour vérifier ce sur quoi SELinux est défini pour autoriser l'accès au port 514
, saisir la commande suivante :
~]# semanage port -l | grep 514
sortie omise
rsh_port_t tcp 514
syslogd_port_t tcp 6514, 601
syslogd_port_t udp 514, 6514, 601
Pour obtenir plus d'informations sur SELinux, voir Red Hat Enterprise Linux 7 SELinux User's and Administrator's Guide.
Effectuez les étapes décrites dans cette procédure dans le système que vous comptez utiliser comme serveur de journalisation. Toutes les étapes de cette procédure doivent être effectuées en tant qu'utilisateur
root
:
Procédure 20.4. Configurez SELinux pour autoriser le trafic rsyslog sur un port
Si vous avez besoin d'utiliser un nouveau port pour le trafic
rsyslog
, suivez cette procédure sur le serveur de journalisation et sur les clients. Ainsi, pour recevoir et envoyer le trafic TCP
sur le port 10514
, procédez ainsi :
~]#
semanage port -a -t syslogd_port_t -p tcp 10514
- Vérifiez les ports SELinux en saisissant la commande suivante :
~]#
semanage port -l | grep syslog
- Si le nouveau port était déjà configuré dans
/etc/rsyslog.conf
, redémarrezrsyslog
maintenant pour que le changement puisse avoir lieu :~]#
service rsyslog restart
- Vérifiez sur quels ports
rsyslog
écoute :~]#
netstat -tnlp | grep rsyslog
tcp 0 0 0.0.0.0:10514 0.0.0.0:* LISTEN 2528/rsyslogd tcp 0 0 :::10514 :::* LISTEN 2528/rsyslogd
Voir la page man de
semanage-port(8)
pour obtenir plus d'informations sur la commande semanage port
.
Procédure 20.5. Configurer firewalld
Configurer
firewalld
pour autoriser le trafic rsyslog
. Ainsi, pour autoriser le trafic TCP
sur le port 10514
, procédez ainsi :
~]#
firewall-cmd --zone=zone --add-port=10514/tcp
successQuand zone correspond à la zone d'interface à utiliser. Veuillez noter que ces changements ne persisteront pas lors d'un nouveau démarrage. Pour rendre les changements au parefeu permanents, répétez la commande an ajoutant l'option--permanent
. Pour obtenir davantage d'informations sur l'ouverture et la fermeture des ports defirewalld
, veuillez consulter le Guide de sécurité Red Hat Enterprise Linux 7 .- Pour vérifier les paramètres ci-dessus, veuillez utiliser une commande comme suit :
~]#
firewall-cmd --list-all
public (default, active) interfaces: eth0 sources: services: dhcpv6-client ssh ports: 10514/tcp masquerade: no forward-ports: icmp-blocks: rich rules:
Procédure 20.6. Configurer rsyslog pour Recevoir et Trier les Messages de journalisation distants
- Ouvrez le fichier
/etc/rsyslog.conf
dans un éditeur de texte puis procédez comme suit :- Ajoutez ces lignes sous la section des modules mais au-dessus de la section «
Provides UDP syslog reception
» (Fournit la réception syslog UDP) :# Define templates before the rules that use them ### Per-Host Templates for Remote Systems ### $template TmplAuthpriv, "/var/log/remote/auth/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log" $template TmplMsg, "/var/log/remote/msg/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log"
- Remplacez la section par défaut «
Provides TCP syslog reception
» par ce qui suit :# Provides TCP syslog reception $ModLoad imtcp # Adding this ruleset to process remote messages $RuleSet remote1 authpriv.* ?TmplAuthpriv *.info;mail.none;authpriv.none;cron.none ?TmplMsg $RuleSet RSYSLOG_DefaultRuleset #End the rule set by switching back to the default rule set $InputTCPServerBindRuleset remote1 #Define a new input and bind it to the "remote1" rule set $InputTCPServerRun 10514
Enregistrez les changements sur le fichier/etc/rsyslog.conf
. - Le service
rsyslog
doit être en cours d'exécution sur le serveur d'enregistrement et sur les systèmes tentant de s'y connecter.- Veuillez utiliser la commande
systemctl
pour lancer le servicersyslog
.~]#
systemctl start rsyslog
- Pour vous assurer que le service
rsyslog
démarre automatiquement dans le futur, veuillez saisir la commande suivante en tant qu'utilisateur root :~]#
systemctl enable rsyslog
Votre serveur d'enregistrement est désormais configuré pour recevoir et stocker des fichiers journaux en provenance des autres systèmes de votre environnement.
20.5.1. Utilisation d'une nouvelle Syntaxe pour les Files d'attente rsyslog
Rsyslog 7 possède un certain nombre de styles de modèles. Le modèle sous le format de string est celui qui ressemble le plus à l'ancien format. Voici à quoi ressemble les reproductions de modèles de l'exemple ci-dessus avec le format de string :
template(name="TmplAuthpriv" type="string" string="/var/log/remote/auth/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log" ) template(name="TmplMsg" type="string" string="/var/log/remote/msg/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log" )
Ces modèles peuvent également être écrits sous un format de liste comme suit :
template(name="TmplAuthpriv" type="list") { constant(value="/var/log/remote/auth/") property(name="hostname") constant(value="/") property(name="programname" SecurePath="replace") constant(value=".log") } template(name="TmplMsg" type="list") { constant(value="/var/log/remote/msg/") property(name="hostname") constant(value="/") property(name="programname" SecurePath="replace") constant(value=".log") }Ce modèle de format texte est sans doute plus facile à lire pour ceux qui ne sont pas très familiers avec rsyslog, et peut donc peut mieux s'adapter en cas de changement de conditions.
Pour compléter un changement à la nouvelle syntaxe, nous devons reproduire la commande de chargement de module, ajouter un ensemble de règles, puis relier l'ensemble de règles à un protocole, un port et un ruleset :
module(load="imtcp") ruleset(name="remote1"){ authpriv.* action(type="omfile" DynaFile="TmplAuthpriv") *.info;mail.none;authpriv.none;cron.none action(type="omfile" DynaFile="TmplMsg") } input(type="imtcp" port="10514" ruleset="remote1")