Il est parfois nécessaire de surveiller les logs de votre serveur Rsyslog qu’il soit local ou distant.
Graylog offre une interface de création de requêtes de recherche dans vos fichiers de logs et permet de créer des tableaux de bord facilement.
Graylog s’appuie sur le moteur d’indexation Elasticsearch.
Ce mémo permet de configurer Graylog pour une recherche dans les fichiers de logs locaux.
La configuration du firewall s’appuie sur l’utilisation de Firehol.
Données techniques
$IP_PUBLIQUE => adresse ip publique de votre serveur Graylog
Prérequis
sudo apt-get install apt-transport-https openjdk-8-jre-headless uuid-runtime pwgen
Confguration du firewall (Firehol)
version 6
interface enp0s20f0 inet
protection strong
server custom graylog tcp/9000 default accept
server "ssh"
client all accept
Installation MongoDB
sudo apt-get install mongodb-server
Installation Elasticsearch
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
sudo apt-get update && sudo apt-get install elasticsearch
On modifie le fichier de configuration de Elasticsearch /etc/elasticsearch/elasticsearch.yml
en ajoutant :
cluster.name: graylog
On redémarre le démon ElasticSearch :
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
sudo /bin/systemctl restart elasticsearch.service
Graylog
wget https://packages.graylog2.org/repo/packages/graylog-2.1-repository_latest.deb
sudo dpkg -i graylog-2.1-repository_latest.deb
sudo apt-get update && sudo apt-get install graylog-server
On modifie le fichier de configuration /etc/graylog/server/server.conf
:
password_secret = 124ZEdrfrgFJDc7Km64peWrY9FVFoJkXR6EdfpLoqfq29meaRCZcZiLkh1H7oPWBMtB2VcZ47DKKxNIOgiVXeLm6qKjtbIvg
root_password_sha2 = 02f0a1b05cc90db65311050c9a4edb4d6a9a81e56080968e8d46c10e310e807f
rest_listen_uri = http://$IP_PUBLIQUE:9000/api/
web_listen_uri = http://$IP_PUBLIQUE:9000/
Le password_secret
se génère avec la commande commande pwgen -N 1 -s 96
.
Le root_password_sha2
se génère avec la commande echo -n motdepasse | shasum -a 256
On configure pour un démarrage automatique au boot :
sudo systemctl daemon-reload
sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service
Configuration Rsyslog
Créer le fichier /etc/rsyslog.d/90-graylog2.conf :
$template GRAYLOGRFC5424,"%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%\n"
*.* @127.0.0.1:12000;GRAYLOGRFC5424
On envoie les fichiers de logs vers le port 12000 sur l’interface locale. Graylog sera configuré pour écouter sur ce port (dans les paramètres input de Graylog).
On redémarre le serveur :
sudo systemctl restart rsyslog
Redirection des logs Apache vers Graylog
Éditez et ajoutez au fichier /etc/rsyslog/rsyslog.conf
##
## Apache2 logs to Graylog
##
# Apache access file:
$ModLoad imfile
$InputFileName /var/log/apache2/access.log
$InputFileTag apache-access:
$InputFileStateFile stat-apache-access
$InputFileSeverity info
$InputRunFileMonitor
#Apache Error file:
$InputFileName /var/log/apache2/error.log
$InputFileTag apache-errors:
$InputFileStateFile stat-apache-error
$InputFileSeverity error
$InputRunFileMonitor
$InputFilePollInterval 10
if $programname == 'apache-access' then @127.0.0.1:12000
if $programname == 'apache-errors' then @127.0.0.1:12000