Usando QubesOS para trabajar con Windows 7

No hay muchos artículos sobre Habré dedicados al sistema operativo Qubes, y los que he visto no describen gran parte de la experiencia de usarlo. Debajo del corte, espero corregir esto usando el ejemplo del uso de Qubes como medio de protección (contra) el entorno de Windows y, al mismo tiempo, estimar el número de usuarios del sistema de habla rusa.

Usando QubesOS para trabajar con Windows 7

¿Por qué Qubes?

La historia del fin del soporte técnico para Windows 7 y la creciente ansiedad de los usuarios llevaron a la necesidad de organizar el trabajo de este SO, teniendo en cuenta los siguientes requisitos:

  • garantizar el uso de Windows 7 completamente activado con la capacidad para que el usuario instale actualizaciones y diversas aplicaciones (incluso a través de Internet);
  • implementar una exclusión completa o selectiva de las interacciones de la red en función de las condiciones (operación autónoma y modos de filtrado de tráfico);
  • Proporciona la capacidad de conectar selectivamente medios y dispositivos extraíbles.

Este conjunto de restricciones presupone un usuario claramente preparado, ya que se permite la administración independiente, y las restricciones no están relacionadas con el bloqueo de sus acciones potenciales, sino con la exclusión de posibles errores o efectos destructivos del software. Aquellos. No hay ningún delincuente interno en el modelo.

En nuestra búsqueda de una solución, abandonamos rápidamente la idea de implementar restricciones utilizando herramientas integradas o adicionales de Windows, ya que es bastante difícil restringir efectivamente a un usuario con derechos de administrador, dejándole la capacidad de instalar aplicaciones.

La siguiente solución fue el aislamiento mediante virtualización. Las herramientas conocidas para la virtualización de escritorios (por ejemplo, como virtualbox) no son adecuadas para resolver problemas de seguridad y el usuario deberá realizar las restricciones enumeradas cambiando o ajustando constantemente las propiedades de la máquina virtual invitada (en lo sucesivo denominada como VM), lo que aumenta el riesgo de errores.

Al mismo tiempo, teníamos experiencia en el uso de Qubes como sistema de escritorio de usuario, pero teníamos dudas sobre la estabilidad de trabajar con Windows invitado. Se decidió comprobar la versión actual de Qubes, ya que las limitaciones indicadas encajan muy bien en el paradigma de este sistema, especialmente la implementación de plantillas de máquinas virtuales y la integración visual. A continuación, intentaré hablar brevemente sobre las ideas y herramientas de Qubes, usando el ejemplo de resolución de problemas.

Tipos de virtualización Xen

Qubes se basa en el hipervisor Xen, que minimiza las funciones de gestión de recursos del procesador, memoria y máquinas virtuales. Todo el resto del trabajo con dispositivos se concentra en dom0 basado en el kernel de Linux (Qubes para dom0 usa la distribución Fedora).

Usando QubesOS para trabajar con Windows 7

Xen admite varios tipos de virtualización (daré ejemplos de la arquitectura Intel, aunque Xen admite otras):

  • paravirtualización (PV): un modo de virtualización sin el uso de soporte de hardware, que recuerda a la virtualización de contenedores, se puede utilizar para sistemas con un kernel adaptado (dom0 funciona en este modo);
  • Virtualización completa (HVM): en este modo, se utiliza soporte de hardware para los recursos del procesador y todos los demás equipos se emula mediante QEMU. Ésta es la forma más universal de ejecutar varios sistemas operativos;
  • paravirtualización de hardware (PVH - ParaVirtualized Hardware): un modo de virtualización que utiliza soporte de hardware cuando, para trabajar con hardware, el kernel del sistema invitado utiliza controladores adaptados a las capacidades del hipervisor (por ejemplo, memoria compartida), eliminando la necesidad de emulación QEMU. y aumentar el rendimiento de E/S. El kernel de Linux a partir de 4.11 puede funcionar en este modo.

Usando QubesOS para trabajar con Windows 7

A partir de Qubes 4.0, por razones de seguridad, se abandona el uso del modo de paravirtualización (incluso debido a vulnerabilidades conocidas en la arquitectura Intel, que se mitigan parcialmente mediante el uso de virtualización completa); el modo PVH se usa de forma predeterminada.

Cuando se utiliza la emulación (modo HVM), QEMU se inicia en una VM aislada llamada stubdomain, lo que reduce los riesgos de explotar posibles errores en la implementación (el proyecto QEMU contiene una gran cantidad de código, incluso por compatibilidad).
En nuestro caso, este modo debería usarse para Windows.

Servicio de máquinas virtuales

En la arquitectura de seguridad de Qubes, una de las capacidades clave del hipervisor es la transferencia de dispositivos PCI al entorno invitado. La exclusión de hardware le permite aislar la parte host del sistema de ataques externos. Xen admite esto para los modos PV y HVM; en el segundo caso requiere soporte para IOMMU (Intel VT-d): administración de memoria de hardware para dispositivos virtualizados.

Esto crea varias máquinas virtuales del sistema:

  • sys-net, al que se transfieren los dispositivos de red y que se utiliza como puente para otras máquinas virtuales, por ejemplo, aquellas que implementan las funciones de un firewall o un cliente VPN;
  • sys-usb, al que se transfieren controladores USB y otros dispositivos periféricos;
  • sys-firewall, que no utiliza dispositivos, pero funciona como firewall para las máquinas virtuales conectadas.

Para trabajar con dispositivos USB se utilizan servicios proxy, que proporcionan, entre otras cosas:

  • para la clase de dispositivo HID (dispositivo de interfaz humana), enviar comandos a dom0;
  • para medios extraíbles, redirección de volúmenes de dispositivos a otras máquinas virtuales (excepto dom0);
  • redirigir directamente a un dispositivo USB (usando USBIP y herramientas de integración).

En tal configuración, un ataque exitoso a través de la pila de red o de los dispositivos conectados puede comprometer solo la máquina virtual del servicio en ejecución, y no todo el sistema en su conjunto. Y después de reiniciar la VM del servicio, se cargará en su estado original.

Herramientas de integración de máquinas virtuales

Hay varias formas de interactuar con el escritorio de una máquina virtual: instalando aplicaciones en el sistema invitado o emulando video usando herramientas de virtualización. Las aplicaciones invitadas pueden ser varias herramientas universales de acceso remoto (RDP, VNC, Spice, etc.) o adaptadas a un hipervisor específico (estas herramientas suelen denominarse utilidades invitadas). También se puede utilizar una opción mixta, cuando el hipervisor emula E/S para el sistema invitado y externamente proporciona la capacidad de utilizar un protocolo que combina E/S, por ejemplo, como Spice. Al mismo tiempo, las herramientas de acceso remoto suelen optimizar la imagen, ya que implican trabajar a través de una red, lo que no tiene un efecto positivo en la calidad de la imagen.

Qubes proporciona sus propias herramientas para la integración de VM. En primer lugar, se trata de un subsistema de gráficos: las ventanas de diferentes máquinas virtuales se muestran en un único escritorio con su propio marco de color. En general, las herramientas de integración se basan en las capacidades del hipervisor: memoria compartida (tabla de concesiones Xen), herramientas de notificación (canal de eventos Xen), almacenamiento compartido xenstore y el protocolo de comunicación vchan. Con su ayuda, se implementan los componentes básicos qrexec y qubes-rpc, y los servicios de aplicaciones: redirección de audio o USB, transferencia de archivos o contenidos del portapapeles, ejecución de comandos e inicio de aplicaciones. Es posible establecer políticas que le permitan limitar los servicios disponibles en una VM. La siguiente figura es un ejemplo del procedimiento para inicializar la interacción de dos VM.

Usando QubesOS para trabajar con Windows 7

Así, el trabajo en la VM se realiza sin utilizar red, lo que permite el uso completo de las VM autónomas para evitar fugas de información. Por ejemplo, así es como se implementa la separación de operaciones criptográficas (PGP/SSH), cuando las claves privadas se utilizan en máquinas virtuales aisladas y no van más allá de ellas.

Plantillas, aplicaciones y máquinas virtuales de un solo uso

Todo el trabajo de los usuarios en Qubes se realiza en máquinas virtuales. El sistema host principal se utiliza para controlarlos y visualizarlos. El sistema operativo se instala junto con un conjunto básico de máquinas virtuales basadas en plantillas (TemplateVM). Esta plantilla es una máquina virtual Linux basada en la distribución Fedora o Debian, con herramientas de integración instaladas y configuradas, y particiones de usuario y sistema dedicadas. La instalación y actualización del software se realiza mediante un administrador de paquetes estándar (dnf o apt) desde repositorios configurados con verificación de firma digital obligatoria (GnuPG). El propósito de dichas máquinas virtuales es garantizar la confianza en las máquinas virtuales de aplicaciones lanzadas sobre su base.

Al inicio, una máquina virtual de aplicación (AppVM) utiliza una instantánea de la partición del sistema de la plantilla de máquina virtual correspondiente y, al finalizar, elimina esta instantánea sin guardar los cambios. Los datos requeridos por el usuario se almacenan en una partición de usuario única para cada VM de aplicación, que se monta en el directorio de inicio.

Usando QubesOS para trabajar con Windows 7

El uso de máquinas virtuales desechables (disposableVM) puede resultar útil desde el punto de vista de la seguridad. Dicha máquina virtual se crea basándose en una plantilla en el momento del inicio y se inicia con un propósito: ejecutar una aplicación y completar el trabajo después de cerrarla. Las máquinas virtuales desechables se pueden utilizar para abrir archivos sospechosos cuyo contenido podría conducir a la explotación de vulnerabilidades específicas de aplicaciones. La capacidad de ejecutar una máquina virtual única está integrada en el administrador de archivos (Nautilus) y el cliente de correo electrónico (Thunderbird).

Windows VM también se puede utilizar para crear una plantilla y una VM única moviendo el perfil de usuario a una sección separada. En nuestra versión, el usuario utilizará dicha plantilla para tareas de administración e instalación de aplicaciones. Según la plantilla, se crearán varias máquinas virtuales de aplicaciones, con acceso limitado a la red (capacidades estándar de firewall del sistema) y sin ningún acceso a la red (no se crea un dispositivo de red virtual). Todos los cambios y aplicaciones instaladas en la plantilla estarán disponibles para funcionar en estas máquinas virtuales, e incluso si se introducen programas favoritos, no tendrán acceso a la red para comprometerse.

Lucha por Windows

Las características descritas anteriormente son la base de Qubes y funcionan de manera bastante estable; las dificultades comienzan con Windows. Para integrar Windows, debe utilizar un conjunto de herramientas invitadas Qubes Windows Tools (QWT), que incluye controladores para trabajar con Xen, un controlador qvideo y un conjunto de utilidades para el intercambio de información (transferencia de archivos, portapapeles). El proceso de instalación y configuración está documentado en detalle en el sitio web del proyecto, por lo que compartiremos nuestra experiencia con la aplicación.

La principal dificultad es esencialmente la falta de soporte para las herramientas desarrolladas. Los desarrolladores clave (QWT) parecen no estar disponibles y el proyecto de integración de Windows está esperando un desarrollador principal. Por lo tanto, en primer lugar, era necesario evaluar su desempeño y comprender la posibilidad de apoyarlo de forma independiente, si fuera necesario. El más difícil de desarrollar y depurar es el controlador de gráficos, que emula el adaptador de video y la pantalla para generar una imagen en la memoria compartida, lo que le permite mostrar todo el escritorio o la ventana de la aplicación directamente en la ventana del sistema host. Durante el análisis del funcionamiento del controlador, adaptamos el código para ensamblarlo en un entorno Linux y elaboramos un esquema de depuración entre dos sistemas invitados de Windows. En la etapa de compilación cruzada, hicimos varios cambios que nos simplificaron las cosas, principalmente en términos de instalación "silenciosa" de utilidades, y también eliminaron la molesta degradación del rendimiento cuando se trabaja en una VM durante mucho tiempo. Presentamos los resultados del trabajo en un separado. repositorios, por lo tanto no por mucho tiempo inspirador Desarrollador líder de Qubes.

La etapa más crítica en términos de estabilidad del sistema invitado es el inicio de Windows, aquí puedes ver la familiar pantalla azul (o ni siquiera verla). Para la mayoría de los errores identificados, hubo varias soluciones: eliminar los controladores de dispositivos de bloque Xen, deshabilitar el equilibrio de la memoria de la VM, corregir la configuración de red y minimizar la cantidad de núcleos. Nuestras herramientas invitadas se instalan y ejecutan en Windows 7 y Windows 10 completamente actualizados (excepto qvideo).

Al pasar de un entorno real a uno virtual, surge un problema al activar Windows si se utilizan versiones OEM preinstaladas. Dichos sistemas utilizan activación basada en licencias especificadas en la UEFI del dispositivo. Para procesar correctamente la activación, es necesario traducir una de las secciones ACPI completas del sistema host (tabla SLIC) al sistema invitado y editar ligeramente las demás, registrando el fabricante. Xen permite personalizar el contenido ACPI de tablas adicionales, pero sin modificar las principales. Un parche de un proyecto OpenXT similar, que fue adaptado para Qubes, ayudó con la solución. Las correcciones nos parecieron útiles no solo a nosotros y se tradujeron al repositorio principal de Qubes y a la biblioteca Libvirt.

Las desventajas obvias de las herramientas de integración de Windows incluyen la falta de soporte para audio, dispositivos USB y la complejidad de trabajar con medios, ya que no hay soporte de hardware para la GPU. Pero lo anterior no impide el uso de la VM para trabajar con documentos ofimáticos, ni impide el lanzamiento de aplicaciones corporativas específicas.

El requisito de cambiar al modo operativo sin red o con una red limitada después de crear una plantilla de VM de Windows se cumplió mediante la creación de las configuraciones apropiadas de las VM de la aplicación, y la posibilidad de conectar selectivamente medios extraíbles también se resolvió mediante herramientas estándar del sistema operativo, cuando están conectados , están disponibles en la VM del sistema sys-usb, desde donde se pueden "reenviar" a la VM requerida. El escritorio del usuario se parece a esto.

Usando QubesOS para trabajar con Windows 7

La versión final del sistema fue aceptada positivamente (en la medida en que una solución tan completa lo permita) por parte de los usuarios, y las herramientas estándar del sistema permitieron expandir la aplicación a la estación de trabajo móvil del usuario con acceso a través de VPN.

En lugar de una conclusión

La virtualización en general le permite reducir los riesgos de usar sistemas Windows que se quedan sin soporte: no fuerza la compatibilidad con hardware nuevo, le permite excluir o controlar el acceso al sistema a través de la red o a través de dispositivos conectados, y le permite implementar un entorno de lanzamiento único.

Basado en la idea de aislamiento mediante virtualización, Qubes OS le ayuda a aprovechar estos y otros mecanismos de seguridad. Desde fuera, mucha gente ve a Qubes principalmente como un deseo de anonimato, pero es un sistema útil tanto para los ingenieros, que a menudo hacen malabarismos con proyectos, infraestructuras y secretos para acceder a ellos, como para los investigadores de seguridad. La separación de aplicaciones, datos y formalización de su interacción son los pasos iniciales del análisis de amenazas y el diseño del sistema de seguridad. Esta separación ayuda a estructurar la información y reducir la probabilidad de errores debidos al factor humano: prisas, fatiga, etc.

Actualmente, el principal énfasis en el desarrollo está en ampliar la funcionalidad de los entornos Linux. Se está preparando para su lanzamiento la versión 4.1, que se basará en Fedora 31 e incluirá versiones actuales de los componentes clave Xen y Libvirt. Vale la pena señalar que Qubes es creado por profesionales de seguridad de la información que siempre publican actualizaciones de inmediato si se identifican nuevas amenazas o errores.

Epílogo

Una de las capacidades experimentales que estamos desarrollando nos permite crear máquinas virtuales con soporte para acceso de invitados a la GPU basadas en la tecnología Intel GVT-g, lo que nos permite utilizar las capacidades del adaptador gráfico y ampliar significativamente el alcance del sistema. Al momento de escribir este artículo, esta funcionalidad funciona para versiones de prueba de Qubes 4.1 y está disponible en gitHub.

Fuente: habr.com

Añadir un comentario