Oxidized est un logiciel de backup d’équipement réseau par SSH. C’est un remplacement à RANCID. Celui-ci a été créé le 17 Avril 2013 selon ce commit sur GitHub : Lien du commit
On m’a donc demandé en arrivant chez Eurofiber en Décembre, de mettre en place une solution de backup des équipements de backbone en utilisant Oxidized.
En faisant ça, j’ai pu commencé à apprendre et à me familiariser avec l’infrastructure existante.
Dans les sections suivantes, je vais vous détailler la procédure de création de cette machine virtuelle par rapport à OSS.
Compétence mise en oeuvre
Veuillez consulter le Tableau de compétences
Schéma de fonctionnement d’Oxidized
Création de la VM
Se référer à la Procédure de création de VM
Installation et Configuration d’Oxidized
Installation d’Oxidized
Dépendances :
apt install -y ruby ruby-dev libsqlite3-dev libssl-dev pkg-config cmake libssh2-1-dev libicu-dev zlib1g-dev g++ libyaml-dev
Installation :
gem install oxidized
gem install oxidized-script oxidized-web
Création et connexion sur l’utilisateur oxidized :
useradd -m oxidized -s /bin/bash
su - oxidized
Création du répertoire et de la configuration par défaut :
oxidized
Configuration d’Oxidized
Dans le répertoire /home/oxidized/.config/oxidized, modifier le fichier config comme suit :
vim .config/oxidized/config
Aller voir le dépôt GitLab, dossier oxidized, pour avoir accès à la configuration (./oxidized/config).
WebHook pour Teams
Scripts à mettre pour pouvoir envoyer des notifications sur Teams lorsqu’un équipement est backup ou non.
Aller voir le dépôt GitLab. (./oxidized/node_success.sh et ./oxidized/node_fail.sh)
Service systemd
Aller voir le dépôt GitLab (./oxidized/oxidized.service).
La configuration du service systemd va ici /etc/systemd/system/oxidized.service.
Configuration TACACS Plus
Il faut rajouter ces lignes dans TACACS Plus pour le groupe backup
cmd = admin { permit display-config }
cmd = file { permit type }
cmd = environment { permit more }
Configuration proxy SQUID
Puisqu’on utilise SQUID comme proxy interne pour autoriser uniquement certains sites sur les machines (Dépôt Debian, dockerhub, LetsEncrypt...), il faut modifier la configuration de SQUID pour autoriser l’accès au WebHook Teams d’Eurofiber :
acl webhook_ef_msteams dstdomain eurofiber.webhook.office.com
http_access allow webhook_ef_msteams
Génération de l’inventaire à partir de Netbox sur Rundeck pour Oxidized
Pour générer l’inventaire d’Oxidized, on utilise un script Python qui génère l’inventaire de tous les équipements de backbone selon leur OS, leurs marques et s’ils sont actifs ou non. Après ça, le script vient stocker les informations qu’il a récupéré sous la forme d’un fichier CSV.
Dans Rundeck une fois qu’il a exécuté le script, celui-ci le stock dans /tmp/router.db, après ça dans la suite de son playbook, Rundeck vient copier en SSH le fichier router.db dans /home/oxidized/.config/oxidized/router.db
Le script est disponible sur mon GitLab, dans le dossier ./oxidized/inventory.py (Les mentions "Modifier ici", sont pour la connexion à l’API de Netbox et les logins d’Oxidized).
Consultation des configurations
Pour consulter les configurations qu’Oxidized a réussi à récupérer, on peut utiliser la commande git clone pour obtenir les backups en local à partir du dépôt Git que génère Oxidized:
git clone ssh://business-backup-01.business.31tls00.ef-fr.net/home/oxidized/.config/oxidized/devices.git
Interface web
Installation des paquets requis :
apt -y install curl cron ssl-cert apache2 libldap-common
Installation d’acme.sh (Générateur de certificats SSL):
curl -s https://get.acme.sh | bash -s email=admin@ef-fr.net --install
Déclaration de la clé d’API de GANDI :
export GANDI_LIVEDNS_TOKEN=$(systemd-ask-password)
Génération du certificat SSL :
acme.sh --issue -k 4096 --keylength ec-384 -d oxidized.ef-fr.net --dns dns_gandi_livedns --server letsencrypt
Initialisation des fichiers de certificats :
install --owner=root --group=ssl-cert --mode=640 /dev/null /etc/ssl/private/oxidized.ef-fr.net.pem
install --owner=root --group=ssl-cert --mode=640 /dev/null /etc/ssl/private/oxidized.ef-fr.net.key
Installation du certificat SSL :
acme.sh --install-cert -d oxidized.ef-fr.net --key-file /etc/ssl/private/oxidized.ef-fr.net.key --fullchain-file /etc/ssl/private/oxidized.ef-fr.net.pem
Initialisation d’Apache :
a2enmod authnz_ldap headers ldap proxy proxy_http ssl
a2dissite 000-default
umask 0137
Configuration du VirtualHost oxidized.ef-fr.net :
vim /etc/apache2/sites-available/oxidized.ef-fr.net.conf
La configuration d’Apache est disponible ici sur GitLab : ./oxidized/oxidized.ef-fr.net.
Conclusion du projet
Voici le premier projet que j’ai eu à faire en arrivant chez Eurofiber France, Oxidized. En faisant ça, nous avons pu faire des sauvegardes des équipements de backbone (environ 1000 équipements). Ce projet m’a permis d’apprendre une partie du réseau d’Eurofiber France ainsi que de mettre un pied dans OSS.