Exigir uma conexão criptografada com um namespace

Exija que os scripts e os aplicativos cliente estabeleçam uma conexão criptografada para autenticação adicionando o qualificador RequiresEncryption ao arquivo .mof (Managed Object Format, MOF) que cria o namespace.

Uma conexão criptografada com um namespace do WMI especifica RPC_C_AUTHN_LEVEL_PKT_PRIVACY (ou PktPrivacy em um script) para autenticação. O qualificador RequiresEncryption faz com que o WMI rejeite as solicitações de dados de entrada, a menos que usem explicitamente a autenticação criptografada. Para obter mais informações, consulte Definir o nível de segurança do processo padrão usando VBScript ou Definir a autenticação usando C++.

Você também pode modificar um namespace existente adicionando esse atributo e compilando o arquivo do MOF novamente. RequiresEncryption é usado no MOF com a instrução de pré-processador pragma namespace.

O procedimento a seguir define o namespace para exigir uma conexão criptografada.

Para definir a criptografia necessária

  1. Crie um arquivo MOF (Managed Object Format) ou modifique o arquivo MOF existente que define o namespace.

    O exemplo de código a seguir mostra que o namespace a ser modificado é root\MyNamespace e o arquivo se chama MyNamespace_security.mof. RequiresEncryption tem um tipo de dados booliano, portanto, deve ser definido como True ou False.

    #pragma namespace("\\\\.\\Root\\MyNamespace") 
    
    [RequiresEncryption(TRUE)] 
    instance of __systemSecurity { };
    
  2. Execute mofcomp.exe para compilar o arquivo MOF.

    c:\mofcomp MyNamespace_security.mof

    Em C++, use os métodos IMoFCompiler.

O WMI rejeita um cliente que usa o nível de autenticação padrão, porque o DCOM negocia a segurança para o nível exigido pelo processo SVCHOST no qual o serviço do WMI está em execução. Para obter mais informações sobre hosts de serviço, consulte Hospedagem e segurança do provedor. Para obter mais informações sobre como definir níveis de autenticação ao se conectar a namespaces do WMI, consulte Definir o nível de segurança de processo padrão usando C++, Definir a autenticação usando C++ou Definir o nível de segurança de processo padrão usando VBScript.

Ao retornar dados em uma conexão de retorno de chamada assíncrona, o WMI retorna uma mensagem de acesso negado ao computador solicitante. O WMI também faz uma entrada de log no Log de Eventos NT do computador, com o namespace criptografado informando que uma conexão segura não pode ser estabelecida com o cliente.

Começando no Windows Vista, o arquivo WbemCore.log não existe mais. Você pode marcar o Log de Eventos do NT para entradas que indicam solicitações de dados de entrada rejeitadas para namespaces que exigem criptografia.

Definir descritores de segurança de namespace

WbemAuthenticationLevelEnum

Proteger uma conexão remota ao WMI