Operación de PMA
Windows Filtering Platform (PMA) realiza sus tareas mediante la integración de las siguientes entidades básicas: Capas, Filtros, Shims y Llamadas.
Capas
Una capa es un contenedor administrado por el motor de filtro cuya función consiste en organizar los filtros en conjuntos. Una capa no es un módulo de la pila de red. Cada capa tiene un esquema que define el tipo de filtros que se pueden agregar a él. Consulte Condiciones de filtrado disponibles en Cada capa de filtrado para obtener más información.
Las capas pueden contener subcapas para administrar los requisitos de filtro en conflicto, como "Bloquear puertos TCP por encima de 1024" y "Abrir puerto 1080". Las reglas para administrar conflictos de filtrado se determinan mediante el arbitraje de filtros.
EL PMA contiene un conjunto de subcapas integrados. Cada capa hereda todas las subcapas integradas. Los usuarios también pueden agregar sus propias subcapas.
La lista de capas del motor de filtro se proporciona en el tema de la sección de referencia Filtrado de identificadores de capa.
Filtros
Un filtro es una regla que coincide con los paquetes entrantes o salientes. La regla indica al motor de filtrado qué hacer con el paquete, incluida la llamada a un módulo de llamada para la inspección profunda de paquetes o flujos. Por ejemplo, un filtro puede especificar "Bloquear tráfico con un puerto TCP mayor que 1024" o "Llamar a IDS para todo el tráfico que no está protegido".
Un filtro de tiempo de arranque es un filtro que se aplica en tiempo de arranque en cuanto se inicia el controlador de pila TCP/IP (tcpip.sys). Cuando se inicia BFE, se deshabilita un filtro en tiempo de arranque. Un filtro se marca como tiempo de arranque estableciendo la marca FWPM_FILTER_FLAG_BOOTTIME cuando se invoca FwpmFilterAdd0 .
Un filtro en tiempo de ejecución es un filtro que se aplica después de que se inicie BFE. Un filtro en tiempo de ejecución puede ser estático, dinámico o persistente en función de la forma en que se creó. Consulte Administración de objetos para obtener más información sobre los distintos tipos de filtros en tiempo de ejecución y su duración.
Cuñas
Una corrección de compatibilidad (shim ) es un componente en modo kernel que toma decisiones de filtrado mediante la clasificación en las capas del motor de filtro. Cada corrección de compatibilidad clasifica una o varias capas. Por ejemplo, la corrección de compatibilidad del módulo de capa de transporte clasifica en la capa de transporte entrante, la capa de transporte saliente y las capas de ALE Connect y Receive-Accept para el primer paquete de un flujo.
A medida que los paquetes, los flujos y los eventos atraviesan la pila de red, las correcciones de compatibilidad los analizan para extraer las condiciones y valores clasificables y, a continuación, llaman al motor de filtros para evaluarlos con los filtros de una capa determinada. El motor de filtro puede invocar una o varias llamadas como parte de la clasificación. Las correcciones de compatibilidad realizan la eliminación real de paquetes, secuencias y eventos en función del resultado de la clasificación realizada por el motor de filtro.
Llamadas
Una llamada es un conjunto de funciones expuestas por un controlador y usadas para el filtrado especializado. Se usan para realizar análisis y manipulación de los paquetes, como el examen de virus, los controles parentales buscan contenido inadecuado, análisis de datos de paquetes para herramientas de supervisión. Algunas llamadas, como el controlador de traducción de direcciones de red (NAT), están integradas en el sistema operativo. Otros, como una llamada de control parental HTTP o la llamada del Sistema de detección de intrusiones (IDS), pueden ser proporcionadas por proveedores de software independientes (ISV). El motor de filtros invoca las funciones de llamada cuando un filtro de llamada correspondiente coincide con una capa determinada.
Las llamadas se pueden registrar en cualquiera de las capas del PMA en modo kernel. Las llamadas pueden devolver una acción ("Bloquear", "Permitir" y, al realizar la inspección de flujos, "Aplazar", "Necesitar más datos", "Quitar conexión") y pueden modificar y proteger el tráfico de red entrante y saliente.
Una vez que se registra una llamada con el motor de filtro, puede recibir tráfico de red para procesar. El tráfico puede ser paquetes, secuencias o eventos en función de la capa. Un agente de firewall o aplicación hace que el tráfico se pase a una llamada agregando un filtro cuya acción es "Callout" y cuyo identificador de llamada es ese identificador de llamada. Las llamadas pueden indicar al motor de filtro que devuelva "Bloquear" o "Permitir" a la corrección de compatibilidad. Las llamadas también pueden devolver "Continuar" para permitir que otros filtros procesen el paquete.
Una sola llamada puede exponer varias llamadas.
Es necesario agregar una llamada (con FwpmCalloutAdd0) y registrarla (con FwpsCalloutRegister) para poder usarla. Se requiere una llamada a FwpmCalloutAdd0 antes de crear filtros que hagan referencia a la llamada. Se requiere una llamada a FwpsCalloutRegister antes de que EL PMA pueda invocar la llamada cuando coincidan los filtros de llamada. De forma predeterminada, los filtros que hacen referencia a las llamadas que se han agregado pero que aún no se han registrado con el motor de filtros se tratan como filtros "Bloquear". El orden de llamada a FwpmCalloutAdd0 y FwpsCalloutRegister no importa. Es necesario agregar una llamada persistente una sola vez y debe registrarse cada vez que se inicia el controlador que implementa la llamada (por ejemplo, después de un reinicio).
clasificación
La clasificación es el proceso de aplicar filtros al tráfico de red (paquete, secuencia o evento) para determinar un resultado de "Permitir" o "Bloquear" para ese tráfico. Para un paquete, secuencia o evento hay una llamada de clasificación por capa.
Durante la clasificación, las propiedades (por ejemplo, la dirección de origen) del paquete, la secuencia o el evento se comparan con las condiciones de filtro establecidas en los filtros de la capa donde se invoca la clasificación. Cuando se encuentran coincidencias, el algoritmo de arbitraje de filtro se usa para determinar el resultado del proceso de clasificación.
Una solicitud de clasificación se desencadena mediante una corrección de compatibilidad ( shim).
Las acciones de clasificación pueden ser:
- Permitir
- Bloquear
- Llamada
- Permitir
- Bloquear
- Continuar
- Defer
- Necesidad de más datos
- Quitar conexión
Operación de PMA
En tiempo de arranque, en cuanto se inicia el controlador de pila TCP/IP (tcpip.sys), el motor de filtro en modo kernel aplica la directiva de seguridad del sistema a través de filtros en tiempo de arranque.
Una vez que el motor de filtrado base (BFE) se inicia en modo de usuario, se agregan filtros persistentes a la plataforma, se deshabilitan los filtros en tiempo de arranque y se envían notificaciones a los controladores de llamada que se suscriben mediante FwpmBfeStateSubscribeChanges0. Las notificaciones se envían inmediatamente después de que se complete la inicialización de BFE. La plataforma ya está lista para que las llamadas se registren y para que se agreguen objetos en tiempo de ejecución.
La transición del tiempo de arranque a los filtros persistentes puede ser de varios segundos o incluso más tiempo en una máquina lenta. Es atómica, por lo que si un proveedor tiene un tiempo de arranque y un filtro persistente, nunca habrá una ventana cuando ninguno esté en vigor.
Una vez que se inicia BFE, los agentes de firewall pueden agregar filtros en tiempo de ejecución o soluciones de firewall personalizadas. BFE procesa estos filtros y los envía a la capa de motor de filtro adecuada para su aplicación. BFE también acepta la configuración de autenticación y envía esta configuración a los módulos de clave IPsec (IKE/AuthIP). Consulte Configuración de IPsec para obtener más información.
En cualquier momento, los filtros y la configuración de autenticación se pueden agregar, quitar o cambiar en el sistema a través de la interfaz RPC expuesta por el BFE. También se pueden agregar o quitar subcapas y módulos de llamada.
Flujo de datos:
- Un paquete entra en la pila de red.
- La pila de red busca y llama a una corrección de compatibilidad.
- La corrección de compatibilidad invoca el proceso de clasificación en una capa determinada.
- Durante la clasificación, los filtros se coinciden y se realiza la acción resultante. (Consulte El arbitraje de filtro).
- Si se hace coincidir algún filtro de llamada durante el proceso de clasificación, se invocan las llamadas correspondientes.
- La corrección de compatibilidad actúa en la decisión de filtrado final (por ejemplo, quitar el paquete).
El flujo de datos de salida sigue un patrón similar.
En los temas siguientes se describe aún más el funcionamiento del PMA.
Temas relacionados