Página 1 de 1

[RESUELTO] Despliegue de secretos en estaciones equipadas con un agente WAPT

Publicado: 31 de marzo de 2022 - 12:48
por croquebert
Hola a todos,

Contexto:
Trabajo remoto sin VPN
Versión de WAPT: 2.1 Enterprise
Server SO: Debian 11
Consola de administración SO: Win10pro
Estación de trabajo de desarrollo de paquetes SO: Win10pro


Tenemos un caso de uso clásico:

Nos gustaría enviar o actualizar un secreto separado para cada estación de trabajo administrada con WAPT, mientras preservamos la confidencialidad de este secreto entre estaciones de trabajo (una estación de trabajo no puede obtener el secreto de otra).

Una solución (1) sería crear un paquete separado para cada estación de trabajo que contenga el secreto a implementar y asociarlo con la estación de trabajo correspondiente (teniendo cuidado de proteger el secreto siguiendo las directrices en https://www.wapt.fr/fr/doc/wapt-create- ... pt-package ). Sin embargo, esto se vuelve rápidamente tedioso cuando el número de estaciones de trabajo es grande y la frecuencia de actualización es alta.

Otra solución (2) sería crear un paquete genérico que detecte la estación de trabajo correspondiente y recupere este secreto de una ubicación protegida. Pero, ¿cómo podemos acceder solo al secreto correspondiente a la estación de trabajo sin implementar otro secreto previamente?

Otra solución (3) sería automatizar la creación y actualización de paquetes para la solución (1). Esta generación se realiza en una estación de trabajo capaz de firmar paquetes (una estación de trabajo de desarrollo WAPT fuera de la estación de trabajo principal con una consola de administración WAPT dedicada).

Otra solución (4) sería enviar el secreto a una ubicación específica en la estación de trabajo a través de un canal bidireccional establecido (¿agente websocket?) y luego instalar un paquete WAPT que gestione este secreto directamente en la estación de trabajo. Pero, ¿cómo enviamos el secreto al sistema de archivos del destino a través de este canal? ¿

Se ha encontrado alguna vez con esta situación? Si es así, ¿cómo la resolvió?

Christophe

Re: Despliegue de secretos en estaciones equipadas con un agente WAPT

Publicado: 31 de marzo de 2022 - 16:21
por vcardon
croquebert escribió: 31 de marzo de 2022 - 12:48 Una solución (1) sería crear un paquete separado para cada estación de trabajo que contenga el secreto a implementar y asociarlo con la estación de trabajo correspondiente (asegurándose de proteger el secreto siguiendo las instrucciones en https://www.wapt.fr/fr/doc/wapt-create- ... pt-package ). Sin embargo, esto se vuelve rápidamente tedioso cuando el número de estaciones de trabajo es grande y la frecuencia de actualización es alta.
Este es el único método bueno si quieres garantizar la seguridad perfecta de tus secretos, pero carece de un asistente que haga la tarea menos laboriosa.

Usted es la segunda persona que nos plantea este problema, por lo que es alentador saber que esta función tan útil... se está utilizando.

Transmitiré tu comentario a los equipos de desarrollo.

Re: Despliegue de secretos en estaciones equipadas con un agente WAPT

Publicado: 31 de marzo de 2022 - 21:31
por sfonteneau
Sería interesante saber el requisito exacto

Por ejemplo, también podríamos dejar que la estación de trabajo elija su clave secreta (¿simétrica?) y dejar que la estación de trabajo envíe la información al administrador en forma cifrada, en el caso de una contraseña, por ejemplo:

Código: Seleccionar todo

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

def install():
    randompassword = 'password'
    print_encrypted_data(randompassword,glob.glob(('*.crt'))) 
- Pero eso no satisface necesariamente la necesidad.

- La solución 3 sería posible, pero requiere que una máquina con la clave privada permanezca encendida (no el servidor) para recrear el paquete de vez en cuando.

En Python, también podríamos realizar algunas funciones update_package como esta:

Obtenga un archivo Excel de un recurso compartido que represente una asignación del nombre de la estación de trabajo -> clave (o el último usuario que inició sesión en la máquina o algo más... algo del inventario de la estación de trabajo) y cifre diferentes datos según la estación de trabajo.

Este es el método mixto 1/3 (para actualizar el paquete solo necesitarás reiniciar la actualización del paquete en la GUI desde la consola)

Re: Despliegue de secretos en estaciones equipadas con un agente WAPT

Publicado: 1 de abril de 2022 - 12:31
por croquebert
vcardon escribió: 31 de marzo de 2022 - 16:21
croquebert escribió: 31 de marzo de 2022 - 12:48 Una solución (1) sería crear un paquete separado para cada estación de trabajo que contenga el secreto a implementar y asociarlo con la estación de trabajo correspondiente (asegurándose de proteger el secreto siguiendo las instrucciones en https://www.wapt.fr/fr/doc/wapt-create- ... pt-package ). Sin embargo, esto se vuelve rápidamente tedioso cuando el número de estaciones de trabajo es grande y la frecuencia de actualización es alta.
Este es el único método bueno si quieres garantizar la seguridad perfecta de tus secretos, pero carece de un asistente que haga la tarea menos laboriosa.

Usted es la segunda persona que nos plantea este problema, por lo que es alentador saber que esta función tan útil... se está utilizando.

Transmitiré tu comentario a los equipos de desarrollo.
Hola Vincent,

Gracias por tus comentarios.

De hecho, un paquete por estación de trabajo afectada mejoraría la seguridad. Los mecanismos que faltan son para automatizar la creación, actualización y asociación de estos paquetes con las estaciones de trabajo objetivo (aunque esto debería ser posible con...) https://www.wapt.fr/en/doc/wapt-command ... paquetes t).

La solución (4) sugirió enmascarar la complejidad de crear el paquete que contiene el secreto ofreciendo en la interfaz WAPT una funcionalidad de tipo push en el sistema de archivos del objetivo (una especie de GPO de copia de archivo inversa).

Pero tengo lo que necesito para empezar.

Cristóbal

Re: Despliegue de secretos en estaciones equipadas con un agente WAPT

Publicado: 1 de abril de 2022 - 12:50 p. m.
por croquebert
sfonteneau escribió: 31 de marzo de 2022 - 21:31 Sería interesante saber el requisito exacto

Por ejemplo, también podríamos dejar que la estación de trabajo elija su clave secreta (¿simétrica?) y dejar que la estación de trabajo envíe la información al administrador en forma cifrada, en el caso de una contraseña, por ejemplo:

Código: Seleccionar todo

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

def install():
    randompassword = 'password'
    print_encrypted_data(randompassword,glob.glob(('*.crt'))) 
- Pero eso no satisface necesariamente la necesidad.

- La solución 3 sería posible, pero requiere que una máquina con la clave privada permanezca encendida (no el servidor) para recrear el paquete de vez en cuando.

En Python, también podríamos realizar algunas funciones update_package como esta:

Obtenga un archivo Excel de un recurso compartido que represente una asignación del nombre de la estación de trabajo -> clave (o el último usuario que inició sesión en la máquina o algo más... algo del inventario de la estación de trabajo) y cifre diferentes datos según la estación de trabajo.

Este es el método mixto 1/3 (para actualizar el paquete solo necesitarás reiniciar la actualización del paquete en la GUI desde la consola)
Hola Simón,

Gracias por tus comentarios.

La idea subyacente es la actualización de un archivo de configuración que contiene un secreto (por ejemplo, VPN).

Voy a usar un solo paquete que cifrará el secreto de cada máquina usando su certificado mediante un `update_package`. Este paquete contendrá los secretos de cada máquina, pero cifrados. Cada secreto solo será legible por la máquina autorizada (esto es básicamente lo que hace el ejemplo en su documentación).

Veo al menos dos inconvenientes en este método:
  • Un update_package forzará la actualización en máquinas donde el secreto no necesariamente haya cambiado.
  • Todos los secretos, incluso los cifrados, están contenidos en un solo paquete.
Pregunta: ¿Cuál es el algoritmo de cifrado predeterminado?

Cristóbal

Re: Despliegue de secretos en estaciones equipadas con un agente WAPT

Publicado: 1 de abril de 2022 - 14:58
por sfonteneau
croquebert escribió: 1 de abril de 2022 - 12:50
  • Un update_package forzará la actualización en máquinas donde el secreto no necesariamente haya cambiado.
Si no hay ningún incremento en la versión del paquete, está bien
El paquete debería fallar si el UUID del host no está en los datos cifrados
croquebert escribió: 1 de abril de 2022 - 12:50
  • Todos los secretos, incluso los cifrados, están contenidos en un solo paquete.
Sí, pero solo lo puede leer la máquina que tiene su clave; los repositorios secundarios y el propio servidor no podrán leer el paquete. (Tenga en cuenta, sin embargo, que dependemos del inventario de la máquina en el servidor...)
croquebert escribió: 1 de abril de 2022 - 12:50 Pregunta: ¿Cuál es el algoritmo de cifrado predeterminado?
con cifrado: RSAES-OAEP
con encrypt_fernet: AES de 128 bits en modo CBC y relleno PKCS7, con HMAC utilizando SHA256 para autenticación