Proteger uma conexão remota do WMI
Para se conectar a um computador remoto usando o WMI, verifique se as configurações de DCOM corretas e as configurações de segurança do namespace WMI estão habilitadas para a conexão.
O WMI tem configurações padrão de representação, autenticação e serviço de autenticação (NTLM ou Kerberos) que o computador de destino em uma conexão remota exige. Seu computador local pode usar padrões diferentes que o sistema de destino não aceita. É possível alterar essas configurações na chamada de conexão.
As seguintes seções serão abordadas neste tópico:
- Configurações de representação e autenticação do DCOM para WMI
- Configurar a segurança de DCOM para permitir que um usuário acesse um computador remotamente
- Permitir que os usuários acessem um namespace WMI específico
- Definir a segurança do namespace para exigir a criptografia de dados em conexões remotas
- Tópicos relacionados
Configurações de representação e autenticação do DCOM para WMI
O WMI tem configurações padrão de representação, autenticação e serviço de autenticação do DCOM (NTLM ou Kerberos) que o sistema remoto exige. Seu sistema local pode usar padrões diferentes que o sistema de destino remoto não aceita. É possível alterar essas configurações na chamada de conexão. Para obter mais informações, consulte Configurar a segurança do processo do aplicativo cliente. No entanto, para o serviço de autenticação, é recomendável especificar RPC_C_AUTHN_DEFAULT e permitir que o DCOM escolha o serviço apropriado para o computador de destino.
Você pode fornecer configurações em parâmetros das chamadas para CoInitializeSecurity ou CoSetProxyBlanket no C++. Em scripts, você pode estabelecer configurações de segurança em chamadas para SWbemLocator.ConnectServer, em um objeto SWbemSecurity ou na cadeia de caracteres moniker de script.
Para obter uma lista de todas as constantes de representação do C++, consulte Configurar o nível de segurança do processo padrão usando C++. Para obter as constantes do Visual Basic e as cadeias de caracteres de script e usar a conexão moniker, consulte Definir o nível de segurança do processo padrão usando VBScript.
A tabela a seguir lista as configurações padrão de representação, autenticação e serviço de autenticação do DCOM exigidas pelo computador de destino (Computador B) em uma conexão remota. Para obter mais informações, consulte Proteger uma conexão remota do WMI.
Sistema operacional do Computador B | Cadeia de caracteres de script no nível de representação | Cadeia de caracteres de script no nível de autenticação | Serviço de autenticação |
---|---|---|---|
Windows Vista ou posterior | Impersonate | Pkt | Kerberos |
As conexões remotas do WMI são afetadas pelo UAC (Controle de Conta de Usuário) e pelo Firewall do Windows. Para obter mais informações, consulte Conectar-se ao WMI remotamente começando com o Vista e Conectar-se por meio do Firewall do Windows.
Lembre-se de que a conexão com o WMI no computador local tem um nível de autenticação padrão de PktPrivacy.
Configurar a segurança de DCOM para permitir que um usuário acesse um computador remotamente
A segurança no WMI está relacionada à conexão com um namespace WMI. O WMI usa o DCOM para manipular chamadas remotas. Um motivo para a falha na conexão com um computador remoto é devido a uma falha de DCOM (erro "Acesso negado de DCOM" decimal -2147024891 ou hex 0x80070005). Para obter mais informações sobre a segurança de DCOM no WMI para aplicativos C++, consulte Configurar a segurança do processo do aplicativo cliente.
Você pode definir configurações de DCOM para WMI usando o utilitário DCOM Config (DCOMCnfg.exe) encontrado em Ferramentas Administrativas no Painel de Controle. Esse utilitário expõe as configurações que permitem que determinados usuários se conectem ao computador remotamente por meio do DCOM. Os membros do grupo Administradores têm permissão para se conectar remotamente ao computador por padrão. Com esse utilitário, você pode definir a segurança para iniciar, acessar e configurar o serviço WMI.
O procedimento a seguir descreve como conceder permissões de inicialização e ativação remotas do DCOM para alguns usuários e grupos. Se o Computador A estiver se conectando remotamente ao Computador B, você poderá definir essas permissões no Computador B, para permitir que um usuário ou grupo que não faça parte do grupo Administradores no Computador B execute chamadas de inicialização e ativação do DCOM no Computador B.
Para conceder permissões de inicialização e ativação remotas do DCOM para um usuário ou grupo
Clique em Iniciar, Executar, digite DCOMCNFG e clique em OK.
Na caixa de diálogo Serviços de Componentes, expanda Serviços de Componentes, Computadores, clique com o botão direito do mouse em Meu Computador e clique em Propriedades.
Na caixa de diálogo Propriedades de Meu Computador, clique na guia Segurança de COM .
Em Permissões de Inicialização e Ativação, clique em Editar Limites.
Na caixa de diálogo Permissão de Inicialização, siga estas etapas se seu nome ou grupo não aparecer na lista Nomes de grupo ou de usuário:
- Na caixa de diálogo Permissão de Inicialização, clique em Adicionar.
- Na caixa de diálogo Selecionar Usuários, Computadores ou Grupos, adicione seu nome e o grupo na caixa Digite os nomes de objeto a serem selecionados e clique em OK.
Na caixa de diálogo Permissão de Inicialização, selecione seu usuário e grupo na caixa Nomes de grupo ou de usuário. Na coluna Permitir em Permissões para Usuário, selecione Inicialização Remota e Ativação Remota e clique em OK.
O procedimento a seguir descreve como conceder permissões de acesso remoto do DCOM para alguns usuários e grupos. Se o Computador A estiver se conectando remotamente ao Computador B, você poderá definir essas permissões no Computador B, para permitir que um usuário ou grupo que não faça parte do grupo Administradores no Computador B se conecte ao Computador B.
Para conceder permissões de acesso remoto do DCOM
- Clique em Iniciar, Executar, digite DCOMCNFG e clique em OK.
- Na caixa de diálogo Serviços de Componentes, expanda Serviços de Componentes, Computadores, clique com o botão direito do mouse em Meu Computador e clique em Propriedades.
- Na caixa de diálogo Propriedades de Meu Computador, clique na guia Segurança de COM .
- Em Permissões de Acesso, clique em Editar Limites.
- Na caixa de diálogo Permissão de Acesso, selecione o nome de LOGON ANÔNIMO na caixa Nomes de grupo ou de usuário. Na coluna Permitir em Permissões para Usuário, selecione Acesso Remoto e clique em OK.
Permitir que os usuários acessem um namespace WMI específico
Para permitir ou não que os usuários acessem um namespace WMI específico, defina a permissão "Ativação Remota" no Controle WMI para um namespace. Se um usuário tentar se conectar a um namespace ao qual não tem permissão de acesso, ele receberá um erro 0x80041003. Por padrão, essa permissão é habilitada apenas para administradores. Um administrador pode habilitar o acesso remoto a namespaces WMI específicos para um usuário não administrador.
O procedimento a seguir define permissões de habilitação remota para um usuário não administrador.
Para definir permissões de habilitação remota
Conecte-se ao computador remoto usando o Controle WMI.
Para obter mais informações sobre o Controle WMI, consulte Definir a segurança do namespace com o Controle WMI.
Na guia Segurança, selecione o namespace e clique em Segurança.
Localize a conta apropriada e marque Ativação Remota na lista Permissões.
Definir a segurança do namespace para exigir a criptografia de dados em conexões remotas
Um administrador ou um arquivo MOF pode configurar um namespace WMI para que nenhum dado seja retornado, a menos que você use a privacidade de pacote (RPC_C_AUTHN_LEVEL_PKT_PRIVACY ou PktPrivacy como um moniker em um script) em uma conexão com esse namespace. Isso garante que os dados sejam criptografados à medida que cruzam a rede. Se você tentar definir um nível de autenticação mais baixo, receberá uma mensagem de acesso negado. Para obter mais informações, consulte Exigir uma conexão criptografada com um namespace.
O exemplo de código VBScript a seguir mostra como se conectar a um namespace criptografado usando "pktPrivacy".
strComputer = "RemoteComputer"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate,authenticationLevel=pktPrivacy}!\\" _
& strComputer & "\root\EncryptedNamespace")
Tópicos relacionados