System Filebeat

De EjnTricks

Le module System de Filebeat offre une configuration et des tableaux de bords clé en main pour l'analyse des traces du serveur en lisant les traces syslog et auth.log.

Cet article présente l'activation du module dans Filebeat.


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Study icon.png Pré requis

Lors de l'installation de Filebeat, un compte de service a été mis en place afin de ne pas exécuter l'instance avec le compte root. Par conséquent, il est nécessaire que ce compte, soit filebeat dans le cadre de cette installation, accède aux fichiers trace du serveur.

Les permissions de ces fichiers sont générées depuis plusieurs configurations sur Ubuntu. La première concerne l'outil rsyslog qui contient les permissions par défaut pour toutes les traces, dans le fichier /etc/rsyslog.conf avec les éléments suivants.

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

Donc par défaut, les traces sont avec les permissions 640 pour les comptes syslog:adm. Il serait possible de mettre en place une configuration de l'outil pour changer ces permissions. Mais il faut savoir que les permissions ne sont pas mises à jour si les fichiers sont déjà existants.

De plus, il existe également la configuration de tmpfiles.d mise en place pour la distribution afin de surcharger les permissions. Le contenu du fichier /usr/lib/tmpfiles.d/00rsyslog.conf fixe les permissions.

# Override systemd's default tmpfiles.d/var.conf to make /var/log writable by
# the syslog group, so that rsyslog can run as user.
# See tmpfiles.d(5) for details.

# Type Path    Mode UID  GID  Age Argument
z /var/log 0775 root syslog -
z /var/log/auth.log 0640 syslog adm -
z /var/log/mail.err 0640 syslog adm -
z /var/log/mail.log 0640 syslog adm -
z /var/log/kern.log 0640 syslog adm -
z /var/log/syslog 0640 syslog adm -
d /var/spool/rsyslog 0700 syslog adm -

A noter le commentaire dans l'en tête du fichier Override systemd's default tmpfiles.d/var.conf. Le contenu du fichier /usr/lib/tmpfiles.d/var.conf est le suivant.

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# See tmpfiles.d(5) for details

q /var 0755 - - -

L /var/run - - - - ../run

d /var/log 0755 - - -
f /var/log/wtmp 0664 root utmp -
f /var/log/btmp 0660 root utmp -
f /var/log/lastlog 0664 root utmp -

d /var/cache 0755 - - -

d /var/lib 0755 - - -

d /var/spool 0755 - - -

La documentation de tmpfiles.d, http://manpages.ubuntu.com/manpages/cosmic/man5/tmpfiles.d.5.html, indique qu'il est possible de surcharger les configuration en fonction de l'ordre alphabétique sur le nom des fichiers. Il semblerait que les configurations surchargées soient remontées en erreur. Or comme cela est appliqué dans la distribution, le même principe sera utilisé.

User-group-icon.png Groupe

Le nouveau groupe syslogreader est créé afin de permettre à différents comptes d'accéder aux traces.

#sudo groupadd --system syslogreader

User-icon.png Utilisateurs

Par défaut, les droits d'accès aux fichiers trace sont accordés au groupe adm. Il est donc recommandé d'injecter les utilisateurs de celui-ci dans le nouveau groupe syslogreader et de le compléter avec le compte d'exécution de Filebeat, soit filebeat.

#sudo usermod -a -G syslogreader syslog
#sudo usermod -a -G syslogreader filebeat

Icon ACL.png Sécurisation log

Une configuration de tmpfiles.d est mise en place pour surcharger la configuration standard définie dans /usr/lib/tmpfiles.d/00rsyslog.conf.

#sudo touch /usr/lib/tmpfiles.d/rsyslog.conf

Le contenu du fichier est placé ainsi.

# Override rsyslog.conf from Ubuntu

# Type Path    Mode UID  GID  Age Argument
z /var/log/auth.log 0640 syslog syslogreader -
z /var/log/syslog 0640 syslog syslogreader -


Run-icon.png Activation

Une fois l'environnement mis en place, il faut configurer le module system de Filebeat.

Configuration-icon.png Configuration

Le fichier de configuration du module se trouve dans le répertoire config/modules.d, externalisé à l'emplacement /var/opt/beats/filebeat/common/config/modules.d dans le cadre de cette installation. Il est possible d'activer la lecture des traces access et / ou error. Pour ces deux catégories, il est possible de spécifier l'emplacement de ces fichiers. A noter que par défaut, Filebeat tentera de déterminer l'emplacement de ces fichiers en fonction du système d'exploitation de la machine.

Pour cette installation, les deux catégories sont activées en explicitant les emplacements des fichiers.

  • /var/log/auth.log pour les traces de connexion.
  • /var/log/syslog pour les traces journal.
- module: system
  # Syslog
  syslog:
    enabled: true

    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    #var.paths:
    var.paths: ["/var/log/syslog"]

    # Convert the timestamp to UTC. Requires Elasticsearch >= 6.1.
    #var.convert_timezone: false

  # Authorization logs
  auth:
    enabled: true

    # Set custom paths for the log files. If left empty,
    # Filebeat will choose the paths depending on your OS.
    #var.paths:
    var.paths: ["/var/log/auth.log"]

    # Convert the timestamp to UTC. Requires Elasticsearch >= 6.1.
    #var.convert_timezone: false

Warning-icon.png Attention les permissions doivent donner un droit de lecture sur l'ensemble de l'emplacement au compte de service. Il est donc nécessaire que le compte est un droit de lecture / exécution (5) sur /var/log.

Add-icon.png Ajout module

Une fois configuré, il suffit d'ajouter le module.

Warning-icon.png Attention il est nécessaire d'effectuer les opérations avec le compte root ou le compte propriétaire des fichiers, soit filebeat pour cette installation. Sinon le message d'erreur suivant sera affiché. Il peut y avoir le message suivant.

must be owned by the beat user (uid=0) or root

Il est préférable de laisser cette vérification, même si il est possible de la désactiver en ajoutant l'argument -strict.perms=false ainsi.

#sudo su filebeat -s /bin/bash -c '/var/opt/beats/filebeat/installed/filebeat -c /var/opt/beats/filebeat/common/config/filebeat.yml -path.home /var/opt/beats/filebeat/installed -path.config /var/opt/beats/filebeat/common/config -path.data /var/opt/beats/filebeat/common/datas -path.logs /var/log/filebeat -strict.perms=false modules list'


Dans un premier temps, il est possible de lister l'état des modules avec les arguments modules list de l'exécutable filebeat.

#sudo su filebeat -s /bin/bash -c '/var/opt/beats/filebeat/installed/filebeat -c /var/opt/beats/filebeat/common/config/filebeat.yml -path.home /var/opt/beats/filebeat/installed -path.config /var/opt/beats/filebeat/common/config -path.data /var/opt/beats/filebeat/common/datas -path.logs /var/log/filebeat modules list'
Enabled:

Disabled:
apache2
auditd
icinga
kafka
logstash
mysql
nginx
osquery
postgresql
redis
system
traefik

A noter qu'un bash est fourni, argument -s /bin/bash, pour l'exécution avec le compte filebeat. En effet, un bash est nécessaire et celui-ci a été désactivé lors de la création du compte.

Pour cet exemple, tous les modules disponibles sont désactivés.


L'activation du module s'effectue à l'aide des arguments modules enable et en spécifiant le nom du module.

#sudo su filebeat -s /bin/bash -c '/var/opt/beats/filebeat/installed/filebeat -c /var/opt/beats/filebeat/common/config/filebeat.yml -path.home /var/opt/beats/filebeat/installed -path.config /var/opt/beats/filebeat/common/config -path.data /var/opt/beats/filebeat/common/datas -path.logs /var/log/filebeat modules enable system'
Enabled system

Le message Enabled system confirme l'activation, qui est confirmé avec la commande pour lister les modules.

#sudo su filebeat -s /bin/bash -c '/var/opt/beats/filebeat/installed/filebeat -c /var/opt/beats/filebeat/common/config/filebeat.yml -path.home /var/opt/beats/filebeat/installed -path.config /var/opt/beats/filebeat/common/config -path.data /var/opt/beats/filebeat/common/datas -path.logs /var/log/filebeat modules list'
Enabled:
system

Disabled:
apache2
auditd
icinga
kafka
logstash
mysql
nginx
osquery
postgresql
redis
traefik

Cette activation entraîne le renommage du fichier de configuration du module dans le répertoire config/modules.d.

#sudo ls -l /var/opt/beats/filebeat/common/config/modules.d
total 56
drwx------ 2 filebeat filebeat 4096 juin   6 00:18 ./
drwx------ 3 filebeat filebeat 4096 juin   5 13:32 ../
-rw------- 1 filebeat filebeat  371 mars  13 10:52 apache2.yml.disabled
-rw------- 1 filebeat filebeat  175 mars  13 10:52 auditd.yml.disabled
-rw------- 1 filebeat filebeat  546 mars  13 10:52 icinga.yml.disabled
-rw------- 1 filebeat filebeat  296 mars  13 10:52 kafka.yml.disabled
-rw------- 1 filebeat filebeat  361 mars  13 10:52 logstash.yml.disabled
-rw------- 1 filebeat filebeat  368 mars  13 10:52 mysql.yml.disabled
-rw------- 1 filebeat filebeat  369 mars  13 10:52 nginx.yml.disabled
-rw------- 1 filebeat filebeat  388 mars  13 10:52 osquery.yml.disabled
-rw------- 1 filebeat filebeat  192 mars  13 10:52 postgresql.yml.disabled
-rw------- 1 filebeat filebeat  463 mars  13 10:52 redis.yml.disabled
-rw------- 1 filebeat filebeat  574 mars  13 10:52 system.yml
-rw------- 1 filebeat filebeat  195 mars  13 10:52 traefik.yml.disabled

L'extension .disabled est supprimée.

Après redémarrage du service filebeat, le module sera alors actif et les données injectées dans ElasticSearch.

#sudo systemctl start filebeat


Viewer icon.png Voir aussi

Documentation officielle: https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-system.html