Importer ou mettre à jour la base des vulnérabilités avec Swarm
Cette procédure décrit comment mettre à jour la base de données des vulnérabilités d’une instance Cyberwatch déployée en mode hors-ligne avec Docker Swarm.
La base de données des vulnérabilités peut être mise à jour depuis un navigateur web ou en ligne de commande. L’import depuis un navigateur est adapté à une mise à jour ponctuelle de la base de données des vulnérabilités. Au contraire, l’import en ligne de commande sera plus adapté pour un usage fréquent puisqu’il peut être automatisé.
Prérequis
La procédure d’importation de la base des vulnérabilités nécessite :
- une machine connectée à internet
- des identifiants valides pour l’accès au repository du logiciel Cyberwatch
- une instance Cyberwatch déployée en mode hors-ligne avec Swarm
Depuis un navigateur
Cette section décrit comment récupérer et importer la base de données des vulnérabilités depuis un navigateur web. Elle est adaptée à un usage ponctuel
Télécharger l’archive des vulnérabilités depuis l’adresse https://dl.cyberwatch.fr/download_database. L’accès est protégé par une authentification
basic auth
. Les identifiants d’accès sont fournis par CyberwatchSe connecter à l’interface web de l’instance Cyberwatch avec un compte Administrateur
Se rendre sur la page vue d’ensemble d’admin
Cliquer sur le bouton « Téléverser », près du titre « Base de donnée de sécurité »
Importer le fichier précédemment téléchargé et cliquer sur « Mettre à jour »
En ligne de commande
Cette section décrit comment récupérer et importer la base de données des vulnérabilités depuis la ligne de commande. Elle est pensée pour être automatisée.
Récupérer la base de données
Exporter les variables de connexion à Cyberwatch dans l’environnement (completer avec les identifiants fournis par Cyberwatch) :
export CBW_USER= export CBW_PASSWORD=
Récupérer la base de données de vulnérabilités :
curl -u "$CBW_USER:$CBW_PASSWORD" \ -sf https://dl.cyberwatch.fr/download_database \ -o vulnerability_db.zip
(Optionnel) Vérifier l’intégrité de la base de données de vulnérabilité :
Extraire l’archive :
unzip vulnerability_db.zip
Récupérer la clé publique de Cyberwatch :
curl https://dl.cyberwatch.fr/securitydb/cyberwatch.pub -o cyberwatch.pub
Calculer le sha256 de la base :
head -c -1 cyberwatch.sig > signature head -c -1 cyberwatch.db | sha256sum | cut -f1 -d' '| tr -d '\n' > cyberwatch.db.sha256
Vérifier la signature :
openssl dgst -sha256 -verify cyberwatch.pub -signature signature cyberwatch.db.sha256
Le resultat de cette commande doit être
Verified OK
.
Importer l’archive dans Cyberwatch
Importer l’archive
vulnerability_db.zip
sur la machine où Cyberwatch est installéSe connecter sur la machine où Cyberwatch est installé en SSH
Déplacer le fichier
.zip
dans le dossier/var/lib/cyberwatch/security_database
:mv vulnerability_db.zip /var/lib/cyberwatch/security_database/vulnerability_db.zip
Redémarrer Cyberwatch :
sudo cyberwatch restart
Importer les données de la base de données des vulnérabilités :
sudo cyberwatch exec sidekiq_master security_database_import_task
Automatiser l’import à l’aide d’une tâche cron
Il est possible d’automatiser l’import de la base de sécurité à l’aide d’une tâche planifiée cron par exemple.
L’exécutable cyberwatch
permet d’exécuter des commandes directement dans nos conteneurs à l’aide de la commande cyberwatch exec
. Cette commande est équivalente à l’utilisation de la commande docker exec -it
qui permet d’exécuter une commande via un shell interactif sur un conteneur.
Cette approche ne fonctionne cependant pas pour les scripts exécutés depuis une crontab, qui ne peut utiliser de shell interactif.
L’utilisation de la commande cyberwatch exec
par défaut dans un script appelé par cron sera donc sans effet.
La solution consiste à appeler l’utilitaire cyberwatch
en mode non-interactif. La commande de synchronisation de la base de données pourrait donc être :
sudo exec_interactive=false cyberwatch exec sidekiq_master security_database_import_task
La mise en place d’une tâche cron pourrait se faire de la façon suivante à l’aide d’un utilisateur sudoer :
# Ouverture de l'éditeur crontab
sudo crontab -e
# A la fin de l'éditeur, placer la ligne suivante qui permet un lancement de la tâche d'import tous les jours à 08h00 du matin :
0 8 * * * exec_interactive=false cyberwatch exec sidekiq_master security_database_import_task