Despliegue automatizado del escenario con Vagrant

Buenas a todos,

En este artículo explicamos cómo desplegar el escenario propuesto en el post anterior con Vagrant, para así poder trabajar con iptables sin preocuparnos de desplegar el escenario manualmente, con la perdida de tiempo que esto supone. Además, lo interesante de utilizar esta herramienta es que el escenario es totalmente portable, pudiendo cada uno levantarlo desde cualquier sitio sin ningún problema.

Vamos a recordar el escenario:

¿Qué es vagrant?

Vamos a dar una explicación muy breve de Vagrant (tan solo para que se sepa con qué estamos trabajando) puesto que tengo en mente hacer un post dedicado a este software, en el profundizaremos bastante más. En este post el objetivo es trabajar en la configuración de un firewall y solo usaremos esta herramienta para ahorrarnos el despliegue manual.

Vagrant es una herramienta para la creación y configuración de entornos de desarrollo virtualizados. Originalmente se desarrolló para VirtualBox y sistemas de configuración tales como Chef, Salt y Puppet. Sin embargo, desde la versión 1.1, Vagrant es capaz de trabajar con múltiples proveedores, como VMware, Amazon EC2, LXC, DigitalOcean, etc. Aunque Vagrant se ha desarrollado en Ruby se puede usar en multitud de proyectos escritos en otros lenguajes, tales como PHP, Python, Java, C# y JavaScript.

En definitiva, Vagrant nos permite levantar y configurar una o más máquinas virtuales automáticamente.

¿Qué vamos a desplegar?

Una vez finalicemos el despliegue, tendremos las siguientes máquinas virtuales levantadas:

  • firewall:
    • Sistema Operativo: Ubuntu Server 16.04 LTS
    • Software adicional:
      • Scripts para la automatización de la configuración del firewall (en el directorio /scripts)
      • iptables-persistent (para hacer persistente la configuración del firewall)
    • Configuración adicional:
      • Activación del bit de forwarding (para permitir el tráfico entre las interfaces de la máquina virtual)
    • Cinco interfaces virtuales de red:
      • Una en modo NAT (la genera Vagrant automáticamente)
      • Una en modo puente. Será visible por la red local en la que se encuentre el escenario y recibirá la configuración de red del servidor DHCP que cada uno tenga en su LAN
      • Trés interfaces en modo «red interna»:
        • Una que hará de puerta de enlace de la subred asi1 (ver dibujo)
        • Una que hará de puerta de enlace de la subred asi2 (ver dibujo)
        • Una que hará de puerta de enlace de la subred dpto (ver dibujo)
  • pc01-t1:
    • Sistema Operativo: Ubuntu Desktop 18.04 LTS
    • Software adicional:
      • net-tools
    • Configuración adicional:
      • Configuración de la red (establecer la puerta de enlace por defecto: 192.168.101.10)
    • Dos interfaces virtuales de red:
      • Una en modo NAT (la genera Vagrant automáticamente)
      • Una en modo red interna, conectada a la subred asi1 (ver dibujo)
  • pc01-t2:
    • Sistema Operativo: Ubuntu Desktop 18.04 LTS
    • Software adicional:
      • net-tools
    • Configuración adicional:
      • Configuración de la red (establecer la puerta de enlace por defecto: 192.168.102.10)
    • Dos interfaces virtuales de red:
      • Una en modo NAT (la genera Vagrant automáticamente)
      • Una en modo red interna, conectada a la subred asi2 (ver dibujo)
  • servus:
    • Sistema Operativo: Ubuntu Server 16.04 LTS
    • Software adicional:
      • Servidor Web Apache
    • Configuración adicional:
      • Configuración de la red (establecer la puerta de enlace por defecto: 192.168.102.10)
    • Dos interfaces virtuales de red:
      • Una en modo NAT (la genera Vagrant automáticamente)
      • Una en modo red interna, conectada a la subred asi2 (ver dibujo)
  • pc01-dpto:
    • Sistema Operativo: Ubuntu Desktop 18.04 LTS
    • Configuración adicional:
      • Configuración de la red (establecer la puerta de enlace por defecto: 192.168.103.10)
    • Dos interfaces virtuales de red:
      • Una en modo NAT (la genera Vagrant automáticamente)
      • Una en modo red interna, conectada a la subred dpto (ver dibujo)

En definitiva, se despliega el escenario del dibujo del principio del post pero con un nodo menos en la subred asi1 y en asi2. Suprimimos estos dos nodos por no ser necesarios para la reproducir la práctica y con el objetivo de reducir los requisitos mínimos para desplegar el escenario.

Requisitos Mínimos de hardware y software

  • Hardware
    • Memoria RAM: 7 GB (1 por cada máquina virtual desplegada y 2 para el SO anfitrión)
  • Sofware
    • Oracle VM VirtualBox en su última versión
    • Vagrant en su última versión

Instalación de Virtualbox Y vagrant EN UBUNTU 18.04

  • Oracle VM Virtualbox

Descargar Virtualbox para Linux

Elegimos la primera opción de esa lista. Obtenemos un fichero con extensión «.deb». Al hacer doble click sobre el se instalará el software VirtualBox.

Una vez tenemos VirtualBox instalado, descargar el siguiente fichero e instalarlo haciendo doble click sobre él: Descargar VirtualBox extension pack

  • Vagrant

Para instalar esta herramienta basta con dos comandos:

$ sudo apt update
$ sudo apt install vagrant

Despliegue del escenario

Descargamos el escenario:

fw-lab-vagrant.zip

Una vez descargado, descomprimimos el archivo .zip en el directorio que deseemos.

Accedemos a ese directorio (se llamará fw-lab).

Una vez posicionados en el directorio, ejecutamos el siguiente comando:

$ vagrant up

Este comando levantará el escenario, haciéndonos una única pregunta: Con qué interfaz puentear la interfaz virtual en modo puente del firewall. Aparecerá una lista y elegiremos la interfaz a través de la cuál salimos a Internet.

En mi caso es la interfaz enp2s0:

El resto del proceso se realizará automáticamente y al finalizar tendremos lo siguiente (las mmvv indicadas anteriormente):

Opcionalmente, antes de desplegar, para reducir el tiempo que tarda el escenario en desplegarse, podemos descargar las boxes utilizadas por el mismo. Esto podemos hacerlo de la siguiente manera:

$ vagrant box add ubuntu/xenial64
$ vagrant box add peru/ubuntu-18.04-desktop-amd64

Podemos acceder a cada una de las mmvv del escenario ejecutando:

$ vagrant ssh [nombre-de-la-mv]

Ejemplo:

$ vagrant ssh firewall

Los nombres de las mmvv son:

  • firewall
  • pc01-t1
  • pc01-t2
  • servus
  • pc01-dpto

El usuario de cada una de las mmvv es:

  • usuario: vagrant
  • contraseña: vagrant

Los scripts que contienen las configuraciones del firewall están situados en el directorio «/scripts» de la mv «firewall».

Para apagar las máquinas virtuales podemos ejecutar:

$ vagrant halt

Para destruir el escenario podemos ejecutar:

$ vagrant destroy -f

Y poco más, con esto ya podemos trabajar con iptables y probar todas las reglas indicadas en el post anterior.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *