Apache2 Filebeat

De EjnTricks
Révision de 28 juin 2018 à 13:21 par Etienne (discussion | contributions)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)

Le module Apache2 de Filebeat offre une configuration et des tableaux de bords clé en main pour l'analyse des traces du serveur web Apache. Le format des traces doit être standard pourque l'injection fonctionne correctement.

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 Apache.

Les gestions des permissions sur ces fichiers traces est réalisée à l'aide de l'outil Logrotate, pour une installation sous Ubuntu. Le principe est similaire à ce qui était fait pour le plugin Rawlog de Awstats qui devait accéder aux fichiers.

User-group-icon.png Groupe

Le nouveau groupe weblogreader est créé afin de permettre à différents comptes, celui exécutant le serveur Apache et l'instance Filebeat dans ce cas, d'accéder aux traces.

#sudo groupadd --system weblogreader

User-icon.png Utilisateurs

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

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

A noter, il faut ajouter les autres comptes nécessitant l'accès comme www-data pour Awstats.

Icon ACL.png Sécurisation log

Une configuration Logrotate est disponible pour Apache2 au niveau du fichier /etc/logrotate.d/apache2, où sont configurés les droits d'accès pour le fichier trace.

Il faut le modifier afin d'utiliser le nouveau groupe. Le contenu du fichier est alors le suivant.

/var/log/apache2/*.log {
        daily
        missingok
        rotate 14
        compress
        delaycompress
        notifempty
        #create 640 root adm
        create 640 root weblogreader
        sharedscripts
        postrotate
                if invoke-rc.d apache2 status > /dev/null 2>&1; then \
                    invoke-rc.d apache2 reload > /dev/null 2>&1; \
                fi;
        endscript
        prerotate
                if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                        run-parts /etc/logrotate.d/httpd-prerotate; \
                fi; \
        endscript
}

La mise en place des permissions s'effectuant lors de la rotation, il peut être nécessaire de modifier les permissions pour les fichiers déjà existants.

#sudo chown -R root:weblogreader /var/log/apache2
#sudo chmod 640 /var/log/apache2/*
#sudo chmod 750 /var/log/apache2

Warning-icon.png Attention, il est nécessaire de positionner les droits daccès sur le répertoire /var/log/apache2 également. L'accès seulement sur les fichiers n'est pas suffisant, Filebeat n'accédera pas aux fichiers.

De plus, il peut être nécessaire de relancer l'instance.

Browser Icon.png Plugin Ingest-User-Agent ElasticSearch

La lecture des traces nécessite le plugin Ingest-User-Agent qu'il faut préalablement installé comme indiqué dans l'article suivant.


Run-icon.png Activation

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

Configuration-icon.png Configuration

Le fichier de configuration du module se trouve dans le répertoire confg/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/apache2/*_access.log pour les traces d'accès.
  • /var/log/apache2/*_error.log pour les traces d'erreur.
- module: apache2
  # Access logs
  access:
    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/apache2/*_access.log"]

  # Error logs
  error:
    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/apache2/*_error.log"]

La configuration des emplacements s'effectue avec un tableau. Il est possible de spécifier plusieurs valeurs comme dans l'exemple suivant.

- module: apache2
  # Access logs
  access:
    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/apache2/access.log", "/var/log/apache2/*_access.log" ]

  # Error logs
  error:
    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/apache2/error.log", "/var/log/apache2/*_error.log" ]

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/apache2.

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 apache2'
Enabled apache2

Le message Enabled apache2 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:
apache2

Disabled:
auditd
icinga
kafka
logstash
mysql
nginx
osquery
postgresql
redis
system
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
-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.disabled
-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-apache2.html