[RESOLU] Déploiement de secrets sur les postes munis d'un agent WAPT

Share here your tips or issues concerning WAPT Console or WAPT Agent / Venez ici partager vos problèmes et astuces concernants la console et l'agent WAPT
Règles du forum
Règles du forum communautaire
* English support on www.reddit.com/r/wapt
* Le support communautaire en français se fait sur ce forum
* Merci de préfixer le titre du topic par [RESOLU] s'il est résolu.
* Merci de ne pas modifier un topic qui est taggé [RESOLU]. Ouvrez un nouveau topic en référençant l'ancien
* Préciser version de WAPT installée ( 1.8.2 / 2.0 / 2.1 / 2.2 / etc.) AINSI QUE l'édition Enterprise / Discovery
* Préciser OS du serveur (Linux / Windows) et version (Debian Stretch/Buster - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets (Windows 7 / 10)
* Comme tout forum communautaire, le support est fait bénévolement par les membres. Si vous avez besoin d'un support commercial, vous pouvez contacter le service commercial Tranquil IT au 02.40.97.57.55
croquebert
Messages : 12
Inscription : 30 mars 2022 - 17:41

31 mars 2022 - 12:48

Bonjour à tous,

Contexte:
Télétravail sans VPN
WAPT version : 2.1 Entreprise
OS serveur : Debian 11
OS console d'administration : Win10pro
OS poste dev de paquets : Win10pro


Nous avons un cas d'usage classique:

Nous souhaiterions envoyer ou mettre à jour un secret distinct pour chaque poste administré au moyen de WAPT, tout en préservant la confidentialité de ce secret entre les postes (un poste ne peut acquérir le secret de l'autre).

Une solution (1) serait de créer un paquet distinct par poste contenant le secret à déployer et de l'associer au poste concerné (en prenant soin de sécuriser le secret en s'inspirant de https://www.wapt.fr/fr/doc/wapt-create- ... pt-package ). Néanmoins, cela s'avère rapidement fastidieux lorsque le nombre de postes est important et que la fréquence de mise à jour est élevée.

Une autre solution (2) serait de créer un paquet générique détectant le poste concerné et d'aller chercher ce secret sur un emplacement protégé. Mais comment n'accéder qu'au secret correspondant au poste sans déployer un autre secret au préalable ?

Une autre solution (3) serait d'automatiser la création et la mise à jour de paquets de la solution (1). Cette génération s'effectue sur un poste capable de signer les paquets (poste de dev WAPT hors poste avec console d'administration WAPT dédié).

Une autre solution (4) serait de pousser le secret à un emplacement donné sur le poste via un canal bidirectionnel établi (websocket agent?) et d'installer à la suite un paquet WAPT traitant ce secret directement sur le poste. Mais comment pousser le secret sur le système de fichier de la cible via ce canal?

Auriez-vous déjà rencontré ce cas et, si oui, comment l'avez vous traité ?

Christophe
Avatar de l’utilisateur
vcardon
Expert WAPT
Messages : 202
Inscription : 06 oct. 2017 - 22:55
Localisation : Nantes, FR

31 mars 2022 - 16:21

croquebert a écrit : 31 mars 2022 - 12:48 Une solution (1) serait de créer un paquet distinct par poste contenant le secret à déployer et de l'associer au poste concerné (en prenant soin de sécuriser le secret en s'inspirant de https://www.wapt.fr/fr/doc/wapt-create- ... pt-package ). Néanmoins, cela s'avère rapidement fastidieux lorsque le nombre de postes est important et que la fréquence de mise à jour est élevée.
C'est la seule bonne méthode si vous voulez assurer une sécurité parfaite pour vos secrets, mais il manque effectivement un assistant pour rendre la chose moins besogneuse.

Vous êtes la deuxième personne à nous remonter la remarque, donc c'est encourageant de savoir que cette fonction très utile est ... utilisée.

Je remonte aux équipes de développement votre remarque.
Vincent CARDON
Tranquil IT
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1353
Inscription : 10 juil. 2014 - 23:52
Contact :

31 mars 2022 - 21:31

Il serait intéressant d'avoir le besoin vraiment exacte

Par exemple on pourrait aussi aussi par exemple laisser le poste choisir sa clé (symétrique ?) secrète et laisser le poste remonter l'information de manière chiffrer a l'admin, cas d'un mot de passe par exemple :

Code : Tout sélectionner

# -*- coding: utf-8 -*-
from setuphelpers import *
from waptcrypto import print_encrypted_data

def install():
    randompassword = 'password'
    print_encrypted_data(randompassword,glob.glob(('*.crt'))) 
- Mais ça ne répond pas forcément au besoin.

- La solution 3 serait possible mais nécessite qu'un poste ayant la clé privé reste allumé (pas le serveur) pour recréer le paquet de temps en temps.

En python on pourrait aussi faire quelques un update_package du type:

Aller chercher un excel sur un partage qui représente un mapping nom du poste -> clé, (ou dernier utilisateur loguer sur la machine ou autre ... quelque chose a partir de l'inventaire du poste) et chiffrer une donnée différente en fonction du poste.

C'est la méthode 1/3 mélanger (pour update le package il faudra juste relancer l'update package du paquet en gui a partir de la console)
croquebert
Messages : 12
Inscription : 30 mars 2022 - 17:41

01 avr. 2022 - 12:31

vcardon a écrit : 31 mars 2022 - 16:21
croquebert a écrit : 31 mars 2022 - 12:48 Une solution (1) serait de créer un paquet distinct par poste contenant le secret à déployer et de l'associer au poste concerné (en prenant soin de sécuriser le secret en s'inspirant de https://www.wapt.fr/fr/doc/wapt-create- ... pt-package ). Néanmoins, cela s'avère rapidement fastidieux lorsque le nombre de postes est important et que la fréquence de mise à jour est élevée.
C'est la seule bonne méthode si vous voulez assurer une sécurité parfaite pour vos secrets, mais il manque effectivement un assistant pour rendre la chose moins besogneuse.

Vous êtes la deuxième personne à nous remonter la remarque, donc c'est encourageant de savoir que cette fonction très utile est ... utilisée.

Je remonte aux équipes de développement votre remarque.
Bonjour Vincent,

Merci pour votre retour.

En effet, un paquet par poste concerné améliorerait la sécurité. Ce sont les mécanismes d'automatisation de création, de mise à jour et d'association de ces paquets avec les postes cibles qui manquent (bien que l'on doive pouvoir automatiser ça avec https://www.wapt.fr/en/doc/wapt-command ... t-packages).

La solution (4) suggérait de masquer la complexité de création du paquet contenant le secret en offrant dans l'interface WAPT une fonctionnalité de type push sur le système de fichier de la cible (sorte de GPO de copie de fichier inversée).

Mais j'ai ce qu'il me faut pour démarrer.

Christophe
croquebert
Messages : 12
Inscription : 30 mars 2022 - 17:41

01 avr. 2022 - 12:50

sfonteneau a écrit : 31 mars 2022 - 21:31 Il serait intéressant d'avoir le besoin vraiment exacte

Par exemple on pourrait aussi aussi par exemple laisser le poste choisir sa clé (symétrique ?) secrète et laisser le poste remonter l'information de manière chiffrer a l'admin, cas d'un mot de passe par exemple :

Code : Tout sélectionner

# -*- coding: utf-8 -*-
from setuphelpers import *
from waptcrypto import print_encrypted_data

def install():
    randompassword = 'password'
    print_encrypted_data(randompassword,glob.glob(('*.crt'))) 
- Mais ça ne répond pas forcément au besoin.

- La solution 3 serait possible mais nécessite qu'un poste ayant la clé privé reste allumé (pas le serveur) pour recréer le paquet de temps en temps.

En python on pourrait aussi faire quelques un update_package du type:

Aller chercher un excel sur un partage qui représente un mapping nom du poste -> clé, (ou dernier utilisateur loguer sur la machine ou autre ... quelque chose a partir de l'inventaire du poste) et chiffrer une donnée différente en fonction du poste.

C'est la méthode 1/3 mélanger (pour update le package il faudra juste relancer l'update package du paquet en gui a partir de la console)
Bonjour Simon,

Merci pour votre retour.

L'idée sous-jacente est la mise à jour d'un fichier de configuration contenant un secret (ex: VPN).

Je vais partir sur un paquet unique qui va chiffrer le secret de chaque poste avec le certificat du poste concerné via un update_package. Ce paquet contiendra les secrets de chaque poste mais chiffrés. Chaque secret ne sera lisible que par le poste autorisé (c'est ce que fait en gros l'exemple sur votre doc).

Je vois deux inconvénients au moins à cette méthode:
  • Un update_package forcera la mise à jour sur des postes ou le secret n'a pas forcement changé.
  • Tous les secrets, même chiffrés, se trouvent dans un paquet unique.
Question : quel est l'algorithme de chiffrement utilisé par défaut ?

Christophe
Avatar de l’utilisateur
sfonteneau
Expert WAPT
Messages : 1353
Inscription : 10 juil. 2014 - 23:52
Contact :

01 avr. 2022 - 14:58

croquebert a écrit : 01 avr. 2022 - 12:50
  • Un update_package forcera la mise à jour sur des postes ou le secret n'a pas forcement changé.
Si il n'y a pas d'incrément de la version du paquet c'est bon
Le paquet doit partir en erreur si l'uuid du poste n'est pas dans les données encrypt
croquebert a écrit : 01 avr. 2022 - 12:50
  • Tous les secrets, même chiffrés, se trouvent dans un paquet unique.
Oui mais lisible que par la machine qui a sa clé, les repo secondaire et le serveur lui même ne pourront pas lire le paquet. (attention tout de même, on fait confiance a l'inventaire du poste sur le serveur ... )
croquebert a écrit : 01 avr. 2022 - 12:50 Question : quel est l'algorithme de chiffrement utilisé par défaut ?
avec encrypt : RSAES-OAEP
avec encrypt_fernet : 128-bit AES in CBC mode and PKCS7 padding, with HMAC using SHA256 for authentication
Répondre