Compartilhar via


Comportamento da quarentena

Um dos desafios de segurança que os administradores de rede enfrentam é configurar um dispositivo corretamente após uma alteração de rede.

As alterações de rede podem ocorrer frequentemente. As operações necessárias para recategorizar a rede após uma alteração e aplicar as políticas de segurança corretas num dispositivo não são úteis e podem exigir um tempo de CPU considerável. Este requisito por operações é especialmente verdadeiro para dispositivos que fazem parte de um domínio. O atraso na aplicação de políticas de segurança durante a recategorização de rede pode ser explorado para vulnerabilidades.

Para contrariar a potencial exploração, a Firewall do Windows coloca uma interface em quarentena até que o sistema recategorize com êxito a rede e a Plataforma de Filtragem do Windows (WFP) tem os filtros corretos aplicados para a configuração da interface atualizada. Durante a quarentena, todas as novas ligações de entrada sem exceções são bloqueadas.

Este documento descreve a funcionalidade de quarentena e explica porque é que o tráfego da aplicação pode ser bloqueado pela quarentena.

Filtros de quarentena

A funcionalidade de quarentena cria filtros que podem ser divididos em três categorias:

  • Colocar em quarentena o filtro de bloco de entrada predefinido
  • Filtros de exceção predefinidos de quarentena
  • Filtros nãoquarantinos da interface

Estes filtros são adicionados na FWPM_SUBLAYER_MPSSVC_QUARANTINE subcaminha e estas camadas são:

  1. FWPM_LAYER_ALE_AUTH_CONNECT_V4
  2. FWPM_LAYER_ALE_AUTH_CONNECT_V6
  3. FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4
  4. FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V6

Observação

As regras de firewall adicionadas pelas definições de política não afetam os filtros na subcamadas de quarentena. Os filtros das regras da firewall são adicionados na FWPM_SUBLAYER_MPSSVC_WF subcaminha. Por outras palavras, não pode adicionar os seus próprios filtros de exceção para impedir que os pacotes sejam avaliados pelos filtros de quarentena.

Para obter mais informações sobre as camadas e subcamada WFP, veja Operação WFP.

Colocar em quarentena o filtro de bloco de entrada predefinido

O filtro de bloco de entrada predefinido de quarentena bloqueia quaisquer novas ligações de entrada nãoloopback, a menos que o pacote não seja explicitamente permitido por outro filtro na subcamada de quarentena.

Filtros de exceção predefinidos de quarentena

Quando a interface está no estado de quarentena, os filtros de exceção predefinidos de quarentena permitem novas ligações de entrada, uma vez que cumprem as condições de um filtro de exceção. Um exemplo dos filtros de exceção é o filtro de exceção de loopback de entrada predefinido de quarentena. Este filtro de exceção permite todos os pacotes de loopback quando a interface está no estado de quarentena.

Filtro nãoquarantino da interface

Os filtros não consoante a interface permitem todos os pacotes nãoloopback se a interface for categorizada com êxito.

Fluxo de quarentena

Os seguintes eventos descrevem o fluxo geral de quarentena:

  1. Existem algumas alterações na interface de rede atual
  2. Os filtros nãoquarantinos da interface não permitem novas ligações de entrada. A interface está agora no estado de quarentena
  3. Todas as ligações de entrada nãoloopback são permitidas pelos filtros de exceção predefinidos de quarentena ou removidas pelo filtro de bloco de entrada predefinido de quarentena
  4. Os filtros WFP aplicáveis ao estado de interface antigo são removidos
  5. Os filtros WFP aplicáveis ao novo estado de interface são adicionados, que incluem os filtros nãoquarantinos para esta interface. Estes filtros são atualizados para corresponder ao estado atual da interface
  6. A interface saiu do estado de quarentena, uma vez que os filtros nãoquarantinos da interface permitem novos pacotes nãoloopback

Diagnóstico de quarentena

Existem dois métodos para identificar as remoção de pacotes do filtro de bloco de entrada predefinido de quarentena.

Dado que o problema de conectividade de rede é reproduzível, os rastreios de diagnóstico podem ser recolhidos ao executar o seguinte numa linha de comandos administrativa:

Netsh wfp cap start
<Reproduce network connectivity issue>
Netsh wfp cap stop

Estes comandos geram um wfpdiag.cab. Dentro da .cab existe uma wfpdiag.xml, que contém a remoção netEvents e os filtros que existiam durante essa reprodução.

Dentro da wfpdiag.xml, procure netEvents que tenham FWPM_NET_EVENT_TYPE_CLASSIFY_DROP como tipo netEvent . Para localizar os eventos de remoção relevantes, procure os eventos de remoção com o endereço IP de destino correspondente, o SID do pacote ou o nome do ID da aplicação.

Os carateres no nome do ID da aplicação são separados por períodos:

 <asString>         \\.d.e.v.i.c.e.\\.h.a.r.d.d.i.s.k.v.o.l.u.m.e.1.\\.w.i.n.d.o.w.s.\\.s.y.s.t.e.m.3.2.\\.s.v.c.h.o.s.t...e.x.e... </asString>

Contém netEvent mais informações sobre o pacote removido, incluindo informações sobre as suas capacidades, o filtro que deixou cair o pacote e muito mais.

Se o filtro que deixou cair esse pacote for pelo filtro de bloco de entrada predefinido de quarentena, a remoção netEvent contém filterOrigin como Quarantine Default.

O código seguinte é um exemplo netEvent com filterOrigin como Quarantine Default.

<netEvent>
    <header>
        <timeStamp>2020-10-07T01:03:56.281Z</timeStamp>
        <flags numItems="9">
            <item>FWPM_NET_EVENT_FLAG_IP_PROTOCOL_SET</item>
            <item>FWPM_NET_EVENT_FLAG_LOCAL_ADDR_SET</item>
            <item>FWPM_NET_EVENT_FLAG_REMOTE_ADDR_SET</item>
            <item>FWPM_NET_EVENT_FLAG_LOCAL_PORT_SET</item>
            <item>FWPM_NET_EVENT_FLAG_REMOTE_PORT_SET</item>
            <item>FWPM_NET_EVENT_FLAG_APP_ID_SET</item>
            <item>FWPM_NET_EVENT_FLAG_USER_ID_SET</item>
            <item>FWPM_NET_EVENT_FLAG_IP_VERSION_SET</item>
            <item>FWPM_NET_EVENT_FLAG_PACKAGE_ID_SET</item>
        </flags>
        <ipVersion>FWP_IP_VERSION_V4</ipVersion>
        <ipProtocol>17</ipProtocol>
        <localAddrV4>255.255.255.255</localAddrV4>
        <remoteAddrV4>10.195.33.252</remoteAddrV4>
        <localPort>21</localPort>
        <remotePort>61706</remotePort>
        <scopeId>0</scopeId>
        <appId>
            <data>5c00640065006d00330032005c0073007600630068006f00730074002e006500780065000000</data>
            <asString>\.d.e.v.i.c.e.\.h.a.r.d.d.i.s.k.v.o.l.u.m.e.1.\.w.i.n.d.o.w.s.\.s.y.s.t.e.m.3.2.\.s.v.c.h.o.s.t...e.x.e...</asString>
        </appId>
        <userId>S-1-5-19</userId>
        <addressFamily>FWP_AF_INET</addressFamily>
        <packageSid>S-1-0-0</packageSid>
        <enterpriseId/>
        <policyFlags>0</policyFlags>
        <effectiveName/>
    </header>
    <type>FWPM_NET_EVENT_TYPE_CLASSIFY_DROP</type>
    <classifyDrop>
        <filterId>66241</filterId>
        <layerId>44</layerId>
        <reauthReason>0</reauthReason>
        <originalProfile>0</originalProfile>
        <currentProfile>0</currentProfile>
        <msFwpDirection>MS_FWP_DIRECTION_OUT</msFwpDirection>
        <isLoopback>false</isLoopback>
        <vSwitchId/>
        <vSwitchSourcePort>0</vSwitchSourcePort>
        <vSwitchDestinationPort>0</vSwitchDestinationPort>
    </classifyDrop>
    <internalFields>
        <internalFlags numItems="1">
            <item>FWPM_NET_EVENT_INTERNAL_FLAG_FILTER_ORIGIN_SET</item>
        </internalFlags>
        <capabilities/>
        <fqbnVersion>0</fqbnVersion>
        <fqbnName/>
        <terminatingFiltersInfo numItems="3">
            <item>
                <filterId>66241</filterId>
                <subLayer>FWPP_SUBLAYER_INTERNAL_FIREWALL_QUARANTINE</subLayer>
                <actionType>FWP_ACTION_BLOCK</actionType>
            </item>
            <item>
                <filterId>74045</filterId>
                <subLayer>FWPP_SUBLAYER_INTERNAL_FIREWALL_WSH</subLayer>
                <actionType>FWP_ACTION_BLOCK</actionType>
            </item>
            <item>
                <filterId>73602</filterId>
                <subLayer>FWPP_SUBLAYER_INTERNAL_FIREWALL_WF</subLayer>
                <actionType>FWP_ACTION_BLOCK</actionType>
            </item>
        </terminatingFiltersInfo>
        <filterOrigin>Quarantine Default</filterOrigin>
         <interfaceIndex>5</interfaceIndex>
    </internalFields>
</netEvent>

Em alternativa, se a auditoria de falha da Ligação da Plataforma de Filtragem estiver ativada, o evento de remoção é registado no Windows Visualizador de Eventos.

Para ativar as auditorias de Ligação da Plataforma de Filtragem, execute o seguinte comando numa linha de comandos administrativa:

Auditpol /set /category:"System" /SubCategory:"Filtering Platform Connection" /success:enable /failure:enable

Auditoria de remoção de exemplo com filterOrigin como Quarantine Default.

Predefinição de quarentena.

Assim que a origem do filtro da remoção tiver sido identificada como o filtro de bloco de entrada predefinido de quarentena, a interface deve ser investigada mais aprofundadamente. Para localizar a interface relevante, utilize o InterfaceIndex valor da auditoria de netEvent evento ou no seguinte comando do PowerShell para gerar mais informações sobre a interface:

Get-NetIPInterface -InterfaceIndex <Interface Index>
Get-NetIPInterface -InterfaceIndex 5

Com a ajuda do nome da interface, o visualizador de eventos pode ser procurado por quaisquer alterações relacionadas com a interface.

Para ativar mais eventos de auditoria de rede, veja Ativar Eventos de Auditoria da Firewall do Windows e IPsec.

Muitas vezes, as remoção de pacotes do filtro de bloco de entrada predefinido de quarentena são transitórias e não significam nada mais do que uma alteração de rede na interface.