Seguridad en Vagrant
Seguridad en Vagrant: claves SSH, firewalls y permisos.
Cuando trabajas con Vagrant (que básicamente crea y gestiona máquinas virtuales de forma automática), es muy importante cuidar los temas de seguridad, porque a veces esas máquinas quedan expuestas en redes locales o incluso en internet si no las configuras bien.
Los principales puntos de seguridad que debes conocer son:
Claves SSH en Vagrant
-
¿Qué es SSH?
SSH (Secure Shell) es el protocolo que Vagrant usa para conectarse de manera segura a las máquinas virtuales. -
¿Cómo maneja Vagrant las claves SSH?
-
Vagrant usa una clave privada SSH genérica por defecto (
insecure_key
), que todos los usuarios de Vagrant en el mundo conocen. -
Esta clave se instala en las máquinas automáticamente al hacer
vagrant up
. -
Problema: si dejas esta clave por defecto, cualquiera que conozca la clave puede acceder a tu máquina si tiene conexión.
-
-
¿Cómo mejorar esto?
-
Usa la opción
config.ssh.insert_key = true
en tuVagrantfile
.
Esto le dice a Vagrant que genere una clave nueva única para cada máquina. -
Así tendrás una clave segura y privada que solo tú tienes.
Ejemplo en Vagrantfile:
Vagrant.configure("2") do |config| config.ssh.insert_key = true end
-
Firewalls en Vagrant
-
¿Qué es un firewall?
Es un sistema que filtra qué conexiones entrantes y salientes se permiten en tu máquina. -
¿Cómo afecta esto a Vagrant?
Si no proteges tu VM, todos los puertos abiertos de la máquina pueden ser accesibles desde tu red local (¡o peor si es pública!). -
Buenas prácticas con firewalls:
-
Dentro de la VM, instala y configura un firewall, como
ufw
en Ubuntu ofirewalld
en CentOS. -
Cierra todos los puertos que no uses.
-
Solo permite conexiones SSH desde direcciones IP confiables.
-
Evita hacer
config.vm.network "public_network"
si no sabes lo que haces, porque expone la VM directamente a la red pública.
Ejemplo sencillo para configurar UFW en la máquina:
sudo apt update sudo apt install ufw sudo ufw allow ssh sudo ufw enable
-
Permisos en Vagrant
-
¿Por qué importan los permisos?
Porque dentro de la máquina virtual puedes estar ejecutando procesos críticos, servidores web, bases de datos, etc. -
Buenas prácticas de permisos:
-
No trabajar como root todo el tiempo.
Usa usuarios con permisos limitados y solo usasudo
cuando sea necesario. -
Protege los archivos sensibles (
.env
, claves privadas, configuraciones). -
Si compartes carpetas entre tu host y la VM (con
config.vm.synced_folder
), asegúrate de controlar los permisos de esas carpetas.-
Puedes configurar los permisos así:
config.vm.synced_folder "./data", "/vagrant_data", owner: "vagrant", group: "vagrant", mount_options: ["dmode=775,fmode=664"]
-
-
Resumen rápido 🛡️
Tema | Peligro si no cuidas | Solución recomendada |
---|---|---|
Claves SSH | Acceso no autorizado | config.ssh.insert_key = true |
Firewall | Exposición de servicios | Instalar UFW y cerrar puertos innecesarios |
Permisos | Robo de datos o cambios no deseados | Usuarios limitados + cuidado en carpetas compartidas |