Optimización antivirus para contenedores de Windows
La información de esta página se aplica a:
- Windows 10, versiones 1607 y posteriores
- Windows Server 2016 y versiones posteriores
- Productos antivirus (AV) que se ejecutan en el host
En este tema se describen las optimizaciones que los productos av pueden usar para evitar el examen redundante de los archivos de contenedor de Windows y ayudar a mejorar el tiempo de inicio del contenedor.
Información general sobre contenedores
La característica Contenedor de Windows está diseñada para simplificar la distribución y la implementación de aplicaciones. Para obtener más información, consulte la introducción a los contenedores de Windows.
Los contenedores se construyen a partir de cualquier número de capas de paquete. El paquete del sistema operativo base de Windows forma la primera capa.
Cada contenedor tiene un volumen aislado que representa el volumen del sistema en ese contenedor. Un filtro de aislamiento de contenedor (wcifs.sys) proporciona una superposición virtual de capas de paquete en este volumen de contenedor. La superposición se logra mediante marcadores de posición (puntos de reanálisis). El volumen se inicializa con marcadores de posición antes de que el contenedor acceda primero a la ruta de acceso superpuesta. Las lecturas de los archivos de marcador de posición se dirigen al archivo del paquete de respaldo. De este modo, varios volúmenes de contenedor pueden acceder al mismo flujo de datos del archivo de paquete subyacente.
Si un contenedor modifica un archivo, el filtro de aislamiento realiza la copia en escritura y reemplaza el marcador de posición por el contenido del archivo de paquete. Esto interrumpe la "vinculación" con el archivo de paquete para ese contenedor determinado.
Redireccionamiento de lectura
El filtro de aislamiento redirige las lecturas de un archivo de marcador de posición a la capa de paquete adecuada. El redireccionamiento se realiza en el nivel del filtro. Dado que el filtro está debajo del intervalo de AV, los filtros av no verán el redireccionamiento de lectura. AV tampoco verá las aperturas de los archivos de paquete realizados para configurar el redireccionamiento.
Un filtro AV tiene una vista completa de todas las operaciones en el volumen del sistema de contenedor. Ve las operaciones en los archivos de marcador de posición, así como en las modificaciones del archivo o en las nuevas adiciones de archivos.
Problema de examen redundante
Es probable que haya muchos contenedores en función de las mismas capas de paquete. El mismo flujo de datos de un archivo de paquete determinado proporcionará los datos para los marcadores de posición en varios volúmenes del sistema de contenedor. Como resultado, existe la posibilidad de realizar exámenes de AV redundantes de los mismos datos en cada contenedor. Esto tiene un impacto negativo innecesario en el rendimiento de los contenedores. Se trata de un costo significativo dado que se espera que los contenedores se inicien rápidamente y que pueden ser de corta duración.
Enfoque recomendado
Para evitar el examen redundante en contenedores, se recomienda que un producto av modifique su comportamiento, como se describe a continuación. Es el producto av para determinar el beneficio de riesgo y recompensa a sus clientes para este enfoque. Para obtener más información sobre esto, consulte la sección Ventajas y riesgos en la parte inferior de esta página.
1. Instalación del paquete
Durante la instalación del paquete, las herramientas de administración diseñarán archivos en el paquete bajo la raíz de la capa. El filtro av debe continuar examinando los archivos a medida que se colocan en la raíz del paquete y normalmente lo haría. Esto garantiza que todos los archivos de las capas estén inicialmente limpios con respecto al malware.
2. Inicio y ejecución del contenedor
Para el examen en tiempo real de un volumen de contenedor, los VV deben examinarse de forma que evite la redundancia. Los archivos de marcador de posición necesitan tener en cuenta especial. Los archivos modificados por el contenedor o los nuevos archivos creados en el contenedor no se redirigen, por lo que el examen redundante no es un problema.
Para evitar exámenes redundantes, el filtro AV primero debe identificar volúmenes de contenedor y marcadores de posición en esos volúmenes. Por varias razones, no hay ninguna manera directa de que un filtro av consulte si un volumen es un volumen de contenedor o si un archivo determinado es un archivo de marcador de posición. El filtro de aislamiento oculta el punto de reanálisis del marcador de posición por motivos de compatibilidad de aplicaciones (algunas aplicaciones no se comportan correctamente si reconocen que están accediendo a puntos de reanálisis). Además, un volumen es solo un volumen de contenedor mientras se ejecuta un contenedor. El contenedor se puede detener y el volumen puede permanecer remontado. En su lugar, en la creación previa, el filtro av debe consultar el objeto de archivo para determinar si se abre en el contexto de un contenedor. A continuación, puede adjuntar y ECP a la creación y recibir el estado del marcador de posición al finalizar la creación.
Los siguientes cambios son necesarios en el producto av:
Durante la creación previa en un volumen de contenedor, adjunte un ECP a Create CallbackData que recibirá la información del marcador de posición. Estas creaciones se pueden identificar consultando los parámetros SILO desde el objeto fileobject mediante IoGetSiloParameters. Tenga en cuenta que el filtro debe especificar el tamaño en la estructura WCIFS_REDIRECTION_ECP_CONTEXT . Todos los demás campos son campos out establecidos si se confirma el ECP.
En la creación posterior, si se confirma el ECP, examine las marcas de redireccionamiento de ECP. Las marcas indicarán si se ha realizado el servicio abierto desde la capa de paquete o desde la raíz temporal (archivos nuevos o modificados). Las marcas también indicarán si la capa de paquete está registrada y si es remota.
En el caso de las aperturas que se aparecen desde una capa remota, AV debe omitir el examen del archivo. Esto se indica mediante las marcas de redireccionamiento:
WCIFS_REDIRECTION_FLAGS_CREATE_SERVICED_FROM_LAYER && WCIFS_REDIRECTION_FLAGS_CREATE_SERVICED_FROM_REMOTE_LAYER
Se puede suponer que las capas remotas se han examinado en el host remoto. Los paquetes de contenedor de Hyper-V son remotos a la máquina virtual de la utilidad que hospeda el contenedor. Esos paquetes se examinarán normalmente en el host de Hyper-V cuando la máquina virtual de la utilidad acceda a ellos a través del bucle de bucle SMB.
Dado que VolumeGUID y FileId no se aplican a través de remote, estos campos no se establecerán.
En el caso de las aperturas que se aparecen desde una capa registrada, AV debe omitir el examen del archivo. Esto se indica mediante las marcas de redireccionamiento:
WCIFS_REDIRECTION_FLAGS_CREATE_SERVICED_FROM_LAYER && WCIFS_REDIRECTION_FLAGS_CREATE_SERVICED_FROM_REGISTERED_LAYER
La capa registrada se debe examinar de forma asincrónica durante la instalación del paquete y después de la actualización de la firma.
Nota
Es posible que el sistema no identifique las capas registradas en el futuro. En este caso, los archivos de capa local deben identificarse individualmente como se describe en la última viñeta.
Para las aperturas que se proporcionan desde una capa de paquete local, AV debe usar volumeGUID y FileId proporcionados del archivo de capa para determinar si el archivo debe examinarse. Esto probablemente requerirá av para compilar una memoria caché de archivos examinados indexados por guid de volumen y FileId. Esto se indica mediante la marca de redireccionamiento:
WCIFS_REDIRECTION_FLAGS_CREATE_SERVICED_FROM_LAYER
En el caso de los archivos nuevos o modificados en la ubicación temporal, el producto av debe examinar los archivos y realizar su corrección normal. Esto se indica mediante la marca de redireccionamiento:
WCIFS_REDIRECTION_FLAGS_CREATE_SERVICED_FROM_SCRATCH
Dado que no hay ningún archivo de capa en este caso, No se establecerá VolumeGUID ni FileId.
No guarde "este archivo se envía desde la capa" como marcador permanente en su contexto de flujo. Un archivo que se abastezó inicialmente desde la raíz de la capa se puede modificar después de la creación. En este caso, una creación posterior para el mismo archivo puede indicar que se está realizando el servicio de creación desde el volumen del contenedor. El filtro av debe comprender que esto puede ocurrir.
No use la clave del Registro LayerRootLocations.
En el pasado, se recomienda usar la clave del LayerRootLocations
Registro para obtener la ubicación de la imagen base. Los productos av ya no deben usar esta clave del Registro. En su lugar, use el enfoque recomendado en este tema para evitar el examen redundante.
La ubicación del Registro que se había usado para registrar las capas de paquete:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\LayerRootLocations
Ventajas y riesgos
Tenga en cuenta las siguientes ventajas y riesgos para usar estas nuevas optimizaciones para los productos av.
Ventajas
- No afecta al inicio o tiempo de ejecución del contenedor (incluso para el primer contenedor).
- Evita el examen del mismo contenido en varios contenedores.
- Funciona para contenedores de Windows Server. Para el contenedor de Hyper-V, esto funciona para los paquetes, pero requiere trabajo adicional para ejecutar el contenedor.
Riesgos
Si se inicia un contenedor en el tiempo entre la actualización de firma y el siguiente examen antimalware proactivo programado, los archivos ejecutados en el contenedor no se examinan con respecto a las firmas antimalware más recientes. Para mitigar este riesgo, el producto av podría omitir los exámenes de los archivos redirigidos solo si no ha habido una actualización de firma desde el último examen proactivo. Esto limitaría la degradación del rendimiento del contenedor hasta que se complete un examen proactivo con las firmas más recientes. Opcionalmente, el producto av puede desencadenar un examen proactivo en esta situación para que los lanzamientos posteriores de contenedores sean más eficaces.