Partilhar via


Restrição da interface RPC

O serviço de Chamada de Procedimento Remoto (RPC) torna as interfaces RPC seguras por padrão para reduzir os ataques. A RestrictRemoteClients chave do Registro permite modificar o comportamento de todas as interfaces RPC no sistema e pode ser usada para eliminar o acesso anônimo remoto às interfaces RPC no sistema, com algumas exceções. Você pode aplicar outros controles de interface usando a chave do Registro abordada EnableAuthEpResolution neste artigo. Tanto os desenvolvedores de aplicativos RPC quanto os administradores de sistema podem configurar restrições de interface RPC.

Prerequisites

Ao usar RestrictRemoteClients no seu servidor:

  • Seus clientes RPC são obrigados a usar a segurança RPC ao entrar em contato com seus aplicativos de servidor, que é o melhor método para mitigar ameaças à segurança.

  • Isente sua configuração RPC de exigir autenticação definindo o sinalizador RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH durante o registro. Isso configura o RPC para permitir conexões anônimas com seus aplicativos.

Mitigação de ameaças RestrictRemoteClients

A habilitação RestrictRemoteClients é útil na mitigação contra worms que dependem de saturações de buffer exploráveis que podem ser invocadas remotamente por meio de conexões anônimas. Os aplicativos RPC que esperam receber chamadas de clientes RPC anônimos remotos podem não ser executados corretamente ao usar esse recurso. Como resultado, os aplicativos que usam DCOM (Distributed Component Object Model) podem não funcionar corretamente se esse valor for definido.

As chamadas RPC usando protocolos sem conexão falham se essa chave estiver habilitada. Chamadas RPC seguras em protocolos sem conexão, como UDP (User Datagram Protocol) e IPX (Internetwork Packet Exchange), usam um nível mais baixo de segurança em comparação com protocolos orientados à conexão. Especificamente, ncadg_ip_udp e ncadg_ipx são considerados menos seguros. Para os fins desta política, essas chamadas são sempre consideradas não seguras.

Para permitir chamadas de cliente RPC usando protocolos sem conexão, mantenha RestrictRemoteClients o valor definido como desativado.

Restrições para clientes RPC

Quando uma interface é registrada usando RpcServerRegisterIfo , o RPC permite que o aplicativo de servidor restrinja o acesso à interface por meio de um retorno de chamada de segurança. A RestrictRemoteClients chave do Registro força o RPC a executar verificações de segurança adicionais para todas as interfaces, mesmo que a interface não tenha retorno de chamada de segurança registrado.

Os clientes RPC que usam a sequência de protocolo de pipe nomeado (ncacn_np) estão isentos de todas as restrições discutidas nesta seção. A sequência de protocolo de pipe nomeado não pode ser restrita devido a problemas significativos de compatibilidade com versões anteriores.

RestrictRemoteClients também pode ser controlado programaticamente no cabeçalho rpcdce.h API (Application Programming Interface).

Configurando RestrictRemoteClients

Para editar essas políticas usando o editor de GPO (Objeto de Diretiva de Grupo):

  1. Selecione Iniciar> , digite gpedit.msc> , pressione Enter para abrir o Editor de Diretiva de Grupo Local.

  2. Para habilitar o equivalente às configurações, navegue até RestrictRemoteClients e selecione uma das seguintes opções:

    • Desabilitado - Esta configuração é o valor padrão para SKUs de servidor. Corresponde ao valor RPC_RESTRICT_REMOTE_CLIENT_NONE em rpcdce.h e é responsabilidade do aplicativo servidor impor restrições RPC apropriadas.
    • Autenticado - Corresponde ao valor RPC_RESTRICT_REMOTE_CLIENT_DEFAULT em rpcdce.h. Permite que apenas Clientes RPC autenticados se conectem a Servidores RPC em execução na máquina na qual a configuração de política é aplicada. O tempo de execução RPC rejeita chamadas anônimas. Se uma interface registrar um retorno de chamada de segurança e fornecer o sinalizador RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH , essa restrição não se aplicará a essa interface.
    • Autenticado sem exceções1 - Corresponde ao valor RPC_RESTRICT_REMOTE_CLIENT_HIGH em rpcdce.h. Permite que apenas Clientes RPC autenticados se conectem a Servidores RPC em execução na máquina na qual a configuração de política é aplicada. Nenhuma exceção é permitida quando esse valor é definido, pois o sistema não pode receber chamadas anônimas remotas usando RPC.

Qualquer alteração em qualquer uma dessas configurações requer uma reinicialização do sistema para entrar em vigor.

Caution

¹Não use esse valor sem testes significativos. Para obter mais informações, consulte Restrições para clientes RPC não autenticados.

EnableAuthEpResolution

A EnableAuthEpResolution chave permite que o tempo de execução do cliente RPC use o NTLM (NT LAN Manager) para autenticar no mapeador de pontos finais quando habilitado. Essa consulta autenticada ocorre somente se a chamada de cliente RPC real usa autenticação RPC.

Os clientes RPC fazem chamadas para um servidor RPC que tem um ponto de extremidade dinâmico registrado com a Autenticação de Cliente do Mapeador de Pontos de Extremidade RPC habilitada. Essas chamadas são consultadas em nome de chamadas autenticadas usando autenticação NTLM.

Os clientes RPC que tentam fazer uma chamada usando um ponto de extremidade dinâmico consultam o Mapeador de Pontos de Extremidade RPC no servidor para determinar a qual ponto de extremidade ele deve se conectar. Essa consulta é executada anonimamente, mesmo que a própria chamada do cliente RPC seja executada usando a segurança RPC. A interface do Mapeador de Pontos de Extremidade RPC não estará acessível anonimamente se a RestrictRemoteClients configuração estiver ativada.

Configurando o EnableAuthEpResolution

Para editar essas políticas usando o editor de GPO (Objeto de Diretiva de Grupo):

  1. Selecione Iniciar> , digite gpedit.msc> , pressione Enter para abrir o Editor de Diretiva de Grupo Local.

  2. Para habilitar o equivalente às configurações, navegue até EnableAuthEpResolution Cliente do Mapeador de Pontos de Extremidade RPC e selecione uma das duas configurações disponíveis:

    • Desativado - Esta configuração é o padrão. Os clientes RPC não se autenticam no Serviço de Mapeador de Pontos de Extremidade, mas podem se comunicar com o Serviço de Mapeador de Pontos de Extremidade no Windows NT4 Server.
    • Ativado - Os clientes de PC autenticam-se através do Serviço de Mapeador de Pontos de Extremidade para as chamadas que contêm informações de autenticação. Os clientes que fazem essas chamadas não conseguem se comunicar com o Serviço Mapeador de Pontos de Extremidade do Windows NT4 Server.

Qualquer alteração em qualquer uma dessas configurações requer uma reinicialização do sistema para entrar em vigor.

Important

As seguintes configurações de Diretiva de Grupo encontradas em Configuração do Computador\Configurações do Windows\Configurações de Segurança\Diretivas Locais\Opções de Segurança não podem ser usadas com EnableAuthEpResolution:

  • Segurança de rede: Restringir NTLM: tráfego NTLM de entrada – "Negar todas as contas"
  • Segurança de rede: Restringir NTLM: tráfego NTLM de saída para servidores remotos – "Negar tudo"

Afastar-se do NTLM para proteger melhor seu ambiente é encorajado. Se for confrontado com uma escolha entre restringir o NTLM e usar EnableAuthEpResolutiono , a abordagem recomendada é que você restrinja o NTLM em seu ambiente.

Outros sinalizadores de registro de interface RPC

Esses sinalizadores de registro de interface são criados para tornar mais fácil para um desenvolvedor de aplicativos proteger uma interface RPC:

  • RPC_IF_ALLOW_CALLBACKS_WITH_NO_AUTH
    Quando esse sinalizador é registrado, o tempo de execução RPC invoca o retorno de chamada de segurança registrado para todas as chamadas, independentemente das configurações de segurança da chamada. Sem esse sinalizador, o RPC rejeita todas as chamadas não autenticadas antes que elas cheguem ao retorno de chamada de segurança. Esse sinalizador funciona somente quando um retorno de chamada de segurança é registrado.

  • RPC_IF_SEC_NO_CACHE
    Um retorno de chamada de segurança é registrado para uma interface para restringir o acesso. Normalmente, o retorno de chamada de segurança representa o cliente para verificar se o cliente tem direitos suficientes para fazer uma chamada para a interface. Quando uma identidade de cliente específica passa pelo retorno de chamada de segurança, geralmente passa o mesmo retorno de chamada de segurança em tentativas subsequentes.

    O tempo de execução RPC aproveita esse padrão lembrando quando uma identidade de cliente individual passa por um retorno de chamada de segurança. Em seguida, ele ignora o retorno de chamada de segurança para chamadas subsequentes desse cliente para a mesma interface. Esse recurso é chamado de cache de retorno de chamada de segurança e existe desde a família de sistemas operacionais Microsoft Windows 2000. Você pode usar o sinalizador RPC_IF_SEC_NO_CACHE para desabilitar o cache de retorno de chamada de segurança para uma determinada interface. O que é útil se a verificação de segurança puder mudar, possivelmente rejeitando uma identidade de cliente que era permitida anteriormente.

  • RPC_IF_LOCAL_ONLY
    Quando uma interface é registrada com esse sinalizador, o RPC rejeita chamadas feitas por clientes RPC remotos. Além disso, chamadas locais em todas as ncadg_sequências de protocolo * e todas as ncacn_sequências de protocolo * (exceto pipes nomeados, usando ncacn_np) também são rejeitadas. Se uma chamada for feita no ncacn_np, o RPC permitirá a chamada somente se ela não vier do SRV (Service Location Protocol), que filtra todas as chamadas remotas. Ncalrpc as chamadas são sempre permitidas.

O uso desses sinalizadores fica a critério do desenvolvedor do aplicativo. Os desenvolvedores de aplicativos RPC recebem ferramentas de segurança adicionais para ajudar a proteger sua interface RPC, pois esses sinalizadores não alteram nenhum aplicativo existente ou fazem com que eles sejam executados incorretamente.

Consulte também