Partilhar via


Controle de acesso (Plataforma de Filtragem do Windows)

Na Plataforma de Filtragem do Windows (WFP), o serviço BFE (Mecanismo de Filtragem de Base) implementa o modelo de controle de acesso padrão Windows baseado em tokens de acesso e descritores de segurança.

Modelo de controlo de acessos

Os descritores de segurança podem ser especificados ao adicionar novos objetos WFP, como filtros e subcamadas. Os descritores de segurança são gerenciados usando as funções de gerenciamento do WFP Fwpm*GetSecurityInfo0 e Fwpm*SetSecurityInfo0, onde * significa o nome do objeto WFP. Essas funções são semanticamente idênticas às funções Windows GetSecurityInfo e SetSecurityInfo .

Observação

As funções Fwpm*SetSecurityInfo0 não podem ser chamadas de dentro de uma transação explícita.

Observação

As funções Fwpm*SetSecurityInfo0 só podem ser chamadas de dentro de uma sessão dinâmica se estiverem sendo usadas para gerenciar um objeto dinâmico criado dentro da mesma sessão.

O descritor de segurança padrão para o mecanismo de filtro (o objeto Engine raiz no diagrama abaixo) é o seguinte.

  • Conceda direitos de acesso GENERIC_ALL (GA) ao grupo de Administradores incorporado.
  • Conceda aos operadores de configuração de rede os direitos de acesso GENERIC_READ (GR), GENERIC_WRITE (GW) e GENERIC_EXECUTE (GX).
  • Conceda aos GRGWGX direitos de acesso aos seguintes identificadores de segurança de serviço (SSIDs): MpsSvc (Firewall do Windows), NapAgent (Agente de Proteção de Acesso à Rede), PolicyAgent (Agente de Política IPsec), RpcSs (Chamada de Procedimento Remoto) e WdiServiceHost (Host do Serviço de Diagnóstico).
  • Conceda FWPM_ACTRL_OPEN e FWPM_ACTRL_CLASSIFY a todos. (Estes são direitos de acesso específicos do PAM, descritos na tabela abaixo.)

Os restantes descritores de segurança predefinidos são derivados através de herança.

Há algumas verificações de acesso, como para Fwpm*Add0, Fwpm*CreateEnumHandle0, Fwpm*SubscribeChanges0 chamadas de função, que não podem ser feitas no nível de objeto individual. Para essas funções, há objetos de contêiner para cada tipo de objeto. Para os tipos de objeto padrão (por exemplo, provedores, chamadas, filtros), as funções Fwpm*GetSecurityInfo0 e Fwpm*SetSecurityInfo0 existentes estão sobrecarregadas, de modo que um parâmetro GUID nulo identifica o contêiner associado. Para os outros tipos de objeto (por exemplo, eventos de rede e associações de segurança IPsec), há funções explícitas para gerenciar as informações de segurança do contêiner.

O BFE suporta herança automática de entradas de controle de acesso (ACEs) da Lista de Controle de Acesso Discricionário (DACL). O BFE não oferece suporte a ACEs da Lista de Controlo de Acesso do Sistema (SACL). Os objetos herdam ACEs de seu contêiner. Os contentores herdam ACEs do motor de filtragem. Os caminhos de propagação são mostrados no diagrama abaixo.

Diagrama que mostra os caminhos de propagação ACE, começando com 'Motor'.

Para os tipos de objeto padrão, o BFE impõe todos os direitos de acesso genéricos e padrão. Além disso, o PAM define os seguintes direitos de acesso específicos.

Direito de acesso ao PAM Descrição
FWPM_ACTRL_ADD
Necessário para adicionar um objeto a um contêiner.
FWPM_ACTRL_ADD_LINK
Necessário para criar uma associação a um objeto. Por exemplo, para adicionar um filtro que faça referência a um texto explicativo, o chamador deve ter acesso ADD_LINK ao texto explicativo.
FWPM_ACTRL_BEGIN_READ_TXN
Necessário para iniciar uma transação de leitura explícita.
FWPM_ACTRL_BEGIN_WRITE_TXN
Necessário para iniciar uma transação de gravação explícita.
FWPM_ACTRL_CLASSIFY
Necessário para classificar em relação a uma camada de modo de usuário.
FWPM_ACTRL_ENUM
Necessário para enumerar os objetos em um contêiner. No entanto, o enumerador retorna apenas objetos aos quais o chamador tem acesso FWPM_ACTRL_READ.
FWPM_ACTRL_OPEN
Necessário para abrir uma sessão com BFE.
FWPM_ACTRL_READ
Necessário para ler as propriedades de um objeto.
FWPM_ACTRL_READ_STATS
Necessário para ler estatísticas.
FWPM_ACTRL_SUBSCRIBE
Necessário para se inscrever para notificações. Os subscritores apenas receberão notificações para objetos aos quais tenham acesso FWPM_ACTRL_READ.
FWPM_ACTRL_WRITE
Necessário para definir as opções do motor.

O BFE ignora todas as verificações de acesso para chamadores de modo kernel.

Para evitar que os administradores se bloqueiem fora do BFE, os membros do grupo de administradores incorporados sempre recebem FWPM_ACTRL_OPEN ao objeto do motor. Assim, um administrador pode recuperar o acesso através dos seguintes passos.

  • Habilite o privilégio SE_TAKE_OWNERSHIP_NAME.
  • Chame FwpmEngineOpen0. A chamada é bem-sucedida porque o chamador é membro de Administradores Integrados.
  • Assuma a responsabilidade pelo objeto do motor. Isso ocorre com sucesso porque o chamador tem o privilégio SE_TAKE_OWNERSHIP_NAME.
  • Atualize a DACL. Isto funciona porque o proprietário sempre tem acesso WRITE_DAC

Como o BFE suporta sua própria auditoria personalizada, ele não gera auditorias genéricas de acesso a objetos. Assim, o SACL é ignorado.

Direitos de acesso necessários do Programa Alimentar Mundial

A tabela abaixo mostra os direitos de acesso exigidos pelas funções do WFP para acessar vários objetos da plataforma de filtragem. As funções FwpmFilter* são listadas como exemplo para aceder aos objetos padrão. Todas as outras funções que acedem a objetos padrão seguem o modelo de acesso das funções FwpmFilter*.

Função Objeto verificado Acesso necessário
FwpmEngineOpen0 Motores FWPM_ACTRL_OPEN
FwpmEngineGetOption0 Motores FWPM_ACTRL_READ
FwpmEngineSetOption0 Motores FWPM_ACTRL_WRITE
FwpmSessionCreateEnumHandle0 Motores FWPM_ACTRL_ENUM
FwpmTransactionBegin0 Motores FWPM_ACTRL_BEGIN_READ_TXN & FWPM_ACTRL_BEGIN_WRITE_TXN
FwpmFilterAdd0 Provedor de contêiner
Camada
Sub-Layer
Texto explicativo
Contexto do provedor
FWPM_ACTRL_ADDFWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FWPM_ACTRL_ADD_LINK
FwpmFilterDeleteById0
FwpmFilterDeleteByKey0
Filtrar EXCLUIR
FwpmFilterGetById0
FwpmFilterGetByKey0
Filtrar FWPM_ACTRL_READ
FwpmFilterCreateEnumHandle0 Filtro de recipiente
FWPM_ACTRL_ENUMFWPM_ACTRL_READ
FwpmFilterSubscribeChanges0 Contentor FWPM_ACTRL_SUBSCRIBE
FwpmFilterSubscriptionsGet0 Contentor FWPM_ACTRL_READ
IPsecGetStatistics0 Banco de Dados SA de IPsec FWPM_ACTRL_READ_STATS
IPsecSaContextCreate0
IPsecSaContextGetSpi0
IPsecSaContextAddInbound0
IPsecSaContextAddOutbound0
IPsec SA DB FWPM_ACTRL_ADD
IPsecSaContextDeleteById0
IPsecSaContextExpire0
IPsec SA DB (Base de Dados de Associações de Segurança IPsec) EXCLUIR
IPsecSaContextGetById0 IPsec SA DB FWPM_ACTRL_READ
IPsecSaContextCreateEnumHandle0
IPsecSaCreateEnumHandle0
IPsec SA DB FWPM_ACTRL_ENUM & FWPM_ACTRL_READ
IkeextGetStatistics0 IKE SA DB FWPM_ACTRL_READ_STATS
IkeextSaDeleteById0 IKE SA DB EXCLUIR
IkeextSaGetById0 IKE SA DB FWPM_ACTRL_READ
IkeextSaCreateEnumHandle0 IKE SA DB FWPM_ACTRL_ENUM & FWPM_ACTRL_READ
FwpmNetEventCreateEnumHandle0 Contentor FWPM_ACTRL_ENUM
FwpmIPsecTunnelAdd0
FwpmIPsecTunnelDeleteByKey0
Não há verificações de acesso adicionais além das para os filtros individuais e contextos dos fornecedores.