Descripción
Este artículo describe las operaciones que deben realizarse en una plataforma ARM con soporte de virtualización KVM para desplegar un FortiGate.
Alcance
Considere este material como una prueba de concepto que sólo se centra en los pasos involucrados en la configuración del dispositivo ARM y, en el despliegue de la VM huésped. La tecnología ARM es adoptada en gran medida por los proveedores industriales que ofrecen dispositivos robustos con el objetivo de ser instalados cerca de los dispositivos de campo para ejecutar aplicaciones de control.
Solución
Raspberry Pi 4 Modelo B Rev 1.2 se utiliza como plataforma ARM. Se utilizará una versión provisional de FortiGate VM 7.2.x para ARM.
Instalación del sistema operativo en el dispositivo ARM
El Raspberry Pi Imager v1.7.2 se utiliza para formatear y volcar Raspberry Pi OS (64 bits) en una unidad Micro SD de 16 GB.
Una vez instalado el comandolscpu
da alguna información sobre el host ARM.
root# lscpu
Arquitectura: aarch64
Modo(s) operativo(s) de la CPU: 32 bits, 64 bits
[…]
CPU(s): 4
[…]
ID de proveedor: ARM
[…]
Nombre del modelo: Cortex-A72
Paquete cpu-checker
proporciona la herramientakvm-ok
que se utiliza para verificar el correcto soporte de la virtualización KVM.
root# kvm-ok
INFO: /dev/kvm existe
Se puede utilizar la aceleración KVM
Además, verifique en las capacidades del dominio del hipervisor que la arquitectura aarch64 soporta elkvm
tipo de virtualización.
root# virsh domcapabilities –arch aarch64 | grep kvm
kvm</dominio>
La etiqueta kvm
debe estar presente. Si no la tiene, la máquina virtual invitada será muy lenta.
Extracción de imágenes de VM de FortiGate
La VM huésped es una imagen de disco en formato qcow2. Se llama fortios.cqow2
. Está incrustado en un archivo ZIP con una jerarquía plana. El nombre de la imagen para ARM y KVM tiene la siguiente forma: FGT_ARM64_KVM-v7-buildxxxx-FORTINET.out.kvm.zip
donde xxxx
es el número de construcción.
root# zipinfo FGT_ARM64_KVM-v7-build1198-FORTINET.out.kvm.zip
Archivo: FGT_ARM64_KVM-v7-build1198-FORTINET.out.kvm.zip
Tamaño del archivo zip: 71129678 bytes, número de entradas: 1
-rw-r–r– 3.0 unx 82313216 bx defN 22-May-05 04:11 fortios.qcow2
1 archivo, 82313216 bytes sin comprimir, 71129502 bytes comprimidos: 13.6%
La imagen de disco se extrae del archivo ZIP:
root# unzip FGT_ARM64_KVM-v7-build1198-FORTINET.out.kvm.zip
Archivo: FGT_ARM64_KVM-v7-build1198-FORTINET.out.kvm.zip
inflando: fortios.qcow2
root@raspberrypi:/home/pi# qemu-img info fortios.qcow2
imagen: fortios.qcow2
formato de archivo: qcow2
tamaño virtual: 2 GiB (2147483648 bytes)
tamaño del disco: 78.5
MiB cluster_size: 65536
Información específica sobre el formato:
compat: 1.1
tipo de compresión: zlib
lazy refcounts: false
refcount bits: 16
corrupto: falso
l2 extendido: falso
Definición de máquina virtual
El siguiente comando, utilizando la herramienta virt-install
, se ejecuta para definir la máquina virtual huésped.
root# virt-install –noautoconsole –name fgvm –memory 2048 –vcpus 4 –virt-type kvm –import –disk fortios.qcow2 –disk fgvm-logs.qcow2,size=1 –network type=direct,source=eth0,source_mode=bridge,model=virtio
Iniciando la instalación…
Asignando ‘fgvm-logs.qcow2’
1.0 GB 00:00:00
Creación de dominio completada.
root# virsh list
Id Nombre Estado
———————-
1 fgvm en marcha
La VM invitada está definida con 4 CPUs virtuales y 2GB de RAM. Tiene un disco duro virtual adicional (1GB sólo porque el dispositivo no tiene tanto espacio de almacenamiento) que FortiOS utilizará para fines de registro.
Porque en una prueba de concepto, dar a la VM invitada una única interfaz de red virtual de tipo macvtap . Se define sobre la interfaz de red física eth0
.
root# virsh domiflist fgvm
Tipo de interfaz Modelo de origen MAC
———————————————————–
macvtap1 direct eth0 virtio 52:54:00:97:12:cb
# ip link show type macvtap
4: macvtap0@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 500
link/ether 52:54:00:97:12:cb brd ff:ff:ff:ff:ff
El proceso de arranque de la VM invitada puede ser monitorizado.
root# virsh console fgvm
Conectado al dominio ‘fgvm’
El carácter de escape es ^](Ctrl + ])
BdsDxe: cargando Boot0002 «UEFI Misc Device 2» desde PciRoot(0x0)/Pci(0x1,0x3)/Pci(0x0,0x0) BdsDxe: iniciando Boot0002 «UEFI Misc Device 2» desde PciRoot(0x0)/Pci(0x1,0x3)/Pci(0x0,0x0) ¡Bienvenido a GRUB!
Arrancando `FOS’
Pendiente EFI: Arrancando el Kernel de Linux…
stub EFI: Usando DTB de la tabla de configuración
EFI stub: Saliendo de los servicios de arranque e instalando el mapa de direcciones virtual…
El sistema se está iniciando…
Formateando la partición de datos compartidos … ¡hecho!
Iniciando el mantenimiento del sistema…
El número de CPUs activas se reducirá tras el reinicio.
El archivo de configuración puede contener errores.
Por favor, vea los detalles mediante el comando ‘diagnose debug config-error-log read’.
El número de serie es FGVMEVDVUEAQO67E
El uso del disco ha cambiado, por favor espere a que se reinicie…
Formateando el disco…
– desmontando /data2 : ok
Particionado y formateado de la etiqueta /dev/vdb LOGUSEDX6B90CEAB … hecho
¡¡El sistema se está cayendo AHORA !!
Por favor, espere mientras se reinicia el sistema.
[ 101.219174] reinicio: Reiniciando el sistema
[…]
El sistema se está iniciando…
El archivo de configuración puede contener errores.
Por favor, vea los detalles mediante el comando ‘diagnose debug config-error-log read’.
El número de serie es FGVMEVDVUEAQO67E
Inicio de sesión de FortiGate-ARM64-KVM:
La configuración actual de la red es la siguiente.
Se puede realizar una configuración de red inicial a través de la consola de la VM huésped.
root# virsh console fgvm
Conectado al dominio ‘fgvm’
El carácter de escape es ^](Ctrl + ])
FortiGate-ARM64-KVM login: admin
Contraseña:
¡Bienvenido!
FortiGate-ARM64-KVM # config system interface
FortiGate-ARM64-KVM (interfaz) # edit port1
FortiGate-ARM64-KVM (puerto1) # set ip 192.168.254.199/24
FortiGate-ARM64-KVM (puerto1) # end
Se puede probar la comunicación que se origina en la VM huésped. En el siguiente ejemplo, desde la consola de la VM FortiGate, inicie un PING a un dispositivo externo.
FortiGate-ARM64-KVM # execute ping 192.168.254.100
PING 192.168.254.100 (192.168.254.100): 56 bytes de datos
64 bytes desde 192.168.254.100: icmp_seq=0 ttl=64 time=6.1 ms
^C
— 192.168.254.100 estadísticas de ping —
1 paquetes transmitidos, 1 paquetes recibidos, 0% de pérdida de paquetes ida y vuelta min/avg/max = 6.1/6.1/6.1 ms
El dispositivo remoto también puede alcanzar la consola de administración de FortiGate VM.
¿Te ha resultado útil??
0 / 0
Hola, somos Mila Jiménez y César Sánchez. Dos apasionados de la ciberseguridad con muchos años de experiencia. Hemos trabajado en muchas empresas del mundo TI y ahora nos apetece compartir nuestro conocimiento con cualquiera que lo necesite.
¡Si te gusta nuestro contenido puedes invitarnos a un café AQUÍ!