Segurança de script

 

Aplica-se a: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

Tópico modificado em: 2007-02-12

Este tópico explica como a segurança de script no Shell de Gerenciamento do Exchange ajuda a impedir que scripts indesejados ou prejudiciais sejam executados na sua organização e quais opções estão disponíveis para modificar a segurança de script para atender aos requisitos da sua organização.

Normalmente, você encontra scripts de três origens diferentes: você mesmo, outra pessoa na organização e escritores de scripts de fora da organização, como da Internet. Se você escreve um script, você confia que ele fará o que foi projetado para fazer. Se você compartilhar o script com outros administradores da organização, eles também poderão confiar no script, mas somente porque confiam em você.

Quando os scripts provêm de outras fontes, como a Internet, a segurança de script é uma preocupação. A única forma de confiar em scripts de fontes desconhecidas para a sua organização é inspecionar o código do script diretamente e testá-lo em um ambiente de laboratório isolado. Este processo pode ser demorado e tedioso. No entanto, é uma prática recomendada para evitar a execução não intencional de códigos mal-intencionados ou destrutivos.

O Shell de Gerenciamento do Exchange oferece suporte ao uso recomendado de assinaturas digitais para garantir que um script não seja alterado depois de sua criação. Para obter mais informações sobre assinaturas digitais, consulte "Noções básicas da assinatura de código" posteriormente neste tópico. 

Modos de execução de script

Quatro modos de execução de script são possíveis para o Shell de Gerenciamento do Exchange para controle de quais scripts são usados, dependendo de como eles são assinados e de se provêm de origens conhecidas ou desconhecidas. A tabela a seguir descreve cada modo de execução de script.

Modos de execução de script

Modo Descrição

Modo Restricted

Nenhum script será executado, mesmo que seja assinado por um editor confiável.

Modo AllSigned

Todos os scripts devem ser assinados digitalmente por um editor confiável para serem executados.

Modo RemoteSigned

Todos os scripts criados localmente serão executados. Scripts baixados de locais remotos, como a Internet, que não forem confiáveis, não serão executados. Este é o modo de execução padrão.

Modo Unrestricted

Todos os scripts, independentemente de serem assinados digitalmente ou confiáveis, serão executados. Não recomendamos o modo Unrestricted a menos que você esteja executando o script em um ambiente de teste controlado que não seja de produção.

Para alterar o modo de execução de script do modo padrão RemoteSigned, use o cmdlet Set-ExecutionPolicy no Shell de Gerenciamento do Exchange. Por exemplo, para alterar a diretiva de execução para o modo AllSigned, execute o seguinte comando:

Set-ExecutionPolicy AllSigned

O Shell de Gerenciamento do Exchange reconhece a mudança na diretiva imediatamente.

Organizações grandes que desejam definir um modo de execução de script consistente para todos os computadores que estão executando o Shell de Gerenciamento do Exchange devem aplicar a configuração de modo de execução de script usando uma diretiva de grupo do Active Directory. Você configura a diretiva de grupo do Active Directory para definir o valor ExecutionPolicy localizado na chave de Registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell como o modo desejado de execução de script.

Aviso

UNRESOLVED_TOKEN_VAL(exRegistry)

Noções básicas da assinatura de código

Assinaturas digitais são criadas utilizando um algoritmo de assinatura de chave pública que usa duas chaves de criptografia chamadas par de chaves: a chave pública e a chave privada. A chave privada é conhecida apenas por seu proprietário, e a chave pública fica disponível para todos. Em assinaturas digitais, a chave privada gera a assinatura, e a chave pública correspondente a valida.

Um certificado é um documento digital que normalmente é usado para autenticação e para ajudar a manter a segurança de informações em redes abertas. Um certificado vincula de modo seguro uma chave pública à entidade que contém a chave privada correspondente. Os certificados são assinados digitalmente pela autoridade de certificação (CA) emissora. Utilizando um certificado de assinatura de código, o autor do script adiciona uma assinatura digital ao arquivo do script. Durante o processo, um hash unidirecional do script é criado e criptografado utilizando a chave privada. O hash criptografado é uma cadeia de caracteres de assinatura digital adicionada ao arquivo do script. Esta cadeia de caracteres de assinatura digital é executada de forma a não interferir na funcionalidade do script.

Quando este script é executado em um ambiente do Shell de Gerenciamento do Exchange em que a assinatura de código é necessária, um novo hash unidirecional do arquivo de script é produzido. O hash unidirecional é comparado ao hash criptografado incluído com o arquivo de script após ser criptografado utilizando a chave pública. Se o script não tiver sido alterado após ter sido assinado, os hashes serão correspondentes. O computador tentará, em seguida, verificar se a assinatura é de um editor confiável criando uma cadeia de certificados para uma autoridade de certificação confiável. Se a confiança for verificada, o script será executado.

Um script ser ou não de uma fonte confiável depende da origem do certificado de assinatura de código usado para assinar o script digitalmente. Geralmente, existem dois tipos de certificados:

  • Certificados emitidos por uma autoridade de certificação confiável  A autoridade de certificação verifica a identidade do solicitante antes de emitir um certificado de assinatura de código. A autoridade emissora pode ser uma autoridade de terceiros, externa e pública que venda certificados ou uma autoridade de certificação interna hospedada por sua organização. Se você assinar um script utilizando este tipo de certificado, esse script pode ser compartilhado com usuários em outros computadores que reconheçam e confiem na autoridade de certificação que emitiu o certificado.

  • Certificados auto-assinados  Para este tipo de certificado, seu computador é a autoridade que cria o certificado. A vantagem de um certificado auto-assinado é que é possível escrever, assinar e executar scripts em seu computador. Entretanto, não é possível compartilhar o script para execução em outros computadores porque eles não reconhecem o seu computador como uma autoridade de certificação confiável. Se eles não confiam no computador, não é possível validar a assinatura auto-assinada e o script não será executado.

Cmdlets para gerenciamento de assinatura de código

O Shell de Gerenciamento do Exchange inclui dois cmdlets para gerenciamento de assinatura de código. O cmdlet Set-AuthenticodeSignature é utilizado para adicionar assinaturas digitais a arquivos de script. O cmdlet Set-AuthenticodeSignature leva o nome do arquivo a ser assinado como primeiro parâmetro posicional. Se o arquivo não estiver no diretório de trabalho atual, você deverá fornecer o caminho do arquivo. O segundo parâmetro de entrada desse cmdlet é o certificado utilizado para assinatura. Este certificado é armazenado no armazenamento de certificados local. Você deve fornecer este parâmetro na forma de uma cadeia de caracteres que faça referência ao certificado. O certificado pode ser acessado por meio da unidade Cert: .

O segundo cmdlet para gerenciamento de assinatura de código é o Get-AuthenticodeSignature . Utilize o cmdlet Get-AuthenticodeSignature para verificar e confirmar o status atual da assinatura do código para o arquivo fornecido como entrada de parâmetro. Se houver um problema quando você utilizar um script, a saída do cmdlet Get-AuthenticodeSignature fornecerá informações úteis sobre solução de problemas.

Se você quiser executar scripts de fontes externas, como a Microsoft, você deve adaptar os scripts de acordo com o modo de execução de script do seu ambiente. Você pode receber os scripts como arquivos .txt básicos, renomeá-los como arquivos de script .ps1 e, após aplicar as assinaturas necessárias, executá-los como se você os tivesse escrito.

Para obter mais informações sobre assinaturas digitais e diretivas de execução de script, no Shell de Gerenciamento do Exchange, execute o comando a seguir: Get-Help About_Signing. Este comando retorna informações de ajuda que incluem instruções detalhadas para assinatura digital de scripts.