- TYPE: Installation
- DATE: 27/06/2023
- OS : DEBIAn 11.7
- SOFT : GRAYLOG 5.1
- NOM VM : vm-test-graylock-docker
Cette documentation fournit des informations sur l'installation sur Proxmox d'une solution GRAYLOG conteneurisée avec DOCKER incluant Opensearch et mongodb.
Cette machine virtuelle et son utilisation fait l'objet de tests pour le moment.
| Éléments | Configuration |
|---|---|
| CPU/SOCKET | 4/2 |
| MEM | 8Gb |
| HDD | 32Gb |
| NIC | vmbr0/ens18 |
| IP | 192.168.x.x /24 |
| root access | Oui |
Installation faite via le repo Docker - lien
apt update && apt upgrade -y
apt-get install ca-certificates curl gnupg sudo -y
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Liste des versions disponibles:
apt-cache madison docker-ce | awk '{ print $3 }'
5:24.0.0-1~debian.11~bullseye
5:23.0.6-1~debian.11~bullseye
<...>
VERSION_STRING à l'environnement et lui donné la version souhaitée comme valeur, utilisé cette variable pour l'installation.VERSION_STRING=5:24.0.0-1~debian.11~bullseye
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
hello-worldsudo docker run hello-world
Un repo git a été mis en place : https://github.com/lawrencesystems/graylog.git
git clone https://github.com/lawrencesystems/graylog.git
Le repo git se présente ainsi
├── main
│ └── config
│ └── graylog
│ └── graylog.conf
├── docker-compose.yml
└── README.md
Le seul fichier a éditer étant
docker-compose.yml
Contenu du fichier docker-compose.yml
version: '3'
networks:
graynet:
driver: bridge
# Comment les données sont persistentes entre les conteneurs
volumes:
mongo_data:
driver: local
log_data:
driver: local
graylog_data:
driver: local
services:
# Où Graylog stocke sa configuration Mongodb
mongo:
image: mongo:6.0.5-jammy
container_name: mongodb
volumes:
- "mongo_data:/data/db"
networks:
- graynet
restart: unless-stopped
# Les logs sont stockés dans OpenSearch
opensearch:
image: opensearchproject/opensearch:2
container_name: opensearch
environment:
- "OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g"
- "bootstrap.memory_lock=true"
- "discovery.type=single-node"
- "action.auto_create_index=false"
- "plugins.security.ssl.http.enabled=false"
- "plugins.security.disabled=true"
volumes:
- "log_data:/usr/share/opensearch/data"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
ports:
- 9200:9200/tcp
networks:
- graynet
restart: unless-stopped
graylog:
image: graylog/graylog:5.1
container_name: graylog
environment:
# CHANGE MOI (Doit contenir minimum 16 caractères)!
GRAYLOG_PASSWORD_SECRET: "CQUfAc9UFT5BiF5rrZ3wkGDtMGVPJoKBnMstDLqZtEORQE5YaiVDSttigYhCwplLqbLNqyOMgEuHm3kle4VDRMERCoMKZrz3"
# Password: admin
GRAYLOG_ROOT_PASSWORD_SHA2: ""
GRAYLOG_HTTP_BIND_ADDRESS: "0.0.0.0:9000"
GRAYLOG_HTTP_EXTERNAL_URI: "http://localhost:9000/"
GRAYLOG_ELASTICSEARCH_HOSTS: "http://opensearch:9200"
GRAYLOG_MONGODB_URI: "mongodb://mongodb:27017/graylog"
GRAYLOG_TIMEZONE: "Europe/Paris"
TZ: "Europe/Paris"
GRAYLOG_TRANSPORT_EMAIL_PROTOCOL: "smtp"
GRAYLOG_TRANSPORT_EMAIL_WEB_INTERFACE_URL: "http://<ip_serveur>:9000/"
GRAYLOG_TRANSPORT_EMAIL_HOSTNAME: "outbound.mailhop.org"
GRAYLOG_TRANSPORT_EMAIL_ENABLED: "true"
GRAYLOG_TRANSPORT_EMAIL_PORT: "587"
GRAYLOG_TRANSPORT_EMAIL_USE_AUTH: "true"
GRAYLOG_TRANSPORT_EMAIL_AUTH_USERNAME: "xxxxx"
GRAYLOG_TRANSPORT_EMAIL_AUTH_PASSWORD: "xxxxx"
GRAYLOG_TRANSPORT_EMAIL_USE_TLS: "true"
GRAYLOG_TRANSPORT_EMAIL_USE_SSL: "false"
GRAYLOG_TRANSPORT_FROM_EMAIL: "graylog@example.com"
GRAYLOG_TRANSPORT_SUBJECT_PREFIX: "[graylog]"
entrypoint: /usr/bin/tini -- wait-for-it opensearch:9200 -- /docker-entrypoint.sh
volumes:
- "${PWD}/config/graylog/graylog.conf:/usr/share/graylog/config/graylog.conf"
- "graylog_data:/usr/share/graylog/data"
networks:
- graynet
restart: always
depends_on:
opensearch:
condition: "service_started"
mongo:
condition: "service_started"
ports:
- 9000:9000/tcp # Interface web Graylog et REST API
- 1514:1514/tcp # Syslog
- 1514:1514/udp # Syslog
- 12201:12201/tcp # GELF
- 12201:12201/udp # GELF
Trois champs sont à modifier dans ce fichier
GRAYLOG_PASSWORD_SECRET: ""
GRAYLOG_ROOT_PASSWORD_SHA2: ""
GRAYLOG_TRANSPORT_EMAIL_WEB_INTERFACE_URL: "http://<ip_serveur>:9000/"
Graylog fonctionne avec 2 mots de passe, le premier GRAYLOG_PASSWORD_SECRET: "" permet le chiffrement du deuxième GRAYLOG_ROOT_PASSWORD_SHA2: ""
Pour générer générer ces mots de passe, utiliser les commandes suivantes
# Pour générer GRAYLOG_PASSWORD_SECRET: ""
pwgen -N 1 -s 96
# Pour générer GRAYLOG_ROOT_PASSWORD_SHA2: ""
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
GRAYLOG_ROOT_PASSWORD_SHA2va servir à la connexion sur l'interface web. La commande sert à 'hasher' le mot de passe qui va être rentrer.Au moment de la connexion, ne pas se servir du mot de passe au format
SHA2mais celui rentrer en clair.
Copier ce mots de passe dans le champs approprié du fichier .yml en conservant les "".
Une fois les modifications faites, lancer le fichier docker-compose
docker compose up
Le lancement des conteneurs va alors commencer, le démarrage total des conteneurs peut prendre du temps (2 à 3 minutes)

Pour se 'détacher' de la vue docker-compose up et retrouver l'accès à la console faire CTRL+Z
Après le lancement complet des conteneurs, se connecter à l'interface web via l'adresse IP de la machine hôte : http://<ip.du.serveur>:9000
