Estoy aplicando la administración de la configuración a un VPS alojado por una compañía de alojamiento de VPS. Cambiar la empresa de alojamiento no es una opción, desafortunadamente.
Este VPS tiene las siguientes propiedades:
- cuando se crea una nueva imagen o se vuelve a crear una imagen, genera un nuevo par de claves público / privado SSH aleatorio;
- ni la interfaz web de la empresa de alojamiento de VPS, ni la API de la empresa de alojamiento de VPS, proporcionan una manera de reemplazar ese par de claves por un par de claves conocido;
- ni la interfaz web de la empresa de alojamiento de VPS, ni la API de la empresa de alojamiento de VPS, proporcionan una manera de obtener la huella digital de la clave pública de ese par de claves;
- el host VPS no tiene registros DNS firmados (por ejemplo, DNSSEC);
- la interfaz web de la empresa de alojamiento de VPS y la API do permiten recuperar la dirección IP del VPS;
- la interfaz web y la API de la empresa de alojamiento de VPS do utilizan TLS y tienen un certificado válido de una CA decente;
- la interfaz web de la empresa de alojamiento de VPS sí permite que se cargue la clave pública de un cliente SSH, después de lo cual cada vez que se vuelva a crear la imagen del VPS, agregará esa clave pública a una cuenta específica
.ssh/authorized_keys
archivo.
El primer punto anterior es normalmente algo bueno, pero junto con los dos puntos siguientes, significa que es imposible para la herramienta de administración de la configuración cuando intenta iniciar sesión en el VPS a través de SSH por primera vez después de Se ha vuelto a crear una imagen del SPV para asegurarnos de que la conexión se esté realizando en el medio. En otras palabras, la herramienta de administración de la configuración puede, en el mejor de los casos, usar trust-on-first-use ("TOFU") Enfoque.
Normalmente, utilizaría el nombre de host completo de un VPS como identificador del VPS en la herramienta de administración de la configuración, y evitaría la necesidad de TOFU obteniendo por separado la huella digital de la clave pública SSH del VPS fuera de banda (por ejemplo, a través de una API segura) . Sin embargo, con este VPS en particular, el último paso no es posible.
Como tal, la conexión a través del nombre de host totalmente calificado parece correr el riesgo de un ataque MITM, por ejemplo. a través de falsificación de DNS , aprovechando el hecho de que la herramienta de gestión de la configuración tendría que ser TOFU.
Me parece que la opción más segura aquí sería obtener la dirección IP del SPV de la API a través de HTTPS, y tener la herramienta de administración de configuración SSH para eso. Al menos esto evitaría el riesgo de suplantación de DNS.
(Además, aprovechar el punto 7 anterior significará que incluso si un servidor malicioso se hace pasar por el VPS, al menos el servidor malicioso no obtendrá la contraseña o la clave privada del cliente).
¿Estoy en lo cierto acerca de esto? ¿Hay otros riesgos, o mejores soluciones, que estoy pasando por alto?