Me preocupa la superficie de ataque que ofrece la pila de redes del kernel de Linux, incluidos los controladores nic y el filtrado de paquetes, a un atacante remoto. Así que estoy planeando aislar la mayor parte del código de red (controladores, filtrado de paquetes, etc.) en una máquina virtual KVM (básicamente, lo que Qubes OS está haciendo, pero con kvm en lugar del hipervisor xen tipo 1)
AFAIK, hay dos formas de lograrlo: puede pasar por el dispositivo Ethernet del host mediante el paso a través de PCI, lo que tiene la ventaja de que podemos usar el hardware IOMMU de la máquina para aislar el DMA, o usar un dispositivo Ethernet conectado a través de USB y pasar A través del dispositivo USB a la máquina virtual. En ambos casos, es el núcleo de la máquina virtual el que realmente hace la red de bajo nivel. Usaría el paso a través de PCI de la NIC de la placa base, pero por varias razones eso no es una opción, así que estoy mirando el paso a través de USB de un dongle de ethernet a usb.
- ¿Estoy en lo cierto al suponer que con ambos métodos (PCI y USB passthrough), en realidad estoy reduciendo la superficie de ataque en el núcleo del host en lo que respecta a las redes? En mi opinión, con esa solución, el núcleo del host simplemente pasa a través de los datos a la máquina virtual y ninguno de los tráficos de la red toca ninguna parte del código de red del núcleo del host. ¿Está bien?
- ¿Hay problemas evidentes al pasar a través de un dispositivo a través de USB que hace que el aislamiento de las redes en la máquina virtual sea inútil / inútil? No me preocupa la seguridad física de la máquina, por ejemplo, No tengo que defenderme contra alguien que esté enchufando un adaptador USB falso que podría convencer al controlador USB 3 del host para que haga cualquier cosa que no debería hacer. Mi objetivo principal es hacer que las explotaciones remotas sean más difíciles.
- ¿Es todo el esfuerzo una causa perdida? P.ej. ¿Me preocupan los agujeros en una parte probada y verdadera del kernel, mientras agrego una superficie de ataque más grande al sistema mediante el uso de la virtualización? ¿Realmente estoy reduciendo la seguridad general del sistema mediante el uso de KVM?