DNS Server–Configurando a Global Query Block List via PowerShell

28 de novembro de 2016 Deixe um comentário

Saudações,

Aos que estão acompanhando a nossa série de artigos sobre otimização de tarefas com PowerShell, hoje vou fazer um “adendo” ao 5o. post – Otimização de tarefas com PowerShell – DNS Server.

Um dos pontos de atenção nas empresas nos últimos anos é a configuração do acesso ao proxy usando o registro wpad do DNS Server. O mesmo pode ser configurado via DHCP também, mas, deixarei isso para um próximo post.

Por questões de segurança, desde o Windows Server 2008, o registro WPAD e ISATAP (registro que auxilia na comunicação de dipsositivos IPv4 e IPv6), estão bloqueados para uso. Entretanto, o administrador do ambiente pode escolher entre:

1. Ativar um desses registros – via PowerShell com via linha de comando DNSCMD

2. Desativar a Global Query Global List

Um exemplo de como configurar essa funcionalidade via linha de comando foi dada no meu artigo de 16/07/2013 onde citei a configuração do WPAD via DNS usando o DNSCMD.

No nosso caso em que estamos destrinchando o PowerShell para nosso dia a dia, estou deixando aqui um exemplo prático de como usar o comando Get-DnsServerGlobalQueryBlockList e Set-DnsServerGlobalQueryBlockList

No primeiro exemplo vamos listar os hosts que estão bloqueados pelo Global Query Block List:

Get-DnsServerGlobalQueryBlockList

Em seguinda vamos liberar o uso do registro WPAD:

Set-DnsServerGlobalQueryBlockList –List “isatap” –Passthru

O comando acima vai reconstruir a Global Query Block List deixando bloqueado somente o registro “ISATAP”.

Agora vamos reconstruir a Global Query Block List inclindo, além do ISATAP, o WPAD também;

Set-DnsServerGlobalQueryBlockList –List “wpad, isatap” –Passthru

Se você quiser, também pode desabilitar a Global Query Block List (o que não recomendo):

Set-DnsServerGlobalQueryBlockList –Enable $False

E para habilitar de novo:

Set-DnsServerGlobalQueryBlockList –Enable $True

Abaixo um exemplo prático de como você visualiza todos os comandos citados:

image

No próximo post quero voltar ao Web Application Proxy, mostrando como configurar seu ambiente para aplicações com autenticação Kerberos.

Fique ligado aqui no blog e na fan page – facebook.com/usouzajr.

Abraços

Uilson

Otimizando tarefas com PowerShell–Administração DNS Server

16 de novembro de 2016 Deixe um comentário

Saudações,

Chegamos hoje ao quinto artigo da série “Otimizando tarefas com PowerShell”. Dessa vez vamos falar sobre administração do DNS.

Para quem ainda não viu, abaixo os 4 primeiros posts publicados:

1. Otimizando tarefas com PowerShell – Administrando Active Directory Users and Computers

2. Otimizando tarefas com PowerShell – Implementação e administração Web Application Proxy

3. Otimizando tarefas com PowerShell – Implementando e administrando AD Federation Services

4. Otimizando tarefas com PowerShell – Implementando e administrando Internet Information Services – IIS

Publiquei tb um artigo no TechNet Wiki sobre Administração do AD Directory Services via PowerShell com coneitos mais avançados que o primeiro desta série.

Podemos levar em consideração o ambiente fictício dos últimos 4 posts:

Domínio – uilson.net

Vamos considerar um ambiente básico onde o DNS está junto com o AD e também considerar a instalação de um novo servidor de resolução de nomes com as configurações básicas, criação de zones, hosts, etc.

1. Instalando e configurando a Role via Powershell:

A principio, todo domain controller já vem com o DNS Server instalado. Neste caso vamos simular um segundo DNS Server sendo instalado e que será integrado ao nosso Active Directory.

Como já mostrado em outros artigos desta série vamos usar o cmdlet “Add-WindowsFeature” ou “Install-WindowsFeature”:

Install-WindowsFeature DNS –IncludeManagementTools

No comando acima eu pedi a inclusão da console de gerenciamento, mas, vamos mostrar aqui como administrar seu DNS sem usa-la.

2. Configurando forward, reverse e stub zones (primárias)

Sabemos que podemos ter dois tipos de forward zone no DNS – Com integração no AD (que é o tipo mais comum para redes internas, tanto que um servidor promovido a Domain Controller já instala a role do DNS junto) e sem integração, ou seja, aquele DNS Server que poderá ser usado para resolução de nomes externos

Para criar uma Forward Lookup Zone integrada ao AD – Add-DnsServerPrimaryZone -Name "uilson.net" -ReplicationScope "Forest" –PassThru 

O comando acima vai criar um forward zone primária integrada ao AD, ou seja, todas as informações que forem criadas nesta zona serão armazenadas no base do AD.

Para criar uma Forward Lookup Zone sem integração com o AD – Add-DnsServerPrimaryZone -Name "uilson.net" -ZoneFile "uilson.net"

O Zone File armazena todas as configurações e registros criados neste forward lookup zone, uma vez que não há integração com o AD. Esse arquivo fica na pasta c:\windows\system32\dns do seu servidor DNS. De forma que, para zonas sem integração com o AD é interessante manter um backup destes arquivos para imediato restore em caso de necessidade.

Agora vamos ver como criar as zonas reversas, ou seja, aquelas que fazem a resolução IP-Nome. Abaixo os comandos que você deve usar para esta finalidade:

Para criar uma Reverse Lookup Zone integrada a seu AD – Add-DnsServerPrimaryZone -NetworkID "10.1.1.0/24" -ReplicationScope "Forest"

Para criar uma zona reversa sem integração com o AD – Add-DnsServerPrimaryZone -NetworkID 10.1.1.0/24 -ZoneFile "0.1.10.in-addr.arpa.dns"

Outra tipo de zone que você pode criar no DNS Server é a Stub Zone. Ela facilita a resolução de nomes em ambientes complexos. Os endereços da filial A serão mais rapidamente resolvidos pela filial C que se conectam via WAN em distâncias grandes.

Como os exemplos acima, você poderá criar uma stub zone de forma integrada, não integrada e também uma reverse stub zone.

Para criar uma stub zone não integrada com o AD – Add-DnsServerStubZone -Name "filialrj.uilson.net "192.168.1.1" -PassThru -ZoneFile "filialrj_uilsonnet.dns"

No exemplo acima criei uma stub zone não integrada ao AD para uma filial no Rio de Janeiro dentro da arvore uilson.net.

Com base no cenário do exemplo acima, segue o comando para criar uma stub zone integrada ao AD:

Add-DnsServerStubZone -Name "filialrj.uilson.net" -MasterServers 192.168.1.1 -PassThru -ReplicationScope "Forest"

Você também pode criar uma reverse stub zone – Add-DnsServerStubZone -NetworkId 10.10.1.0/24 -MasterServers 192.168.1.1 -PassThru -ReplicationScope Forest – neste exemplo, integrada ao AD.

3. Criando Zonas Secundárias

Para criação de uma Reserve Lookup Zone integrada ao AD em um DNS Secundário, ou seja, uma zona secundária que irá receber informações de uma zona primária criada conforme mostramos no item 2 deste post, você deve usar o comando abaixo:

Integrada ao AD – Add-DnsServerSecondaryZone –Name “uilson.net” –ReplicationScope “Forest” –MasterServers 10.10.1.1

Associada a um Zone File – Add-DnsServerSecondaryZone -Name "uilson.net" -ZoneFile "uilson.net" -MasterServers 10.10.1.1

4. Configurando propriedades dos zones

DNS Forwarder e DNS Conditional Forwarder

Um dos pontos a serem configurados em uma zona de encaminhamento no DNS Server é o serviço de Forwarder.

O servidor DNS que você configura como Forwarder irá receber as requisições de resolução de nomes externas encaminhadas do seu DNS Interno.

Neste caso, temos duas maneiras de configurar a lista de Forwarders:

1. Set-DnsServerForwarder – Este comando irá começar a lista de IP´s externos do zero, ou seja, usado em situações em que você acabou de instalar e configurar seu DNS Server.

2. Add-DnsServerForwarder – Este comando irá adicionar IP´s a uma lista de forwarders já existente.

OBS: Se você usar o comando Set-DnsServerForwarder em uma lista de forwarders já existente, você vai “zerar” a lista e usar aquele IP que o comando definir no momento em que for executado, portanto, cuidado!

Para criar um nova lista de forwarders – Set-DnsServerForwarder -IPAddress "192.168.0.1" –PassThru

Para adicionar um IP a uma lista de forwarders – Add-DnsServerForwarder -IPAddress 192.168.0.1 –PassThru

Outra configuração interessante a ser feita é a do Conditional Forwarder, funcionalidade que foi introduzida a partir do Windows Server 2003. Um Conditional Forwarder permite a resolver nomes de um rede privada ou externa, ajudando a acelerar a resolução. Quando o DNS recebe a requisição de um cliente para resolver o nome de um host que não está em sua zona autoritativa, o processo começa a partir do root name do servidor e continua até a resolução do nome. Quando você configura um Conditional Forwarder, o DNS local encaminhará a requisição para a zona autoritativa do domínio de destino.

De igual forma aos exemplos mostrados neste post, você pode criar uma zona Conditional Forwarder de forma integrada a seu AD Loal ou não.

O link abaixo fala de Zonas Conditional Forwarder para Windows Server 2003, mas, o conceito explicado pode ser usado em qualquer situação a frente, ou seja, Windows Server 2008, 2012, 2016, etc:

https://support.microsoft.com/en-us/kb/304491 – Conditional Forwarding in Windows Server 2003

Agora vamos a prática:

Para criar uma Conditional Forwarder Zone integrada a seu AD: Add-DnsServerConditionalForwarderZone -Name "contoso.com" -ReplicationScope "Forest" -MasterServers 172.16.10.1

Para criar uma Conditional Forwarder Zone sem integração com seu AD: Add-DnsServerConditionalForwarderZone -Name "contoso.com" -MasterServers 172.16.10.1 –PassThru

Root Hints

Para adicionar um endereço a minha lista de root hints – Add-DnsServerRootHint -NameServer "root.contoso.com" -IPAddress 172.23.90.128

Zone Transfers

Quando você configura uma zona secundária, precisa habilitar a transferência dos dados da primária.

Para habilitar o zone transfer – Start-DnsServerZoneTransfer -Name "uilson.net"

DNS Policy

Ao invés de deixar um ou outro exemplo sobre DNS Policy, vou colocar o link pra um artigo que escrevi em 24/06/2015 – Nele mostrei um cenário completo onde você pode configurar o DNS Policy. Essa feature vem a partir do Windows Server 2016. Clique aqui para ler o post.

Tem muito mais

Os exemplos citados acima são apenas alguns daqueles que podem ser usados para configurar e administrar seu DNS Server via PowerShell. Muitos outros existem e vou deixar um link aqui com todos os cmdlets do DNS Server com exemplos práticos.

5. Criação de Registros

A criação de registros em uma zona é feita de forma automática. Entretanto, imagine a situação em que você precise registrar um host que aponte a um web server, um application server ou back-end server.

Vamos ver abaixo como criar um registro A que venha de encontro a esse propósito.

Cenário: Temos um web server no domínio uilson.net. O mesmo tem uma aplicação que deverá ser publicada e usada internamente ou externamente. No IIS eu configurei esta aplicação com o host header sistemas.uilson.net. O IP deste servidor é 10.10.1.50. Veja abaixo como este registro é criado:

Add-DnsServerResourceRecord -ZoneName "uilson.net" -A -Name "sistemas" -IPv4Address "10.10.1.50"

Nesse link você encontra exemplos práticos de como criar os demais tipos de registro (AAAA, CNAME, etc) – https://technet.microsoft.com/en-us/library/jj649925.aspx

6. Consultas

Neste ponto em que nosso laboratório já está totalmente configurado. Vamos ver os comandos que você pode usar para verificar as configurações de seu DNS Server:

Get-DnsServer

Este comando traz todas as configurações de seu DNS Server. Voce pode usar também o parâmetro –computername para pegar informações remotamente.

image

Get-DnsServerZone

Este comando traz todas as Zones criadas no seu DNS Server. Voce pode usar também o parâmetro –computername para pegar informações remotamente.

image

Get-DnsServerResourceRecord -ZoneName uilson.net

O comando acima lista todos os registros na zone uilson.net:

image

Estas são apenas algumas das muitas consultas que podem ser feitas. No item abaixo você encontra o link que poderá ver exemplos práticos de todas elas.

7. Referências para estudo

Neste link você encontra todos, exatamente todos os comandos DNS para PowerShell com exemplos práticos – https://technet.microsoft.com/en-us/library/jj649850.aspx

8. Conclusão

Neste post mostrei para você exemplos práticos de instalação, configuração e administração do DNS Server via PowerShell.

Espero que o conteúdo possa ser útil e lhe ajudar em suas tarefas diárias.

Abraços

Uilson

Otimizando tarefas com PowerShell–Implementando e administrando Internet Information Services–IIS

28 de julho de 2016 Deixe um comentário

Saudações,

Hoje vamos entrar no quarto post da série “Otimizando Tarefas com PowerShell”. Pra quem está chegando agora e não conhecia o blog Microsoft Space, estou trabalhando em uma série de artigos relacionados a PowerShell, conforme abaixo:

1. Otimizando tarefas com PowerShell – Administrando Active Directory Users and Computers

2. Otimizando tarefas com PowerShell – Implementação e administração Web Application Proxy

3. Otimizando tarefas com PowerShell – Implementando e administrando AD Federation Services

Vamos continuar usando o ambiente fictício criado nos posts anteriores.

Imagine que você precisa instalar o IIS em uma farm de servidores que vão estar balanceando a carga. Vc teria habilitar a feature em um por um, mesmo usando o Server Manager de um único servidor para isso. Vamos mostrar a seguir como fazer de forma otimizada e mais rápidamente. Ou então você vai analisar um ambiente em que o IIS esteja em um Server Core ou até mesmo Nano Server.

Algo importante que esqueci de mencionar no segundo e terceiro artigos da série é que os comandos de instalação de roles e features estão armazenados no módulo ServerManager do PowerShell, portanto, se ao tentarem fazer o teste com os comandos citados nos artigos anteriores vocês receberem alguma mensagem de erro, façam o carregamento do módulo conforme abaixo:

Import-Module ServerManager

1. Instalando o IIS:

Como vocês já devem saber, o IIS pode ser instalado em sua totalidade, ou seja, com todas as features ou somente aquelas que você precisar para o proposito da sua infra.

Com o comando abaixo você instala o IIS com todas as features do role:

add-windowsfeature web-server –includeallsubfeature

Recomendo fortemente aquilo que sempre falo em post´s neste blog e em outros espaços, além das palestras e webcasts que entreguei; faça um planejamento prévio, converse com sua área de desenvolvimento para entender o que você vai precisar do seu IIS, qual o tipo de aplicação que irá hospedar e as features exatas que você vai precisar.

Para sabermos quais as features do IIS disponíveis, podemos usar o comando get-windowsfeature parametrizando pelas funções do IIS:

get-windowsfeature | Where-Object {$_.Name –like “Web*”}

image

Na coluna “Name” da figura acima, você tem a listagem de todas as features do IIS. Tomando como exemplo a sessão “Application Development”, eu posso instalar todos os itens da mesma, declarando todos os parâmetros, ou posso escolher uma ou mais funcionalidades tais como ASP, ASP.NET 3.5, etc, usando os parâmetros separadamente. Lembrando que as funcionalidades vitais de cada feature são instaladas automaticamente, mesmo que eu não as declare na minha linha de comando (exemplo – se eu declarar somente a feature Web-Security, a funcionalidade Web-Filtering será habilitada automaticamente).

Em nosso laboratório vamos instalar o IIS pensando em autenticação básica, autenticação integrada, protocolos http e https. Além desses, vamos usar o serviço de armazenamento de certificados digitais, o CCS (Centralized Certificate Store – sobre o qual escrevi um post detalhado com um passo a passo bem completo). Veja abaixo como fica o comando para instalação:

add-windowsfeature web-server, web-webserver, web-default-doc, web-http-errors, web-static-content, web-http-redirect, web-health, web-security, web-basic-auth, web-certprovider, web-cert-auth, web-ip-security, web-windows-auth, web-app-dev

A imagem abaixo mostra o progresso da instalação:

image

Veja agora através do comando get-feature, as funcionalidades do IIS que foram instaladas com o comando usado acima:

image

OBS: Não instalei aqui a console de gerenciamento do IIS que você encontra em Start/Administrative Tools. Vamos focar na implementação e administração do IIS somente via powershell. Se você prefere gerenciar a partir da console, basta adicionar o parâmetro –IncludeManagementTools no fim do comando, ou na figura acima, você tem a sessão Management Tools com o parâmetro Web-Mgmt-Tools.

Agora que temos o IIS instalado, vamos aos métodos para administra-lo através do Powershell.

2. Criando um web-site

Vamos criar um site com os dados abaixo:

Nome – PortalUilson.net

Biding – https://www.uilson.net

Path – c:\webapp

Autenticação – Windows Integrated

Documento Default – iisstart.htm

Vai pegar o certificado através do Centralized Certificate Store.

1. Criando WebSite:

É importante que você já carregue o módulo do IIS com o comando: import-module WebAdministration

No prompt de comando, você já poderá ver como está configurado o Default Web Site conforme figura abaixo:

image

Com o comando “dir iis:” você visualiza três “pastas” do IIS disponíveis: 1. AppPools (Os application pools criados), 2. Sites (Seus WebSites, applications e virtual directories), 3. SSLBindings (Todos os bindings criados com certificado digital – porta 443).

Para listar os sites criados use o comando dir iis:\Sites para ter o resultado abaixo:

image

Acima você que o Default Web Site tem o ID 1 (importante na hora de determinar e configurar a parte de log do IIS), está em status “Started”, mostra o Physical Path e a parte do Binding rodando em http na porta padrão (80).

Para simplificar, você pode entrar no IIS pelo PowerShell digitando “IIS:” e teclando ENTER:

image

Viram como facilita?

Agora vamos criar nosso novo Web Site conforme descrevi:

Vamos criar a pasta onde vai ficar a aplicação web:

new-item c:\webapp –type directory

Com esse comando criamos a pasta webapp. Copiei os arquivos do site inicial do IIS para podermos efetuar o teste de acesso a página.

Comando para criar o site:

iis:

New-Item Sites\PortalUilson.net –bindings @{protocol=”http”;BindingInformation=”:80:www.uilson.net”} –physicalPath c:\webapp

image

O ID ficou meio estranho pra visualisar mas, é 1949349561. É com esse ID que ele vai criar a pasta de log da aplicação.

Na imagem acima você pode ver que eu já criei o site com o acesso a porta 80 no host header http://www.uilson.net . Eu poderia ter usado o comando acima sem o host header e poderia deixar um binding para porta 80 do localhost e poderia criar outro binding na mesma porta definindo a URL com o comando abaixo:

New-WebBinding -Name PortalUilson.net -IPAddress "*" -Port 80 -HostHeader www.uilson.net

Veja também que nosso site está em estado “Started”, ou seja, está escutando requisições na porta 80 a partir da URL que definimos. Caso houvesse algum conflito de porta, ele estaria em status “Stoped”, ou caso fosse necessário poderiamos para-lo com o comando abaixo:

Stop-WebSite PortalUilson.net

Para colocar o site no ar novamente, basta executar o comando abaixo:

Start-WebSite PortalUilson.net 

image

Agora que já temos nosso ambiente pronto, vamos começar a ver outros detalhes tais como log e documento default.

Em nosso laboratório criei um site simples sem nenhum application ou virtual directory. Nesse caso temos que definir o documento default que irá iniciar a pagina default do site. Caso contrário teremos erro no acesso.

Vamos verificar quais são os documentos que constam da lista de Default Document e qual documento está no topo da mesma. Para isso você vai usar o comando abaixo:

Get-WebConfigurationProperty -Filter //defaultDocument/files/add -PSPath ‘IIS:\Sites\PortalUilson.net’ -Name value | select value

image

Veja que no nosso site (PortalUilson.net) já temos Default.htm, Default.asp, index.htm, index.html e issstart.htm. Precisamos configurar o iisstart.htm no topo da lista, pois ele é o arquivo a ser chamado pela URL definida anteriormente.

Durante o período de estudos para confecção deste post, não encontrei uma linha de comando que fizesse a alteação da ordem dos arquivos, colocando ele no topo. Caso tentasse adiciona-lo como parâmetro para coloca-lo no topo, recebia uma msg de erro. Resolvi esse problema removendo o iisstart.htm da lista com o comando abaixo:

Remove-WebConfigurationProperty //defaultdocument/files "IIS:\sites\PortalUilson.net" -name collection -AtElement @{value="iisstart.htm"}

Depois verifiquei com o Get-WebConfigurationProperty para me certificar de que ele não constava mais na lista:

image

Agora vamos configurar o iisstart.htm como defult document do nosso site. Abaixo vou executar um comando que irá coloca-lo no topo da lista de arquivos do default document:

Add-WebConfiguration //defaultDocument/files "IIS:\sites\PortalUilson.net" -atIndex 0 -Value @{value="iisstart.htm"}

image

Você pode ver na imagem acima que o arquivo iisstart.htm aparece no fim do documento, entretanto, o parâmetro “atIndex 0” do comando aplicado acima o coloca no topo da ordem do default document.

3. Application Pool e métodos de autenticação

Já temos nosso site criado e configurado. Agora vamos verificar a parte do application pool dele:

Abaixo mostro como visualisar os application pools criados no IIS

image

Na imagem acima vemos que o Default Web Site já tem seu Application Pool definido, porém, o site do nosso laboratório ainda não.

Abaixo o comando para criação de um application pool:

image

OBS: O comando New-Item criou uma nova application pool no IIS. Como você pode ver na figura acima, estamos posicionados na pasta de Application Pools do IIS. Poderiamos executar esse comando mesmo em outra pasta ou na raiz do IIS da seguinte forma:  New-Item IIS:\AppPools\PortalUilson.AppPool

Agora vamos associar nosso Applicaton Pool com o site PortalUilson.net com o comando: Set-ItemProperty ‘IIS:\Sites\PortalUilson.net’ -Name applicationPool -Value PortalUilson.AppPool

Com a execução do comando acima, você verá agora que o site criado em nosso laboratório agora tem um application pool para ele:

image

Vamos definir uma conta para gerenciar essa application pool:

Set-ItemProperty iis:\AppPools\PortalUilson.AppPool -name processModel -value @{userName="appuser";password="WebAppPool@2016";identitytype=3}

No comando acima defini uma conta local (username = appuser e senha = AppPool@2016) classificando com IdentityType 3 – o Identity type se refere ao tipo de conta que você vai usar em sua Application Pool. O número do identity mudaria caso você fosse usar outro tipo de autenticação, exemplo: Network Service.

No link abaixo, você tem uma explanação detalhada da parte de Itentity Type:

http://www.iis.net/configreference/system.applicationhost/applicationpools/add/processmodel

Agora vamos ver as propriedades de nosso application pool com o comando get-item PortalUilson.AppPool | Select-Object *

image

Para ver os dados de usuário usamos o comando Get-ItemProperty PortalUilson.AppPool -name "processmodel.username"

image

Veja na figura acima que a penultima linha (Value) traz o nome da conta que configuramos nos passos acima.

Podemos ver também que nosso Application Pool está configurado para usar a versão 4.0 do .NET Framework:

image

Caso sua aplicação peça outra versão, você deverá tê-la instalada no servidor. A instalação de outras versões do .NET pode ser feita nas features do IIS conforme descrito no começo deste post.

Se você tiver um Application Pool rodando o .NET Framework na versão 2.0 e quiser mudar para a 4.0, use o comando abaixo:

Set-ItemProperty PortalUilson.AppPool managedRuntimeVersion v4.0

Com o conceito de Web Application Pool definido, vamos agora vamos falar sobre autenticação.

Lembre-se do começo deste post em que instalamos o IIS com diversos métodos de autenticação (basic, integrada, etc). Quero que o site site tenha autenticação integrada, entretanto, o IIS vem com autenticação anônima (por default) habilitada.

Nos comandos abaixo vamos desabilitar a autenticação anônima e habilitar autenticação integrada (lembrando que, para este fim a aplicação já deve estar preparada para tal):

Desabilitando Anonymous: Set-WebConfiguration system.webserver/security/authentication/anonymousAuthentication -PSPath IIS:\sites\PortalUilson.net -Value @{enabled="False"}

Habilitando Windows Integrated: Set-WebConfiguration system.webserver/security/authentication/WindowsAuthentication -PSPath IIS:\sites\PortalUilson.net -Value @{enabled="True"}

4. Logging e Backup

Depois de instalar e configurar o IIS, criar e configurar o novo site, iremos agora definir onde gravar os log´s do mesmo. Por default o IIS coloca os log´s de acesso na pasta padrão da role: c:\inetpub\logs\LogFiles\WebisteID#:

image

No nosso caso vamos configurar o log para que seja gravado numa pasta diferente. Vou configurar para gravar em C:\weblogs\PortalUilson.net. Para tanto vamos usar os comandos abaixo:

Alteração do log para a pasta citada acima:

Set-ItemProperty IIS:\sites\PortalUilson.net -name logFile -value @{format=’W3C’;directory=’C:\weblogs\PortalUilson.net’}

Listando as propriedades de logging do nosso siteget-ItemProperty IIS:\sites\PortalUilson.net -name logFile:

image

No link a seguir, você encontra diversas formas de interagir com logging do IIS via PowerShell, inclusive alterando os campos do arquivo:

https://gallery.technet.microsoft.com/office/Set-IIS-Log-Fields-via-ee9c19b3

Com tudo pronto no nosso laboratório, vamos demonstrar agora como fazer o backup das configurações do IIS. A melhor forme de garantir seu ambiente é um backup do servidor usando a ferramenta da sua empresa, mas, para situações em que você precisa de um restore rápido é interessante ter um backup das configurações do IIS feito no próprio web server.

Para efetuar um backup rápido de suas configurações do IIS use o comando abaixo:

Backup-WebConfiguration –Name IISLab

image

Nesse comando eu fiz um backup das configurações do meu servidor IIS com o nome de “IISLab”.

Para verificar um ou mais backup´s feitos em seu ambiente use o comando Get-WebConfigurationBackup:

image

Como você pode ver na figura acima, posicionei na pasta c:\windows\system32\inetsrv\backup, onde o IIS grava os arquivos de backup gerados pelo comando que usamos a pouco:

image

5. SSL Settings – Agora é a sua vez de por a mão na massa!

Agora é com você!

Se leu todo post com atenção, testou em seu ambiente pessoal e ficou entusiasmado com a possibilidade de administrar seu IIS sem a Console de Gerenciamento, leia o conteúdo dos links abaixo e configure a parte SSL do IIS 8.5. Não foge dos conceitos que coloquei aqui e tudo pode ser encontrado no site iis.net da Microsoft.

Criando SSL Bindings no IIS – http://www.iis.net/learn/manage/powershell/powershell-snap-in-configuring-ssl-with-the-iis-powershell-snap-in

Na instalação do IIS você viu que coloquei também o recurso do CCS – Centralized Certificate Store. No começo deste post eu deixei um link com um artigo que escrevi sobre esse tema mostrando todo conceito e todos os passos (um lab completo) para habilitar o CCS. Para fazer o mesmo procedimento via PowerShell, clique no link abaixo:

https://technet.microsoft.com/en-us/magazine/jj937171.aspx

Além de ensinar a configurar o CCS, o link acima traz um exemplo de como instalar o IIS com as mesmas configurações em vários servidores, caso sua aplicação esteja definida para rodar numa farm.

E assim concluímos mais um post da série “Otimizando tarefas com PowerShell”. Cobrimos todos os passos para a instalação e administração do IIS 8.5 do Windows Server 2012 R2 via cmdlet.

Espero que o conteúdo tenha sido útil e caso tenha dúvidas ou críticas, por favor, deixe seu comentário ou me deixe uma msg em minha pag pessoal em http://facebook.com/usouzajr

Abraços

Uilson

Otimizando tarefas com PowerShell–Implementando e Administrando AD Federation Services

9 de junho de 2016 Deixe um comentário

Saudações,

Peço desculpas pela demora na continuidade desta série de posts. Estive envolvido em alguns projetos que me tomaram muito tempo.

Hoje vamos ao terceiro post da série “Otimizando tarefas com PowerShell”. Irei mostrar os passos para implementação, configuração e administração do Active Directory Federation Services.

Apenas relembrando, e para quem ainda não leu, os dois posts anteriores falaram sobre otimização de tarefas no  AD DS e Web Application Proxy.

Importante ressaltar que numa infra estrutura de proxy reverso com Web Application Proxy é premissa que o AD FS já esteja pronto, nesse caso, o certo seria ter escrito este post antes do anterior, entretanto, como já tinha o material e o expertise no assunto, resolvi inverter um pouco a ordem, mas, reitero que, o AD FS precisa estar pronto, OK?

Vamos lá! Como no post anterior, estamos em um ambiente fictício:

Domínio – uilson.net

AD FS Server – IP 10.10.1.3

Você precisa instalar a role do AD FS.

Lembrando que é necessário um certificado digital para o mesmo. Em se tratando de um servidor que fica em sua rede interna, você pode optar por um certificado gerado em sua própria entidade certificadora (AD CS – Certificate Services – sobre o qual iremos mostrar os princiais comandos PS futuramente). O certificado para o servidor AD FS, deverá estar instalado antes de efetuar a configuração do mesmo. Você pode importar o PFX do certificado via snap-in Certificates ou, como estamos querendo otimizar tarefas, vamos usar o cmdlet para isso:

Import-PfxCertificate –FilePath C:\ADFSCert.pfx cert:\localMachine\my -Password adfscert*

No comando acima, o arquivo PFX do certificado está na raiz do drive C:\. Seria interessante para casos em que você tem 2 ou mais servidores AD FS em uma farm, que os coloque em uma OU específica e crie uma política que envie para eles o certificado. Assim você poupa um passo no processo de deploy.

Ainda sobre o certificado, gere o mesmo de acordo com o AD FS Service Name que você vai definir na instalação. Por exemplo, no nosso laboratório aqui: “adfs.uilson.net”

Agora que o certificado do ADFS já está instalado, crie um host em seu DNS para qual você deverá apontar o IP do seu servidor AD FS – exemplo: “adfs.uilson.net – IP 10.10.1.3”.

Você precisa ter em mente se vai usar o Windows Internal Database (WID) ou se vai usar um servidor SQL. Isso vai depender do tamanho da sua infra, tipo e quantidade de acessos na sua aplicação, entre outros.

1. Instalando a role do AD Federation Services:

Install-windowsfeature adfs-federation -IncludeManagementTools

2. Configurando o servidor AD FS:

Estamos configurando um ambiente AD FS do zero. Portanto,  vou dar alguns exemplos de cenários em que você poderá configurar um AD Federation Services. Recomendo que use o ISE do PowerShell (ao executar o PowerShell, digite ISE):

2.1 – Configurando a farm AD FS:

Teremos que ter um usuário que irá executar o serviço do AD FS no servidor. Este usuário precisa de direitos de domain admin. Para tanto, vamos usar uma variável que iremos chamar de “$fscredential”. Essa variável irá chamar a função “Get-Credential” do PowerShell que deverá solicitar o usuário e a senha.

Como recomendei o uso do ISE para aplicar o comando todo, podemos fazer com que a variável solicite a conta do usuário de serviço e password e já prossiga com a instalação da farm:

$fscredential = Get-Credential

Install-AdfsFarm -CertificateThumbprint 8d8aa70358c538c7de50f5723571b9979696b5b2 -FederationServiceName adfs.uilson.net -ServiceAccountCredential $fscredential

No script acima, você irá primeiramente receber uma telinha pedindo user e a senha que será usado como conta de serviço e posteriormente, com os dados digitados, será feito a instalação da farm AD FS:

image

O parâmetro “-CertificateThumbprint” irá definir o certificado de common name “adfs.uilson.net” para o AD FS. Para descobrir o ThumbPrint de seu certificado, utilize o comando abaixo:

image

O parâmetro “-FederationServicesName”, define o nome do seu serviço de AD FS. É por ele, pelo certificado e pelo host criado no seu DNS (conforme falamos anteriormente) que a requisição chegará até o seu portal.

E por fim o parâmetro “-ServiceAccountCredential” irá usar a variável que falamos acima. Caso você não defina esta variável e nem declare esse parâmetro no comando, o AD FS usará o usuário logado como service account. Se você não usar os parâmetros citados, tenha certeza de que o usuário logado tem direitos de domain admin. Caso contrário a instalação não prosseguirá.

Conforme também falado neste post, o AD FS usa uma base de dados, seja ela o Windows Internal Database (WID) ou um SQL Server. No exemplo que acabei de mostrar, não declaramos nenhum SQL Server. Dessa forma o AD FS irá usar o WID.

Para instalar o AD FS apontando a base de dados para um SQL Server, use o comando abaixo:

$fscredential = Get-Credential

Install-AdfsFarm -CertificateThumbprint 8d8aa70358c538c7de50f5723571b9979696b5b2 -FederationServiceName adfs.uilson.net -ServiceAccountCredential $fscredential -SQLConnectionString "Data Source=SQLServerName\Instancia01;Integrated Security=True"

No comando acima vemos após a declaração das credenciais, o string de conexão com seu SQL Server.

2.2 – Criando uma farm AD FS com conta GMSA

Se você planeja criar uma farm AD FS com 2 ou mais servidores, é interessante usar um conta de domínio GMSA (Group Managed Service Account).

Para quem não está familiarizado com o GMSA no Windows Server 2012 pra frente, imagine que você tem uma infra de servidores AD FS ou até mesmo IIS em Load Balance com uma ou mais aplicações que usem autenticação Kerberos. Todas as instâncias dos serviços teriam que usar a mesma identidade.

Hoje configuramos, na maioria dos casos,  uma conta de serviços criada no AD a qual colocamos em cada servidor da farm. Entretanto, se você precisa alterar a senha desta conta. Precisará ir em todos os servidores da infra balanceada para alterar a senha. Caso contrário, o servidor no qual a senha não foi alterada, não conseguirá subir o serviço.

O serviço GMSA coordena essas contas de serviço com gerenciamento em um único ponto, agilizando o trabalho do administrador. No link abaixo você encontra um tutorial completo com os pré-requisitos para uso do GMSA e como criar as contas, usando inclusive, o powershell:

https://technet.microsoft.com/en-us/library/jj128431(v=ws.11).aspx

No nosso caso, podemos instalar o AD FS criando uma farm de servidores usando uma conta de serviços GMSA. Veja como no comando abaixo:

Install-AdfsFarm -CertificateThumbprint <certificate_thumbprint> -FederationServiceName <federation_service_name> -GroupServiceAccountIdentifier <domain>\<GMSA_Name>$

Trazendo para um exemplo em nosso laboratório:

Install-AdfsFarm -CertificateThumbprint 8d8aa70358c538c7de50f5723571b9979696b5b2 -FederationServiceName adfs.uilson.net -GroupServiceAccountIdentifier uilson\adfs_farm_user$

Lembrando que o parâmetro “$” ao fim do username é obrigatório.

O exemplo acima cria uma farm de servidores ADFS com uma conta de serviços GMSA, usando o WID (Windows Internal Database) como base de dados. Para criar uma farm conectada a um SQL Server, basta inserir no mesmo comando a string de conexão SQL usada no exemplo do item 2.1 deste post. Segue exemplo abaixo:

Install-AdfsFarm -CertificateThumbprint 8d8aa70358c538c7de50f5723571b9979696b5b2 -FederationServiceName adfs.uilson.net -GroupServiceAccountIdentifier uilson\adfs_farm_user$ -SQLConnectionString "Data Source=SQLServerName\Instancia01;Integrated Security=True"

Vale também ressaltar que a conta de serviços da farm não precisa obrigatoriamente ser uma conta GMSA.

2.3 – Adicionandos servidores a uma farm AD FS

Com a farm criada, conforme item 2.2 deste post, você poderá incluir mais servidores nela. Isso obviamente depois de uma análise de performance da aplicação para que você tenha o exato Sizing do seu ambiente AD FS.

Antes de adicionar o servidor na farm, tenha certeza de qual tipo de base de dados vc está trabalhando – WID (Windows Internal Database) ou um SQL Server. Copie tb o arquivo PFX do certificado anteriormente instalado no servidor primário da farm.

Abaixo o comando para inserir um servidor a farm AD FS com base WID, usando como conta de serviço um usuário de domínio:

Add-AdfsFarmNode -ServiceAccountCredential $fscred -PrimaryComputerName <first_federation_server_hostname> -CertificateThumbprint <certificate_thumbprint>

Trazendo para um exemplo em nosso laboratório:

$fscredential = Get-Credential
Add-AdfsFarmNode -ServiceAccountCredential $fscredential -PrimaryComputerName adfs_primary.uilson.net -CertificateThumbprint 8d8aa70358c538c7de50f5723571b9979696b5b2

Aqui declaramos a variável usada anteriormente para definição da conta de serviço (domain user) e o nome do servidor que foi instalado como primário, além do ThumbPrint do certificado.

Para quem usa o SQL Server como base para a farm AD FS, veja abaixo o comando para inserir nodes:

$fscredential = Get-Credential
Add-AdfsFarmNode -ServiceAccountCredential $fscredential -PrimaryComputerName adfs_primary.uilson.net -CertificateThumbprint 8d8aa70358c538c7de50f5723571b9979696b5b2 -SQLConnectionString "Data Source=SQLServerName\Instancia01;Integrated Security=True"

Abaixo o comando para inserir um servidor em uma farm AD FS existente usando uma conta GMSA em base WID:

Add-AdfsFarmNode -GroupServiceAccountIdentifier uilson\adfs_farm_user$ -PrimaryComputerName adfs_primary.uilson.net -CertificateThumbprint 8d8aa70358c538c7de50f5723571b9979696b5b2

E para finalizar a lista de scripts de configuração do AD FS, mostro abaixo o comando para inserir um novo servidor a uma farm existente com uma conta de serviço GMSA em base SQL Server:

Add-AdfsFarmNode -GroupServiceAccountIdentifier uilson\adfs_farm_user$ -PrimaryComputerName adfs_primary.uilson.net -CertificateThumbprint 8d8aa70358c538c7de50f5723571b9979696b5b2 -SQLConnectionString "Data Source=SQLServerName\Instancia01;Integrated Security=True"

Com o seu ambiente do AD Federation Services instalado, basta você verificar se o portal inicial está acessível. Seguindo as configurações citadas ao longo deste post, não tem o que dar errado. Basta acessar o endereço criado (no nosso exemplo: https://adfs.uilson.net):

PortalADFS_Uilson

Após se autenticar, você irá visualizar os acessos as aplicações que estão sendo autenticadas pelo AD FS via Relying Part Trust.

3. Administrando o AD FS

Um exemplo básico no AD FS é a criação de Relying Part Trusts – onde você define o caminho das aplicações a serem federadas. Abaixo um comando para criação de um relying part trust com base no script mostrado no último artigo do Web Application Proxy:

Add-AdfsNonClaimsAwareRelyingPartyTrust -Name ‘My App Extranet Publishing’ -Identifier ‘https://appserver.uilson.net/’ -IssuanceAuthorizationRules ‘=>issue(Type = "http://schemas.microsoft.com/authorization/claims/permit", Value = "true");’

Podemos usar uma série de comandos para configurar o AD FS. Existem uma quantidade enorme deles que podemos usar no PowerShell para criação e configuração de relying part trusts e demais regras de autenticação no AD Federation Services, além dos comandos para alteração do certificado. Falar de um ou outro ficaria pouco, entretanto, falar em todos, deixaria o post muito extenso.

Estou colocando abaixo um link com uma lista vasta de comandos powershell para AD Federation Services. Para todos os comandos há um link com exemplos. Além do que, você pode gerar uma lista de exemplos no seu próprio powershell usando o comando get-help, conforme exemplo abaixo:

Get-Help Add-AdfsNonClaimsAwareRelyingPartyTrust –Examples

O link para o artigo com os comandos – https://technet.microsoft.com/en-us/%5Clibrary/Dn479343(v=WPS.630).aspx

Espero que o conteúdo seja útil e lhe ajude no dia a dia.

Abraços

Uilson

Otimizando tarefas com PowerShell–Implementação e administração Web Application Proxy

12 de abril de 2016 1 comentário

Saudações,

Peço imensas desculpas pela demora, mas, alguns fatores como excesso de trabalho e uma cirurgia de extação do dente do siso levaram a isso. Mas, vamos lá!

Dando seguimento a nossa série de artigos sobre otimização de tarefas com PowerShell, vamos falar sobre a implementação do Web Application Proxy com ADFS via linha de comando. Lembrando que o primeiro artigo da série está disponível e ali falamos sobre os comandos PS para tarefas do Active Directory.

Antes de prosseguir, vamos apenas idealizar um ambiente onde vc tem seus back-end servers, um AD FS na sua rede interna, acabou de instalar um Windows Server 2012 R2 em sua DMZ e precisa instalar o Web Application Proxy nele. Algo mais ou menos como no desenho abaixo:

 

image

Para você que vem do TMG, não se esqueça que o Web Application Proxy exige um Firewall de borda (Edge Firewall), pois o mesmo não tem essa função, OK?

Vamos imaginar aqui nossos endereços fictícios:

Servidor de aplicação (Back-End Server) – https://appserver.uilson.net

Servidor do AD FS – https://adfs.uilson.net – criar um Relying Part chamado “My-App_Relying_Part”

Servidor do Web Application Proxy – Vai receber as requisições para as URL´s acima. Deve ter instalado o certificado das aplicações instaladas no Back-End Server e o do AD Federation Services

Agora que já temos nosso ambiente idealizado, vamos meter a mão na massa:

1. Instalando a Feature do Remote Access e habilitando o Web Application Proxy:

Install-WindowsFeature -IncludeManagementTools -name Web-Application-Proxy

Após executar a linha acima, a feature estará instalada. Vamos habilitar o Web Application Proxy:

Install-WebApplicationProxy -FederationServiceTrustCredential $Credential -CertificateThumbprint ‘22121D02DCBF80F440B5E26D52B92BC255D59F95’ -FederationServiceName ‘adfs.uilson.net’

OBS: Para quem ainda não sabe, o Thumbprint do certificado pode ser obtido através do comando abaixo:

Ou através da GUI usando o MMC Certificates…mas via PowerShell é tudo mais rápido e fácil né? Então vamos usa-lo e deixar o mouse um pouquinho de lado!

Depois de instalar, acesse a console ou veja via Power Shell se os serviços estão OK. Use o comando abaixo:

Get-Service ‘appproxysvc’,’appproxyctrl’,’adfssrv’ | fl -property *

Você deverá receber o retorno abaixo:

image

OK! Agora que o ambiente está instalado e os serviços estão em status “Running”, vamos publicar uma aplicação:

2. Publicando aplicações:

Opção 1 – Publicando uma aplicação web via PassThrough:

Add-WebApplicationProxyApplication -BackendServerUrl ‘https://appserver.uilson.net/myapp’ -ExternalCertificateThumbprint ‘8d8aa70358c538c7de50f5723571b9979696b5b2’ -ExternalUrl ‘https://extranet.uilson.net/’ -Name ‘Extranet Application’ -ExternalPreAuthentication PassThrough

Neste exemplo você vai publicar uma aplicação que está em seu Back-End Server, não terá pré-autenticação de um AD Federation Services, ou seja, esse trabalho fica a cargo da sua aplicação. Esse é um caso em que você tem certeza do que vai compartilhar e que não haverá brechas de segurança, nem tampouco acessos indevidos. É por isso que se faz necessário um tempo de planejamento da sua infra de Web Application Proxy.

Também é necessário que você tenha instalado em seu servidor Web Application Proxy o certificado da aplicação web do seu Back-End Server.

Opção 2 – Publicando uma aplicação com pré-autenticação do AD Federation Services:

Neste caso sugiro que você use o PowerShell ISE – basta digitar ISE na linha de comando do PowerShell:

Add-WebApplicationProxyApplication
-BackendServerURL ‘https://appserver.uilson.net/myapp’
-ExternalCertificateThumbprint ‘1a2b3c4d5e6f1a2b3c4d5e6f1a2b3c4d5e6f1a2b’
-ExternalURL ‘
https://extranet.uilson.net’
-Name ‘MyApp Extranet Publishing’
-ExternalPreAuthentication ADFS
-ADFSRelyingPartyName ‘My-App_Relying_Part’

Neste caso você publicou uma aplicação que vai ser pré-autenticada em seu AD Federation Services e a requisição será encaminhada para seu Back-End Server.

Agora, se você tem uma quantidade expressiva de aplicações a serem publicadas e que irão ser pré-autenticadas pelo seu AD Federation Services, é mais interessante vc publicar seu portal AD FS onde terá todas as aplicações listadas e assim o usuário poderá escolher para qual quer mandar  a requisição:

Add-WebApplicationProxyApplication -BackendServerUrl ‘https://adfs.uilson.net’ -ExternalCertificateThumbprint ‘8d8aa70358c538c7de50f5723571b9979696b5b2’ -ExternalUrl ‘https://adfs.uilson.net/’ -Name ‘ADFS Extranet App Portal’ -ExternalPreAuthentication PassThrough

Aqui o usuário verá seu portal do AD FS e escolherá qual aplicação quer entrar.

Para listar as aplicações publicadas em seu WAP digite o cmdlet  Get-WebApplicationProxyApplication

Abaixo um links com listas de comandos que serão muito úteis para otimizar seu tempo administrando sua farm de servidores WAP. Também usei esses links como base para montar este artigo:

https://blogs.technet.microsoft.com/applicationproxyblog/2014/08/20/web-application-proxy-powershell-cheat-sheet/

https://technet.microsoft.com/en-us/library/dn383640.aspx

https://technet.microsoft.com/en-us/library/dn383659.aspx

Então é isso pessoal! Dessa forma você implementa, publica e administra seu ambiente Web Application Proxy. No nosso próximo post irei falar sobre a implementação e administração do AD Federation Services via PowerShell.

Vale ressaltar que, em determinado momento você veja que é necessário aumentar sua infra de servidores Web Application Proxy. Nos links acima você encontra orientações e linhas de comando PowerShell para fazer isso da melhor forma possível e bem mais rápido.

Mais uma vez obrigado pela audiência no blog e espero que o conteúdo possa ser útil.

Abraços

Uilson

Automatizando tarefas com PowerShell–Administrando Active Directory Users and Computers

22 de fevereiro de 2016 2 comentários

Saudações,

Depois do nosso último post, resolvi investir um pouco mais de tempo em entender bem o PowerShell e, medindo o tempo que usava para entregar determinadas tarefas usando click de mouse e o tempo que levei para executar as mesmas tarefas via cmdlets, fiquei mais interessado ainda em me aprofundar no tema.

Para tanto, recomendo que você acesse o Microsoft Virtual Academy e procure pelos treinamentos de PowerShell disponíveis. Tente também baixar pelo Microsoft Press, os livros disponíveis. Além disso, procure também no TechNet todo conteúdo disponível sobre PowerShell. Realmente, você vai gostar e, como disse no meu último post, vai enteder que, o futuro do ITPro passa e fica pelo Powershell.

A idéia é mostrar como o Powershell pode facilitar seu dia a dia nas mais variadas ferramentas Microsoft, portanto, começo hoje uma série de posts onde mostro os principais comandos de PowerShell para AD, ADFS, Web Application Proxy, AD CS, IIS,  DNS e DHCP. Lembrando que não sou expert em PowerShell, portanto, o espaço está aberto aos especialistas para que nos aprofundemos no tema.

Neste primeiro post, trago para vocês uma lista de comandos úteis para administração do AD e que vai automatizar algumas tarefas no seu dia a dia. Então, vamos lá! Vamos pensar num domínio fictício chamado uilson.net e uma conta com nome Uilson Souza e username uilson.souza:

Você começa pelo import do módulo de comandos do Active Directory, digitando o cmdlet abaixo:

Import-Module ActiveDirectory

1. Criando/removendo uma nova conta de usuário

O exemplo abaixo mostra a criação de um usuário no seu domínio. O comando mostra como criar o usuário definindo nome, username, display name, diz que a conta está habilitada, define a senha inicial, força alteração de senha no primeiro logon e diz em que OU a mesma ficará:

New-ADUser -Name "Uilson Souza" -SamAccountName uilson.souza -DisplayName "Uilson Souza" -Title "Uilson Souza" -Enable $true -ChangePasswordAtLogon $true -AccountPassword (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -force) -PassThru -Path "OU=Users,DC=uilson,DC=net"

Para remover uma conta de usuário use o seguinte parâmetro:

Remove-ADUser –Identity “uilson.souza” – remove a conta de usuário mas antes é exibida uma mensagem de confirmação

Remove-ADUser –Identity “uilson.souza” –confirm:$false – remove a conta direto sem nenhuma mensagem de confirmação

2. Desbloqueando uma conta de usuário:

Aquele momento em que um usuário reclama que sua conta está bloqueada. Ele não é um usuário comum…trata-se de um diretor ou o presidente da sua corporação. Você (esperto como é) não vai fazer um usuário VIP entrar na fila dos chamados. Nesse caso o comando abaixo ajuda bastante:

Unlock-ADAccount -Identity uilson.souza

3. Listando contas com opção "password never expires":

Contas de serviço ou aquelas usadas em tarefas específicas que não podem entrar na política de alteração de senha da empresa. Nesse caso, ela é criada com a opção “Password never expires”. Para saber quais contas têm essa opção habilitada você pode usar a linha abaixo:

Search-ADAccount -PasswordNeverExpires | Select-Object Name,ObjectClass,PasswordNeverExpires | Export-Csv arquivo.csv

A parte “| Export-Csv arquivo.csv” significa que o resultado desta linha irá ser armazenado em um arquivo csv que, posteriormente poderá ser tratado no Excel.

4. Listando usuários de um determinado grupo:

Quem são os usuários que estão em um determinado grupo? Você não precisa mais abrir o snap-shot AD Users and Computers para isso e ainda poderá exportar a listagem para um arquivo:

Get-ADGroupMember -Identity "Nome_do_Grupo" | Select-Object Name,samAccountName | Export-Csv C:\TEMP\arquivo.csv

5. Criando um grupo dentro de uma OU:

Não basta simplesmente criar um grupo…ele precisa estar na OU certa para que seus membros recebam as políticas pré-definidas:

New-ADGroup -Name Marketing -GroupCategory Security -GroupScope Global -DisplayName Marketing -Path "OU=Users,DC=uilson,DC=net"

6. Adicionando usuário em um grupo:

Após criar o grupo, você precisa adicionar os membros nele:

Add-ADGroupMember NomedoGrupo uilson.souza – exemplo de inserção de um único 1 usuário

Add-ADGroupMember NomedoGrupo uilson.souza,jose.santos,paulo.oliveira – exemplo de inserção de vários usuários

7. Removendo usuário de um grupo:

Remove-ADPrincipalGroupMembership -Identity "uilson.souza" -MemberOf "NomedoGrupo" -Path "OU=Users,DC=uilson,DC=net"

8. Lista usuários com a conta desabilitada:

Você precisa saber quais contas estão desabilitadas. Para tal, a linha abaixo traz a informação desejada com as informações de Nome e Username:

Get-ADUser -Filter * -SearchBase "OU=Users,DC=uilson,DC=net" | where { $_.enabled -eq $False} | Select-Object Name,SamAccountName

9. Lista contas que não logam a mais de 30 dias

Nesse pequeno script você define que quer saber as contas que não efetuam logon a mais de 30 dias:

$timespan = New-TimeSpan -Days 30

Search-ADAccount -UsersOnly -AccountInactive -TimeSpan $timespan

Você ainda pode incrementar a linha 2 do script dizendo que as contas que não logam a mais de 30 dias já serão desativadas:

Search-ADAccount -UsersOnly -AccountInctive -TimeSpan $timespan | Disable-ADAccount

Essa opção de comando pode ser executada também a partir do PowerShell ISE (digitar ISE na linha de comando do PS – vou mostrar um exemplo abaixo).

10. Desabilitando uma conta em particular:

Comando para desabilitar uma conta. Imagine que um gerente de um setor qualquer te avisa de um funcionário está sendo desligado e que já quer o bloqueio da conta dele. Na linha abaixo vc já tem como atende-lo no mesmo instante:

Disable-ADAccount – Identity "uilson.souza"

OBS: Espero que o usuário de nenhum de vocês esteja entre as aspas duplas do comando acima…rs..rs..rs.rs

11. Habilitando uma conta em particular:

Em algumas empresas, os usuários em férias têm suas contas desabilitadas. Dessa forma o próprio não vai poder usa-la remotamente por uma série de questões trabalhistas envolvidas. No retorno do mesmo ao trabalho, o comando abaixo pode ser usado para reativar a conta:

Enable-ADAccount –Identity “uilson.souza”

12. Lista usuários de uma OU:

Você tem diversas OU´s separadas por departamento. Um belo dia alguém diz que precisa saber quem são os usuários do setor financeiro. O comando abaixo traz a informação que pode, posteriormente ser exportada para um arquivo:

Get-ADUser -Filter * -SearchBase "OU=Financeiro,OU=Users,DC=uilson,DC=net" | Select-Object Name,SamAccountName

13. Lista os dados de um usuário pelo nome:

Na linha abaixo eu listo todos os “Uilson´s” que existem em meu domínio trazendo informações de Nome e Username:

Get-ADUser -Filter ‘Name -like "uilson*"’ | FT Name,SamAccountName –A

OBS: No meu caso, Uilson com “U” raramente irá haver mais de 1…rs..rs..rs

14. Gerando uma lista de usernames e já inserindo em um grupo a partir de uma lista em TXT:

Agora, vamos sair um pouco do shell de comandos do PowerShell e vamos usar o PowerShell ISE para o pequeno script abaixo. Imagine que você precisa inserir uma quantidade alta de usuários em um determinado grupo, sendo que esses usuários já possuem conta de domínio. Você teria que seguir os passos da dica número 6 deste post, digitando um por um? Não!!!! Um script PowerShell resolve esse problema. Tudo que você precisa é ter a lista de nomes em um TXT, pedir que o PowerShell consulte no AD o username destes usuários a partir dos nomes da lista e já os adicione no grupo que você precisa que eles estejam:

Import-Module ActiveDirectory
ForEach ($Item in (Get-Content C:\UserList.txt)){
    Get-ADUser -Filter ‘Name -eq $Item’ | Add-ADPrincipalGroupMembership -MemberOf NomedoGrupo

}

Conforme falado anteriormente, ao digitar ISE na linha de comandos do PowerShell, você abre o PowerShell ISE:

image

image

O PowerShell ISE é fantástico! Note que, você tem a parte em que pode escrever o script, abaixo a tela azul onde vê a execução e ao lado direito você pode consultar todos os comandos PowerShell com explicação detalhada.

15. Lista todos os DC´s de seu domínio:

Para saber quais os domain controllers do seu ambiente:

Get-ADDomainController -Filter { name -like "*" }

Essa foi uma lista básica de comandos que vão ajudar e automatizar suas tarefas no dia a dia. Fiz um métrica de tempo entre as atividades feitas a partir de interface gráfica e as mesmas feitas em PowerShell. O tempo cai para algo em torno de 80 a 90% a menos. Então, ao menos para este que vos escreve, não há mais dúvidas…vamos mudar o foco e usar PowerShell.

Reitero que não sou especialista no tema e convido os experts a agregarem conhecimento e assim vamos nos ajudando mutuamente. Existem muitos outros comandos e parâmetros que podem ser usados juntamente com o conteúdo deste post para que possamos administrar e facilitar o dia dia no Active Directory. Aqui deixo os mais usados, mas, você pode ir além e aprender mais.

Queria agradecer o Anderson Thiago. que me ajudou muito em um fórum no TechNet elucidando alguns pontos de Power Shell – https://social.technet.microsoft.com/Forums/pt-BR/8249c2f2-af4e-417f-982c-8a8f5db05b5a/gerando-lista-de-usurios-via-powershell?forum=winsrv2008pt

No próximo artigo vamos falar sobre comandos PowerShell para agilizar a implementação e administração de um ambiente de proxy reverso com Web Application Proxy e AD Federation Services.

Espero que o conteúdo seja útil!

Abraços

Uilson

ITPro–abra sua mente a uma nova maneira de enxergar infra estrutura de TI

25 de janeiro de 2016 4 comentários

Saudações,

Antes de qualquer coisa, espero que todos os leitores deste blog tenham tido um excelente início de 2016 e que o decorrer dele venha com muito sucesso e realizações!

Depois de uma pausa nos posts, voltamos com as baterias carregadas para compartilhar o máximo possível e ajudar a comunidade técnica.

Nos dias 19 e 20 de janeiro estive no evento Microsoft Cloud Roadshow, onde tivemos conteúdos diversos sobre infra estrutura, virtualização e principalmente muito cloud computing. E justamente nesses dois dias saí com uma nova visão do futuro do profissional de infra no mercado de TI…cada vez mais, os cliques com o mouse irão diminuir e ao contrário do que se imaginava a menos de 5 anos atrás, você só estará em dia com as novas demandas do mercado se for especializado em ferramentas de script…no nosso caso PowerShell.

Apenas para exemplificar, na última sessão do evento, o Vinícius Apolinário perguntou quem já tinha conhecimento aprofundado em infraestrutura como código…praticamente ninguém ergueu a mão…e eu me incluo nessa. O conselho dado foi se aprofundar no estudo de Infra estrutura como código, ou seja, automatização de tarefas e implementação de servidores/ambientes via PowerShell DSC (Desired State Configuration).

Dessa forma, vc vai se preocupar muito mais com o workload de um servidor, do que com toda a parte de deployment a qual estamos sujeitos no momento em que se decide usar e implementar o Windows Server de forma completa, com interface gráfica.

Uma curiosidade que nos foi exposta pelo pessoal da Microsoft foi justamente a mudança de pensamento que entrou em vigor já no momento em que a infra do Microsoft Azure foi criada. Pode ser meio óbvio pra você e até mesmo algo sem nexo, mas, os Program Managers, ao começar os trabalhos de idealização da infra estrutura de cloud da empresa, verificaram que, um Windows Server em modo gráfico demora muito a instalar e gasta uma parte significativa de storage e performance de um equipamento.

Mais uma vez, parece algo óbvio e tardio da parte deles, mas, esse pensamento foi fundamental para o sucesso do Azure hoje. Uma estrutura de cloud no padrão IaaS em que você tem a responsabilidade sobre seus servidores poderá, um dia, ter a necessidade de um aumento na mesma, sendo que, esse aumento precisa ser dinâmico. Para quem trabalha com plafatorma e suas aplicações começam a requerer mais performance e a escalabilidade é lenta, seu negócio e resposta ao cliente tendem a serem lentas também.

Dessa forma, e muito rapidamente, servidores sem interface gráfica serão o padrão dos próximos anos.

A partir do Windows Server 2016 (hoje do Technical Preview 4), o conceito de Containers será fortemente usado para criação de infra estruturas de aplicação. Para isso, juntamente com o Windows Server, virá uma instalação própria a esse conceito chamada Nano Server.

Com Nano Server, você pode montar um servidor IIS para suas aplicações em poucos minutos a partir de uma linha de comando Power Shell. Usando também o Power Shell Desired State Configuration, você poderá otimizar a montagem de sua infra estrutura de acordo com a necessidade do momento.

Na minha página pessoal do facebook (http://facebook.com/usouzajr) tenho postado diversos links sobre Nano Server com muita informação relevante sobre o tema.

Abaixo vou deixar uns links sobre Nano Server, PowerShell DSC e containers para que vocês possam examinar, estudar e montar seus laboratórios:

1. Diversos Videos sobre Nano Server – https://channel9.msdn.com/Search?term=Nano%20Server#ch9Search

2. Getting Started with Nano Server – https://technet.microsoft.com/en-us/library/mt126167.aspx

3. Diversos videos sobre Containers – https://channel9.msdn.com/Search?term=Containers#ch9Search

4. Sobre PowerShell DSC – https://technet.microsoft.com/pt-br/library/Dn249912.aspx

5. Videos de PowerShell DSC – https://channel9.msdn.com/Search?term=PowerShell%20DSC#ch9Search

6. Neste link, um post do MTAC Gustavo Montesdioca sobre o evento Microsoft Cloud Roadshow e os links das palestras para quem não esteve lá – http://www.gm9.com.br/2016/01/22/perdeu-o-cloud-roadshow-sao-paulo-veja-como-assistir-e-saiba-como-foi/

7. Outro link para um post sensacional do MTAC Gustavo Montesdioca onde fala das novas competências dos profissionais de Infra – http://www.gm9.com.br/2015/11/17/quais-sao-as-novas-competencias-dos-profissionais-de-ti/

E ainda sobre containers, o link abaixo traz uma apresentação do Fábio Hara no evento ocorrido esse ano sobre Windows Server vNext:

https://channel9.msdn.com/Blogs/TechNet-Series/Windows-Server-vNext

Eu não ia começar o ano escrevendo aqui, mas, após assistir o evento dos dias 19 e 20 de janeiro deste ano, achei muito importante partilhar esse conteúdo com vocês. A vida e o cotidiano do ITPro vai mudar de forma sensível e temos que nos preparar para isto.

Nos próximos dias, vai ao ar um post em inglês que estou escrevendo para o portal FastVue.co sobre configuração de Kerberos Constrained Delegation para infra de servidores Web Application Proxy.

Espero que o conteúdo seja útil e possa criar em vc novos conceitos do nosso dia a dia.

Um abraço

Uilson

Categorias:Não categorizado
%d blogueiros gostam disto: