NewSID v4.10
Por Mark Russinovich
Publicado: 1° de novembro de 2006
Nota: o NewSID foi desativado e não está mais disponível para download. Confira a postagem no blog de Mark Russinovich: Desativação do NewSID e o mito da duplicação do SID de computador
Em relação aos SIDs, a Microsoft não dá suporte a imagens preparadas usando o NewSID, só àquelas preparadas usando o SysPrep. A Microsoft não testou o NewSID com todas as opções de clonagem de implantação.
Para obter mais informações sobre a política oficial da Microsoft, consulte o seguinte artigo da Base de Dados de Conhecimento Microsoft:
Muitas organizações usam a clonagem de imagem de disco para realizar distribuições em massa do Windows. Essa técnica envolve copiar os discos de um computador Windows totalmente instalado e configurado nas unidades de disco de outros computadores. Esses outros computadores parecem efetivamente ter passado pelo mesmo processo de instalação e ficam disponíveis imediatamente para uso.
Embora esse método economize horas de trabalho e problemas em relação a outras abordagens de distribuição, ele apresenta o grande problema de que cada sistema clonado tem um SID (Identificador de segurança) de computador idêntico. Isso compromete a segurança em ambientes de Grupo de trabalho, e a segurança de mídia removível também pode ser comprometida em redes que tenham vários SIDs de computador idênticos.
A demanda da comunidade do Windows fez com que várias empresas desenvolvessem programas capazes de alterar o SID de um computador depois que um sistema fosse clonado. No entanto, o SID Changer e o Ghost Walker da Symantec só são vendidos como parte do produto de ponta de cada empresa. Além disso, ambos são executados em um prompt de comando dos DOS (o alterador da Altiris é semelhante ao NewSID).
O NewSID é um programa desenvolvido por nós que altera o SID de um computador. Além de ser gratuito, é um programa Win32, o que significa que ele pode ser executado facilmente em sistemas que foram clonados anteriormente.
Leia este artigo na íntegra antes de usar esse programa.
Informações de versão:
- A versão 4.0 tem suporte para Windows XP e .NET Server, uma interface com o estilo de assistente, além de permitir especificar o SID que você deseja aplicar, a compactação do Registro e também a opção de renomear um computador (o que resulta em uma alteração dos nomes NetBIOS e DNS).
- A versão 3.02 corrige um bug que fazia com que o NewSid não copiasse corretamente valores padrão com tipos de valor inválidos ao renomear uma chave com um SID antigo para um novo SID. Na verdade, o NT usa esses valores inválidos em determinados momentos no SAM. Esse bug gerava mensagens de erro relatando acesso negado quando as informações da conta eram atualizadas por um usuário autorizado.
- A versão 3.01 adiciona uma solução alternativa para uma chave inacessível do Registro criada pelo Microsoft Transaction Server. Sem a solução alternativa, o NewSID era encerrado prematuramente.
- A versão 3.0 apresenta um recurso de sincronização de SID que direciona o NewSID para obter um SID de um outro computador para ser aplicado.
- A versão 2.0 tem uma opção de modo automatizado que permite alterar o nome do computador também.
- A versão 1.2 corrige um bug que foi introduzido na versão 1.1, em que alguns descritores de segurança do sistema de arquivos não eram atualizados.
- A versão 1.1 corrige um bug relativamente pequeno que afetou apenas determinadas instalações. Ela também foi atualizada para alterar SIDs associados às configurações de permissão de compartilhamentos de arquivos e impressoras.
Uma das formas mais populares de executar distribuições em massa do Windows (normalmente centenas de computadores) em ambientes corporativos é baseada na técnica de clonagem de disco. Um administrador do sistema instala o sistema operacional base e o software de complemento usado na empresa em um computador modelo. Depois de configurar o computador para operar na rede da empresa, ferramentas automatizadas de duplicação de disco ou de sistema (como o Ghost da Symantec, o Image Drive da PowerQuest e o RapiDeploy da Altiris) são usadas para copiar as unidades do computador modelo em dezenas ou centenas de computadores. Esses clones recebem ajustes finais, como a atribuição de nomes exclusivos, depois são usados por funcionários da empresa.
Outra forma popular de distribuição é por meio do utilitário sysdiff da Microsoft (parte do Kit de Recursos do Windows). Essa ferramenta exige que o administrador do sistema faça uma instalação completa (geralmente uma instalação autônoma com script) em cada computador e, em seguida, o sysdiff automatiza a aplicação de imagens de instalação de software complementar.
Como a instalação é ignorada, e como a cópia do setor de disco é mais eficiente do que a cópia de arquivo, uma distribuição baseada em clonagem pode economizar dezenas de horas em uma instalação sysdiff semelhante. Além disso, o administrador do sistema não precisa aprender a usar a instalação autônoma ou o sysdiff, nem criar e depurar scripts de instalação. Só isso já economiza horas de trabalho.
O problema com a clonagem é que o suporte oferecido pela Microsoft se dá em um sentido muito limitado. A Microsoft afirmou que só há suporte para os sistemas de clonagem se o processo for feito antes que a parte da GUI da Instalação do Windows seja atingida. Quando a instalação atinge esse ponto, o computador recebe um nome e um SID de computador exclusivo. Se um sistema for clonado depois dessa etapa, todos os computadores clonados terão SIDs de computador idênticos. Observe que simplesmente alterar o nome do computador ou adicionar o computador a um domínio diferente não alterará o SID do computador. Alterar o nome ou domínio só alterará o SID de domínio se o computador já tiver sido associado a um domínio.
Para entender o problema que a clonagem pode causar, primeiro é preciso entender como os SIDs são atribuídos às contas locais individuais em um computador. Os SIDs de contas locais são compostos pelo SID de computador e um RID (Identificador relativo) acrescentado. O RID começa com um valor fixo e é acrescido de um para cada conta criada. Isso significa que a segunda conta em um computador, por exemplo, receberá o mesmo RID que a segunda conta em um clone. Como resultado, ambas as contas têm o mesmo SID.
SIDs duplicados não são um problema em um ambiente baseado em domínio, pois o SID das contas de domínio é baseado no SID de domínio. Mas, de acordo com o artigo Q162001 da Base de Dados de Conhecimento Microsoft intitulado "Não faça duplicações de disco de versões instaladas do Windows NT", a segurança de ambiente em um Grupo de trabalho é baseada em SIDs de conta local. Portanto, se dois computadores tiverem usuários com o mesmo SID, o Grupo de trabalho não conseguirá distinguir entre os usuários. Todos os recursos, incluindo arquivos e chaves do Registro, aos quais um usuário tem acesso, o outro também terá.
Outra instância em que SIDs duplicados podem causar problemas é onde houver mídia removível formatada com NTFS e em que atributos de segurança de conta local são aplicados a arquivos e diretórios. Se essa mídia for movida para um computador diferente que tenha o mesmo SID, contas locais que não conseguiriam acessar os arquivos terão essa capacidade se suas IDs de conta corresponderem àquelas dos atributos de segurança. Isso não será possível se os computadores tiverem SIDs diferentes.
Um artigo escrito por Mark e intitulado "Opções de distribuição do NT" foi publicado na edição de junho da Windows NT Magazine. Ele discute mais detalhadamente o problema de SID duplicado e apresenta a posição oficial da Microsoft sobre a clonagem. Para ver se há um problema de SID duplicado em sua rede, use o PsGetSid para exibir SIDs de computador.
O NewSID é um programa desenvolvido por nós para alterar o SID de um computador. Primeiro, ele gera um SID aleatório para o computador e avança para atualizar instâncias do SID de computador existente que ele encontra no Registro e em descritores de segurança de arquivo, substituindo as ocorrências pelo novo SID. O NewSID exige privilégios administrativos para ser executado. Ele tem duas funções: alterar o SID e alterar o nome do computador.
Para usar a opção de execução automática do NewSID, use "/a" na linha de comando. Você também pode orientá-lo para alterar automaticamente o nome do computador, incluindo o novo nome após a opção "/a". Por exemplo:
newsid /a [newname]
Caso o NewSID tenha sido executado sem avisar, mude o nome do computador para "newname" e faça com que ele reinicializasse o computador se tudo correr bem.
Observação: se o sistema no qual deseje executar o NewSID esteja executando o IISAdmin, você deverá interromper o serviço IISAdmin antes de executar o NewSID. Use este comando para interromper o serviço IISAdmin: net stop iisadmin /y
O recurso de sincronização do SID do NewSID que permite especificar que, em vez de gerar um SID aleatoriamente, o novo SID deve ser obtido de um computador diferente. Essa funcionalidade possibilita mover um BDC (Controlador de domínio de backup) para um novo domínio, já que a relação de um BDC com um domínio é identificada por ele ter o mesmo SID de computador que os outros DCs (Controladores de domínio). Basta escolher o botão "Sincronizar SID" e inserir o nome do computador de destino. Você deve ter permissões para alterar as configurações de segurança das chaves do Registro do computador de destino, e isso normalmente significa que você deve estar conectado como administrador de domínio para usar esse recurso.
Observe que, ao executar o NewSID, o tamanho do Registro aumentará, portanto, verifique se o tamanho máximo do Registro comportará o crescimento. Descobrimos que esse crescimento não tem um impacto perceptível no desempenho do sistema. O Registro aumenta porque ele é fragmentado à medida que as configurações de segurança temporárias são aplicadas pelo NewSID. Quando as configurações são removidas, o Registro não fica compactado.
Importante: observe que, embora tenhamos testado completamente o NewSID, você deve usá-lo por sua conta e risco. Assim como é feito com qualquer software que altere as configurações de arquivo e Registro, é altamente recomendável que você faça um backup completo do computador antes de executar o NewSID.
Estas são as etapas que você deve seguir quando quiser mover um BDC de um domínio para outro:
- Inicialize o BDC que você deseja mover e faça logon. Use o NewSID para sincronizar o SID do BDC com o PDC do domínio para o qual você deseja mover o BDC.
- Reinicialize o sistema no qual você alterou o SID (o BDC). Como o domínio ao qual o BDC está associado agora já tem um PDC ativo, ele será inicializado como um BDC em seu novo domínio.
- O BDC aparecerá como uma estação de trabalho no Gerenciador do Servidor, portanto, use o botão "Adicionar ao Domínio" para adicionar o BDC ao novo domínio. Lembre-se de especificar o botão de opção do BDC quando o adicionar.
O NewSID começa lendo o SID de computador existente. O SID de um computador é armazenado no hive SECURITY do Registro em SECURITY\SAM\Domains\Account. Essa chave tem um valor chamado F e um outro V. O V é valor um binário que tem o SID de computador inserido nele ao final de seus dados. O NewSID garante que esse SID esteja em um formato padrão (três subautoridades de 32 bits precedidas por três campos de autoridade de 32 bits).
Em seguida, o NewSID gera um novo SID aleatório para o computador. A geração do NewSID traz grandes dificuldades para criar um valor de 96 bits verdadeiramente aleatório, que substitui os 96 bits dos três valores de subautoridade que compõem um SID do computador.
Há três fases para a substituição de SID do computador. Na primeira fase, os hives SECURITY e SAM do Registro são examinados em busca de ocorrências do SID de computador antigo em valores de chave, bem como dos nomes das chaves. Quando o SID é encontrado em um valor, ele é substituído pelo novo SID de computador; e quando é encontrado em um nome, a chave e suas subchaves são copiadas para uma nova subchave que tenha o mesmo nome, mas com o novo SID substituindo o antigo.
As duas fases finais envolvem a atualização dos descritores de segurança. As chaves do Registro e os arquivos NTFS têm a segurança associada a elas. Os descritores de segurança são compostos por uma entrada que identifica qual conta possui o recurso, qual grupo é o proprietário do grupo primário, uma lista opcional de entradas que especificam ações permitidas por usuários ou grupos (conhecida como DACL – Lista de controle de acesso discricionário) e uma lista opcional de entradas que especificam quais ações executadas por determinados usuários ou grupos gerarão entradas no Log de Eventos do sistema (SACL – Lista de controle de acesso do sistema). Um usuário ou um grupo é identificado nesses descritores de segurança com seus SIDs e, como eu mencionei anteriormente, as contas de usuário locais (diferentes das contas internas, como Administrador, Convidado e assim por diante) têm seus SIDs compostos pelo SID de computador mais um RID.
A primeira parte das atualizações do descritor de segurança ocorre em todos os arquivos do sistema de arquivos NTFS no computador. Cada descritor de segurança é examinado quanto a ocorrências do SID de computador. Quando o NewSID localiza um SID, ele o substitui pelo novo SID de computador.
A segunda parte das atualizações do descritor de segurança é executada no Registro. Primeiro, o NewSID deve garantir que todos os hives sejam examinados, não apenas aqueles carregados. Cada conta de usuário tem um hive do Registro carregado como HKEY_CURRENT_USER quando o usuário está conectado, mas que permanece em disco no diretório de perfil do usuário quando não está conectado. O NewSID identifica todos os locais de hive do usuário enumerando a chave HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList, que aponta para os diretórios nos quais eles estão armazenados. Em seguida, ele os carrega no Registro usando RegLoadKey em HKEY_LOCAL_MACHINE e examina todo o Registro, analisando cada descritor de segurança em busca do SID de computador antigo. As atualizações são executadas da mesma forma que nos arquivos e, quando concluídas, o NewSID descarrega os hives do usuário que ele carregou. Na etapa final, o NewSID examina a chave HKEY_USERS, que contém o hive do usuário conectado no momento, bem como o hive .Default. Isso é necessário porque um hive não pode ser carregado duas vezes, portanto, o hive de usuário conectado não será carregado em HKEY_LOCAL_MACHINE quando o NewSID estiver carregando outros hives de usuário.
Por fim, o NewSID deve atualizar as subchaves ProfileList para se referir aos novos SIDs da conta. Essa etapa é necessária para que o Windows NT associe corretamente os perfis às contas de usuário depois que os SIDs da conta forem alterados para refletir o novo SID de computador.
O NewSID garante que ele possa acessar e modificar cada arquivo e chave do Registro no sistema ao atribuir a si mesmo os seguintes privilégios: Sistema, Backup, Restauração e Assumir Propriedade.