web-dev-qa-db-fra.com

Comment puis-je recevoir les journaux Syslog à partir d'un système en réseau?

J'aimerais configurer Ubuntu pour recevoir les journaux d'un routeur DD-WRT. L'écran de configuration du routeur contient la section suivante:

DD-WRT System Log

et son documentation de journalisation se lit comme suit:

Si vous souhaitez envoyer des journaux à un système distant, entrez l'adresse IP de cette machine qui exécute également un utilitaire syslog (une connexion réseau ouverte est nécessaire pour accepter les journaux envoyés par le routeur).

Je n'ai jamais (sciemment) utilisé syslog auparavant. Que dois-je faire dans Ubuntu pour lui permettre de recevoir ces journaux?

24
ændrük

L'hôte recevant les journaux devra exécuter un démon syslog configuré pour écouter les journaux distants. Il y a un certain nombre d'implémentations de syslog dans Ubuntu, mais rsyslog est généralement recommandé et doit être installé par défaut. D'après la documentation dans le lien que vous avez posté, je ne peux pas dire si DD-WRT envoie des journaux via TCP ou UDP. Il peut donc s'avérer nécessaire d'essayer de trouver avec précision les paramètres corrects, si vous souhaitez réduire le nombre de ports accessibles au réseau sur votre hôte.

Cela est possible de deux manières: la première est plus simple, mais peut nécessiter une réintégration lors de la mise à niveau du système. La seconde est légèrement plus compliquée et peut entraîner des résultats confus si la configuration de syslog subit des modifications importantes dans le cadre d'une mise à jour. Je choisirais le second, mais votre préférence peut varier.

La première consiste à éditer /etc/rsyslogd.conf et à supprimer le # initial des lignes suivantes:

 # $ ModLoad imudp 
 # $ UDPServerRun 514 

ou

 # $ ModLoad imtcp 
 # $ InputTCPServerRun 514 

La seconde consiste à créer un nouveau fichier, éventuellement nommé local-enable-tcp.conf dans /etc/rsyslog.d/, avec le contenu suivant:

 # enable TCP réception syslog 
 $ ModLoad imtcp 
 $ InputTCPServerRun 514 

Si vous souhaitez utiliser l'approche de fichier séparé et que vous avez besoin d'UDP, modifiez le contenu pour qu'il corresponde à la strophe UDP ci-dessus. Le nom de fichier spécifique n’est pas important, mais il est recommandé de le démarrer avec "local-" car cet espace de noms est réservé à la configuration de l’administrateur local et doit se terminer par ".conf", car seuls les fichiers se terminant ainsi sont automatiquement inclus dans le fichier. configuration de rsyslog.

Si vous préférez utiliser une autre implémentation de syslog, vérifiez la configuration et la documentation correspondant: il est probable que le démon syslog ne soit pas configuré pour écouter le réseau par défaut, mais un exemple de configuration permettant d'activer ce cas courant doit être clairement documenté.

24
Emmet Hikory

Une autre option est d'utiliser syslog-ng, facile à utiliser et prêt à l'emploi!

Sudo apt-get install syslog-ng

Après l’installer, nous avons un fichier de configuration dans /etc/syslog-ng/syslog-ng.conf Donc, éditez ce .conf avec nos paramètres, mais avant cela, faites une sauvegarde du fichier de configuration par défaut, peut être utile plus tard si vous voulez régler certains paramètres

Sudo mv /etc/syslog-ng/syslog-ng.conf /etc/syslog-ng/syslog-ng.conf.bak

Maintenant, créez un nouveau fichier de configuration et modifiez-le!

Sudo touch /etc/syslog-ng/syslog-ng.conf
Sudo nano /etc/syslog-ng/syslog-ng.conf

Donc, il suffit de coller cette configuration de base pour travailler aussi:

# Listening to incoming UDP Syslog connections
source mysource { udp(); };

#Add the syslog targets:

destination dest { file("/var/log/Cisco$YEAR$MONTH$R_DAY.log"); };
#destination dest_other_server { udp("1.2.3.4" port(514)); };
#Create the filters that will be used to determine what to do with the received syslog message

#filter filter { ( Host("2.3.4.5") and level(notice) and match("username=.*@domain\.local" value("MESSAGE") flags("utf8" "ignore-case")) ); };
filter myfilter { ( level(notice) ); };
#And putting it all together:

log { source(mysource); filter(myfilter); destination(dest);  };

Facile comme vous pouvez le voir. Prends soin!

6
Alvarova