IIS: Habilite o gerenciamento remoto do IIS
Você pode usar a comunicação remota do Windows PowerShell para agilizar a habilitação do gerenciamento remoto a partir de um servidor remoto.
Jason Helmick
Você sempre quis gerenciar um servidor IIS, altere sua configuração ou remotamente adicionar um site simples — e fazê-lo de um local remoto? Por razões óbvias de segurança você não pode apenas abrir o IIS Manager e se conectar a um servidor remoto. Cada servidor IIS que você pretende gerenciar deve ter gerenciamento remoto habilitado, configurado e atribuído um certificado para HTTPS.
Habilitação IIS remoto usando o gráfico IIS Manager de gestão é rápido e fácil, mas só se você estiver sentado no servidor Web ou usando o Remote Desktop Protocol (RDP). Se você tiver vários servidores Web que precisam de gerenciamento remoto, ou se, como eu, você estiver usando o Server Core — o GUI IIS Manager não é prático ou mesmo possível.
Você pode habilitar o gerenciamento remoto em qualquer número de servidores Web remotos usando o Windows PowerShell. Você será capaz de fazer isso como muitos servidores Web como você precisa, ao mesmo tempo. Você vai usar o Windows PowerShell com uma característica especial chamada arquitetura de comunicação remota do Windows PowerShell.
Você terá que ativar o Windows PowerShell remoting em todos os servidores IIS. Não há nenhuma maneira de evitar isso. A melhor maneira para habilitar a comunicação remota é através de um grupo diretiva GPO (objeto). Se você não sabe fazer isso ou precisa de mais informações sobre o processo, confira o eBook gratuito, "segredos do PowerShell Remoting," por Don Jones e Dr. Tobias Weltner.
Antes que você diga, "Eu não tenho permissão para fazer isso," sentar e ler este guia. Configurá-lo em um ambiente de teste e convide seus amigos de segurança para examiná-lo e obter permissão para permitir a comunicação remota. Se servidores Web estão em execução no Windows Server 2012, você já tem o sistema de interação remota habilitado. Se não, você terá que completar este antes de tentar os passos descritos aqui.
Comunicação remota do Windows PowerShell é completamente segura e você vai precisar dele para várias tarefas de gerenciamento relacionadas ao IIS no futuro. O processo para habilitar o gerenciamento remoto não é complicado, mas há várias etapas. Aqui está o que esperar:
- Criar uma sessão do Windows PowerShell para cada um dos servidores
- Instalar o serviço de gerenciamento do IIS Web (WMSvc)
- Habilitar o IIS WMSvc
- Inicie o IIS WMSvc
- Substituir o certificado temporário
- Conectar usando o IIS Manager
Neste exemplo, eu vou habilitar o gerenciamento remoto em quatro servidores do IIS chamado Web1, Web2, Web3 e Web4 — tudo ao mesmo tempo. Depois de fazê-los trabalhar, eu vou substituir o certificado temporário com um certificado confiável de serviços de certificado do Active Directory (AD CS).
1. Criar sessões de comunicação remota do Windows PowerShell para servidores Web
O primeiro passo é criar uma sessão de comunicação remota do Windows PowerShell para servidores Web. Comece criando uma variável "$Servers" que contém os nomes de computador dos servidores Web. Em seguida, criar e armazenar as sessões em uma variável "$Sessions":
PS> C:\> $Servers = 'web1', 'web2', 'web3', 'web4' PS> C:\> $Sessions = New-PSSession –ComputerName $Servers
Você vai precisar de duas variáveis durante todo o processo. Don' t tentar encurtar este para uma única linha de comando. Você poderia preencher o $Servers de um arquivo de texto, o arquivo CSV ou o Active Directory usando o cmdlet Get-ADComputer, mas isso é outro assunto.
2. Instalar o IIS WMSvc
O IIS WMSvc é um componente adicional, que você precisará adicionar o IIS. Usando as sessões de comunicação remota, Windows PowerShell facilita isso (a primeira linha não será necessária se você estiver usando o Windows Server 2012):
PS C:\> Invoke-Command –Session $Sessions –ScriptBlock {Import-Module ServerManager} PS C:\> Invoke-Command –Session $Sessions –ScriptBlock {Add-WindowsFeature Web-Mgmt-Service}
Neste ponto, você instalou o IIS WMSvc. Habilitando o serviço é o próximo passo.
3. Habilitar o IIS WMSvc
As configurações padrão para o serviço de gestão são definidas para permitir que as credenciais do Windows, usar porta 8172 e aplicar um certificado temporário. Use essas configurações para agora e alterar o certificado temporário para uma confiável no final deste processo. Para habilitar o serviço de gerenciamento, altere uma chave do registro nos servidores Web remotos:
PS C:\> Invoke-command –Session $Sessions -ScriptBlock{Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\WebManagement\Server -Name EnableRemoteManagement -Value 1}
Agora que o serviço de gerenciamento é habilitado, você pode ter iniciado.
4. Inicie o IIS WMSvc
O IIS WMSvc não é iniciado por padrão. Na verdade, o serviço é definido para inicialização manual. Se você reiniciar um servidor de Web no futuro, o serviço de gestão não será iniciado. Alterar o tipo de inicialização para automático e inicie o serviço:
PS C:\> Invoke-command –Session $Sessions -ScriptBlock {Set-Service -name WMSVC -StartupType Automatic} PS C:\> Invoke-command –Session $Sessions -ScriptBlock {Start-service WMSVC}
Neste ponto, o serviço de gerenciamento está funcionando e você pode gerenciar remotamente servidores Web usando o IIS Manager. O único problema é que o certificado utilizado é temporária e não confiável, então substitua esse certificado por uma confiável.
5. Substituindo o certificado temporário
Há muitas opções para substituir o certificado temporário, incluindo o novo recurso do IIS 8 de certificados no armazenamento de certificados do Central. Este é o meu favorito.
Eu vou passar pelo processo breve de copiar e instalar um novo certificado de um arquivo PFX e definindo as ligações de site da Web para o novo certificado. Este exemplo tem um certificado curinga no meu computador local C:\_.Company.loc.pfx. Primeiro, copie o certificado (arquivo PFX) para os servidores de Web remotos e, em seguida, utilize o CertUtil.exe para instalar o certificado:
PS C:\> $Servers | Foreach-Object {Copy-Item -Path C:\_.Company.loc.pfx -Destination "\\$_\c$"} PS> c:\> Invoke-Command -Session $Sessions {certutil -p P@ssw0rd -importpfx c:\_.company.loc.pfx}
Observe que eu mandei a senha em texto não criptografado. Comunicação remota do Windows PowerShell é completamente seguro e criptografado. Depois que o certificado está instalado, é importante lembrar-se de excluir o arquivo PFX de servidores Web:
PS> $Servers | Foreach-Object {Remove-Item -Path "\\$_\c$\_.Company.loc.pfx"}
Neste ponto, você vai precisar a impressão digital do certificado instalado e você precisará alterar a vinculação para o serviço de gerenciamento. Para fazer isso, você vai precisar do provedor IIS. Comece carregando o módulo WebAdministration nos servidores Web remotos:
PS C:\> Invoke-Command -Session $Sessions {Import-Module WebAdministration}
Obter o certificado de impressão digital para fazer uma nova ligação:
PS C:\> Invoke-Command -Session $Sessions {$cert = Get-ChildItem -Path Cert:\LocalMachine\My | Where {$_.subject -like "*company*"} | Select-Object -ExpandProperty Thumbprint}
Remova a antiga ligação de SSL:
PS C:\> Invoke-command -Session $Sessions {Remove-Item -Path IIS:\SslBindings\0.0.0.0!8172}
Adicione a nova ligação SSL usando o impressão digital do certificado:
PS C:\> Invoke-Command -Session $Sessions {Get-Item -Path "cert:\localmachine\my\$cert" | New-Item -Path IIS:\SslBindings\0.0.0.0!8172}
Agora você está pronto para se conectar a servidores Web usando o IIS Manager.
6. Se conectar a servidores de Web remoto usando o IIS Manager
O último passo é abrir seu IIS Manager, selecione a página inicial, no painel esquerdo e no centro do painel, selecione "Ligar a um servidor." Fornecer o nome do servidor e suas credenciais e você verá uma nova conexão exibida no painel de navegação do IIS Manager.
Porque eu executar esta operação um pouco, tirei os comandos anteriores e colocá-los em um script. Se você acha que talvez você precise fazer isso mais de uma vez — e tenho certeza que você vai — é sempre o melhor automatizar esse processo.
Jason Helmick tem mais de 20 anos de experiência em TI como um consultor empresarial, instrutor e autor. Como diretor de tecnologias do Windows PowerShell na Interface de formação técnica, ele se concentra em automação com o Active Directory e o IIS. Você pode ver mais sobre o IIS em seu próximo livro de Manning Publications, "Aprenda Windows IIS em um mês de almoços.