Apache2 Filebeat
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
.
Sommaire
Votre avis
Nobody voted on this yet
|
|
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.
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
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
.
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
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.
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.
Activation
Une fois l'environnement mis en place, il faut configurer le module apache2
de Filebeat
.
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" ]
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
.
Ajout module
Une fois configuré, il suffit d'ajouter le module.
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
Voir aussi
Documentation officielle: https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-module-apache2.html