Nous mettrons à jour notre Politique de confidentialité prochainement. En voici un aperçu.

Linux : Les services système

Configurer le réseau avec rsyslog

Testez gratuitement nos 1336 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Apprenez à configurer une machine en réseau avec rsyslog. Ainsi, elle pourra vous envoyer une sélection de sa journalisation.
08:16

Transcription

Alors maintenant qu’on a vu comment fonctionnait syslog, qu’on a vu comment rsyslog nous permettait d’aller un petit peu plus loin à la fois en termes de sélection des messages qu’on va vouloir conserver et en termes d’action à réaliser, la destination de ces messages qu’on souhaite conserver, on va aller encore plus loin et on va regarder comment récupérer les logs d’une machine distante en quasi-temps réel. Pour ça, j’ai un petit peu changé mon bureau là, j’ai toujours ma machine sur laquelle je suis toujours connecté. Et à côté, ici, en jaune pour qu’on puisse bien le distinguer, je suis connecté sur une machine distante qui est une Debian d’ailleurs, qui n’est pas une CentOS comme la machine sur laquelle je suis et qui possède également rsyslog. Et je vais souhaiter que depuis cette machine-là, qui est la Debian, les logs soient envoyés à ma machine sur laquelle je suis depuis tout à l’heure. Alors pour ça, il y a plusieurs opérations à réaliser. La première opération à réaliser est de s’assurer qu’il n’y a pas de « firewall » sur le réseau, qui bloquerait la transmission entre la machine distante et la machine locale. Ici, je suis dans une machine virtuelle, je n’ai pas de « firewall » d’activé. Donc je ne vais pas m’en préoccuper mais c’est la première chose à laquelle il faut que vous fassiez attention. Une fois que vous êtes sûr que les paquets vont circuler entre les deux machines, qu’est-ce qu’on va faire ? Ce qu’on va réaliser maintenant, ça va être d’activer sur ma machine locale la réception des messages. Pour ça, je vais aller dans le fichier « /etc/rsyslog.conf », toujours le même fichier de configuration. Et si on regarde ici, au début du fichier, dans les modules, je suis sur ces quelques lignes-là, j’ai la réception de syslog avec le protocole UDP et la réception de syslog avec le protocole TCP. Alors, je vais désactiver les deux, je vais d’abord faire l’un, puis l’autre. Mais les deux fonctionnent. L’intérêt de l’UDP, c’est que si énormément de messages arrivent sur ma machine, il n’arrivera peut-être pas à tous les enregistrer, auquel cas ils vont perdre quelques-uns. Oui, ça peut être un intérêt parce que si j’ai le même comportement en TCP, que trop de messages arrivent sur la machine pour que je puisse les enregistrer, le danger qui peut se présenter, c’est que ça va saturer la file d’attente d’entrée des messages et dans ce cas-là, la couche réseau, notamment pour syslog, peut planter et on ne reçoit plus rien. Dans le cas d’UDP, les paquets ne sont pas reçus, ils sont éjectés, ils sont éliminés et puis voilà. D’un autre côté, TCP peut être très intéressant quand je ne risque pas de saturer l’entrée de rsyslog, il va être très intéressant dans le sens où sur du TCP, on peut mettre du TLS, c'est-à-dire qu’on va pouvoir faire du chiffrement et éviter que les messages circulent en clair sur le réseau, ce qui est quand même un énorme avantage. Alors, pour le moment je vais commencer simplement avec l’UDP. Donc je vais désactiver le module et le port d’écoute. En faisant ça, j’autorise mon rsyslog à écouter sur le réseau les paquets qui arriveraient de la part de n’importe quelle destination. « :w » pour enregistrer, « :q » et je redémarre mon rsyslog, « systemctl restart rsyslog », voilà. Et donc là, je n’ai rien d’autre à faire sur cette machine locale. Maintenant je vais aller sur la machine distante. Voilà, je suis sur la machine distante et cette fois je vais éditer le fichier « /etc/rsyslog.conf », c’est bien le même fichier. Il est présenté d’une façon un petit peu différente. On retrouve bien quand même ici nos modules. Ceux-là, je ne vais pas les toucher puisque je n’envoie rien vers la machine distante. Je veux que ça soit elle qui m’envoie des données. Si je descends, je descends, je descends, voilà, les règles sont là. Il y a d’autres règles avec d’autres formats mais ce que je vais faire, c’est que je vais dire que les messages « *.info », je vais les envoyer à ma machine locale. Là, je suis sur la machine distante, je vais les envoyer à la machine locale. Comment je vais faire ça ? Je vais utiliser le caractère @ qui veut dire que les messages sont envoyés à distance. Et je vais donner l’adresse IP de la machine sur laquelle les envoyer. L’adresse IP de ma machine, je vais aller le vérifier ici. Ça va être « ip addr show » pour que je voie l’adresse IP. Et mon adresse IP est marquée ici, c’est la « 10.0.2.4 ». Voilà, je retourne à distance et je vais dire ici que c’est la « 10.0.2.4 », Échap, « :w », « :q ». Et si je redémarre à l’aide de « systemctl restart rsyslog », « tail -f /var/log/syslog », c’est l’équivalent du fichier « messages » sur l’autre distribution. Je m’assure que tout a bien redémarré : « Started Logging Service », il fait d’autres choses, ok. Ça a l’air de marcher, je n’ai pas d’erreurs. Ici, si je reviens sur ma machine locale, si je regarde « tail -f », le fichier « /var/log/messages », j’ai des messages qui sont locaux à ma machine mais j’ai également les messages de la machine « deb8 », on le voit, c’est le nom de cette machine distante, qui arrivent. Donc là, c’est ma machine locale qui vient d’envoyer des logs dans mon fichier « messages ». Ici, si je fais un Ctrl + C, je vais faire un « logger -p user.info », donc je fais un message d’info et le message que je peux afficher c’est : « Message depuis la machine distante ». Et si jamais je fais ça, voilà, j’appuie sur Entrée, je peux venir voir ici. Le message apparait bien dans les logs de ma machine locale. Ça fonctionne en UDP, tout fonctionne très bien, ça veut dire qu’à partir de ce moment-là, les messages qui sont reçus par le syslog de ma machine distante, qui correspondent à une gravité « info » ou supérieure sont envoyés au syslog local. Et le syslog local va à nouveau les filtrer, c'est-à-dire que comme ce sont des messages de la catégorie « info » ou supérieure, là en l’occurrence, il les envoie dans le fichier « /var/log/messages ». Mais je pourrais les envoyer ailleurs, je pourrais ne choisir que les messages qui contiennent une erreur, etc. etc. Je peux retrouver mon filtrage local. De la même manière je pourrais, à distance, ne pas envoyer tous les messages de la catégorie « info » ou supérieure mais tous les messages qui contiennent le mot-clé « error » dedans. Comment est-ce que je ferais ça ? C’est dans mon « vi », « rsyslog.conf ». Si je descends, c’est ici, au lieu de mettre « *.info », je pourrais mettre à la place, donc je fais « i » pour insérer, « :msg » pour dire que c’est par rapport au contenu du message, « contains, » et puis la chaine de caractères sous « contains », ça peut être la chaine de caractères « err », comme « error ». Et à partir de ce moment-là, ce sera uniquement les messages qui contiennent le mot-clé « error » qui seront envoyés à ma machine locale. Donc Échap, « :w », « :q », je fais « systemctl restart rsyslog ». Je regarde si dans les logs je n’ai pas de message d’erreur. Je n’ai pas de messages d’erreur. Donc ça devrait le faire. Je reviens à ma machine locale. Je viens de le redémarrer. Est-ce que celui-là contient la chaine de caractères « err » ? Je ne l’ai pas mais je pense qu’il a été redémarré avant. Maintenant, je vais rester sur celle-là et à distance, je vais utiliser « logger –p user.info » et je vais marquer « un beau message d erreur ». Et si je reviens sur ma machine locale, mon message d’erreur a bien été reçu de la part de la machine deb8. Vous voyez que je ne reçois pas tous les messages, comme ce qui se passait tout à l’heure. Je n’ai pas eu notamment ici les messages me disant : « attention, rsyslog a redémarré, attention, tel problème. » Je n’ai pas reçu ces messages-là. Je n’ai reçu que le message qui correspond au motif que j’ai donné. Pour faire la même chose en UDP, du côté de la machine locale : « /etc/rsyslog.conf ». Au lieu de mettre ici les modules UDP, je vais les recommenter et je décommente les modules TCP. C’est tout ce qu’il y a à faire ici, rien d’autre. Et sur la machine distante, dans le fichier de configuration, « /etc/rsyslog.conf », si je descends, je vais arriver à mes règles, au lieu de mettre « @10.0.2.4 » qui veut dire qu’on envoie en UDP, je mets tout simplement un @@. Le fait de mettre un @@, ça veut dire que le message est envoyé en TCP mais pas en UPD. Pour le reste, le fonctionnement reste le même.

Linux : Les services système

Découvrez les services qui tournent en permanence sur votre système et adaptez-les en fonction de vos besoins. Abordez la gestion des logs, la synchronisation horaire, etc.

2h16 (22 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Thématiques :
IT
Systèmes d'exploitation
Spécial abonnés
Date de parution :25 avr. 2017

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !