Setembro 2008 Setembro 2008
ISA Server: Um guia para proteger o ISA Server 2006
Muitas organizações dependem do ISA Server 2006 para proteger o ambiente, mas poucas dão o importante passo para proteger o próprio ISA Server. Eis um guia sobre como usar o Assistente de Configuração de Segurança e as funções administrativas para limitar a superfície de ataque e proteger a implementação do ISA Server 2006. Alan Maddison
ISA Server: Aumente a segurança do Gateway TS com o ISA Server 2006
Com o novo recurso Gateway TS, o Windows Server 2008 permite que os usuários acessem suas áreas de trabalho de qualquer lugar, sem usar uma VPN. Descubra como é possível publicar o Gateway TS através do ISA Server 2006 e estender o cenário de publicação do ISA Server 2006 para incluir a imposição da integridade do cliente. Dr. Thomas W. Shinder e Yuri Diogenes
IIS 7.0: Os 10 principais aperfeiçoamentos de desempenho no IIS 7.0
A última versão do IIS apresenta uma plataforma modular e extensível com suporte aperfeiçoado aos cenários de gerenciamento e implantação comuns, permitindo melhorias de desempenho significativas. Estas são as dez principiais áreas do IIS 7.0 que fornecem esses aperfeiçoamentos. Mike Volodarsky
Mobilidade: Adicione mobilidade aos seus aplicativos de linha de negócios
Atualmente, muitos profissionais precisam que os aplicativos de linha de negócios que usam no escritórios (CRM, ERP etc.) estejam acessíveis em um dispositivo móvel quando estão em trabalho externo. Veja como o Windows Mobile e o Mobile Device Manager permitem que você implante a sofisticada funcionalidade móvel para aplicativos críticos de linha de negócios. Matt Fontaine
Segurança: Noções básicas sobre gerenciamento de senhas para contas compartilhadas
Senhas de contas compartilhadas e com privilégios são comuns, mas muitas organizações não as gerenciam de forma adequada. Isso cria uma séria questão de segurança. Explore os riscos envolvidos nas contas compartilhadas e com privilégios e encontre abordagens mais apropriadas para gerenciar senhas mais seguras. Chris Stoneff
Columns
Do editor: Volta às aulas: | Cartas: Com a palavra, os leitores: | Toolbox: Novos produtos para profissionais de TI:
Perguntas e respostas do Exchange: Alinhando partições de disco, planejando a SCR e muito mais: Na edição de Perguntas e respostas do Exchange de setembro de 2008, respondemos a perguntas sobre o cálculo do número de servidores de catálogo global necessários, a alteração de uma associação do site do servidor e muito mais.Henrik Walther | Utilitário em destaque: Diagnóstico de memória do Windows: Veja como este utilitário gratuito pode ajudá-lo a determinar se os problemas que você está experimentando ao executar o Windows são causados por falha de memória.Lance Whitney | Explorando o SharePoint: Integração de diretórios do SharePoint: Pav Cherny discute sobre as limitações do Serviço de Gerenciamento de Diretório interno no SharePoint e explica como você pode substituir esse componente por uma solução personalizada que permita sincronizar as informações de destinatário do SharePoint com outras soluções de diretório.Pav Cherny
Windows PowerShell: Teoria da cadeia de caracteres: Apesar de sua natureza orientada a objeto, o Windows PowerShell também é capaz de analisar cadeias de caracteres complicadas. Don Jones demonstra como é possível fazer isso no Windows PowerShell usando Select-String.Don Jones | Ei, Equipe de Scripts!: Conecte-se à sua torradeira: Saiba como é possível usar conjuntos de registros desconectados – tabelas de banco de dados virtuais – para contornar limitações do VBScript relacionadas à classificação dos dados e ao trabalho com conjuntos de dados grandes.A Equipe de Scripts da Microsoft | Os arquivos da área de trabalho: Funcionalidade avançada no WDS: Nesta terceira parte sobre os Serviços de Implantação do Windows, Wes Miller explora recursos que melhoram desempenho e escalabilidade, log e automação de linha de comando.Wes Miller
Security Watch: Senhas e cartões de crédito, parte 3: Na etapa final desta série de três partes, Jesper Johansson analisa como fornecedores de software, pacotes de segurança e iniciativas de marketing dificultam os esforços de segurança efetivos e nos alerta de que essas práticas podem levar ao colapso do ecossistema de segurança em tecnologia.Jesper M. Johansson | Anotações de campo: Inovação que vem de dentro: Romi Mahajan explica sua teoria da "Inovação que vem de dentro", que enfatiza o capital e a criatividade humana como a chave para obter uma vantagem comparativa sustentada.Romi Mahajan | Segredos do Windows: Windows 95 não-conectado: Raymond Chen explica como um pouco de código de diagnóstico levou o Windows 95 a parar inesperadamente.Raymond Chen


Um guia para proteger o ISA Server 2006
Alan Maddison
Visão geral:
  • Práticas recomendadas para proteger os servidores
  • Configurando o Assistente de Configuração de Segurança
  • O Assistente de Configuração de Segurança passo a passo
  • Atribuindo funções administrativas

Conteúdo
Protegendo os servidores
Configurando o Assistente de Configuração de Segurança
Executando o ACS
Funções administrativas
Embora muitos profissionais de TI dependam do ISA Server 2006 (Internet Security and Acceleration Server 2006) para proteger ativos de tecnologia, poucos dão aquele passo a mais para proteger o próprio ISA Server. Se você
instalou o ISA Server 2006 recentemente, talvez se recorde de que havia um lembrete para fazer isso assim que a instalação era concluída. Infelizmente, muitos de nós, profissionais de TI, raramente passam (ou têm) tempo para executar essa etapa, acabando naquela lista de tarefas que nunca são realizadas.
No cenário atual da segurança, em constante mudança, deixar de proteger o ISA Server não é mais algo aceitável. Felizmente, houve grandes avanços nas ferramentas usadas para proteger o ISA Server. Você não precisa mais enfrentar muitos dos desafios dos assistentes de proteção de segurança encontrados nas versões anteriores ao ISA Server 2004. Na verdade, é possível contar com etapas e tarefas bem definidas como, por exemplo, o Assistente de Configuração de Segurança (ACS) que acompanha o Windows Server® 2003.
Neste artigo, farei uma breve recapitulação das práticas recomendadas gerais quanto à proteção de servidores. Em seguida, observarei etapa a etapa as estratégias de proteção para o próprio ISA Server, usando o Assistente de Configuração de Segurança para reduzir a área da superfície de ataque do ISA Server e das funções administrativas para restringir o acesso ao ISA Server.

Protegendo os servidores
Há muitos elementos e práticas recomendadas envolvidos na proteção de servidores, independentemente de estarem localizados em um data center ou na sala do servidor próxima ao escritório. Como administrador, é de sua responsabilidade compreender quais são essas práticas recomendadas e fazer o melhor para implementá-las de forma adequada para a organização. Como a ênfase na segurança adquiriu mais importância nos últimos anos, muitos de nós nos familiarizamos bem com as tarefas que formam a base desses requisitos, logo, não repetirei os pontos, mas fornecerei apenas uma visão geral resumida.
A primeira etapa que você deve executar para proteger o ambiente é garantir que os servidores estejam fisicamente protegidos. Em termos práticos, isso significa que você deve restringir o acesso físico aos servidores. Em ambientes menores, isso significa verificar se a porta da sala do servidor continua fechada e se a lista das pessoas com acesso à sala permanece bem pequena. Em ambientes maiores, esse requisito básico continua praticamente o mesmo, mas pode ser implementado de maneira mais sofisticada. Muitas organizações usam o monitoramento eletrônico, por exemplo. Isso permite a elas auditar a entrada nos locais do servidor e até mesmo restringir o acesso a racks individuais ou compartimentos, dependendo da forma como as responsabilidades da função estão estruturadas.
Existem alguns fatores exclusivos a serem considerados quando se lida com o roubo ou o comprometimento físico de um ISA Server ou de um ISA Configuration Storage Server. A natureza das informações que podem ser obtidas com o servidor roubado podem comprometer todos os ISA Servers e o tráfego (inclusive o tráfego criptografado) no ambiente.
Se você suspeitar que um servidor foi comprometido, roubado etc., remova o servidor afetado imediatamente (caso ele ainda esteja no local) e siga os procedimentos padrão para proteger as evidências. Depois de executar essas etapas necessárias, você precisa começar o processo de alteração de todas as informações confidenciais – todos os certificados instalados no servidor devem ser revogados e todas as chaves pré-compartilhadas e segredos compartilhados, modificados. Além disso, se você mantiver uma réplica do Servidor de Armazenamento de Configuração, verifique se nenhum dado relacionado ao servidor comprometido foi removido.
Depois que os servidores forem protegidos fisicamente, a próxima etapa é verificar se existe uma metodologia estruturada para corrigir todos os softwares, inclusive a camada de virtualização, o sistema operacional e os aplicativos. Patches, atualizações e hotfixes devem ser examinados e aplicados regularmente. Mas não se esqueça de testar essas atualizações antes de aplicá-las a sistemas de produção. Um patch não servirá para nada, se acabar causando um problema que comprometa o aplicativo ou a integridade dos dados.
Se a integridade dos dados for comprometida, você precisará contar com os backups. E isso me leva a outro elemento essencial na proteção da infra-estrutura. Se você não conseguir restaurar rápida e completamente os dados de restauração diante da necessidade, o tempo de inatividade pode ter um impacto significativo nas operações e, assim, aumentar o custo de uma intrusão.
Outros dois elementos a serem considerados são o monitoramento e a auditoria. Monitorar os aplicativos e os sistemas é parte crítica de qualquer bom plano de segurança. Se não se dedicar a examinar os logs, especialmente os relacionados à segurança, é improvável que você sequer localize tentativas de intrusão antes do estrago ser feito.
Da mesma forma, a auditoria é crítica. Para muitas organizações, especialmente de ambientes grandes, isso costuma estar formalizado e ser até mesmo exigido por lei. Independentemente disso, é importante, em qualquer ambiente, examinar regularmente os controles e a metodologia usados para proteger os ativos, para que os esforços sejam efetivos.
Por fim, como você está executando o ISA Server 2006 no Windows Server® 2003, é importante examinar o Guia de Segurança do Windows Server 2003 e implementar as recomendações necessárias. É possível localizar o Guia de Segurança do Windows Server 2003 em microsoft.com/technet/security/prodtech/windowsserver2003/w2003hg/sgch00.mspx.
A Microsoft atualmente recomenda a implementação do modelo Baseline Security Policy, mas você não deve implementar nenhum filtro IPsec (Internet Protocol Security).

Configurando o Assistente de Configuração de Segurança
E como é possível tornar o próprio ISA Server mais seguro? A principal ferramenta para proteger o ISA é o ACS. Trata-se de uma ferramenta para redução da superfície de ataque. Ela cria diretivas de segurança que se destinam a serviços de um servidor, segurança de rede, Registro e diretiva de auditoria, configurando o sistema apenas para os serviços e os recursos de que precisa. É importante observar que você só deve configurar os serviços do ISA Server que pretende usar. Por exemplo, o serviço Web Proxy permanece habilitado por padrão, mas você deve desabilitar essa funcionalidade caso não pretenda usá-la. Por isso, você precisa prestar bastante atenção às opções de configuração apresentadas a você pelo ACS.
Por padrão, o ACS não está instalado no Windows Server 2003, logo, a primeira etapa é instalá-lo por conta própria usando o miniaplicativo Adicionar/Remover Componentes do Windows® no painel de controle Adicionar ou Remover Programas. (Observe que o ACS está instalado por padrão no Windows Server 2008.) Assim que a tela Componentes do Windows for carregada, role para baixo e marque a caixa do ACS.
Assim que a instalação é concluída, o aplicativo pode ser encontrado em Ferramentas Administrativas. Para começar a usar o assistente, você deve atualizar o ACS baixando uma atualização para o ISA Server 2006 (disponível em go.microsoft.com/fwlink/?LinkId=122532). Essa atualização adiciona as funções do ISA Server 2006 Standard Edition, do ISA Server 2006 Enterprise Edition e do ISA Server Configuration Storage Server.
Depois de baixar a atualização, você precisa executar o pacote e extrair os arquivos dele. Depois de extrair esses arquivos, copie os dois arquivos .xml (isa.xml e isaloc.xml) para a pasta SCW kbs – em uma instalação padrão do Windows Server, isso será c:\windows\security\msscw\kbs.
Ao copiar os arquivos, você será solicitado a substituir os dois arquivos existentes com o mesmo nome. Como esses dois arquivos se referem ao ISA Server 2004, você deve fazer o backup deles antes de substituí-los. A etapa final é copiar o arquivo isascwhlp.dll para a pasta bin, normalmente encontrada em c:\windows\security\msscw\bin. Depois de concluir a adição das funções do ISA ao ACS, você estará pronto para começar a instalação.
Em geral, a Microsoft recomenda que você só execute o ACS depois de concluir a configuração do ISA Server. Caso você esteja executando Enterprise Edition, isso inclui a configuração de todas as matrizes e de todos os seus membros.

Executando o ACS
A primeira etapa é iniciar o ACS em Ferramentas Administrativas – lembre-se de que você precisa de permissões administrativas para concluir com êxito o processo do ACS.
A Figura 1 mostra a primeira tela do assistente. Se continuar lendo o texto exibido nessa tela, especialmente o aviso que diz "este assistente detecta as portas de entrada abertas por este servidor", você conseguirá compreender por que é tão importante configurar o ISA Server e as matrizes por completo antes de começar esse processo.
Figura 1 Iniciando o Assistente de Configuração de Segurança (Clique na imagem para ampliá-la)
Se não tiver configurado totalmente o ambiente, existe uma boa chance de que você precise revisar a configuração do ACS depois de concluir a configuração do ISA. A próxima tela, mostrada na Figura 2, pergunta qual ação você deseja realizar. Você deve selecionar a opção Criar nova diretiva de segurança.
Figura 2 Criando uma nova diretiva de segurança (Clique na imagem para ampliá-la)
Em seguida, você é instruído a selecionar o servidor que servirá de linha de base da diretiva. Como você está criando uma diretiva nova, a seleção padrão é para usar o computador no qual você está executando o ACS. No entanto, esse comportamento muda de acordo com a ação que você optou por realizar na tela anterior. Independentemente disso, recomenda-se, como prática recomendável, ter o ACS instalado no servidor que você deseja usar como linha de base. Se o ACS não estiver instalado no servidor de destino, as informações usadas para concluir a diretiva não serão encontradas. Por isso, para simplificar a sua vida, instale e execute o ACS no servidor que deve servir como linha de base.
Quando você pressionar Avançar, o ACS começará a análise do ISA Server. Essa análise inclui a determinação das funções instaladas no servidor, as funções que devem estar instaladas no servidor, os serviços instalados e as informações básicas sobre o sistema de rede. Quando o processamento estiver concluído, será possível exibir o banco de dados selecionando Exibir Banco de Dados de Configuração. O banco de dados de configuração contém muitas informações, inclusive todas as funções de servidor com suporte, os recursos de cliente e as portas.
Em seguida, o ACS começa o processo de introdução à Configuração de Serviços com Base em Funções. Pressionar Avançar leva você à próxima tela, em que é solicitado a selecionar as funções de servidor, como mostrado na Figura 3. A verificação inicial realizada pelo ACS é confiável, e você deve notar que as funções de servidor corretas já foram identificadas. No entanto, é muito importante que você clique duas vezes e remova todas as funções desnecessárias. E caso o servidor tenha várias funções, verifique se todas as funções apropriadas estão selecionadas.
Figura 3 Especificando funções de servidor (Clique na imagem para ampliá-la)
Um ponto importante a ser lembrado caso esteja executando o ISA Server 2006 Enterprise Edition é que você precisa considerar o Servidor de Armazenamento de Configuração. Se o Servidor de Armazenamento de Configuração estiver instalado em um servidor que também funciona como ISA Server (a propósito, isso não segue as práticas recomendadas, embora seja feito mesmo assim), você precisará verificar se a função de servidor Servidor de Armazenamento de Configuração também está selecionada. Você não deve usar uma verificação da linha de base que hospede ambas as funções de servidores que, na verdade, têm apenas a função do ISA Server 2006.
Em seguida, você é solicitado a selecionar os recursos de cliente do servidor. Em outras palavras, você precisa especificar os serviços exigidos pelo servidor. Por exemplo, praticamente todos os servidores exigirão o cliente DNS e, se for membro de um domínio, um servidor exigirá o recurso de membro Domínio.
Depois de fazer isso, você vê a tela Administração e Outras Opções. É nela que você indica as opções de aplicativo, administração e sistema operacional que usam serviços ou que dependem da conectividade de rede. Todos os serviços não selecionados a essa altura serão desabilitados. Depois de fazer as seleções e pressionar Avançar, você tem a opção de selecionar qualquer serviço adicional que deseja permitir.
Assim, você continua configurando como serviços não especificados devem ser tratados. Isso permite definir o que deve acontecer quando serviços não incluídos no banco de dados principal ou instalados no servidor de linha de base são encontrados com a diretiva sendo aplicada. Como prática recomendada geral, você deve optar por desabilitar serviços não especificados porque isso limitará qualquer vetor de ataque imprevisto. Infelizmente, essa opção pode ter conseqüências negativas caso os servidores sejam diferentes em aspectos significativos; você também precisa se lembrar dessa configuração caso adicione um aplicativo ou serviço de rede no futuro.
A próxima seção do assistente, mostrada na Figura 4, permite examinar os serviços que estão sendo modificados pelo ACS. Essa tela de confirmação fornece uma exibição comparativa do status atual e do status modificado dos serviços após a aplicação da diretiva.
Figura 4 Examinar e confirmar alterações feitas no serviço (Clique na imagem para ampliá-la)
Depois de confirmar os serviços a serem alterados, você passa à seção Segurança de Rede. É nela que o ACS normalmente permitiria modificar as configurações do Firewall do Windows e do protocolo IPsec. Mas como está configurando o ISA Server 2006, você não tem escolha senão ignorar essa seção, como mostrado na Figura 5.
Figura 5 Ignorando as configurações em Segurança de Rede (Clique na imagem para ampliá-la)
Em seguida, o assistente continua definindo as configurações do Registro que se concentram nos métodos de autenticação da rede e na segurança. A primeira tela desta seção envolve a autenticação do protocolo SMB (Server Message Block). O SMB é um protocolo do sistema de rede Microsoft básico, e essas configurações possibilitam uma comunicação autenticada a fim de reduzir a probabilidade de ataques a intermediários.
As configurações padrão, como mostra a Figura 6, fornecem um bom nível de segurança para a comunicação SMB do ISA Server. Mas você deve levar em conta o impacto que será causado pela autenticação de todas as comunicações. Caso não tenha ciclos da CPU sobrando, você deve desmarcar a segunda opção. E não se esqueça de pensar em todos os servidores aos quais essa diretiva será aplicada – caso tenha servidores com cargas de trabalho diferentes, você precisa usar o servidor com a maior utilização da CPU como orientação para selecionar ou não essa opção.
Figura 6 Especificando se comunicações autenticadas são obrigatórias (Clique na imagem para ampliá-la)
O próximo conjunto de telas lida com o nível LMCompatibility que o ISA Server deve usar. A primeira dessas telas apresenta três opções. A menos que haja clientes Windows herdados (como, por exemplo, Windows 95 ou Windows 98) ou você use contas locais no controle de acesso, é preciso deixar a opção Contas no Domínio selecionada.
Na segunda tela que lida com o nível LMCompatibility, você fornece informações sobre os controladores de domínio. Caso não haja nenhum domínio do Windows NT® 4.0, é possível deixar a opção padrão (Windows NT 4.0 Service Pack 6a ou sistemas operacionais posteriores) selecionada. Nessa caixa de diálogo, você também deve selecionar a opção para que os relógios sejam sincronizados com o relógio do servidor selecionado. Selecionar Avançar levará a algumas opções de configuração adicionais referentes à comunicação de entrada LM (LAN Manager), como mostrado na Figura 7.
Figura 7 Indicando métodos de autenticação de entrada (Clique na imagem para ampliá-la)
A terceira tela referente ao nível LMCompatibility determinará se o protocolo NTLM (Windows NT LAN Manager) versão 2 é obrigatório e se os hashes do LM são armazenados. Você deve verificar se nenhuma dessas opções está selecionada, contanto que o ambiente ofereça suporte a essa configuração, porque desmarcá-las aumentará a segurança de maneira significativa. Em seguida, é apresentado um Resumo das Configurações no Registro. Examine cada entrada e confirme se as configurações da diretiva estão corretas.
Em seguida, o assistente passa à seção final – Auditoria. Um ponto importante a ser observado com relação a qualquer uma das opções de configuração feitas nesta seção é que elas não podem ser revertidas. Mas como a auditoria não afetará a funcionalidade do sistema, você não deve ignorar essa seção.
A seleção padrão "Auditoria de atividades bem-sucedidas" não fornecerá entradas feitas no log de eventos por conta de falhas no logon. No entanto, informações referentes a falhas no logon podem oferecer informações importantes sobre tentativas de intrusão. Por isso, como uma prática recomendada geral, você deve selecionar "Auditoria de atividades bem e mal-sucedidas".
Em seguida, é possível examinar a configuração de auditoria e pressionar Avançar duas vezes para salvar a diretiva de segurança. O necessário nesta tela, mostrada na Figura 8, é um nome de arquivo; no entanto, também é possível fornecer uma descrição resumida. Essa descrição pode se mostrar útil em ambientes grandes em que administradores diferentes compartilham responsabilidades quanto à segurança.
Figura 8 Fornecendo um nome e uma descrição para a diretiva de segurança (Clique na imagem para ampliá-la)
Depois de que o arquivo é salvo, você tem a opção de aplicar a diretiva imediatamente ou depois. Caso você opte por aplicar a diretiva posteriormente, o processo está concluído. Caso descubra ter cometido erros na configuração da diretiva, você pode reverter a diretiva, com exceção das configurações de auditoria.

Funções administrativas
Reduzir a superfície de ataque do ISA Server é uma etapa crítica na redução do potencial de violações com origens externas. No entanto, também é importante examinar a atribuição de funções administrativas no ISA Server para limitar o potencial de comprometimento com origens internas. As funções administrativas e uma lista parcial das tarefas comumente associadas são mostradas nas figuras 9 e 10.
Figura 9 Funções e tarefas associadas a Standard Edition
Tarefa | Auditor de monitoramento | Auditor | Administrador pleno
Exibir Dashboard, alertas, conectividade, sessões e serviços | Permitido | Permitido | Permitido
Reconhecer alertas | Permitido | Permitido | Permitido
Exibir informações do log | – | Permitido | Permitido
Criar definições de alerta | – | – | Permitido
Criar relatórios | – | Permitido | Permitido
Parar e iniciar sessões e serviços | – | Permitido | Permitido
Exibir diretiva do firewall | – | Permitido | Permitido
Configurar diretiva do firewall | – | – | Permitido
Configurar cache | – | – | Permitido
Configurar uma VPN (rede virtual privada) | – | – | Permitido
Figura 10 Funções e tarefas associadas a Enterprise Edition
Atividade | Auditor de monitoramento da matriz | Auditor da matriz | Administrador da matriz
Exibir Dashboard, alertas, conectividade e sessões | Permitido | Permitido | Permitido
Reconhecer e redefinir alertas | Permitido | Permitido | Permitido
Exibir informações do log | – | Permitido | Permitido
Criar definições de alerta | – | - | Permitido
Criar relatórios | – | Permitido | Permitido
Parar e iniciar sessões e serviços | – | Permitido | Permitido
Exibir diretiva do firewall | – | Permitido | Permitido
Configurar diretiva do firewall | – | – | Permitido
Configurar cache | – | – | Permitido
Configurar uma VPN (rede virtual privada) | – | – | Permitido
Realizar esvaziamento/parada de NLB | – | Permitido | Permitido
Exibir configuração local (no Registro do membro da matriz) | – | Permitido | Permitido
Alterar configuração local (no Registro do membro da matriz) | – | – | –
Como se pode ver, existe um alto grau de segmentação nas tarefas administrativas associadas ao ISA Server. Isso, por sua vez, deve facilitar a atribuição das funções corretas a usuários dentro da organização.
Além disso, você precisa se lembrar de que a melhor abordagem em relação à atribuição da função é empregar o conceito de privilégios mínimos. Qualquer usuário só deve ter os privilégios mínimos necessários que o permitam realizar seu trabalho.
Também é importante lembrar que os membros do grupo Administradores local do ISA Server 2006 Standard Edition têm os mesmos direitos de um Administrador Pleno do ISA Server. Com o Enterprise Edition, os membros do grupo Administradores local no servidor com a função Servidor de Armazenamento de Configuração têm controle completo sobre a configuração do Enterprise. Isso significa que você precisa examinar cuidadosamente a associação do grupo Admin do Domínio, pressupondo que o ISA Server seja membro de um domínio, bem como qualquer outro grupo que seja membro do grupo Administradores local do ISA Server.

Alan Maddison é consultor sênior, especializado em tecnologias Microsoft, da Strategic Business Systems, uma divisão da Brocade.


ISA Server
Aumente a segurança do Gateway TS com o ISA Server 2006
Dr. Thomas W. Shinder e Yuri Diogenes
Visão geral:
  • Dois cenários que usam o Gateway TS com o ISA Server
  • Configuração do ISA Server 2006
  • Testando e monitorando

Conteúdo
Além do perímetro
O primeiro cenário
Configurando o ISA Server 2006
Testando e monitorando o acesso para cliente
Monitorando no ISA Server
O segundo cenário
E quanto ao cliente?
Conclusão
Depois do sucesso do Outlook em Qualquer Lugar no Exchange Server 2007, o Windows Server 2008, por sua vez, fornece o recurso de acessar sua área de trabalho de qualquer lugar, de uma maneira segura e controlada.
O novo serviço Gateway do Terminal Server (Gateway TS) no Windows Server® 2008 oferece a flexibilidade dos Serviços Terminal Server do Windows® mais a capacidade de conexão a um Terminal Server de qualquer lugar sobre uma conexão HTTP. Esse serviço usa o protocolo RDP sobre HTTPS (SSL) para aumentar a segurança e fornece uma única interface cliente para acesso a recursos dos Serviços de Terminal.
Esse novo serviço Gateway TS oferece vantagens significativas àqueles que precisam acessar seus computadores remotamente:
  • Não é necessário estabelecer uma sessão VPN (rede virtual privada) de conectar-se a recursos internos usando o RDP.
  • Maior segurança usando NAP (Proteção de Acesso à Rede) e Verificações de Integridade da Segurança do Windows para controlar conexões RDP.
  • Não é necessário abrir a porta TCP 3389 de entrada para habilitar publicação na Web mais segura através de firewalls.
Você poderá usar o Microsoft® Internet Security and Acceleration (ISA) Server 2006 para aumentar a segurança do serviço Gateway TS e, ao mesmo tempo, permitir o acesso externo a recursos internos. É possível configurar um cenário de ponte SSL para SSL no qual o ISA Server 2006 recebe solicitações e passa-as para o serviço Gateway TS interno, também usando HTTPS. Ao fazer a ponte da solicitação, o firewall ISA descriptografa as comunicações SSL e faz a inspeção da camada de aplicativo.
Se o fluxo do protocolo HTTP passar na inspeção, a comunicação será criptografada novamente e encaminhada ao proxy dos Serviços de Terminal. Se o fluxo de protocolo não passar na inspeção, a conexão será descartada.

Além do perímetro
A Microsoft tem investido muito em segurança, e o Windows Server 2008 é a versão mais segura e robusta do Windows já lançada. Mas também é uma preocupação para a empresa como os usuários implementarão seus produtos e que os usuários sigam práticas recomendadas para manter seus ambientes seguros. As práticas recomendadas exigem uma abordagem de defesa em profundidade que forneça proteção a vários pontos de acesso, ou camadas. As camadas relevantes para nossa discussão aqui são Diretivas, procedimentos e reconhecimento; Perímetro; Rede interna; e Host.
Quando você permite que usuários externos acessem um recurso interno através do ISA Server, precisa entender os limites de cada produto envolvido. O ISA Server 2006 e o Gateway TS fornecem segurança na camada Perímetro, mas, para recursos internos, você precisa ter diretivas em vigor que permitam ou neguem o acesso conforme necessário. O NPAS (Serviços de Acesso e Diretiva de Rede) permite que você faça isso, trabalhando na camada Diretivas, procedimentos e reconhecimento. O acesso a recursos internos (unidade, área de transferência, impressoras etc.) é definido por Diretivas de Autorização de Recursos dos Serviços de Terminal, considerando a camada de rede interna.
Neste artigo, examinaremos como publicar o Gateway dos Serviços de Terminal através do ISA Server 2006. Em seguida, ampliaremos nosso cenário de publicação do ISA Server 2006 para incluir a imposição da integridade do cliente com NAP. Usando NAP, podemos criar diretivas de integridade do cliente que nos ajudam a controlar o acesso na camada Host.

O primeiro cenário
Nosso objetivo é mostrar como publicar o Gateway TS através do ISA Server 2006. A Figura 1 resume os computadores e o fluxo de dados durante a conexão. Neste cenário, estamos implementando a função Servidor de Diretivas de Rede (NPS) no próprio Gateway TS; entretanto, iremos alterar isso no segundo cenário, onde usaremos um servidor NPS central. Siga a seqüência abaixo para entender o funcionamento das comunicações entre os componentes da solução de publicação do Gateway TS:
Figura 1 Publicando o Gateway TS através do ISA Server 2006 (clique na imagem para ampliá-la)
  1. O usuário RDP externo inicia a conexão. A primeira coisa que o cliente deve fazer é resolver o nome externo do Gateway TS (neste caso, tsg.contoso.com). O DNS externo resolve esse nome, que aponta para o endereço IP externo do ISA Server.
  2. É estabelecido um túnel SSL entre o cliente RDP e a interface externa do ISA Server. O ISA Server possui uma regra de publicação na Web na porta TCP 443 que usa um certificado emitido para tsg.contoso.com.
  3. Depois de avaliar a regra e verificar se o tráfego é permitido, o ISA Server enviará uma consulta DNS ao servidor DNS interno (localizado no controlador de domínio) para resolver o nome do servidor especificado na regra de publicação na Web.
  4. O ISA Server abre então um túnel SSL para o Gateway TS e passa a solicitação de autenticação para ele.
  5. O servidor Gateway TS valida as credenciais do usuário e confirma se o usuário está autorizado a estabelecer a conexão.
  6. Depois de definir que o usuário está autorizado a estabelecer a conexão, o serviço Gateway TS recebe as solicitações na porta TCP 443 e encaminha os pacotes RDP através da porta TCP 3389 (por padrão) ao Terminal Server interno, onde o aplicativo (um aplicativo CRM, por exemplo) reside.
A partir deste ponto, quaisquer pacotes que o cliente RDP enviar ao serviço Gateway TS através do ISA Server serão encaminhados ao Terminal Server interno e vice-versa.
É importante mencionar que o RDP sobre HTTPS em segundo plano não é nada mais do que um RDP/RPC/HTTPS. O cliente RDP encapsula as comunicações RDP em um cabeçalho RPC, que é subseqüentemente encapsulado com um cabeçalho HTTP protegido com SSL (ou TLS, Transport Level Security). Todos os componentes necessários para uma solução RPC sobre HTTPS devem estar presentes. É por isso que, quando você instala o serviço da função Gateway TS, ele automaticamente instala o RPC sobre proxy HTTP. Para entender melhor como esse protocolo funciona, é recomendável ler o artigo "Testando o RPC sobre HTTP através do ISA Server 2006 parte 1; protocolos, autenticação e processamento", que pode ser encontrado no blog da equipe do ISA Server (disponível em blogs.technet.com/isablog).
Essa implementação requer o Windows Server 2008 com o Gateway dos Serviços de Terminal instalado, e esse recurso depende do RPC sobre proxy HTTP. Para que o recurso RDP sobre RPC sobre proxy HTTP funcione, o IIS (Serviços de Informações da Internet) 7.0 deve estar instalado e em execução. Você também precisa dos Serviços de Acesso e Diretiva de Rede, mas, se preferir, poderá configurar o Gateway TS para usar o servidor NPS, antes conhecido como IAS (Serviços de Autenticação da Internet), para centralizar o armazenamento, o gerenciamento e a validação de TS DACs (Diretivas de Autorização de Conexão dos Serviços de Terminal). Finalmente, você precisa obter um certificado SSL para o servidor Gateway TS, caso ainda não tenha um. É importante enfatizar que o ISA Server 2006 deve confiar na autoridade de autenticação (CA) que emite o certificado. Portanto, assegure-se de importar o certificado para o Armazenamento de Autoridades de Certificação de Raiz Confiáveis.
Os Serviços de Domínio Active Directory® serão necessários somente se você configurar uma diretiva de autorização de Gateway TS que exija que os usuários sejam membros de um grupo de segurança do Active Directory para se conectarem ao servidor Gateway TS. Para esta instalação em particular, usaremos o Active Directory em um computador que executa o Windows Server 2003 SP2.
Quando a instalação do serviço Gateway dos Serviços de Terminal estiver concluída, a tela da Figura 2 será exibida, mostrando os componentes que foram instalados. Para conectar o Gateway TS, os clientes devem estar em execução em um dos seguintes sistemas operacionais: Windows Vista®; Windows XP com SP2 e RDP 6.0 ou posterior; Windows Server 2008; Windows Server 2003 com SP1 ou posterior e RDP 6.0 ou posterior. Para obter mais informações sobre a configuração do Gateway TS, consulte o Guia passo a passo de configuração do servidor Gateway TS do Windows Server 2008, disponível em go.microsoft.com/fwlink/?LinkId=122251. Vamos ver agora como configurar o ISA Server 2006.
Figura 2 Resumo da instalação do Gateway TS (clique na imagem para ampliá-la)

Configurando o ISA Server 2006
A primeira etapa é criar um Ouvinte da Web que manipulará as solicitações do cliente RDP externo. Nosso Ouvinte da Web tem os seguintes parâmetros:
  • Autenticação: Básica
  • Validação de Autenticação: Windows (Active Directory)
  • Conexões: Habilitar conexões SSL (HTTPS) na porta 443
  • Certificados: certificado emitido para tsg.contoso.com
  • Redes: Externo
Em seguida, você cria a regra de publicação na Web. Da perspectiva do ISA Server 2006, o cliente RDP usará o mesmo protocolo usado pelo Outlook® em Qualquer Lugar, portanto escolha o Assistente do Exchange Server 2007. Basta seguir estas etapas:
  1. Clique com o botão direito do mouse na Diretiva de Firewall, selecione Novo e clique em Regra de Publicação de Acesso de Cliente da Web do Exchange.
  2. Na página de boas-vindas, digite o nome da regra e clique em Avançar.
  3. Na página Selecionar Ação de Regra, selecione a opção Permitir e clique em Avançar.
  4. Na página Nova regra de publicação do Exchange, selecione a versão do Exchange, neste caso, Exchange Server 2007. Selecione Outlook Anywhere (RPC/HTTP(s)) e clique em Avançar. (Observação: não selecione a opção Publicar pastas adicionais no Exchange Server para clientes do Outlook 2007.)
  5. Na página Tipo de Publicação, selecione a opção Publicar um único site ou um balanceador de carga e clique em Avançar.
  6. Na página Segurança da Conexão do Servidor, selecione Usar SSL para conectar ao servidor Web ou ao farm de servidores publicado e clique em Avançar.
  7. Na página Detalhes de Publicação Interna, na caixa Nome do site interno, digite o nome do servidor Gateway TS. Marque a caixa de seleção Usar um nome ou endereço IP de computador para se conectar ao servidor publicado e, na caixa Nome ou endereço IP do computador, digite o nome do servidor. Se você não souber o nome do servidor Gateway TS, clique em Procurar para navegar até o local. Repare que o nome que você usa nesta página deve corresponder ao nome comum ou assunto no certificado de site associado ao site do Gateway TS.
  8. Na página Detalhes do Nome Público, na lista suspensa Aceitar solicitações para, selecione Este nome de domínio (digite abaixo) e, na caixa Nome público, digite o nome público correspondente ao nome do certificado emitido para esta URL — neste caso, o nome foi tsg.contoso.com. Clique em Avançar.
  9. Na página Selecionar Ouvinte da Web, clique na lista suspensa, selecione o Ouvinte da Web previamente criado e clique em Avançar.
  • Na página Delegação de Autenticação, selecione a opção Nenhuma delegação, mas o cliente pode autenticar diretamente e clique em Avançar.
  • Na página Conjunto de Usuários, verifique se a opção padrão (Todos os Usuários) está selecionada, clique em Avançar e, para aplicá-la, clique em Concluir.
    • Se você clicar duas vezes na regra e chegar à guia Caminho, verá que o único caminho que temos é /rpc/*. Isso ocorre porque usamos o Assistente Outlook em Qualquer Lugar do Exchange Server 2007.

    Testando e monitorando o acesso para cliente
    Como mencionado antes, você precisa do RDP 6.ou cliente posterior para conectar-se ao Gateway TS. Para configurar o aplicativo cliente RDP, inicie-o e digite o nome do Terminal Server ao qual deseja se conectar no campo Computador. Clique no botão Opções, na guia Avançado e em Configurações. Em seguida, digite o nome externo do servidor Gateway TS, como na Figura 3. Em nosso exemplo, é o nome que está no certificado associado ao Ouvinte da Web usado pela regra de publicação na Web para aceitar as solicitações que chegam. Repare que a autenticação NTLM (Windows NT® LAN Manager) é usada neste exemplo. Ao terminar, clique em OK e depois em Conectar. Você receberá um prompt de autenticação. Digite as credenciais de um usuário com acesso ao Terminal Server e clique em OK.
    Figura 3 Configurando o cliente RDP (clique na imagem para ampliá-la)
    Observe que o cliente RDP 6.0 (para Windows XP e Windows Server 2003) mostrará a tela da Figura 3. Você será solicitado a informar a autenticação duas vezes — a primeira autenticação é para o computador do Gateway TS e a segunda é para o Terminal Server a ser acessado. Esse é um ponto importante porque, embora você possa pensar que isso ocorre devido à configuração do ISA Server, na verdade o ISA Server não está em absoluto manipulando a autenticação, já que a regra de publicação na Web se aplica a "Todos os Usuários", o que permite conexões de usuários anônimos através do firewall ISA.
    O cliente RDP que acompanha o Windows Server 2008 possui uma opção Usar minhas credenciais de Gateway TS no computador remoto, como mostra a Figura 4. Com essa opção selecionada, você não precisa digitar suas credenciais duas vezes, o que melhora a experiência do usuário. Essa opção de logon único também fica disponível no Windows Vista depois que você aplica o SP1.
    Figura 4 O cliente RDP do Windows Server 2008 (clique na imagem para ampliá-la)
    Você poderá monitorar a conexão através do Gerenciador do Gateway TS, usando a opção de Monitoramento. O serviço Gateway TS também fornece detalhes quando um usuário não autorizado tenta conectar-se ao servidor. Na Figura 5, o Visualizador de Eventos mostra uma tentativa de conexão de um usuário que não tem permissão para conectar-se através do Gateway TS.
    Figura 5 Evento registrado no serviço Gateway TS (clique na imagem para ampliá-la)
    Para esse evento, o endereço IP interno do ISA Server 2006 é registrado porque a opção As solicitações parecem vir do computador do ISA Server está habilitada na regra de publicação na Web. Se você desejar registrar o endereço IP do cliente original, precisará alterar a regra de publicação na Web do ISA Server 2006 e escolher a opção As solicitações parecem vir do cliente original, na guia Para.

    Monitorando no ISA Server
    Com os novos recursos do ISA Server 2006 Supportability Update, é possível observar com atenção e entender cada conexão à rede interna. A Figura 6 mostra uma conexão realçada e, na linha Solicitação:, o verbo RPC_IN_DATA indicando a URL do RPC sobre proxy HTTP.
    Figura 6 Registro do ISA Server 2006 usando a atualização de suporte (clique na imagem para ampliá-la)
    Se você continuar a examinar o log, deverá ver o outro verbo RPC sobre HTTP, RPC_OUT_DATA. É importante estar ciente de quais métodos HTTP são usados, que são RPC_IN_DATA e RPC_OUT_DATA para RDP/HTTP, pois, se você tiver a Filtragem HTTP configurada para bloquear esses métodos, o tráfego será bloqueado no ISA Server. Se você desejar bloquear o seu ambiente, poderá configurar a regra de publicação na Web RDP/HTTP para permitir apenas esses dois métodos. Para obter mais informações sobre os métodos HTTP normalmente usados para publicação, leia o artigo "Filtragem HTTP no ISA Server 2004" em technet.microsoft.com/library/cc302627.

    O segundo cenário
    Para este cenário, o Gateway TS usará uma Diretiva Central NPS localizada em outro servidor. Nós iremos impor uma diretiva NAP para os clientes que se conectam remotamente através do Gateway TS. Os mesmos componentes que foram usados no Cenário 1 são usados aqui novamente, somente o servidor NPS será adicionado. Entretanto, devido à imposição NAP, mais componentes serão usados no lado do cliente, como mostra a Figura 7.
    Figura 7 Mais componentes da topologia do Cenário 2 (clique na imagem para ampliá-la)
    Aqui está uma explicação dos componentes individuais. No cliente do Windows Vista, um SHA (agente de integridade do sistema) consiste nos componentes do lado do cliente responsáveis por monitorar e relatar o estado da integridade do cliente. O Windows Vista é fornecido com o Windows SHA, mas há outros fornecedores trabalhando na criação de seus próprios SHAs.
    O agente NAP no cliente é responsável por estabelecer comunicações com o Servidor de Imposição de NAP quando o cliente tenta acessar a rede. O agente NAP envia a SoH (declaração de integridade) do cliente a esse servidor.
    No Gateway TS, a TS RAP (Diretiva de Autorização de Recursos dos Serviços de Terminal) é o componente que lhe permite determinar quais computadores estarão disponíveis para receber as solicitações RDP que chegam. A TS RAP também determina quais usuários têm permissão para estabelecer conexões RDP com servidores específicos.
    O NPS Central é responsável por controlar as condições, restrições e configurações que regulam o acesso aos computadores internos. Os SHVs (validadores da integridade do sistema) no NPS Central são responsáveis por avaliar se a SoH enviada pelo cliente é compatível com a diretiva definida pelo administrador.
    Agora vamos alterar o Gateway TS para que aponte para um Servidor Central NPS. Abra o Console do Gerenciador do Gateway TS, clique com o botão direito do mouse no nome do servidor e escolha a opção Propriedades. Na janela de propriedades do servidor, clique na guia Armazenamento de TS DAC e selecione Servidor NPS Central. Em seguida, digite o nome ou o endereço IP do servidor NPS e clique no botão Adicionar. Você verá uma janela pop-up Segredo Compartilhado. Digite o segredo e clique em OK; depois clique em OK novamente para fechar a janela. Você deverá se lembrar desse segredo porque ele será usado no servidor NPS.
    Presumindo que o NPS já esteja instalado em outro servidor, aqui estão as etapas que você deverá seguir:
    1. Abra o console do Servidor de Diretivas de Rede e, no painel esquerdo, clique em NPS (Local).
    2. No painel direito, clique em Configurar NAP. Será exibida a página Selecionar Método de Conexão de Rede para Uso com NAP.
    3. Em Método de Conexão de Rede, selecione Gateway TS (Gateway dos Serviços de Terminal) na caixa suspensa e clique em Avançar.
    4. Na página Especificar Servidores de Imposição de NAP Executando Gateway TS, clique no botão Adicionar.
    5. Na janela Novo Servidor Gateway TS, digite o nome amigável e o endereço IP do servidor Gateway TS. Em seguida, na parte inferior da janela, digite o segredo compartilhado usando o mesmo segredo que o da configuração do servidor Gateway TS. Clique em OK.
    6. Na página Configurar Métodos de Redirecionamento e Autenticação de Dispositivos Cliente, é possível especificar os dispositivos que serão redirecionados e o método de autenticação permitido (senha ou cartão inteligente). Para este exemplo, mantenha as opções padrão e clique em Avançar.
    7. Na página Configurar Grupos de Usuário e Grupos de Computadores, adicione o grupo de usuários que está autorizado a estabelecer a conexão. Neste exemplo, clique no botão Adicionar Usuários em Grupos de Usuários: (Obrigatório) e escolha Admins. do Domínio. Clique em OK e em Avançar.
    8. Na página Definir Diretiva de Integridade da NAP, você perceberá que o SHV padrão já está selecionado. Repare também que, na parte inferior dessa página, o acesso é negado para computadores não compatíveis. Mantenha os padrões selecionados e clique em Avançar.
    9. Na página Concluindo a Configuração da Diretiva de Imposição de NAP e do Cliente RADIUS, revise as opções selecionadas anteriormente. Você também poderá clicar no hiperlink Detalhes da Configuração e uma página HTML será aberta com um resumo de suas seleções. Ao terminar, clique em Concluir.
    Este assistente cuida da configuração de diversas diretivas importantes (Diretivas de Solicitação de Conexão, Diretivas de Rede e Diretivas de Integridade), reduzindo significativamente o trabalho necessário para configurar a NAP para este cenário.

    E quanto ao cliente?
    Agora que o servidor está instalado e configurado, o que deve ser feito com relação ao cliente?
    Para aproveitar as vantagens da diretiva de imposição de NAP, o cliente precisa ser Windows Server 2008 ou Windows Vista. Para o Windows XP, é necessário ter o SP3 instalado, o que inclui o cliente NAP.
    Além dos requisitos do sistema operacional, existem alguns serviços e configurações relevantes que precisam ser habilitadas no lado do cliente. Isso inclui o seguinte:
    • Adicionar o nome do servidor Gateway TS à lista Servidor Confiável no cliente.
    • Iniciar o serviço Agente NAP e definir o tipo de inicialização do serviço como Automático.
    • Habilitar o Cliente de Imposição de Quarentena do Gateway TS.
    Para simplificar a implantação dessa solução, a Microsoft criou o comando de configuração do cliente NAP dos Serviços de Terminal (Tsgqecclientconfig.cmd), que pode ser baixado de go.microsoft.com/fwlink/?LinkId=122267. Após a execução do comando, o cliente será configurado como cliente de imposição de NAP para o Gateway TS. Observe que o comando deve ser executado com privilégios elevados.
    Neste artigo, nosso principal objetivo foi não apenas descrever e explicar o novo recurso de Gateway TS que está disponível no Windows Server 2008 e mostrar como publicá-lo de forma segura através do ISA Server 2006, mas também fornecer a você uma perspectiva geral das vantagens de segurança que a combinação de ambos os produtos pode oferecer à sua empresa.
    No mundo atual, estar conectado de qualquer lugar é um requisito básico para praticamente qualquer negócio bem-sucedido. Entretanto, também é necessário que essa conectividade não afete a qualidade da experiência do usuário. E, ainda mais importante, é obrigatório que tudo isso seja feito de uma maneira que garanta a segurança.

    Dr. Thomas W. Shinder é MCSE e MVP em ISA Server. Ele trabalha como instrutor, redator e consultor de tecnologia desde 1996. Dr. Shinder é o autor de seis livros sobre o Firewall ISA. É também mentor e principal empreendedor do ISAserver.org, a maior comunidade de administradores e devotos do Firewall ISA na Internet.

    Yuri Diogenes, MCSE+S, MCTS, MCITP, Security+, Network+ e CCNP, é engenheiro de suporte de segurança na equipe Microsoft ISA Server/IAG. Ele escreve artigos para a Microsoft TechNet Library e o blog da equipe do ISA Server. Yuri trabalha com a tecnologia Microsoft desde 1993. Antes de entrar na Microsoft, trabalhou como instrutor, analista de suporte e consultor da Microsoft.


IIS 7.0
Os 10 principais aperfeiçoamentos de desempenho no IIS 7.0
Mike Volodarsky
Visão geral:
  • Minimizar a superfície do aplicativo
  • Reduzir os custos de largura de banda
  • Usar recursos avançados de cache

Conteúdo
Servidores Web mais enxutos
Criar um SO mais enxuto
Topologias de aplicativo aperfeiçoadas
Suporte aperfeiçoado de aplicativo
Aumentar a densidade do aplicativo
Redução de largura de banda na compactação
Limitação da taxa de bits da mídia
Cache de saída
Convertendo código ISAPI em módulos IIS 7.0
Extensibilidade do servidor
Conclusão
Quando visito empresas que planejam adotar o IIS 7.0, uma questão que inevitavelmente levantam é se o fato de migrar para o IIS 7.0 irá melhorar o desempenho de servidores ou aplicativos. A
resposta, em geral, é sim, mas não fique surpreso se não observar melhorias de desempenho ao migrar os aplicativos para o IIS 7.0.
Para entender isso, é preciso entender a natureza dessa versão mais recente. O IIS 6.0 era uma versão de engenharia com três objetivos: oferecer mais segurança, mais confiabilidade e melhor desempenho. O IIS 7.0, por sua vez, é uma versão de plataforma. Sua finalidade é converter o núcleo básico do servidor Web de alta qualidade de seu predecessor em uma plataforma modular e extensível com suporte aos principais cenários de gerenciamento e implantação atuais.
Muitas alterações de arquitetura e vários recursos novos podem realmente causar um impacto negativo no desempenho do servidor Web, considerando, por exemplo, que uma das principais alterações decompôs caminhos de código de servidor Web rigidamente otimizados em módulos autônomos que não recebem nenhum tratamento especial do servidor Web. Entretanto, graças ao intenso trabalho no desempenho realizado pela equipe do IIS, o IIS 7.0 não ficou nada a dever ao seu predecessor em termos de desempenho e inclusive o excede em algumas áreas. Posso dizer, por minha própria experiência ao trabalhar com núcleo de servidor Web e pipeline integrado, que esse feito exigiu uma boa dose de criatividade no design e muito trabalho na implementação do produto.
Contudo, o IIS 7.0 tem um potencial muito maior para fornecer melhorias de desempenho significativas e reduzir os custos relacionados ao desempenho para seu farm de servidores do que as antigas versões do IIS.
Você não verá necessariamente essas vantagens apenas migrando para o IIS 7.0, mas isso acontecerá em alguns ambientes. Por exemplo, o Microsoft.com obteve 10% de aperfeiçoamento de eficiência da CPU (você encontrará uma análise completa no blog da equipe do Microsoft.com em go.microsoft.com/fwlink/?LinkId=122497). Talvez você também observe aperfeiçoamentos notáveis em áreas específicas, incluindo no SSL e na autenticação do Windows® (ambos agora executados no kernel), e melhor escalabilidade vertical em computadores multiprocessadores e multinucleados.
No entanto, a verdadeira potência do IIS 7.0 não está nos aperfeiçoamentos de desempenho incrementais para os recursos existentes, mas nos novos recursos que você deve usar ativamente. Em geral, esses recursos se baseiam na flexibilidade e extensibilidade da plataforma e nas novas características de desempenho. Neste artigo, mostrarei as 10 causas mais importantes dos aperfeiçoamentos de desempenho que você pode desvendar ao migrar para o IIS 7.0.

Servidores Web mais enxutos
A capacidade de implantar servidores IIS 7.0 mais enxutos vem da arquitetura modular do servidor. Praticamente todos os recursos de servidor Web são implementados como componentes modulares que podem ser adicionados ou removidos individualmente. Assim, você pode remover qualquer recurso do servidor que não seja necessariamente para uma operação de aplicativo e obter benefícios notáveis, incluindo uma área de superfície de ataque extremamente reduzida, uma superfície operacional menor e um melhor desempenho.
O conjunto de recursos de servidor Web do IIS 7.0 contém 44 módulos, incluindo módulos IIS nativos e módulos ASP.NET que fornecem serviços para o pipeline integrado. Esses módulos fornecem serviços como autenticação (módulos Autenticação do Windows e Autenticação Digest), suporte à estrutura de aplicativos (módulo FastCGI), serviços de aplicativo (módulo Estado da Sessão), segurança (módulo Filtragem de Solicitações) e desempenho (módulo Cache de Saída). No entanto, um servidor Web mínimo que precisa ser usado apenas para conteúdo estático pode operar com apenas dois módulos!
A sobrecarga de módulos desnecessários pode ser muito significativa, por exemplo, no caso de log de solicitação e módulos de rastreamento de solicitação com falha. Remover esses módulos em ambientes em que eles não são necessários pode resultar em uma taxa de transferência total maior e respostas mais rápidas que reduzem a métrica de tempo do primeiro byte (TTFB) e do último (TTLB) para a carga de trabalho do servidor.
A Figura 1 mostra os resultados de um teste de taxa de transferência simples de um arquivo HTML (carga de trabalho estática) e uma página de "alô mundo" do ASP.NET (carga de trabalho do ASP.NET) quando configurado com o conjunto completo de recursos, o conjunto padrão de recursos e o conjunto mínimo de recursos necessários para a carga de trabalho. Muito embora os recursos mais essenciais já estejam desabilitados na configuração Full (Completo), removê-los totalmente na configuração Minimal (Mínimo) resulta em um aumento considerável na taxa de transferência para a carga de trabalho estática e a carga de trabalho do ASP.NET.
Figura 1 Taxas de transferência de carga de trabalho estática e do ASP.NET em três configurações diferentes com 100 clientes simultâneos (clique na imagem para ampliá-la)
Além disso, você pode ver aperfeiçoamentos na superfície da memória e na alta densidade do site, especialmente em ambientes de hospedagem compartilhados ou casos em que um grande número de processos de trabalho é usado. Isso é normalmente obtido carregando menos DLLs em cada processo e eliminando qualquer alocação de memória que ocorra durante a inicialização do módulo e o processamento da solicitação. A Figura 2 mostra o uso de memória (bytes particulares do processo de trabalho do IIS) no mesmo teste de taxa de transferência. Embora os aperfeiçoamentos não sejam tão pronunciados neste exemplo, os aumentos estão alinhados às expectativas, já que a sobrecarga de appdomain do ASP.NET é relativamente mais alta do que as economias de linha de base fornecidas pelos módulos removidos.
Figura 2 Uso de memória (bytes particulares) das cargas de trabalho estática e do ASP.NET em três configurações diferentes com 100 clientes simultâneos (clique na imagem para ampliá-la)
O IIS 7.0 fornece controle adicional sobre os módulos habilitados no nível do aplicativo, bem como sobre o uso do módulo baseado na carga de trabalho por meio de pré-condições do módulo. Embora exija uma configuração avançada, isso pode fornecer vantagens adicionais em ambientes multissite ou para aplicativos que ofereçam suporte a várias cargas de trabalho distintas.
Uma nota de advertência: a tarefa de determinar a funcionalidade necessária pode ser arriscada. Você deve considerar não apenas a funcionalidade mínima necessária para dar suporte à estrutura do seu aplicativo, mas também qualquer recurso adicional do qual seu aplicativo possa depender indiretamente. Por exemplo, seu aplicativo pode depender de métodos de autenticação específicos ou utilizar a semântica de autorização fornecida por vários recursos do IIS e, neste caso, remover aqueles que afetam negativamente a segurança do aplicativo. Da mesma forma, seu aplicativo pode utilizar alguns módulos para efeitos funcionais ou de desempenho e, neste caso, sua remoção pode provocar um comportamento incorreto ou perda de desempenho.

Criar um SO mais enxuto
O Windows Server® 2008 também fornece a componentização no nível do SO que você pode usar para reduzir ainda mais a área de superfície do seu servidor Web. O Server Core é uma opção de instalação mínima para o sistema operacional Windows Server 2008 e contém um conjunto mínimo de subsistemas principais do SO. É um ambiente ideal para servidores Web enxutos do IIS 7.0.
Mas, ao avaliar o Server Core, saiba que algumas de suas limitações podem afetar o seu aplicativo. O Server Core não fornece suporte ao Microsoft® .NET Framework; portanto, pode esquecer do ASP.NET, da extensibilidade do .NET e do Gerenciador do IIS. Além disso, as tarefas de gerenciamento local exigirão ferramentas de linha de comando já que não existe MMC (Console de Gerenciamento Microsoft). Da perspectiva do desempenho, se você já aproveita adequadamente as vantagens da componentização do IIS, talvez não veja diferença na superfície da memória ou na taxa de transferência da carga de trabalho do aplicativo executado no Server Core em comparação com a implementação completa do Windows Server. Isso porque o trabalho executado pelo IIS e o seu aplicativo é o mesmo nas duas plataformas. Entretanto, existe um lugar onde você verá uma diferença: a superfície geral do servidor, em termos de espaço em disco e uso de memória.
Como exemplo, a Figura 3 mostra a diferença na superfície depois de executar o teste de carga de trabalho estática em uma configuração completa do Windows Server 2008 e no Server Core. Embora a superfície do IIS seja praticamente a mesma nos dois casos, a superfície geral do SO do Server Core permite o suporte à carga de trabalho com muito menos memória. A superfície reduzida pode permitir realmente que você implante a carga de trabalho do aplicativo em um hardware menos potente, concentrando-se nas demandas de processamento do aplicativo, e não no ambiente operacional. É claro que, com isso, o Server Core torna-se uma excelente opção para ambientes virtualizados.
Figura 3 Superfície de memória do Windows Server 2008 completo em comparação com o Server Core depois de executar o teste de carga de trabalho estática (clique na imagem para ampliá-la)

Topologias de aplicativo especializadas
Ao otimizar cargas de trabalho de aplicativos, você pode separá-las em partes distintas. Por exemplo, em vez de executar seu aplicativo em um farm de 30 servidores Web idênticos, você pode executá-lo em 10: 5 servidores de aplicativo e 3 servidores proxy que executam cache e compressão.
Essa especialização funciona por vários motivos. Primeiro, o desempenho de várias cargas de trabalho de aplicativo depende muito de diversos recursos compartilhados, como memória, que podem ser contestados em várias partes do aplicativo. A competição por esses recursos pode criar afunilamentos que impedem que cada servidor seja utilizado totalmente nos outros recursos. A separação do aplicativo em partes confere a elas pronto acesso aos recursos que, de outra forma, seriam contestados, aumentando a eficiência no mesmo conjunto de recursos de hardware.
Em segundo lugar, a especialização pode permitir que o aplicativo obtenha mais localidade cache, melhorando assim o desempenho. Isso inclui caches de baixo nível, como o TLB (buffer de conversão à parte) de memória virtual, o cache do sistema e outros caches de aplicativo e do sistema operacional. Outra fonte de ganho de localidade vem da CPU. Ao reduzir o número de atividades paralelas em andamento e se concentrar apenas em uma parte específica, o aplicativo pode reduzir o número de alternâncias de contexto e maximizar o trabalho executado pela CPU.
Em terceiro lugar, a especialização permite a otimização de carga de trabalho específica, tornando cada parte do trabalho do aplicativo mais eficiente. Muitas dessas otimizações não são possíveis quando o mesmo servidor oferece suporte ao aplicativo inteiro, devido às necessidades conflitantes de partes diferentes do aplicativo.
Um lugar em que isso geralmente acontece é na configuração de threads do ASP.NET, que afeta significativamente a simultaneidade e indiretamente o uso de memória, a latência e a taxa de transferência para muitos aplicativos. A carga de trabalho de arquivo estática do IIS é extremamente assíncrona e requer um alto limite de solicitação simultânea, mas o número de threads é bastante reduzido. Entretanto, muitos recursos do ASP.NET são síncronos, de bloqueamento longo e requerem uma contagem de threads alta, enquanto outros requerem um limite de simultaneidade menor para reduzir o impacto na memória. Ao separar a carga de trabalho estática e dividir as partes do pipeline de processamento de solicitações em um processo ou servidor separado, é possível otimizar a simultaneidade de cada carga de trabalho individualmente.
Finalmente, a especialização aceita uma escalabilidade geral maior, permitindo que o aplicativo dimensione cargas de trabalho discretas ou partes do aplicativo independentes. Assim, a topologia do aplicativo fornece mais capacidade e redundância onde elas são mais necessárias, em vez de exigir que você aplique o mesmo modelo ao aplicativo inteiro. Neste modelo, os recursos especializados podem ser servidores físicos, virtuais ou até pools de aplicativos no mesmo computador.
Ao avaliar as possíveis vantagens de especialização na topologia do aplicativo, comece localizando os afunilamentos de processamento ou de uso intensivo de recursos. Essas áreas devem ser as primeiras candidatas à especialização, porque apresentam um potencial significativo para otimização quando isoladas e exigem o maior dimensionamento horizontal. Portanto, avalie se o ato de isolá-las permite que o resto do aplicativo utilize os recursos com mais eficiência. Finalmente, você precisará avaliar a sobrecarga no mecanismo de conectividade necessária para reunir os componentes isolados do aplicativo.

Suporte aperfeiçoado de aplicativo
O IIS 7.0 vem com suporte estendido para estruturas de aplicativo por meio do FastCGI, um protocolo aberto com suporte em várias estruturas de aplicativo de código aberto que, de outra forma, não ofereceriam suporte a uma integração estável e de alto desempenho com o IIS. Diferentemente do protocolo CGI, ao qual o IIS ofereceu suporte durante um longo tempo, o FastCGI fornece um desempenho muito mais aperfeiçoado na plataforma Windows. Isso é possível principalmente por causa da arquitetura de processos reutilizáveis do FastCGI, que elimina a grande sobrecarga de criação de processos por solicitação, permitindo aos clientes aproveitarem as conexões keep alive persistentes.
Se você oferece suporte a estruturas de aplicativo no IIS usando CGI ou outro mecanismo, poderá obter um desempenho aperfeiçoado (e, em alguns casos, estabilidade) migrando para o protocolo Fast CGI.
A primeira estrutura do aplicativo a aproveitar esse suporte é a PHP. Na verdade, a equipe do IIS trabalhou diretamente com a Zend Technologies para garantir que a implantação do FastCGI do IIS funcionasse com PHP e permitisse melhorias de desempenho na estrutura PHP no Windows. (Para saber mais sobre o projeto, consulte a postagem no meu blog em go.microsoft.com/fwlink/?LinkId=122509.) Se você tiver uma mistura de tecnologias de servidor Web que inclua aplicativos ASP ou ASP.NET executados no IIS e PHP ou outras estruturas de aplicativo compatíveis com FastCGI usando outras tecnologias, poderá consolidar esses aplicativos na plataforma do IIS 7.0.
Com a migração do PHP e de outras estruturas de aplicativo para o IIS 7.0 e FastCGI, você poderá aproveitar vários recursos do IIS 7.0, incluindo o pipeline integrado do ASP.NET. É uma opção muito conveniente para aperfeiçoar estruturas de aplicativo com serviços ASP.NET sem convertê-las em ASP.NET. Assim, os aplicativos também podem usar diferentes estruturas para colaborar. Um exemplo de como isso pode ser usado para aperfeiçoar os aplicativos existentes sem alterar nenhum código, consulte o meu artigo da MSDN® Magazine "Aperfeiçoe seus aplicativos com o pipeline integrado do ASP.NET" (disponível em msdn.microsoft.com/magazine/cc135973.aspx).

Aumentar a densidade do aplicativo
O IIS 7.0 inclui vários aperfeiçoamentos destinados a aumentar a densidade dos aplicativos que podem ser hospedados em um único servidor. Esses aperfeiçoamentos fazem parte de diversos recursos que o IIS 7.0 fornece para aperfeiçoar a qualidade da hospedagem compartilhada, incluindo provisionamento aperfeiçoado de sites e melhor isolamento de aplicativos.
Da perspectiva do desempenho, os aperfeiçoamentos visam principalmente dois aspectos de aumento de densidade do aplicativo: aumentar o número de aplicativos que podem ser provisionados em um servidor IIS 7.0 e o número de aplicativos que podem ficar ativos a qualquer momento.
Observe que o IIS 7.0 agora permite provisionar mais aplicativos em cada servidor do que antes (em alguns testes internos, foi possível até 100.000 sites em um único servidor). Isso mostra a capacidade de criar e configurar um grande número de sites e aplicativos.
Uma nota de advertência: para obter um provisionamento de alta velocidade, é necessário migrar as novas APIs de configuração, já que as antigas não podem obtê-lo. Além disso, nem todas as APIs de configuração do IIS fornecem as mesmas características de desempenho, portanto, faça uma escolha cuidadosa para garantir um alto desempenho. Em dúvida, opte pelas opções de configuração que aproveitam os novos objetos de configuração do IIS diretamente, incluindo o namespace Microsoft.Web.Administration, a ferramenta de linha de comando AppCmd.exe e os objetos de configuração COM do IIS acessados por código de script, .NET ou C++.
A diferença entre o número de sites que podem ser provisionados e o número que podem ficar ativos é uma distinção muito importante na arquitetura do IIS, que usa aplicativos e processos de trabalho persistentes para executar o processamento de solicitações. Neste modelo, os aplicativos ativos consomem mais recursos no servidor, mas também fornecem um melhor desempenho sustentado graças ao cache e aos custos de inicialização removidos.
Como cada aplicativo ativo requer uma determinada quantidade de memória e um processo de trabalho separado (se o modelo de isolamento de aplicativo recomendado for usado), o número de aplicativos ativos depende muito de sua superfície de memória. Portanto, embora um único aplicativo usado apenas para conteúdo estático exija apenas 3 MB para o processo de trabalho (e possa até compartilhar o mesmo processo de trabalho com outros aplicativos de conteúdo estático), alguns aplicativos dinâmicos podem exigir 100 MB ou mais de RAM inclusive com baixa utilização. Isso torna a sobrecarga de memória do processo de trabalho em si do IIS insignificante quando comparada com a superfície do aplicativo ao definir a máxima densidade possível.
No cenário de hospedagem compartilhado, é comum ver o que é chamado de distribuição 80/20, em que 80% das solicitações vão para 20% dos sites. Com isso, uma pequena porcentagem de sites fica ativa a qualquer momento. Para permitir um número maior de sites ativos, o IIS 7.0 fornece um gerenciamento de tempo de vida ativo. Isso pode ajudá-lo a recuperar memória de aplicativos inativos para permitir que mais aplicativos ativos sejam hospedados.
O IIS 7.0 apresenta um novo algoritmo chamado ociosidade dinâmica, que ajusta de forma proativa os limites de ociosidade dos processos de trabalho com base na memória disponível do servidor. Conforme a memória se torna baixa, os aplicativos ociosos são removidos com mais rapidez, permitindo que mais aplicativos ativos sejam hospedados. Entretanto, se a memória estiver disponível, os limites poderão permanecer grandes para fornecer melhor desempenho e manter o estado do aplicativo. Além de permitir que mais aplicativos fiquem ativos, a ociosidade dinâmica também ajuda a evitar condições de memória baixa que causam uma séria degradação de desempenho devido à paginação excessiva.
Para tornar a hospedagem de vários aplicativos ativos possível, você também deve aproveitar o sistema operacional de 64 bits, que permite ao sistema dedicar mais de 4 GB de memória. Além disso, você pode configurar os processos de trabalho do IIS para serem executados no modo de 32 bits (SysWoW64), no qual consomem menos memória e permitem que o SO dedique mais memória do que seria possível em um ambiente de 32 bits.

Redução de largura de banda na compactação
Não é de espantar que os custos de largura de banda sejam um dos principais na execução de um data center voltado para a Internet. Além disso, a largura de banda necessária para fornecer o conteúdo solicitado é um fator importante na resposta percebida no seu aplicativo.
Uma das formas mais eficientes de reduzir a largura de banda necessária para fornecer as respostas dos aplicativos é usar a compactação HTTP. Ela pode reduzir o tamanho da resposta de forma substancial, com freqüência, em até 10 vezes, quando aplicada a um conteúdo de texto facilmente compactável como HTML. A melhor parte é que ela possui suporte em praticamente todos os navegadores desktop e os custos de descompactação em hardware de desktop são pequenos comparados à economia de latência obtida no envio de menos dados. E, como a compactação se baseia na negociação de codificação de conteúdo definida no protocolo HTTP 1.1, é seguro habilitá-la para clientes que não oferecem suporte a compactação (esses clientes simplesmente recebem uma versão não compactada do conteúdo).
O IIS 7.0 fornece os dois recursos de compactação apresentados por seu predecessor: compactação estática e dinâmica. A estática compacta previamente o conteúdo estático e o salva no disco, permitindo que solicitações futuras usem o conteúdo compactado diretamente sem sobrecarga de compressão. A dinâmica compacta a resposta em tempo real e, por isso, permite a compactação para as respostas geradas pelos aplicativos. Qualquer estrutura de aplicativo no IIS 7.0 pode utilizar a compactação dinâmica, incluindo ASP, ASP.NET ou PHP.
Apesar de um mito comum, a compactação dinâmica normalmente não tem uma sobrecarga de CPU proibitiva. Na verdade, em geral, a compactação dinâmica é responsável por menos de 5% da utilização total da CPU em um servidor ocupado. A compactação dinâmica pode ser implantada de forma relativamente livre para permitir a máxima economia de largura de banda na carga de trabalho de qualquer aplicativo.
Você pode otimizar ainda mais a sobrecarga de compactação configurando sua potência para obter a compactação desejada em relação à taxa de sobrecarga da CPU. Mas isso não é tudo. Você também pode configurar seu aplicativo para permitir o cache do conteúdo compactado, eliminando a sobrecarga de compactação nos acertos de cache pelo uso do conteúdo já compactado. Observe que os caches de saída do ASP.NET e do IIS foram atualizados com o recurso opcional de armazenar em cache o conteúdo compactado para clientes que ofereçam suporte a isso, bem como manipular as solicitações de clientes que exigem conteúdo não compactado.

Limitação da taxa de bits da mídia
Com o aumento do número de sites que oferecem conteúdo de mídia, os custos de largura de banda para muitas empresas estão disparando. O que é pior, boa porcentagem da largura de banda é desperdiçada porque o conteúdo de mídia enviado ao cliente não é usado. Por que isso acontece?
Lembre-se da última vez em que assistiu a um vídeo online ou viu um anúncio de vídeo ao navegar. Você assistiu ao vídeo até o fim? É muito comum aos usuários que navegam em sites de vídeo assistirem apenas parte de um vídeo e passarem para outro ou saírem da página. Entretanto, um servidor Web usando download progressivo para fornecer o vídeo, em geral, envia muito mais dados do que o necessário durante aqueles poucos segundos de reprodução. A maior parte daqueles dados nunca é usada.
Se os seus vídeos obtêm em média 5 segundos de tempo de exibição, mas fornecem o equivalente a 30 segundos (buffer) de dados do vídeo nesses 5 segundos, provavelmente você está gastando mais de 80% da sua largura de banda!
Há um ano, para resolver esse problema para um cliente que adotou uma versão beta do IIS 7.0, escrevi um módulo de limitação de largura de banda que detectava automaticamente a taxa de bits do vídeo e garantia que o servidor fornecesse o vídeo ao cliente basicamente na mesma taxa. A equipe de mídia do IIS selecionou esse módulo, conhecido como Bit Rate Throttling Module (Módulo de limitação de taxa de bits, consulte a Figura 4) e ele está disponível no centro de download do iis.net (iis.net/downloads/?tabid=34&g=6&i=1640). Saiba mais sobre isso no blog de Scott Guthrie (disponível em go.microsoft.com/fwlink/?LinkId=122514).
Figura 4 A limitação de taxa de bits minimiza o uso da largura de banda (clique na imagem para ampliá-la)
O Bit Rate Throttling Module detecta a taxa de codificação dos tipos de vídeo mais conhecidos. Você pode controlar quantos dados deseja enviar previamente ao cliente para eliminar os atrasos de buffer iniciais (início rápido) e a porcentagem da taxa codificada que deseja de fornecer ao conteúdo. Também é possível configurar várias outras opções, como o máximo de conexões simultâneas e de largura de banda, e controlar o módulo programaticamente.

Cache de saída
Em termos gerais, o cache é o método mais usado para melhorar o desempenho de aplicativos que executam trabalhos repetidos. Diferentemente dos aperfeiçoamentos de desempenho específicos de aplicativo, que em geral exigem muito esforço e sobrecarga de processamento de um aplicativo, o cache elimina a sobrecarga de solicitações repetidas para o mesmo conteúdo.
Antes do IIS 7.0, o IIS e o ASP.NET ofereciam recursos de cache por meio do cache de kernel do IIS e do Cache de Saída do ASP.NET. O cache de kernel do IIS fornecia o máximo de desempenho, mas se restringia basicamente ao conteúdo estático. O Cache de Saída do ASP.NET era uma solução muito mais completa para o cache de conteúdo dinâmico, embora com um desempenho menor e um gerenciamento de memória menos eficiente. O novo Cache de Saída do IIS 7.0 preenche a lacuna entre o cache de kernel do IIS e o Cache de Saída do ASP.NET.
O Cache de Saída do IIS 7.0 permite o cache do conteúdo dinâmico de qualquer aplicativo, incluindo ASP, ASP.NET, PHP e qualquer outra estrutura de aplicativo compatível com o IIS 7.0. Ao fornecer suporte básico à variabilidade e expiração de conteúdo, esse novo recurso torna possível implementar o cache de um conteúdo que não pode ser armazenado pelo cache de kernel do IIS. No entanto, ele permite o uso de cache de kernel para um conteúdo que atenda às restrições.
Além disso, o Cache de Saída do IIS 7.0 também fornece uma alternativa de desempenho maior para o Cache de Saída do ASP.NET para um conteúdo ASP.NET que não exija os recursos de cache avançados (como dependências ou invalidação de cache) que só estão disponíveis no Cache de Saída do ASP.NET.
Quando se trata de cache de saída, os desafios normalmente são definir as diretivas apropriadas de expiração de conteúdo, invalidação e variabilidade que permitem um cache de resposta eficiente enquanto mantêm a precisão e a atualização de cache necessárias. Em geral, é possível fazer isso simplesmente configurando as regras de cache apropriadas, embora algumas situações exijam diretivas mais complexas que dependem de informações de runtime. Para resolve isso, o Cache de Saída do IIS 7.0 fornece APIs programáticas que podem ser usadas para garantir o comportamento de cache necessário. Isso desbloqueia o possível desempenho do cache para um conteúdo que, de outra forma, não se beneficiaria com o cache. Além disso, o pipeline integrado do ASP.NET permite o uso do Cache de Saída do ASP.NET para conteúdo que não seja ASP.NET.
Implantar o cache de saída para conteúdo dinâmico pode ser arriscado e exibir uma estratégia multicamada para aproveitar as eficiências e a flexibilidade dos diferentes recursos de cache na plataforma do IIS 7.0. Isso com freqüência inclui descrever vários parâmetros que afetam a resposta e definir as estratégias de expiração e invalidação para manter a atualização do cache e determinar qual cache oferecerá suporte à semântica necessária.
Mas essa complexidade quase sempre vale a pena. Ao implementar o Cache de Saída do IIS 7.0, você pode obter aperfeiçoamentos em vários graus de importância na taxa de transferência geral do seu aplicativo e uma redução correspondente de carga no banco de dados e nos componentes de camada empresariais.

Convertendo código ISAPI em módulos do IIS 7.0
O IIS 7.0 apresenta uma nova API de servidor na qual todos os seus módulos se baseiam. Ela substitui as APIs de filtro e a extensão ISAPI herdadas usadas nas versões anteriores do IIS. Para novos módulos que não precisam oferecer suporte a versões anteriores, as novas APIs são mais fáceis de usar, ajudam a produzir código de servidor mais confiável e são muito mais poderosas.
Entretanto, o IIS 7.0 fornece uma opção para oferecer suporte aos filtros e às extensões ISAPI por meio de uma camada de compatibilidade implementada por módulos do IIS 7.0 opcionais. Assim, os componentes ISAPI existentes podem funcionar no IIS 7.0 sem ser necessário reescrevê-los.
Embora o uso de investimentos de ISAPI existentes reduza a barra para a migração do IIS 7.0, você deve considerar seriamente o uso do código ISAPI herdado nas novas APIs do IIS 7.0. Com isso, você elimina a sobrecarga da camada de compatibilidade ISAPI e aproveita as vantagens de desempenho que não estão disponíveis para componentes ISAPI. Dependendo do trabalho executado pelo componente ISAPI, essas vantagens de desempenho podem ser bastante significativas. Por exemplo, a API de módulo do IIS 7.0 fornece suporte interno ao cache de metadados de configuração e outros dados arbitrários associados a sites, aplicativos e URLs, que podem acelerar bastante as operações internas do componente.
Além disso, a API de módulo do IIS permite que os módulos executem operações assíncronas de longa duração, como receber dados de entidades de solicitação ou enviar resposta. A execução dessas tarefas assíncronas possibilita que o servidor atenda a um grande número de clientes simultâneos (dezenas de milhares), em vez de maximizar em dezenas ou, no máximo, centenas de clientes simultâneos devido aos limites no número de threads de solicitação. O processamento assíncrono também pode eliminar o efeito do processamento em outras solicitações e atividades no aplicativo, reduzir o uso de memória e permitir uma melhor utilização da CPU.
Acima dos padrões específicos que afetam o desempenho, a API nativa fornece aos desenvolvedores mais flexibilidade para tarefas de processamento de solicitação. Assim, você poderá melhorar o design de componente do servidor e, em troca, habilitar grandes eficiências. Por exemplo, algumas tarefas de filtragem que anteriormente exigiam extensões ISAPI de caractere curinga e execução de solicitação filho agora podem ser executadas em um módulo durante a solicitação original e também podem habilitar o cache de kernel IIS para a resposta.
Pode ser necessário um protótipo e uma experimentação para determinar o design ideal que maximize as vantagens da migração. Devido a diferenças fundamentais de arquitetura entre a API de módulo do IIS 7.0 e ISAPI, a rota direta não é necessariamente a correta. A boa notícia é que a API de módulo do IIS 7.0 também é mais simples de usar que a ISAPI, o que torna a migração menos difícil.

Extensibilidade do servidor
O IIS 7.0 oferece extensibilidade de ponta a ponta. Ele requer uma boa dose de conhecimento prévio sobre a operação do servidor, mas também fornecem um grande potencial para ganhos de desempenho específico de aplicativo. Conhecendo um pouco da arquitetura do servidor e o processamento de solicitações, você pode aproveitar essa extensibilidade para criar soluções de desempenho personalizadas específicas para as exigências de aplicativo, carga de trabalho e hardware.
Isso pode ser feito substituindo qualquer recurso interno do IIS 7.0 por implementações personalizadas. Embora os recursos do IIS 7.0 tenham sido submetidos a diversos testes de otimização e desempenho, obviamente, eles não foram otimizados para todos os possíveis tipos de uso. Portanto, você pode melhorar o desempenho de módulos específicos criando otimizações para sua carga de trabalho específica. Por exemplo, você pode decidir reimplementar o módulo de listagem de diretório para armazenar na memória o cache de listagens de diretório em vez de usar as APIs de sistema de arquivo para enumerar arquivos.
Opcionalmente, a extensibilidade pode ser usada para criar novos recursos de desempenho. Os exemplos internos de tais recursos incluem o Cache de Saída, os módulos de compressão e vários outros caches internos.
Para determinar a necessidade de um recurso de desempenho personalizado, é necessário entender as características de desempenho do aplicativo e sua carga de trabalho, bem como conhecer o afunilamento a ser resolvido. O IIS 7.0 fornece um amplo suporte de diagnóstico para análise de desempenho, que pode tornar mais claros os requisitos e o possível design dos recursos necessários.

Conclusão
Embora o lançamento do IIS 7.0 seja basicamente uma versão funcional, ele oferece aperfeiçoamentos dignos de nota derivados de sua arquitetura modular, configurabilidade e novos recursos de desempenho. Esses aperfeiçoamentos podem preparar o caminho para economias de negócio significativas por meio da consolidação do servidor e dos custos de largura de banda reduzidos, bem como fornecer uma melhor experiência do usuário.
Para aproveitar adequadamente muitos desses recursos, é necessário executar uma análise detalhada da plataforma do seu aplicativo atual e adquirir uma boa dose de conhecimento da arquitetura do IIS 7.0. Para saber mais sobre a arquitetura e os recursos do IIS 7.0 mencionados neste artigo, visite o iis.net. No mvolo.com, falarei mais no blog sobre técnicas que aproveitam de forma proativa o IIS 7.0 para melhorar o desempenho do aplicativo e reduzir os custos operacionais.
Mike Volodarsky foi gerente de programa da equipe de IIS na Microsoft. Nos últimos cinco anos, controla o design e desenvolvimento dos principais recursos para o ASP.NET 2.0 e o IIS 7.0. Agora, ele cria tecnologias de servidor Web avançadas para farms da Web de alto desempenho usando o IIS 7.0 e o Windows Server 2008. Mike é autor do livro IIS 7.0 Resource Kit (Kit de recursos do IIS 7.0) e escreve ativamente para a MSDN Magazine e seu blog do IIS 7.0, mvolo.com.


Mobilidade
adicione mobilidade aos seus aplicativos de linha de negócios
Matt Fontaine
Visão geral:
  • Necessidade de aplicativos LOB móveis nos negócios
  • Plataforma robusta para desenvolvimento e implantação mLOB
  • Segurança, gerenciamento e provisionamento remotos

Conteúdo
Habilitando e gerenciando funcionários remotos
Segurança e gerenciamento de dispositivos
Interoperabilidade
Produtividade de TI e do usuário
Desenvolvimento e distribuição
Conclusão
Além das funções tradicionais de voz, mensagens e produtividade, muitas empresas hoje em dia querem que os profissionais móveis tenham acesso aos mesmos sistemas de linha de negócios (LOB) que usam no
escritório através de aplicativos LOB móveis (mLOB). Os sistemas candidatos geralmente incluem aplicativos CRM (gerenciamento de relacionamento com o cliente), ERP (planejamento de recursos empresariais), BI (business intelligence), financeiros e contábeis. Obviamente, a funcionalidade mLOB permite que os usuários móveis acessem e usem aplicativos de negócios sofisticados e interajam com dados em movimento em tempo real, o que reduz o tempo de venda, aumenta a satisfação do cliente e eleva a produtividade nos negócios. Alguns cenários de negócios típicos poderiam incluir:
  • As equipes de vendas podem usar o Microsoft Dynamics™ CRM Mobile para exibir e atualizar dados dos clientes de qualquer lugar. Outro aplicativo mLOB lhes proporcionaria acesso a dados de preços e estoque em tempo real. Além disso, os vendedores poderiam usar dispositivos especializados para coletar documentos de vendas durante o trabalho externo, desde o preenchimento de pedidos à coleta de assinaturas. Na verdade, existem até aplicativos de ponto de venda para dispositivos Windows Mobile® capazes de ler códigos de barras e cartões de crédito e, em seguida, conectar-se a sistemas de dados LOB para processamento.
  • Os funcionários em serviço externo podem ser escalados com o uso de soluções ERP que encaminham a equipe com base em seus compromissos e em sua localização, e podem ser automaticamente rastreados com dispositivos Windows Mobile habilitados para GPS. Os funcionários em serviço externo selecionam apenas a primeira tarefa do dia; quando a tarefa é concluída, eles são automaticamente enviados à tarefa seguinte (veja a Figura 1).
  • Em empresas de fabricação, os dispositivos Windows Mobile com recurso de verificação por RFID (identificação por radiofreqüência) podem ser usados para gerenciamento de estoque em um depósito habilitado para RFID, inserindo informações em um banco de dados instantaneamente e sem fio. Além disso, existem dispositivos Windows Mobile que são reforçados ou designados como "intrinsecamente seguros" para ambientes de trabalho de risco. O objetivo é entregar os dados onde eles são necessários sem deixar de atender a importantes requisitos de segurança.
  • Os executivos que se deslocam entre reuniões com clientes, reuniões de diretoria e eventos de imprensa no mesmo dia — talvez longe do escritório — podem obter demonstrativos financeiros, relatórios de despesas ou informações de clientes onde quer que estejam.
Esses e muitos outros cenários de negócios estão levando muitas empresas de ponta a adotarem aplicativos mLOB. Este artigo mostrará a você como o Windows Mobile e o Mobile Device Manager trabalham em conjunto na capacitação de profissionais de TI para a implantação da sofisticada funcionalidade móvel, cada vez mais necessária nos negócios atuais.
Figura 1 Um aplicativo mLOB mostrando uma tarefa de serviço externo concluída

Habilitando e gerenciando funcionários remotos
O Windows Mobile provou ser uma eficiente plataforma para habilitar funcionários remotos em diversos segmentos, pois funciona bem com os ativos de TI existentes baseados no Windows®, suas mensagens móveis e comunicações unificadas (UC) são fornecidas pelo Exchange Server e pelo Office Communications Server, e tanto os usuários quanto os profissionais de TI gostam de trabalhar no ambiente Windows, que é familiar e exige menos treinamento para ser utilizado e compreendido.
Com o lançamento do Mobile Device Manager, o Windows Mobile tornou-se uma opção ainda mais atraente para a implantação de dispositivos móveis nas configurações de negócios. O Mobile Device Manager permite que os dispositivos móveis sejam provisionados, gerenciados e protegidos remotamente com o uso do Active Directory® e da Diretiva de Grupo, como se fossem PCs em rede ou compartilhamentos de arquivos. Diretivas e softwares podem ser enviados automaticamente aos telefones, e as diretivas de segurança, software e hardware podem ser gerenciadas de uma maneira altamente granular com fartos recursos de relatório de estoque.
A força que move essas inovações é a noção de que os dispositivos móveis devem ser extensões naturais dos sistemas de TI, em vez de existir em sua própria bolha middleware. Para as empresas que desejam realmente ir além de mensagens, comunicações e produtividade básica em dispositivos Windows Mobile, é fundamental tornar os dispositivos móveis cidadãos de primeira classe na rede.
Portanto, o que acontece quando você está em uma das organizações que desejam ir além do básico? Vamos ver como os recursos do Windows Mobile e do Mobile Device Manager tornam isso possível ao fornecerem uma excelente plataforma para aplicativos mLOB.

Segurança e gerenciamento de dispositivos
Os próprios recursos que tornam os aplicativos mLOB atraentes — o fornecimento ininterrupto de acesso a informações críticas para os negócios sobre clientes, finanças, estoque etc. — também tornam a segurança um maior desafio. Os usuários inserem e acessam essas informações com pequenos dispositivos em redes públicas de diversos locais.
Muitas empresas já permitem o acesso móvel a aplicativos LOB, bem como a outros recursos e ferramentas compartilhados na intranet através de laptops com conexões VPN (rede virtual privada). O Mobile Device Manager amplia essa funcionalidade para dispositivos Windows Mobile com VPN móvel (veja a Figura 2). O servidor gateway do Mobile Device Manager Gateway Server habilita um túnel criptografado com IPsec entre o cliente Windows Mobile e a rede, fornecendo acesso seguro às informações protegidas pelo firewall corporativo por conexões públicas, como a Internet ou redes de dados em pacote sem fio. O Windows Mobile dá suporte a vários tipos de criptografia nessa configuração.
Figura 2 Gerenciamento avançado de dispositivos, segurança e VPN móvel com o Mobile Device Manager (clique na imagem para ampliá-la)

Interoperabilidade
As diretivas de criptografia podem ser definidas e impostas para dados em dispositivos e cartões de armazenamento. Os funcionários que usam aplicativos mLOB podem baixar informações confidenciais para seus dispositivos móveis, onde há mais chances de enganos e perdas do que em outros dispositivos de rede. Felizmente, o apagamento remoto de dados no dispositivo pode ser executado em qualquer dispositivo habilitado para VPN móvel com uma conexão de dados (veja a Figura 3). Se um vendedor farmacêutico, por exemplo, baixasse arquivos do cliente do sistema CRM da empresa para seu dispositivo móvel e depois esquecesse o dispositivo em um táxi, as conseqüências poderiam ser muito graves.
Figura 3 Se um dispositivo móvel for perdido ou roubado, as informações inseridas nele poderão ser removidas remotamente. (clique na imagem para ampliá-la)
O Mobile Device Manager foi projetado para lidar com esse tipo de problema. Na verdade, o Mobile Device Manager permite que você gerencie praticamente todos os aspectos das funções de dispositivos e da diretiva de usuários do Windows Mobile, desde desabilitar recursos específicos de hardware até controlar quais aplicativos podem ser instalados para limitar o acesso a determinados recursos de rede. Tudo isso pode ser feito em uma única solução, e remotamente. Quando os usuários possuem recursos mLOB, esses recursos tornam-se ainda mais importantes. Por exemplo, você poderia impedir que usuários usassem conexão de rede Bluetooth, que permite o download de dados em dispositivos sem controle. Talvez você queira que apenas alguns usuários possam instalar o cliente de software contábil móvel, então poderá defini-lo para carregamento e instalação automáticos somente para os usuários que precisam dele.
Recursos adicionais
  • Microsoft System Center Mobile Device Manager 2008
  • Apresentando o Microsoft System Center Mobile Device Manager 2008
  • Microsoft System Center Mobile Device Manager 2008: um white paper técnico
  • Microsoft System Center Mobile Device Manager 2008: um apresentação para profissionais de negócios
  • Windows Mobile Line of Business Solution Accelerator 2008
Além disso, o Mobile Device Manager não exige que dados corporativos passem por uma NOC (central de operações de rede) de terceiros, que poderia representar outro possível ponto de interrupção de disponibilidade ou segurança. De um modo geral, o Mobile Device Manager oferece controle total sobre implantações de dispositivos móveis de praticamente qualquer escala — controle que torna fácil implantar, gerenciar e proteger a funcionalidade mLOB.
A integração à rede gera outra vantagem: todo o controle altamente granular é feito por meio do Active Directory e da Diretiva de Grupo, sem a necessidade de gerenciar dispositivos móveis separadamente de outros clientes de rede. Isso poupa tempo e dinheiro. O mais importante, contudo, é que a integração permite que você aplique diretivas de segurança e acesso consistentes. A Diretiva de Grupo é uma maneira altamente eficiente de controlar o acesso móvel a dados LOB. Aqueles que precisam de acesso podem recebê-lo com facilidade; aqueles que não precisam podem ser restritos em grupo ou individualmente.
Outra importante consideração no gerenciamento de implantações mLOB — e dispositivos móveis em geral — é a interoperabilidade com a infra-estrutura existente. Diferente do Windows Mobile, alguns sistemas operacionais de dispositivos móveis são desconectados de outros formulários de TI, exigindo idiomas, servidores e ferramentas próprios. Esses fatores tornam-se cada vez mais importantes quando você está fornecendo aplicativos complexos e acesso a dados críticos em dispositivos móveis.
O Windows Mobile e o Mobile Device Manager fornecem essa interoperabilidade. Como um sistema operacional Windows, o Windows Mobile funciona bem com outros ativos de TI baseados no Windows, como o Microsoft® Exchange Server, o Microsoft Forefront™, o SQL Server® e o Microsoft Office Communications Server. Essa interoperabilidade em família facilita o design e a criação da mais avançada funcionalidade mLOB.
Por exemplo, o Windows Communication Foundation (WCF), a tecnologia Microsoft .NET Framework para habilitar a comunicação entre aplicativos, pode permitir que o Exchange Server seja usado como um utilitário de passagem de mensagens para implementações mLOB usando uma SOA (arquitetura orientada a serviços). Os funcionários conectados ocasionalmente podem ser mantidos atualizados com um novo Sync Framework que facilita a sincronização de dados entre dispositivos Windows Mobile através do SQL Server Compact 3.5 e de dados corporativos no SQL Server 2008. Esses cenários podem ser mais difíceis de implementar sem uma infra-estrutura móvel que funcione com tantos recursos de rede prontos para uso.

Produtividade de TI e do usuário
O aumento da produtividade é uma meta importante das implantações mLOB. Porém, se os recursos forem difíceis de serem usados pelos funcionários e gerenciados pelos profissionais de TI, os custos poderão superar os benefícios ou, pelo menos, reduzir o ROI (retorno sobre o investimento). Um objetivo do desenvolvimento do Windows Mobile é torná-lo o mais semelhante possível à experiência Windows em desktop; a familiaridade resultante pode aumentar o valor da solução para todos os envolvidos.
Em relação à TI, o Windows Mobile — com o Mobile Device Manager — foi projetado para colocar os dispositivos Windows Mobile na rede corporativa principal. Ele faz isso usando tecnologia familiar, especialmente o Active Directory e o Windows Server®. O Mobile Device Manager faz parte da família System Center de soluções de gerenciamento de TI, usadas por um grande número de profissionais de TI em todo o mundo. Em vez de precisarem aprender um conjunto totalmente novo de ferramentas e práticas, os profissionais de TI familiarizados com um ambiente Windows podem usar os snap-ins do Console de Gerenciamento Microsoft que já conhecem.
O mesmo se aplica aos usuários. A experiência de usar o Windows Mobile como um desktop os ajuda a acelerar o trabalho. Eles podem usar o conjunto Office Mobile, incluindo o Office Mobile Outlook®, para concluir o trabalho sem a necessidade de aprender a usar novos aplicativos. Não precisam se preocupar com o gerenciamento de dispositivos, pois ele é feito de forma central. Os aplicativos mLOB podem ser projetados para funcionar da forma que for familiar para os usuários das versões em desktop dos mesmos programas; novas ferramentas podem ser criadas para ter a aparência e o comportamento de softwares Windows comuns. Essa familiaridade dos usuários pode resultar em menos chamadas de suporte e menor gravidade de incidentes — uma vantagem também para os profissionais de TI.
Outros aspectos da plataforma Windows Mobile e Mobile Device Manager também aumentam a produtividade. O VPN móvel oferece conectividade integrada e persistente mesmo entre redes, além da funcionalidade de rápida reconexão, ajudando os usuários a se conectarem quando precisam e reduzindo outra origem comum de chamadas de suporte. Os vários fatores forma de dispositivos suportados pelo Windows Mobile permitem que as empresas padronizem um pequeno número de dispositivos enquanto oferecem aos funcionários a capacidade de escolha de dispositivos que atendam às suas necessidades. A diversidade de dispositivos também leva em conta cenários mLOB de aumento de produtividade, como o gerenciamento de estoque baseado em código de barras ou o roteamento com dispositivos habilitados para GPS.

Desenvolvimento e distribuição
Os atributos que definem aplicativos LOB — riqueza de dados, potência e funcionalidades especializadas — tendem a funcionar melhor em uma plataforma móvel projetada para produtividade baseada em aplicativos. O Windows Mobile oferece uma experiência de desktop para os funcionários móveis, facilitando o desenvolvimento, a distribuição e o gerenciamento de aplicativos mLOB.
Para começar, o Windows Mobile dá suporte a uma versão do .NET chamada .NET Compact Framework. Como o .NET Framework é um conjunto de ferramentas de programação usado por milhões de desenvolvedores em todo o mundo, muitas operações de TI já possuem internamente habilidades de desenvolvimento para personalizar e criar aplicativos mLOB para Windows Mobile. Caso não possuam, essas habilidades estão disponíveis no mercado.
O Windows Mobile também dá suporte a um grande número de aplicativos mLOB disponíveis comercialmente. A Microsoft oferece soluções mLOB como parte de sua família de produtos Microsoft Dynamics, incluindo o Microsoft Dynamics CRM Mobile e o Microsoft Dynamics AX Mobile Sales. Além disso, as Ferramentas de Desenvolvimento para Microsoft Dynamics Mobile fornecem aos desenvolvedores tecnologias que estendem o software ao ambiente móvel. A Microsoft comprometeu-se em tornar móveis outras soluções para Microsoft Dynamics, com o suporte ao Microsoft Dynamics NAV chegando em breve. E a maioria das soluções LOB, como SAP, Siebel, PeopleSoft e SalesForce.com, oferece versões de seus conjuntos de aplicativos compatíveis com Windows Mobile.
Uma vez adquiridos ou desenvolvidos, os aplicativos mLOB podem ser implantados e gerenciados remotamente através do Mobile Device Manager e do Windows Server Update Services 3.0. A Diretiva de Grupo pode ser usada para definir os dispositivos que recebem o aplicativo e as funções que eles podem acessar. Lembre-se de que as atualizações de aplicativos podem ser executadas da mesma maneira simples.

Conclusão
Um número crescente de empresas está fornecendo aplicativos mLOB aos funcionários e executivos, trazendo novos aspectos a serem considerados para os profissionais responsáveis pela implantação e manutenção de sistemas de TI. O Windows Mobile e o Mobile Device Manager cumprem o ideal de dispositivos móveis preparados para rede, fornecendo uma plataforma de fácil gerenciamento para desenvolvimento e implantação mLOB. É uma plataforma que maximiza a segurança e a produtividade do usuário enquanto minimiza as preocupações do departamento de TI e o investimento em infra-estrutura. Além disso, como o Mobile Device Manager permite que você dimensione as implantações mLOB para um número maior de usuários, o custo de desenvolvimento e implantação mLOB por usuário diminui enquanto o ROI aumenta. Com isso, a facilidade de gerenciamento do Windows Mobile com Mobile Device Manager o libera para pensar de forma criativa sobre como os aplicativos mLOB podem ser usados de forma mais eficiente — em vez de como fazê-los funcionar antes de mais nada.

Matt Fontaine é um escritor e consultor residente em Seattle, Washington. Ele atua em diversos setores, inclusive computação de alto desempenho, softwares corporativos, ramo atuarial, ramo imobiliário comercial, engenharia, construção e mercadorias embaladas para consumo. Matt orgulha-se de ter sido aluno do Evergreen State College.


Segurança
Noções básicas sobre gerenciamento de senhas para contas compartilhadas
Chris Stoneff
Visão geral:
  • Os riscos das senhas de contas compartilhadas e com privilégios
  • Como as senhas são armazenadas
  • Gerenciando e protegendo senhas compartilhadas
  • Ficando em conformidade

Conteúdo
Entendendo o problema
Quanto maior, melhor
Violência de domínio
Desculpas, desculpas, desculpas
O que os reguladores desejam
Uma abordagem automatizada
Pense nisso
Uma questão comum com a qual os administradores precisam lidar cada vez mais é a alteração regular de senha para contas compartilhadas e com privilégios, como a conta interna de
administrador ou conta raiz, uma conta firecall ou talvez até mesmo uma conta de processo. Definindo rapidamente, a conta interna de administrador ou conta raiz é a conta que vem em toda versão do Windows®, Linux e UNIX, e tem sempre o mesmo SID (Identificador de segurança) ou UID (Identificador de usuário). As contas firecall são as outras contas que você cria para ajudar a facilitar o acesso de emergência em um sistema seguro. Essas contas firecall ou de administrador, às vezes, são usadas por usuários sem privilégios para obter acesso a sistemas importantes quando surgem problemas. Finalmente, as contas de processo são aquelas usadas para executar serviços, tarefas, aplicativos COM+ e itens incorporados, como scripts e outros arquivos binários que exigem logon.
Agora, você provavelmente implantou seus sistemas usando scripts ou imagens de instalação. Além disso, todas as suas estações de trabalho e seus servidores provavelmente têm o mesmo nome de conta de administrador e a mesma senha de 8 caracteres que, tenho certeza, não é alterada desde que os sistemas foram implantados. Por esse motivo, uso a palavra "senha" no singular, e não "senhas".
Um administrador pode ser compelido a alterar as senhas para seguir as práticas recomendadas ou atender aos requisitos de conformidade, como os estabelecidos por SOX (Sarbanes-Oxley), PCI DSS (Payment Card Industry Data Security Standard) e pela lei americana HIPAA (Health Insurance Portability and Accountability Act). Às vezes, um administrador se vê motivado quando um ex-administrador ou técnico com conhecimento dessas senhas deixa a empresa, por medo de uma quebra de segurança divulgada ou de perder a capacidade de processar cartões de crédito. Apesar desses fatores, na verdade, o administrador tem que alterar essas senhas por simples segurança e pelos dados que a empresa precisa proteger.

Entendendo o problema
Há alguns fatores que devem ser entendidos ao lidar com essas contas e suas senhas:
  1. Quanto mais antiga uma senha, menos segura ela se torna.
  2. Senhas mais longas, como regra geral, são mais difíceis de decifrar.
  3. A forma como os computadores fazem a autenticação não é alterada só porque eles pertencem a um domínio. Em cada domínio se encontra a base de um grupo de trabalho.
"Quanto mais antiga uma senha, menos segura ela se torna" é uma declaração enganosa. Na verdade, isso significa que, para quem quer invadir um computador, é tudo uma questão de tempo. Se alguém me pergunta: "Quanto tempo se leva para decifrar uma senha?", costumo dizer que não existe uma resposta precisa e, em vez disso, dou algumas dicas que podem ajudar a determinar a resposta para um determinado sistema:
  • Quantas pessoas conhecem a senha?
  • Todas essas pessoas ainda trabalham na empresa?
  • A pessoas que conhecem a senha da conta e não trabalham mais na empresa saíram amigavelmente?
  • Você nega acesso à inicialização a partir da unidade de disquete, CD ou DVD, ou da rede?
  • Os usuários dos computadores também são administradores locais?
  • Todos os seus sistemas usam exatamente a mesma senha para suas contas com privilégios?
Começando pelo início dessa lista, é justo dizer que quanto mais pessoas conhecerem um segredo, maiores as chances de que ele se torne público. Lembro de trabalhar para empresas em que os administradores achavam mais conveniente definir a senha compartilhada com o mesmo valor e contar à equipe de TI e aos estagiários quais eram as senhas, em vez de digitá-las para eles conforme necessário. É claro que, com o tempo, a empresa começou a encontrar vários computadores com configurações não aprovadas e usuários comuns da rede que podiam acessar essas contas.
Se todas as pessoas que conhecem as senhas ainda trabalharem para a empresa e forem funcionários satisfeitos e responsáveis, esse risco de acesso será mais reduzido. Mas nunca se sabe. Um dia qualquer pode aparecer um usuário mal-intencionado. Se um desses usuários saiu da empresa em situação conflitante, você terá um elemento hostil à solta que sabe como invadir sua rede usando uma conta não rastreável.
Se você não negar acesso à inicialização de qualquer outro lugar que não seja o disco rígido, também permitirá que os usuários inicializem usando imagens não autorizadas, como as dos sistemas Windows PE e Linux que podem ser lidas diretamente do sistema de arquivos do computador e obter acesso ao armazenamento seguro. (Devo ressaltar que muitas violações ocorrem a partir de elementos internos. Mesmo que todos os membros e estagiários da equipe ainda sejam empregados da empresa, isso não é garantia de que as senhas e os sistemas sejam seguros.)
Conheço muitas pessoas que continuaram a se conectar a uma rede de um emprego anterior só porque podiam. É engraçado que elas estejam apenas ressaltando a má prática de não alterar senhas do sistema, mas também é assustador considerar o dano que poderiam causar se fossem mal-intencionadas.
Se você permitir a capacidade de inicializar a partir de um DVD ou da rede, talvez não possa auditar o que as pessoas estão fazendo. Quer dizer, um disco de inicialização do Linux ou uma imagem da rede pode muitas vezes obter acesso diretamente ao sistema de arquivos. Se os seus sistemas utilizam o mesmo nome de usuário e a mesma senha para suas contas com privilégios, então você os está configurando para uma grande falha. Mas falarei mais sobre esses itens depois.
O tempo de existência e o comprimento da senha são relevantes conforme o método usado para decifrá-la. Se você estiver lidando com um método de força bruta para determinar senhas, o tempo é realmente o que conta. Quanto menos uma senha for alterada, maior será o tempo que um cracker levará para obtê-la.
Da mesma forma, senhas mais longas exponencialmente têm mais variações de caracteres e portanto exigem mais tempo para serem decifradas. Por isso, é importante considerar se suas senhas terão menos do que 7 caracteres, de 8 a 14 caracteres ou 15 ou mais caracteres de comprimento. E se elas tiverem menos do que 15 caracteres e você usar o Windows, irá desabilitar os hashes do LM (LAN Manager) como parte da configuração do sistema ou pela Diretiva de Grupo?
Como o comprimento da senha afeta alguma coisa? No caso do Windows, a resposta é simples. Ao omitir o histórico dos processos de hash, a Microsoft implementa dois tipos de hash para as senhas: hashes LM e hashes MD4 (Message Digest 4). Por padrão, a Microsoft usa hashes LM, e os valores são armazenados para todas as senhas de até 14 caracteres, a menos que você desative explicitamente o armazenamento desses hashes. Essas senhas são divididas em dois valores de 7 caracteres: o primeiro valor para os 7 primeiros caracteres e o segundo para os outros 7, como mostra a Figura 1.
Figura 1 Tabela de hash de exemplo
Nome da Conta | RID | Hash LM | Hash NT | Senha | Observações
Administrador | 500 | aad3b435b51404ee: aad3b435b51404ee | 31d6cfe0d16ae931: b73c59d7e0c089c0 | Senha em branco | O hash LM é idêntico ao hash LM de senha de 20 caracteres.
Administrador | 500 | 0182bd0bd4444bf8: aad3b435b51404ee | 328727b81ca05805: a68ef26acb252039 | Senha de 7 caracteres = 1234567 | A primeira parte que representa os primeiros 7 caracteres é idêntica à senha de 8 caracteres.
Administrador | 500 | 0182bd0bd4444bf8: 36077a718ccdf409 | 0182bd0bd4444bf8: 36077a718ccdf409 | Senha de 8 caracteres = 12345678 | A primeira parte que representa os primeiros 7 caracteres é idêntica à senha de 8 caracteres, mas o segundo conjunto é diferente.
Administrador | 500 | aad3b435b51404ee: aad3b435b51404ee | b79d07c2ecb3d565: 033ece663f5a0b2e | Senha de 20 caracteres = 9876543210 9876543210 | O hash LM é idêntico à senha em branco porque um hash LM não pode ser criado com senhas de mais de 14 caracteres.
Fred | 1221 | e52cac67419a9a: 224a3b108f3fa6cb6d | 8846f7eaee8fb117: ad06bdd830b7586c | Idêntico | Você pode ver, nesses três exemplos, como os hashes LM e NT são idênticos? Isso significa que todas as senhas são idênticas para todas essas contas. A Microsoft nunca varia um algoritmo de hash.
Segunda-feira | 1385 | e52cac67419a9a: 224a3b108f3fa6cb6d | 8846f7eaee8fb117: ad06bdd830b7586c | Idêntico
SvcAcctX | 1314 | e52cac67419a9a: 224a3b108f3fa6cb6d | 8846f7eaee8fb117: ad06bdd830b7586c | Idêntico
Assim, se tiver apenas 7 caracteres, a sua senha deverá estar contida em um único hash LM. Durante anos, a Microsoft recomendou o uso de senhas com pelo menos 8 caracteres. O motivo para isso era que o 8º caractere faria com que a senha fosse dividida em dois valores de hash LM.
É importante observar, no entanto, que os hashes LM são amplamente entendidos e muito fáceis de contornar. A única finalidade para eles nas soluções atuais é ajudar a manter a compatibilidade com versões anteriores em sistemas de nível inferior, como o Windows NT® 4.0.
Atualmente, você deve usar senhas (senhas longas, na verdade) de pelo menos 15 caracteres ou, de preferência, maiores porque, por definição, elas não geram um hash LM. Se a imposição do uso de senhas de 15 caracteres não for uma opção viável no seu ambiente, você deverá desabilitar o armazenamento de hashes LM no processo de criação de imagem (usando diretiva local) e na sua Diretiva de Grupo no Active Directory®.
Essa diretiva pode ser encontrada em Configuração do Computador\Configurações do Windows\Configurações de Segurança\Diretivas Locais\Opções de Segurança. Apenas defina a diretiva "Segurança de rede: não armazenar o valor de hash do LAN Manager na próxima alteração de senha" como ATIVADA.
É importante lembrar que, embora uma boa diretiva imponha o uso de letras em caixa alta e baixa, bem como caracteres numéricos e especiais, uma diretiva ainda melhor impõe também um comprimento de 15 caracteres ou mais.

Quanto maior, melhor
Um dos métodos atuais usados para invadir computadores é chamado de Rainbow Tables e usa hashes LM como meio de exploração. Mas senhas mais longas podem anular a eficiência das Rainbow Tables.
Fico espantado ao ver a quantidade de administradores que usam métodos de segurança, mas não sabem muito (ou nada) sobre Rainbow Tables. Há várias maneiras de criar Rainbow Tables para lidar com algoritmos diferentes. Mas elas são apenas uma lista pré-calculada de todos os hashes LM que possuem de 0 a 14 caracteres.
A advertência das Rainbow Tables é que o invasor precisa obter os hashes LM primeiro. Isso nos leva de volta às questões anteriores sobre como o sistema pode ser inicializado (no CD ou DVD) ou se os seus usuários são ou não administradores locais. Por fim, os hashes LM podem ser extraídos em poucos segundos usando ferramentas gratuitas como pwdump. Com o uso de Rainbow Tables, os hashes são pesquisados para determinar a senha.
Para satisfazer a minha curiosidade, defini uma senha em uma conta de administrador interna do sistema. Eram 14 caracteres e continham várias letras em caixa alta e baixa, bem como caracteres e números especiais. Então, usei as Rainbow Tables que baixei gratuitamente da Internet e consegui extrair os hashes de senha de todas as contas do meu sistema, além de determinar a senha do administrador em menos de dois minutos.
Devo admitir que adorei ver o primeiro hash LM ser derrotado, seguido pelo segundo hash, e colocá-los juntos para conseguir a senha. Para reiterar a questão, se tivesse desabilitado meus hashes LM usando a diretiva que discuti anteriormente, esse vetor de ataque em particular seria extremamente limitado, se não totalmente bloqueado.

Violência de domínio
Estar em um domínio não resolve o problema. Os computadores em um domínio continuam a fazer a autenticação da mesma forma. E, como disse antes, em cada domínio se encontra a base de um grupo de trabalho. Essa declaração simples nem sempre é óbvia. Tive muitas conversas sobre esse assunto e sempre tenho de lembrar aos administradores sobre o que é necessário para acessar um computador: um nome de usuário e uma senha. Depois preciso explicar como o Windows funciona em um grupo de trabalho.
Se você tentar acessar um sistema, precisará fornecer um nome de usuário e uma senha ao sistema remoto. Pelo uso da autenticação integrada, o Windows tentará fazer isso para você. Isso significa que, se você acessar outro sistema do Windows, ele usará seu nome de usuário e sua senha de logon atuais. Portanto, se você tentar acessar outro sistema Windows, nunca será solicitado a fornecer esse nome de usuário e essa senha se o sistema remoto os tiver.
Isso também é chamado de autenticação de passagem. O processo funciona em grupos de trabalho, bem como entre domínios diferentes. Na pior das hipóteses, o sistema solicitará um nome de usuário e uma senha, o que significa simplesmente que você deve digitar as informações de logon novamente.
Agora, mesmo que você ingresse em uma estação de trabalho ou em um servidor de um domínio e o Active Directory se torne um repositório de contas central, todos os seus SAMs (Gerenciadores de Conta de Segurança) locais ou armazenamentos de conta locais desses sistemas não desaparecerão de repente. A única coisa que parece acontecer aos SAMs locais é que eles não são mais gerenciados e protegidos, e essa é a causa do problema. Qual foi a última vez em que você alterou a conta raiz ou de administrador interna dos seus sistemas? Melhor que isso, baixe qualquer utilitário de geração de relatórios que mostre o tempo de existência de uma senha para todas as contas e veja se os resultados são aprovados em uma auditoria.
Se não entendeu o que eu quero dizer, faça logon em uma de suas estações de trabalho de domínio com uma conta de domínio que tenha privilégios de administrador. Abra o gerenciamento do computador no seu sistema e crie um usuário local chamado ComoEuDisse. Atribua uma senha à conta e adicione-a ao grupo de administradores locais do seu sistema. Repita o processo em um segundo sistema de domínio.
Agora, em qualquer um desses sistemas, faça logon com a conta ComoEuDisse e tente acessar o segundo computador indo para \\nome_do_Sistema\c$. Você poderá acessar o compartilhamento administrativo e nem será solicitado a fornecer uma senha! Espero que este exemplo não seja uma novidade para você. Mas se for, aproveite para aprender com ele e permita-me reiterar: só porque o seu sistema pertence a um domínio, isso não muda o fato de que todos esses sistemas continuam a funcionar como se pertencessem a um grupo de trabalho.
A questão é que, se você raramente altera, se é que altera, as senhas para as contas compartilhadas e com privilégios, essas contas estão em perigo. É apenas uma questão de tempo para que sua rede inteira fique comprometida.

Desculpas, desculpas, desculpas
Quando converso com administradores e até mesmo CIOs, eles sempre me dão basicamente estes mesmos motivos para não alterar as senhas dessas contas:
  • Temos milhares de sistemas e pouco tempo ou pessoal disponível para alterar essas contas.
  • Não temos o orçamento necessário.
  • Desabilitamos completamente as contas de administrador.
  • Isso nunca nos comprometeu, então acho que não é um grande problema.
  • Os auditores nem notaram.
Embora entenda os dois primeiros motivos, essas desculpas não são válidas. Fico de cabelo em pé só de imaginar minhas informações pessoais armazenadas em uma empresa que não trata desse problema por algum motivo.
Embora seja verdade que nem todo sistema da sua rede armazene informações confidenciais, como CPF, registros médicos ou dados financeiros, no mínimo, os usuários desses computadores podem acessá-las. Como administrador de um sistema, um usuário pode instalar key loggers e utilitários de captura de tela, interromper a aplicação da Diretiva de Grupo, introduzir correções em vários subsistemas para capturar e transmitir dados, etc. E, quando o usuário faz isso no nível do computador individual, sua capacidade de pegar esse usuário mal-intencionado é muito menor, já que ele é nomeado como Administrador.
Você sabia que desabilitar a conta de administrador interna no Windows não impede que alguém acesse essa conta? Experimente isto: reinicie o sistema no modo de segurança e faça logon com a conta de administrador interna. Você pode usar a senha emitida para a conta a partir da imagem original e provavelmente terá êxito. Para obter mais informações sobre esse comportamento, consulte o artigo da Base de Conhecimento da Microsoft® "Como acessar o computador depois de desabilitar a conta de administrador" (support.microsoft.com/kb/814777).

O que os reguladores desejam
Lidar com SOX, PCI, HIPAA e outros regulamentos pode deixar a gente meio confuso. Não é fácil entender seus requisitos, pois, além de serem abrangentes, não são muito claros. Em geral, os objetivos desses regulamentos podem ser resumidos conforme a seguir.
Primeiro, é preciso garantir que você sempre tenha acesso a todas as contas e informações com privilégios e forneça um método para que isso ocorra. Isto serve para qualquer cenário: uma conta com privilégios é aquela que tem direito de fazer qualquer coisa em qualquer sistema. É o administrador interno. É a conta firecall. Toda a equipe de assistência técnica e todos os administradores que trabalham para você provavelmente conhecem essas contas.
Quando opta por implementar uma solução para gerenciar as senhas dessas contas compartilhadas, você está criando uma trilha de auditoria para a conta de administrador interna na qual ainda não existe uma. Você está obtendo uma senha fluida. E, como a solução é automatizada, você não perderá semanas em tempo de produtividade com a alteração dessas senhas. Por fim, como a solução fornece recursos de auditoria, sua empresa terá mais chances de ser aprovada na auditoria.

Uma abordagem automatizada
A forma mais eficiente de lidar com contas como essas é alterá-las regularmente para que nenhuma delas compartilhe a mesma senha. Com senhas compartilhadas, se um sistema ficar comprometido, o outro também ficará. Em outras palavras, não deve existir contas locais ou de domínio comuns.
Ao lidar com soluções automatizadas que podem gerenciar e gerar aleatoriamente essas senhas, não faça apenas o mínimo exigido por seus auditores. Por exemplo, por que usar apenas 8 caracteres para suas senhas quando você pode usar 15, 20 ou 127, sem muito esforço (consulte a Figura 2)?
Figura 2 Use a automação para criar senhas bem longas (clique na imagem para ampliá-la)
Além disso, considere a geração aleatória de contas privilegiadas todos os dias, como mostra a Figura 3. Não há motivo para fazer isso a cada 90 dias apenas, quando você pode fazê-lo mensal, bimestral ou mesmo diariamente. Afinal, se o procedimento for automatizado, não criará nenhum trabalho extra para você. Inclusive, se você fizer isso regularmente, forçará os usuários a recuperar as senhas na interface de recuperação auditada da ferramenta, fornecendo outra trilha de auditoria que antes não existia. (Se atualmente você armazena as senhas escritas dentro de um envelope em um cofre no canto escondido do escritório de alguém, não terá nenhuma trilha de auditoria para as senhas como teria se usasse uma solução de gerenciamento de senhas.)
Figura 3 Gere aleatoriamente suas contas com privilégios todos os dias (clique na imagem para ampliá-la)
Finalmente, você deve garantir que, ao serem recuperadas, as senhas sejam geradas aleatoriamente mais uma vez depois de um período fixo. Não estou me referindo aos trabalhos agendados de geração aleatória que você criou, mas de criar senhas a serem usadas uma única vez que sejam válidas durante apenas algumas horas, e não meses. Este método também forçará os usuários a recuperar as senhas na interface de recuperação auditada da ferramenta, fornecendo uma trilha de auditoria.

Pense nisso
A questão do gerenciamento de senhas para contas compartilhadas deve ser resolvida. Isso significa que você deve obter um método para alterar suas senhas com freqüência de forma confiável. A solução deve ser escalonável e flexível. Ela também deve fornecer acesso seguro às senhas e precisa auditar cada ação tomada pela ferramenta, bem como pelo usuário da ferramenta. Além disso, as senhas geradas precisam ser exclusivas em cada sistema para evitar uma invasão devido às informações compartilhadas da conta.
Muitos fornecedores já tratam desse problema há alguns anos, mas outros só começaram a se aventurar nesse território recentemente. Faça a sua pesquisa e experimente todas as novas ferramentas antes de comprar para garantir que a solução escolhida seja a mais adequada ao seu ambiente.

Chris Stoneff é gerente de produtos da Lieberman Software (liebsoft.com), uma desenvolvedora de software de gerenciamento e segurança de sistemas. A sua principal motivação não é saber apenas como, mas por que as coisas funcionam de uma determinada maneira.


Nas últimas semanas, tive a sorte de receber um curso de atualização no que é ser um profissional de TI atuante. À medida que o verão chega ao fim e os pensamentos se voltam para o início das aulas, isso certamente parece adequado. Mas devo admitir que, mesmo assim, foi meio inesperado.
A equipe Magazine aqui na Microsoft (o grupo responsável por publicar a MSDN Magazine e a TechNet Magazine), está envolvida em revisar e aprimorar nosso… digamos… processo. Finalmente decidimos que, por ser 2008 e tudo o mais, precisamos nos livrar dos layouts em papel e das marcações em lápis de cor e entrar definitivamente na era digital. (Eu sei, eu sei — somos muito inovadores!) É sério, já era tempo de percebermos um pouco da eficiência adicional que essas grandes empresas de software não param de propagar.
Ao fazermos os ajustes para o nosso novo fluxo de trabalho digital, logo ficou claro que estávamos sendo inibidos pela ferramenta que rastreava o status dos artigos. Ela já era "digital", mas foi criada em alguma tecnologia muito antiquada (que esperamos estar eliminando do mundo para sempre) e era complementada por pequenas caixas coloridas impressas na parte superior de cada layout. High-tech, hein? Então comecei a criar uma substituição da prova de conceito, e imaginei que o SharePoint seria perfeito.
Eu gostaria de dizer que tenho um respeito recém-descoberto pelos administradores do SharePoint. Isso não é uma crítica contra o SharePoint — na verdade, a eficiência e a flexibilidade da plataforma são um fato —, mas criar uma solução de fluxo de trabalho personalizada no SharePoint é realmente difícil! (Felizmente, temos nossa nova coluna Explorando o SharePoint para ajudar.) No entanto, assumir esse desafio depois de alguns anos afastado das linhas de frente soou como um alarme para mim — é hora de voltar à sala de aula.
Há uma série de ótimos recursos por aí que o ajudam a relembrar os fundamentos ou avançar para algo novo: desde a série de vídeos "Como fazer?" na TechNet (technet.microsoft.com/cc138021) até os screencasts que fazemos na revista (.com/video), a TechNet Edge (edge.technet.com) e muito mais. Mas este talvez seja o momento de expandir nossa cobertura das "noções básicas" na própria TechNet Magazine. Sem querer me gabar, acho que fizemos um ótimo trabalho fornecendo um material detalhado que você vem a conhecer e (quem sabe) adorar. Além disso, não vejo mal algum em revermos os fundamentos de vez em quando. Portanto, aproveite o que resta do seu verão, pois em breve estaremos todos de volta às aulas. – Joshua Hoffman

Meus agradecimentos aos seguintes especialistas técnicos da Microsoft: Nathan Bigman, Nino Bilic, Mai-lan Tomsen Bukovec, Eric Charran, Trina Gorman, Gershon Levitz, Thomas Marquardt, Mandy Maxwell, Michael Murgolo, Sanjeev Nair, Michelle Rutzer, Jez Sadler, Jim Truher e Shimon Yannay.


Cartas Com a palavra, os leitores

Ferramenta de planejamento da capacidade do SharePoint
A minha empresa tem menos de 600 funcionários e grande parte deles não usa ativamente os PCs ou a nossa intranet. Mas há um clamor comum por comunicação e colaboração corporativas. Acho que o WSS (Windows® SharePoint® Services) 3.0 deveria ser perfeito para o nosso ambiente de trabalho, mas no orçamento do meu gerente só está previsto um servidor para isso.
Tentei usar a ferramenta de planejamento da capacidade do SharePoint, mas ela não permitirá a simulação de um modelo de servidor único. Vocês conhecem uma opção de simulação para um servidor único?
– Allen M.
Acho que não existe uma opção para um servidor único. Mas é difícil dimensionar sem considerar os comportamentos de todos os usuários. Usaria uma CPU quad-core e começaria com 8 GB de RAM. Basicamente, um servidor intermediário deve funcionar bem.
Joel Oleson compilou várias referências de dimensionamento, e elas estão disponíveis para consulta no seu blog em blogs.msdn.com/joelo/archive/2007/07/09/capacity-planning-key-links-and-info.aspx. Isso pode ajudá-lo ainda mais a tomar a melhor decisão de acordo com as necessidades da empresa.
– Pav Cherny, colunista,
Explorando o SharePoint

Microsoft Bob
Sei que a intenção da coluna Segredos do Windows "A história ganhando espaço" (julho de 2008, technet.microsoft.com/magazine/cc565089) era revelar que o programa Microsoft® Bob estava oculto no disco do Windows XP, mas se trata de mais um programa que os meus filhos amaram e usaram para aprender o processamento básico de texto no computador. Bob veio com o nosso primeiro computador pessoal, um NEC Ready com Windows 95. E à medida que cresciam, todos os meus filhos brincaram e usaram o Bob durante horas.
O Bob foi ridicularizado como sendo um mau produto tecnológico pela coluna, mas é, na verdade, um ótimo software que apenas foi apresentado ao mercado errado. . . de adultos. Ele foi projetado para crianças e a apresentação dessa forma colocaria sobre ele uma luz diferente e talvez até tivesse um outro destino. Quem sabe se, apresentado como um programa para crianças, ele ainda não estivesse por aí servindo aos meus netos.
– Jim S.

Impressão em papel já era
Foi muito interessante para mim a leitura da Nota do Editor de julho de 2008, "Impressão em papel já era" (em technet.microsoft.com/magazine/cc595615). Na minha opinião, livros impressos especializados em tecnologia da informação logo sumirão e serão substituídos pela mídia digital. Mas, de acordo com vocês, 90 por cento dos leitores pesquisados preferem a mídia impressa. Essa pesquisa foi representativa? Ou apenas as pessoas que vocês atingem por meio da mídia impressa responderam? Esse grupo não incluiria a geração mais jovem, que deixou de assinar jornais ou revistas como a de vocês, mas que obtém todas as informações online e jamais ouviram falar da pesquisa.
Um leitor do texto impresso não consegue iniciar um vídeo ou webcast do texto flutuante. Ele não pode clicar com o mouse em um link da Internet impresso para abrir uma home page, grupo de notícias ou blog. Ele não é capaz de clicar usando o mouse para baixar um suplemento ou uma ferramenta recém-mencionada no texto impresso.
Resumindo a minha opinião: o livro impresso está em apuros. O leitor logo perceberá que a leitura do livro impresso só oferece uma parte dos benefícios do DVD, além de poder copiar todo o conteúdo do DVD para o notebook e, em seguida, acessar esse conteúdo a qualquer momento e em qualquer lugar.
– Ulrich S.
Agradecemos as observações e os comentários! Respondendo às suas dúvidas especificamente a respeito dos 90 por cento de nossos leitores que dizem preferir a impressão, a pesquisa foi realizada com nossos assinantes impressos e leitores na Web (em uma proporção aproximadamente igual) como parte da nossa pesquisa editorial anual – apresentada eletronicamente, e não impressa. A pergunta foi feita àqueles que disseram ler de ambas as formas (impressa e online), e 90 por cento deles disseram preferir o modo impresso.
Embora concorde totalmente com você em relação aos benefícios da publicação do conteúdo online (mídia avançada, alcance global, links clicáveis etc.), ainda acho que a leitura de um artigo na página impressa proporciona uma experiência mais agradável. Eu me sinto mais confortável com – e mais ligado ao – o conteúdo, e muitas outras pessoas têm opiniões semelhantes às nossas. Dito isso, o fato de cada meio proporcionar vantagens próprias é o motivo pelo qual continuamos publicando a TechNet Magazine usando ambos. Obrigado novamente!
– Joshua Hoffman, Editor-chefe


Toolbox Novos produtos para profissionais de TI
Greg Steen

Monitore seus servidores
Dominando o desenvolvimento de infra-estrutura do SQL Server 2005 Reporting Services
sybex.com
Quanto mais complexa se tornam as infra-estruturas, mais inundados de informações os administradores ficam, sendo que a maioria delas é registrada em arquivos ou bancos de dados. Mas, para que todas as informações façam sentido, você precisa ter um mecanismo analítico e uma ferramenta para apresentar os dados analisados de forma significativa. Uma ferramenta muito útil nesse caso é o Microsoft® SQL Server® 2005 Reporting Services. Essa ferramenta pode ajudá-lo a obter todos os dados de forma agregada e apresentá-los em um formato legível. Ela ainda pode entregar as informações para disparar locais automaticamente ou sob demanda, oferecendo com eficiência e quase em tempo real aos seus usuários empresariais os dados de que eles precisam para tomar decisões mais acertadas nos negócios.
Para planejar, implantar e gerenciar uma infra-estrutura bem-sucedida do Reporting Services (ou qualquer nova infra-estrutura de servidor) que atenda às necessidades da sua empresa e cresça conforme ela crescer, é necessária uma preparação, know-how e um pouco de garra. Se você está pensando em implantar uma instância do Reporting Services, Mastering SQL Server 2005 Reporting Services Infrastructure Design (Dominando o design de infra-estrutura do SQL Server 2005 Reporting Services; Sybex, 2007), de Joseph L. Jorden, poderá ajudá-lo a aumentar seu conhecimento e orientá-lo a aplicar os princípios de uma operação bem-sucedida.
O livro abrange com categoria aspectos às vezes esquecidos da implementação de sistemas antes de investigar os detalhes técnicos de uma implantação do Reporting Services. Esses aspectos elementares envolvem determinar por que você está implementando o sistema e os requisitos desse uso empresarial e definir como gerenciar as expectativas dos usuários finais. Há um capítulo sobre estratégias para o gerenciamento de alterações do seu sistema de geração de relatórios. Esta seção apresenta abordagens diferentes para o gerenciamento de alterações e fornece modelo e diretrizes para formulários de solicitação de gerenciamento de alterações. Não irei proclamar as vantagens da burocracia, mas um pouco de estrutura nesse sentido garantirá um ambiente bem mais estável.
Depois de apresentar o lado empresarial do Reporting Services, o livro descreve a implantação, desde as noções básicas de instalação, colocação em escala, automação e configuração. Ele também oferece dicas sobre como fazer a integração com o Microsoft Windows® SharePoint® Services (WSS). É um bom começo para uma lista de verificação em uma implantação que o ajudará a evitar alguns tropeços.
Um novo aspecto do SQL Server 2005 Reporting Services que considero interessante são os recursos de geração de relatórios ad hoc. Esse recurso permite aos usuários criar relatórios de forma dinâmica. O livro explica como habilitar esse recurso e configurar a ferramenta Construtor de Relatórios. Depois, ele fala sobre como criar assinaturas para os relatórios, que permitem gerá-los e distribuí-los com uma programação via email, compartilhamento de arquivo ou entrega integrada ao SharePoint.
Todo sistema precisa de manutenção com o tempo, e o capítulo seguinte aborda tarefas essenciais, como fazer backup da sua instância, gerenciar conteúdo de relatório e solucionar problemas com os logs disponíveis. Também há um bom capítulo sobre segurança, que apresenta as opções de autenticação e autorização para a sua implantação.
Os programadores irão apreciar o capítulo sobre como estender o Reporting Services e o capítulo sobre como acessar e manipular relatórios por meio de aplicativos baseados no Microsoft .NET Framework. A linguagem RDL é um dos aspectos fundamentais do Reporting Services, e o livro dedica um capítulo para alguns dos principais elementos disponíveis para você, a estrutura de um arquivo RDL, e as noções básicas de criação e implantação desses arquivos.
O livro termina com algumas dicas e truques para ajustar o desempenho da sua implantação do Reporting Services. Você encontrará informações sobre como medir o desempenho, modificar os arquivos de configuração e usar o Performance Console (Console de desempenho). Também há um apêndice sobre como fazer a integração do Reporting Services com o SharePoint. Se você está pensando em distribuir o SQL Server 2005 Reporting Services no seu ambiente, esta é uma leitura obrigatória. Ele realmente irá ajudá-lo a se livrar das linhas de comando.

Preço: US$ 49,99 (para venda direta).

Auditar o ambiente
Alloy Discovery Professional Edition
alloy-software.com
Poder recuperar informações rapidamente para um sistema específico na sua área de cobertura é essencial para realizar seu trabalho, solucionar problemas e verificar se os sistemas estão atualizados e em conformidade com as diretivas de segurança e software. Ter essas informações em formato amigável ao usuário empresarial e que permita avaliações rápidas da sua infra-estrutura pode ser uma grande vantagem (sem mencionar que você causará uma boa impressão à gerência). Como se isso não bastasse, esse acesso rápido às informações também pode ajudá-lo a isolar quem está utilizando cada software para garantir que os usuários sejam licenciados de forma adequada. Uma das ferramentas de estoque e auditoria que talvez desperte seu interesse é a Alloy Discovery Professional Edition da Alloy Software.
Esse aplicativo é muito fácil de configurar, e você pode começar a auditoria em um grupo ou uma série de computadores na sua LAN com muita rapidez. A interface do usuário agrupa seus computadores em uma exibição organizada, parecida com a do Internet Explorer®, e, depois de configurar o grupo ou grupos de computadores auditáveis, com um simples clique, você poderá auditá-los. As informações coletadas são bastante extensas, abrangendo desde hardware, software e dispositivos até impressoras, compartilhamentos e eventos, inclusive. Você também pode exibir marcas de ativos, números de série, estatísticas de tempo de ativação, variáveis de ambiente, configuração de rede e contas de usuário local. Quase tudo o que você precisa saber sobre o seu ambiente poderá coletar sem nem mesmo precisar levantar da cadeira (embora eu recomende dar uma voltinha de vez em quando para manter a saúde).
Além de auditar computadores sob demanda, você também pode agendar auditorias. Para computadores que estão fora da LAN direta e aqueles aos quais não é possível se conectar remotamente com privilégios suficientes para realizar a tarefa de auditoria, o Alloy Discovery fornece um método para auditar os computadores de destino com base em agente. Esse tipo de auditoria pode ser incluído em um script, agendado para ser executado periodicamente ou por meio do agente e enviado por email do agente para o seu repositório do Alloy Discovery. Outra opção é colocar o agente em uma unidade flash e ir até os computadores para iniciar uma auditoria. Depois da auditoria, você pode sincronizar as informações automática ou manualmente, dependendo do método usado com o repositório principal.
O Alloy Discovery também possui filtros que você pode aplicar aos resultados da auditoria para analisar o estoque geral. Por exemplo, você pode ver quantos computadores precisam de uma atualização de memória para oferecer suporte a um aplicativo ou quais computadores no seu ambiente executam o Windows® XP Professional em comparação com o Windows Vista® Business Edition.
Com esses dados, você poderá criar relatórios. O aplicativo pode publicar relatórios em páginas HTML nas quais é possível detalhá-los. E você pode configurar uma tarefa agendada para gerar esses relatórios continuamente, uma ótima opção para a sua Central de Operações de Rede. Além disso, é possível exportar todas as informações de auditoria para XML, CSV ou Microsoft Excel®, por exemplo, ao entregar o comprovante aos auditores.

Preço: US$ 795,00 (para venda direta) pelo produto básico, mais US$ 3,00 por nó. ﻿
Mantenha o controle do seu ambiente com o Alloy Discovery (clique na imagem para ampliá-la)

Gerenciar senhas
Password Corral
cygnusproductions.com
As senhas são um fato da vida no mundo interconectado de hoje. Pelo menos até que tudo se baseie em biométrica ou criemos algum tipo de utopia de totalmente confiável, mas nada disso acontecerá em futuro próximo. Se você for como eu, provavelmente tem tipos diferentes de senhas para tipos diferentes de ambientes, e as varia por meios diferentes.
Além dos tipos de uso básicos, também existem aquelas senhas do sistema para contas de administrador, serviço e domínio. E, é claro, há diferentes nomes de usuário associados a todas essas senhas diferentes. A lista é longa. Então, como manter o controle sobre todas as senhas de maneira fácil e segura?
Uma forma é usar um repositório de senhas que bloqueia todos os dados em um arquivo fortemente criptografado, e uma boa solução para isso é o Password Corral. Esse aplicativo fortemente criptografado e fácil de usar, que utiliza a criptografia Diamond2 ou Blowfish para criptografar todas as senhas em um arquivo, existe desde 2001. Ele já foi testado e aprovado e ainda oferece suporte e desenvolvimento para versões atuais e futuras.
Depois de instalar o programa, você obtém seu novo arquivo de senha criando um novo usuário e selecionando onde deseja que o arquivo de senha seja localizado no sistema (ou na unidade de rede). Agora, nem é preciso dizer que, se você pretende manter todas as suas informações confidenciais de senha para todas as suas contas em um único arquivo do Password Corral, sua senha do Password Corral deve ser extremamente forte e alterada constantemente. Será aquela senha que você realmente terá de lembrar e proteger, portanto, seja inteligente ao criá-la.
Depois de autenticado, o Password Corral fornece uma interface do usuário parecida com a do Internet Explorer, com uma estrutura de pastas hierárquica à esquerda e um painel de detalhes à direita. Você pode organizar suas senhas em uma estrutura de pastas do tipo árvore. Cada senha pode ter uma descrição, nome de usuário, senha, URL de referência, endereços de email de referência e comentários sobre a conta. Além disso, você pode definir no aplicativo uma diretiva de senha para cada conta, especificando o número de dias do ciclo de expiração e o número de dias restantes para uma determinada senha expirar.
Uma das opções de exibição inclui a filtragem por senhas expiradas para que você possa ver quais contas exigirão uma redefinição na próxima utilização. Outro recurso interessante é fazer o programa gerar as senhas para você, em vez de criá-las sozinho para cada conta. Esse gerador de senhas também pode ser personalizado, permitindo configurar o comprimento, a complexidade e a composição de caracteres conforme desejado.
Outro bom recurso é que, depois de inserir todas as senhas, você poderá pesquisá-las facilmente por meio de qualquer campo no qual tenha inserido dados, ou seja, uma ferramenta excelente para encontrar aquelas contas pouco usadas em uma grande estrutura de pastas. Você também pode definir um tempo limite no aplicativo para que, caso se esqueça de fechar Password Corral, o aplicativo seja bloqueado automaticamente, protegendo suas informações confidenciais. O aplicativo também tem como padrão limpar a área de transferência automaticamente ao sair caso você deixe a senha que copiou no buffer depois de usá-la.
Se precisar de acesso constante para suas senhas, você poderá usar a opção do aplicativo do ícone da bandeja do sistema que permite simplesmente clicar duas vezes para iniciar o aplicativo. Se quiser usar o Password Corral e armazenar suas contas em outro lugar, o aplicativo também permite importá-las de um arquivo, poupando-o do trabalho de inserir todas as outras entradas de dados. E, se preferir, você pode até mesmo exportar e imprimir suas senhas. Só não se esqueça de engolir o papel depois que terminar! Considerando tudo, é uma ferramenta gratuita extremamente útil.

Preço: gratuito.
Mantenha o controle de todas as suas senhas com o Password Corral (clique na imagem para ampliá-la)

Auditar o uso de arquivos
File System Auditor
scriptlogic.com
Manter uma trilha de auditoria em sistemas de arquivo compartilhados pode evitar muita dor de cabeça. Acima disso, contudo, é necessário atender a determinados padrões de diretivas de informações. Para ajudá-lo a descobrir quem fez o que e quando, você pode usar o File System Auditor a partir do ScriptLogic. Esse aplicativo é um sistema de gerenciamento centralizado que audita o uso de arquivos em sistemas de destino praticamente em tempo real e armazena as informações em um banco de dados SQL para geração de relatórios de utilização.
O File System Auditor oferece suporte ao MSDE (Microsoft SQL Server Desktop Engine), SQL Server 2000 e a todas as versões do SQL Server 2005 (incluindo o SQL Server 2005 Express gratuito). Cada sistema monitorado exigirá um agente a ser instalado, que é usado para monitorar o uso de arquivos e relatar as informações ao SQL Server. Depois da instalação, você usará o Database Wizard (Assistente de banco de dados) para criar o repositório do banco de dados no qual todas as informações de auditoria serão registradas.
Como administrador de sistema, você provavelmente deve estar pensando sobre a largura de banda e o detalhamento em um sistema de uso intensivo, mas o aplicativo usa um sistema de auditoria inteligente ostensivamente que combina diferentes ações em uma única entrada de auditoria. Em termos de largura de banda, o File System Auditor usa apenas 100 bytes de dados para o primeiro acesso a um arquivo e de 10 a 20 bytes para cada acesso posterior.
Você deve estar se perguntando por que não usar a auditoria nativa do Windows para fazer isso, mas a administração centralizada, a concentração de eventos e os recursos de geração de relatórios de um aplicativo de monitoramento dedicado são um pouco mais flexíveis e práticos. Além disso, ter todas essas informações em um banco de dados SQL é muito mais fácil de consultar do que em outros sistemas.
Depois de configurar o seu banco de dados, defina os Agents (Agentes) nos servidores de destino por meio do Agent Configuration Console (Console de Configuração de Agentes). Você pode digitar um nome de servidor ou procurá-lo usando o Active Directory®. Como o File System Auditor também oferece suporte a servidores de arquivo clusterizados, você pode digitar o nome da sua instância de cluster. Em seguida, você pode instalar o serviço do agente (com apenas um clique se a sua conta tiver acesso remoto) e escolher qual conta do Windows ou do SQL Server o agente irá usar para se conectar ao banco de dados do File System Auditor.
Com base em servidor, você pode configurar até três tipos diferentes de exclusões de monitoramento: Path Filters (Filtros de caminho), Process Exclusion Filters (Filtros de exclusão de processos) e User Exclusion Filters (Filtros de exclusão de usuários). Path Filters permite escolher um caminho e selecionar se irá incluir ou excluir determinados eventos de arquivos e pastas, como alterações, criação ou exclusão de permissões, para todos os arquivos ou apenas para alguns tipos. Process Exclusions e User Exclusions permitem fazer o mesmo para eventos de pastas ou arquivos que pertençam a um determinado processo no servidor de destino, mas não oferecem suporte aos filtros de tipo de arquivo.
Depois de configurar e começar a coletar os eventos de auditoria, você iniciará o Report Configuration Console (Console de configuração de relatório) para colocar os dados de autoria em uso. Para configurar um relatório, você pode definir vários filtros nos dados, incluindo usuários, alguns eventos de pastas ou arquivos, caminhos, servidores, processos e intervalos de datas. Além disso, você pode agendar o relatório e definir para que o aplicativo envie por email o relatório publicado através do servidor SMTP. Finalmente, para saber o que está acontecendo nos arquivos em um sistema em tempo real, você pode iniciar o Real Time Viewer (Visualizador em tempo real) do System Auditor para ver os eventos brutos rolarem como "rastros" de um arquivo de log.

Preço:a partir de aproximadamente US$ 800 (para venda direta) pelo programa e por uma licença de servidor.
Audite o uso de arquivos com o File System Auditor (clique na imagem para ampliá-la)

Greg Steen é profissional de tecnologia, empresário e entusiasta. Ele está sempre em busca de novas ferramentas para facilitar as operações, o controle de qualidade e o desenvolvimento para os profissionais de TI.


Utilitário em destaque Diagnóstico de memória do Windows
Lance Whitney

Código disponível para download em: Utility2008_09.exe (640 KB)

Conteúdo
Obtendo um diagnóstico de memória do Windows
Testando a memória
Um dos PCs aos quais você dá suporte está se comportando mal (congela, falha, exibe a tela azul). Será que algum hardware está falhando? Algum aplicativo recentemente instalado está causando o problema? Ou seria falha de memória? Uma forma de descobrir com precisão é com o utilitário gratuito da Microsoft Diagnóstico de Memória do ® Windows®. Essa ferramenta executa vários testes na RAM do PC para determinar se existem falhas em algum módulo.

Obtendo o Diagnóstico de Memória do Windows
Para usar o Diagnóstico de Memória do Windows, baixe e execute o arquivo único do programa (mtinst.exe) em oca.microsoft.com/en/windiag.asp. Observe que não é necessário instalar o Diagnóstico de Memória do Windows. A ferramenta apresenta duas opções, como mostra a captura de tela:
Figura 1 Opções do Diagnóstico de Memória do Windows para criar uma mídia inicializável (clique na imagem para ampliá-la)
  • Create Startup Disk (Criar o Disco de Inicialização), que permite criar um disquete de inicialização com o programa.
  • Save CD Image to Disk (Salvar a imagem do CD no disco), que permite salvar uma imagem ISO do programa no disco rígido. Depois você poderá gravar essa imagem em um CD e torná-lo inicializável usando um software de criação de CD. Após criar a mídia reinicializável, reinicie o PC e inicie o diagnóstico a partir do disquete ou do CD.
Testando a memória
Ao ser carregado, o programa imediatamente começa a examinar a RAM. A ferramenta de Diagnóstico de Memória do Windows é iniciada no modo Standard (Padrão), que inclui 6 testes de memória sucessivos diferentes, cada um usando um algoritmo exclusivo para examinar diferentes tipos de erros. Uma tela exibe cada teste individual executado, listando seu progresso e o intervalo de endereços de memória examinados. Depois de concluir os 6 testes, a ferramenta executa outro exame usando os mesmos testes e continua a fazê-lo até o software ser encerrado. Normalmente, porém, um exame deve ser suficiente para dizer se há falha na memória.
Para obter um teste mais completo, você pode alternar para o modo Extended (Estendido), que executa 11 testes de memória separados. Também existe um modo Básico que executa apenas 2 testes, mas, para ser criterioso, é melhor ficar com os modos Standard e Extended. Se você executar a suíte de testes estendidos, ele irá sugerir uma execução noturna do Diagnóstico de Memória do Windows.
Depois de concluir o teste, a ferramenta exibe uma mensagem Succeeded ou Failed (êxito ou falha). Uma mensagem Failed é seguida por detalhes sobre a falha e, em geral, indica um problema em um dos seus módulos RAM. Dependendo do ambiente do PC, o diagnóstico poderá restringir um problema de memória a um módulo específico.
Nesse caso, uma opção View (Exibir) que exibe erros por módulo de memória aparece no menu. Essa opção pode ajudá-lo a determinar módulos específicos que apresentam falha e devem ser substituídos.
Na tela de opções Advanced, você pode alternar entre o modo Basic, Standard e Extended. Nela, você também pode desativar o cache do processador durante os exames, o que força a ferramenta a acessar os dados diretamente da RAM e garante um teste mais detalhado. O comando System Information (Informações do Sistema) lista a capacidade e o tipo de RAM instalada em cada slot.
O Diagnóstico de Memória do Windows oferece suporte a plataformas baseadas em x86, incluindo os processadores Intel Pentium e Celeron e CPUs AMD K6, Athlon e Duron. Entretanto, a ferramenta é capaz de examinar apenas de 4 GB de RAM e não vai além disso.
Você também encontrará uma versão desse diagnóstico instalada no Windows Vista® em Ferramentas Administrativas e na mídia de instalação do Windows Vista na opção de reparação. Entretanto, a versão do Windows Vista não fornece tantas informações visuais nem tantas opções. Portanto, é bom manter a edição autônoma à disposição para a próxima vez em que um de seus PCs começar a se comportar mal.
Lance Whitney é consultor, instrutor e redator técnico de TI. Ele passa incontáveis horas fazendo ajustes em estações de trabalho e servidores do Windows. Jornalista por formação, ingressou corajosamente no mundo de TI há 15 anos.


Explorando o SharePoint Integração de diretórios do SharePoint
Pav Cherny

Código disponível para download em: SharePoint2008_09.exe (2.775 KB)

Conteúdo
Serviço de Gerenciamento de Diretório do SharePoint
Serviço de Gerenciamento de Diretório Personalizado
SharePoint e ILM
Conclusão
O Microsoft Windows SharePoint Services (WSS) 3.0 e o Microsoft Office SharePoint Server (MOSS) 2007 incluem recursos de sincronização de diretórios na forma de um Serviço de Gerenciamento de Diretórios que pode provisionar grupos de objetos e contatos habilitados para email para os recursos do SharePoint no Active Directory. O provisionamento desses tipos de
objetos de destinatário para os recursos do SharePoint® permite aos usuários selecionar bibliotecas, listas e grupos do SharePoint diretamente do catálogo de endereços do Microsoft® Outlook® ao enviar documentos e outras informações.
Os objetos de destinatário do SharePoint também fornecem uma forma de controlar conversões de formato e transferência de mensagens em uma organização do Exchange Server. Entre outras coisas, você pode impedir que remetentes não-autenticados, como remetentes de spam, enviem mensagens para as bibliotecas do SharePoint configurando restrições de entrega de mensagens no Active Directory®.
Contudo, os recursos de gerenciamento de diretórios do SharePoint são limitados, e suponhamos que, quando escrevi este artigo, o Exchange Server 2003 era o sistema de mensagens subjacente. Por enquanto, se você usar o Exchange Server 2007 ou um sistema de mensagens de terceiros, precisará estender ou substituir os recursos de diretório internos por uma solução personalizada para obter o nível desejado de interoperabilidade.
Nesta coluna, revisarei brevemente os recursos de gerenciamento de diretório do SharePoint e apresentarei uma abordagem para superar as limitações existentes. Minha premissa é a de que o Serviço de Gerenciamento de Diretórios interno atende apenas aos requisitos básicos de usuário. Ambientes com diversos sistemas de mensagens e plataformas de diretório precisam de mais flexibilidade e funcionalidade. Ao substituir o componente interno por uma solução personalizada, você pode sincronizar as informações de destinatário do SharePoint com qualquer solução de diretório que forneça uma API ou recursos de importação.
Para provar essa teoria, mostrarei como sincronizar as informações de destinatário do SharePoint de uma forma compatível com o Exchange Server 2007. Da mesma forma, você pode usar uma solução personalizada para sincronizar essas informações com o Lotus Notes da IBM ou outros sistemas.
Você também ganha a capacidade de centralizar os processos de provisionamento de diretório com base em um serviço de metadiretório, como o Identity Information Server, que é incluído no Microsoft Identity Lifecycle Manager (ILM) 2007 Feature Pack 1 (FP1). Especificamente, mostrarei como integrar o SharePoint ao ILM 2007 para coordenar o provisionamento de objetos de diretório para bibliotecas de documentos do SharePoint. Você encontrará as ferramentas, o código fonte e as instruções passo a passo para criar esta solução no material complementar desta coluna, disponível na seção Download de Código do technetmagazine.com.

Serviço de Gerenciamento de Diretório do SharePoint
Diferentemente do Exchange Server, que usa o Active Directory para quase todas as configurações e informações de destinatário, o SharePoint conta com bancos de dados de configuração e conteúdo. Por isso, o SharePoint deve propagar para um diretório as informações de destinatário relativas a bibliotecas, listas e grupos habilitados para email que residem em seus bancos de dados. Afinal, os clientes de mensagens esperam encontrar informações de destinatário no catálogo de endereços, que normalmente é gerado dos objetos de diretório.
Incluído no pacote, o SharePoint contém um Serviço de Gerenciamento de Diretório para essa finalidade, que faz parte do Web service de Integração de Email (SharepointEmailWS.asmx), que você pode configurar na Administração Central do SharePoint 3.0, na página Operações, em configurações de email de entrada. A Figura 1 ilustra como o Serviço de Gerenciamento de Diretório funciona.
Figura 1 Arquitetura do Serviço de Gerenciamento de Diretório do SharePoint (clique na imagem para ampliá-la)
Ao habilitar um Web farm para o gerenciamento de diretórios atribuir a uma biblioteca, uma lista ou um grupo um endereços de email para receber mensagens, como ao usar EmailSettings.aspx, implicitamente, você chama o Web service de Integração de Email para provisionar os objetos de destinatário correspondentes no Active Directory. Primeiro, o SharePoint armazena as informações de endereço de email no banco de dados de conteúdo. Depois, ele envia a solicitação de provisionamento em nome do Web service de Integração de Email usando a identidade da conta do pool de aplicativos Web. Se a solicitação de provisionamento falhar, as informações de endereço de email serão armazenadas no banco de dados de conteúdo, mas não é feita a correspondência de objetos de destinatário no Active Directory.
Recursos adicionais
  • Site dos Produtos e Tecnologias do SharePoint
  • TechCenter do Windows SharePoint Services
  • Windows SharePoint Services Developer Center
  • Blog da equipe de Produtos e Tecnologias do Microsoft SharePoint
O provisionamento de solicitações pode falhar por vários motivos. O mais comum deles é a perda de permissões de acesso de metabase do IIS. Como o SharepointEmailWS.asmx foi designado para ser um Web service para contas de um pool de aplicativos, esse Web service examina a metabase do IIS para ver se o chamador é uma conta de pool de aplicativos e nega acesso se não for esse o caso, independentemente dos níveis de permissão do site do SharePoint e do Active Directory.
Entretanto, como o SharepointEmailWS.asmx executa essa verificação de acesso sob a identidade do chamador, a conta do pool de aplicativos de chamada precisa ter acesso à metabase para verificar suas próprias permissões de acesso. Por isso, você deve conceder permissões elevadas às contas do pool de aplicativos para ter êxito.
Obviamente, permissões elevadas em um servidor Web são uma fonte de preocupação quanto à segurança. Há meios mais adequados de controlar o acesso a um Web service ASP.NET. Além disso, o SharePoint espera encontrar o Serviço de Gerenciamento de Diretório no site Administração Central, mas esse site nem sempre está disponível em um Web farm bloqueado para reduzir a superfície de ataque. Se quiser usar o Serviço de Gerenciamento de Diretório interno no seu ambiente de produção do SharePoint, você terá de aceitar uma configuração de segurança mais fraca.
Outras limitações existentes vêm do fato de que o Serviço de Gerenciamento de Diretório interno se baseia em uma arquitetura rigidamente combinada de cliente/servidor. O Microsoft.SharePoint.dll usa o System.DirectoryServices.dll diretamente, por isso não é possível implementar sua própria lógica para personalizar o processo de provisionamento. Por exemplo, a implementação do Serviço de Gerenciamento de Diretório interno não grava todos os atributos de destinatário para oferecer suporte ao Exchange Server 2007, e não existe a opção de personalizar as regras de geração de atributos.
A incapacidade de implementar sua própria lógica também significa que você não pode personalizar o processo de provisionamento, por exemplo, para implementar aprovações personalizadas. O SharePoint oferece suporte aos processos de aprovação para grupos, mas esse recurso se baseia no site Administração Central. Somente os administradores de farm do SharePoint podem aprovar solicitações pendentes, porém os processos de provisionamento do Active Directory não dependem necessariamente da sua aprovação.
Talvez, acima disso, não haja nenhum processo de aprovação para bibliotecas e listas de documentos habilitadas para email. Se você habilitar o gerenciamento de diretório, basicamente irá conceder a todos os administradores de site do seu Web farm o direito de criar contatos e grupos habilitados para email no Active Directory. Também não é possível estruturar o gerenciamento de destinatários com base em unidades organizacionais (UO), porque todos os objetos de destinatário por Web farm são colocados na mesma UO.
Você não pode mover os objetos de destinatário para outra UO porque o Serviço de Gerenciamento de Diretório espera encontrar esses objetos na UO do SharePoint, e você deve conceder à conta do pool de aplicativos da Administração Central permissões administrativas no Active Directory. Além disso, não há como implementar uma sincronização bilateral entre o SharePoint e o Active Directory. Se você alterar os atributos de objeto no Active Directory, as alterações não serão propagadas de volta para o ambiente do SharePoint.

Serviço personalizado de gerenciamento de diretórios
Agora que demonstrei que o Serviço de Gerenciamento de Diretório interno dá liberdade para criar uma flexibilidade adicional, vejamos algumas alternativas. A boa notícia é que o SharePoint permite implementar seu próprio serviço de gerenciamento de diretório. Basta registrar o seu Web service como um Serviço de Gerenciamento de Diretório remoto na Administração Central do SharePoint 3.0, na página Operações, em configurações de email de entrada.
Para obter instruções passo a passo para implantar e registrar um Web service personalizado, consulte a planilha "Directory Integration Based on a Custom Directory Management Service.xps" no material complementar. Além disso, meu Web service personalizado mostra como provisionar objetos de destinatário compatíveis com o Exchange Server 2007 no Active Directory sem cmdlets ou as ferramentas de gerenciamento do Exchange. O código fonte correspondente está na pasta EmailIntegrationService. A Figura 2 ilustra a arquitetura da solução.
Figura 2 Arquitetura do Serviço de Gerenciamento de Diretório personalizado (clique na imagem para ampliá-la)
A interface do Web service personalizado deve aderir à interface do Serviço de Gerenciamento de Diretório, conforme documentado no SDK do SharePoint. Se você pesquisar no site do MSDN® (msdn.microsoft.com) a expressão "SharepointEmailWS", encontrará todos os detalhes necessários. Você também pode consultar o arquivo Service.cs na pasta EmailIntegrationService\App_Code do material complementar. Esse arquivo implementa a interface do Web service necessária, enquanto que o código para provisionar os objetos do Active Directory reside em SPRecipient.cs. Por exemplo, a função UpdateRecipientAttributes em SPRecipient.cs gera os atributos necessários do Exchange Server 2007. SPRecipient.cs é o arquivo de código que você deve substituir se quiser desenvolver seu próprio serviço de gerenciamento de diretório personalizado.
Um serviço de gerenciamento de diretório personalizado é uma boa ferramenta para superar os requisitos de permissão elevada e integrar o SharePoint a diretórios ou sistemas de mensagens de terceiros. Não é necessário verificar a metabase do IIS para limitar o acesso do Web service às contas do pool de aplicativos. Em vez disso, você pode adicionar uma seção <authorization> ao arquivo web.config do seu Web service (consulte o material complementar para obter um exemplo).
Contudo, ainda restam vários problemas, porque não é possível controlar se e quando o SharePoint chama o seu serviço de gerenciamento de diretório. Entre outras coisas, o SharePoint não chama o Serviço de Gerenciamento de Diretório quando você exclui uma biblioteca ou lista de documentos habilitada para email, por isso um objeto de destinatário inválido permanece no Active Directory. Quer você use o Serviço de Gerenciamento de Diretório interno ou uma solução personalizada, não dá para garantir que as informações de destinatário no Active Directory sejam consistentes com os recursos do SharePoint.

SharePoint e ILM
Para obter uma integração de diretórios confiável, você deve considerar a implantação de um pacote de gerenciamento de diretório profissional, como o ILM. Esse sistema conta com um modelo de sincronização de diretórios com base em extração. Os agentes de gerenciamento extraem as informações das fontes conectadas, importam-nas para um metadiretório comum e as exportam desse metadiretório para seus sistemas conectados. Os sistemas de origem nem sempre enviam por push as informações para o metadiretório. Ao extrair as informações, você pode garantir a consistência com cada ciclo de sincronização.
Outra vantagem é que o ILM inclui vários agentes de gerenciamento para oferecer suporte ao Active Directory, ao Lotus Notes e a vários outros sistemas prontamente. Basta implementar um agente de gerenciamento personalizado no SharePoint para sincronizar as informações dele com outra plataforma de diretório que possua suporte no seu ambiente.
Você deve implementar a lógica para recuperar as informações desejadas do SharePoint, salvá-las em um arquivo de importação e transferi-las para o metadiretório. Mas não é necessário implementar a lógica para exportar essas informações do metadiretório para o Active Directory ou outra plataforma de diretório. A Figura 3 ilustra como implementar a sincronização do SharePoint com o Active Directory usando o ILM. Também é possível obter a sincronização do outro lado a fim de provisionar os recursos do SharePoint para os objetos de diretório, embora isso possa ser considerado desnecessário ou opcional.
Figura 3 Integração de diretórios baseada no gerenciador de ciclo de vida (clique na imagem para ampliá-la)
Um bom ponto de partida para desenvolver um agente de gerenciamento do SharePoint é o artigo de Alex Tcherniakhovski "Conectando o ILM 2007 com as listas de serviços do SharePoint" em blogs.msdn.com/alextch/archive/2007/09/02/wsslistsandilm.aspx. Alex mostra como criar uma solução de gerenciamento de diretório baseada em ILM que dependa das solicitações de provisionamento baseadas no InfoPath® enviadas a uma biblioteca de documentos. O agente de gerenciamento de Alex recupera todas as solicitações aprovadas da biblioteca de documentos e cria objetos de metadiretório correspondentes que podem ser exportados para diretórios conectados.
Mas, por padrão, o SharePoint não gera solicitações de provisionamento baseadas no InfoPath quando você habilita uma lista ou grupo para email. Você pode obter isso por meio de um serviço de gerenciamento de diretório personalizado, mas encontrará os problemas de consistência mencionados anteriormente porque o SharePoint não chama o serviço de gerenciamento de diretório em tais circunstâncias. Por isso, recomendo que o seu agente de gerenciamento recupere as informações desejadas de destinatário do SharePoint diretamente das listas e dos grupos da sua coleção de sites. Se precisar de processos de aprovação, você pode gerar solicitações de provisionamento baseadas no InfoPath para novos recursos no agente de gerenciamento e, depois, processar todas as solicitações aprovadas.
Há várias opções para recuperar as informações do SharePoint. Você pode ler as informações necessárias diretamente nos bancos de dados de conteúdo, usar o modelo de objeto do SharePoint ou aproveitar os Web services do SharePoint.
Não é recomendável acessar os bancos de dados de conteúdo diretamente porque suas estruturas podem ser alteradas em versões futuras, o que destruiria a sua solução de gerenciamento de diretório.
Usar o modelo de objeto do SharePoint diretamente no seu agente de gerenciamento também é perigoso porque o modelo de objeto requer que você execute o código localmente, porém, instalar o ILM em um servidor Web em cada farm do SharePoint no seu ambiente pode complicar a infra-estrutura de gerenciamento de diretório.
Você pode pensar em usar os Web services do SharePoint, mas isso cria outra dificuldade porque as informações desejadas não são facilmente acessíveis por meio deles, como informações de endereço de email para grupos do SharePoint ou endereço de exibição do servidor de email de entrada.
No fim, parece que o melhor é implementar um Web service do SharePoint que use o modelo de objeto do SharePoint para recuperar as informações desejadas e retorná-las ao chamador na forma de um documento XML. Agora você pode centralizar a implantação do ILM e integrar quantos farms e coleções de sites desejar por meio de instâncias individuais do Web service personalizado do SharePoint, conforme ilustrado na Figura 3.
Resta um aspecto que vale mencionar: a integração de diretórios baseada no ILM não elimina a necessidade de um serviço de gerenciamento de diretório personalizado. Esse serviço personalizado não precisa executar nenhum trabalho porque o ILM provisiona os objetos de diretório; no entanto, você deve fornecer um serviço personalizado para habilitar o gerenciamento de diretório na Administração Central do SharePoint 3.0. Caso contrário, não será possível, por exemplo, atribuir endereços de email a grupos. A Figura 4 mostra a arquitetura resultante da solução.
Figura 4 Integração de diretórios do SharePoint baseada no Web service (clique na imagem para ampliá-la)
Você pode transformar o serviço de gerenciamento de diretório personalizado incluído no material complementar em um serviço fictício configurando o parâmetro OpMode no arquivo web.config (<add key="OpMode" value="dummy"/>). Nessa configuração, o serviço personalizado sempre retorna SUCCESS em resposta às chamadas de provisionamento sem executar nenhum trabalho.
Além disso, o serviço personalizado expõe um método ResolveUsers que o agente de gerenciamento do SharePoint pode chamar para resolver os nomes de conta de usuário baseadas no NetBIOS em nomes distintos, que é uma etapa necessária ao provisionar grupos. (O SharePoint retorna informações de associação de grupos como uma lista de nomes de conta de usuário baseadas no NetBIOS, mas o Active Directory espera nomes distintos.) E isso é tudo! Para obter detalhes sobre como implantar a solução resultante, consulte "Configuring Directory Integration based on ILM 2007.xps" no material complementar.
O WSS 3.0 e o MOSS 2007 incluem um Serviço de Gerenciamento de Diretório para integrar o SharePoint ao Exchange Server 2003 para colaboração entre plataformas baseada em sistema de mensagens.
Existem várias limitações, no entanto. Os usuários devem substituir o Serviço de Gerenciamento de Diretório por uma solução personalizada. Você também pode usar uma solução de gerenciamento de diretório profissional, como o ILM, para integrar o SharePoint a uma infra-estrutura de gerenciamento de diretório. Assim, você obterá o maior nível de flexibilidade possível e ajudará a garantir a consistência das informações em um modelo de sincronização baseado em extração.

Pav Cherny é especialista em TI e autor especializado em tecnologias Microsoft para colaboração e comunicação unificada. Entre suas publicações estão white papers, manuais de produto e livros com foco nas operações de TI e na administração do sistema. Pav é presidente da Biblioso Corporation, empresa especializada em serviços de documentação gerenciada e de localização.


Windows PowerShell Teoria da cadeia de caracteres
Don Jones

Conteúdo
Um caso do mundo real
Correspondências complexas
Este é um mundo cheio de cadeia de caracteres
Quando falo em conferências como, por exemplo, Tech•Ed ou TechMentor, tenho o hábito de fazer proclamações – anúncios de regra geral que ajudam os usuários a se lembrar dos pontos principais relacionados a coisas como o Windows PowerShell. A minha última proclamação foi: "se está analisando uma cadeia de caracteres no Windows PowerShell, você está fazendo algo errado".
Isso provém da minha filosofia a respeito de o Windows PowerShell™ ser um shell orientado a objeto. Caso esteja fazendo coisas como despejar listas de serviços em um arquivo de texto e, em seguida, analisando esse arquivo de texto para ver quais são os serviços iniciados, você está trabalhando demais. Trata-se de uma abordagem válida em um sistema operacional baseado em texto como, por exemplo, UNIX, mas o Windows PowerShell (bem como o próprio Windows®) permite usar objetos de maneira muito mais eficiente.
Vídeo
Assista à demonstração de Don Jones sobre como é possível usar o Windows PowerShell para analisar cadeias de caracteres complexas.

Até mesmo os scripts devem produzir objetos, e não texto formatado, para que os vários comandos de formatação, filtragem, exportação e outros do shell possam ser usados para manipular a saída dos scripts. (Na minha coluna Windows PowerShell de julho de 2008, é possível ler mais sobre o conceito de objetos personalizados como saída de script.)
Durante uma TechMentor recente em Orlando, Flórida, um dos meus alunos me lembrou de que praticamente todas as regras, especialmente as gerais, têm exceções. "O que acha de localizar coisas em um arquivo de log do IIS? Você não tem que analisar o texto nesse caso?"
Bem, sim. E, felizmente, por ser amigável ao objeto como deve ser, o Windows PowerShell é muito eficiente ao analisar cadeias de caracteres de texto. E já que você mencionou, os arquivos de log do IIS, os arquivos de log do firewall e os demais logs baseados em texto são exemplos perfeitos.

Um caso do mundo real
Tive mesmo de analisar um conjunto de arquivos de log de firewall para a empresa para a qual trabalhava. Um funcionário foi pego acessando alguns sites inapropriados e, como parte da investigação contínua, o departamento de Recursos Humanos precisava de uma lista abrangente dos sites que ele andara visitando. Como era bem difícil obter algo de um arquivo de log referente a um único dia, o pessoal do RH queria retroceder algumas semanas – uma tarefa que eu não poderia fazer manualmente.
O servidor DHCP (Dynamic Host Configuration Protocol) da empresa indicou que o computador do funcionário estava usando o mesmo endereço IP (digamos, 192.168.17.54, tendo em vista este exemplo) há muitos meses. Isso, obviamente, não é algo incomum porque se tratava de um computador desktop que era raramente desligado. E como o log do firewall registrava os endereços IP de origem, eu sabia que o Windows PowerShell poderia ajudar bastante.
O segredo está no comando Select-String, muitas vezes deixado de lado. Além disso, você também precisará de um conhecimento funcional de expressões regulares (as quais abordei na edição de novembro de 2007 do Windows PowerShell).
O comando Select-String aceitará um caminho de arquivo repleto de arquivos de texto, uma expressão regular ou uma cadeia de caracteres para pesquisa. Em seguida, ele produzirá cada uma das linhas dos arquivos de log correspondentes à expressão regular ou à cadeia de caracteres simples. Para começar a minha tarefa, só queria obter todas as linhas que contivessem o endereço IP do computador desktop do funcionário. Todas as linhas do arquivo de log apresentavam um carimbo de data e hora, o que o pessoal do departamento de Recursos Humanos procurava.
Eis o comando:
select-string -path c:\logs\*.txt -pattern "192.168.17.54"
-allmatches –simplematch
O parâmetro –simpleMatch especifica que o padrão fornecido é apenas uma cadeia de caracteres simples, e não uma expressão regular. A Figura 1 mostra parte da saída, que também poderia ser passada para um arquivo. É importante observar que a saída inclui tanto o nome do arquivo quanto o número da linha em que a correspondência foi encontrada, o que pode ser muito útil caso você queira retornar a algum ponto e procurar mais informações.
Cmdlet do mês: Start-Sleep
Eis um cmdlet que pode proporcionar exatamente aquilo de que você precisa no meio de um longo dia de trabalho – um cochilo. Start-Sleep oferece uma parada rápida – para os scripts do Windows PowerShell, portanto.
Não é incomum precisar de uma pausa rápida em um script. Por exemplo, digamos que você precise iniciar um serviço, aguardar alguns segundos para que ele esteja em funcionamento e, em seguida, realizar outras tarefas que dependam desse serviço. Start-Sleep é exatamente aquilo de que você precisa para esse comportamento. A execução de Start-Sleep 10, por exemplo, fará com que o shell pause durante 10 segundos. Caso precise de um controle mais preciso, você pode executar Start-Sleep -milli 100, por exemplo, para pausar durante 100 milissegundos. Start-Sleep suspende completamente o shell, inclusive scripts, pipelines e tudo o mais, durante o tempo especificado. Agora só se alguém escrevesse o cmdlet Start-Nap pelo qual sou louco.
Figura 1 Saída de um comando Select-String (Clique na imagem para ampliá-la)

Correspondências complexas
Depois que forneci ao pessoal do RH exatamente o que queriam, eles acabaram percebendo que não era aquilo que procuravam. O meu relatório incluía visitas a inúmeros endereços IP como, por exemplo, 207.68.172.246 (o site do MSN®). A solicitação seguinte do investigador era cortar o meu relatório para incluir apenas as visitas a um determinado endereço IP, identificado por eles como sendo um dos sites em questão. Nesta coluna, não revelarei o endereço IP real que surgiu na investigação. Em seu lugar, usarei 207.68.172.246 para este exemplo (muito embora o site do MSN não seja considerado inapropriado normalmente).
Essa solicitação poderia ser um pouco mais difícil. No arquivo de log no qual estava trabalhando, os endereços IP de origem e destino estavam bem próximos um do outro e separados por uma vírgula. Logo, bastaria alterar a minha cadeia de caracteres de pesquisa para "192.168.17.54,207.68.172.246" e repetir a pesquisa.
No entanto, em um arquivo de log mais complexo, é possível que houvesse dados variáveis armazenados entre os dois endereços IP e, assim, uma correspondência da cadeia de caracteres simples não funcionaria. Nesse cenário, você teria de recorrer a uma expressão regular, que também funcionará bem em formatos de log mais simples, e o que demonstrarei aqui.
Em uma expressão regular, o caractere de ponto final é um curinga para qualquer caractere. Além disso, é possível usar a subexpressão (.)* para procurar um número qualquer de caracteres entre os meus dois endereços IP. No entanto, é necessário usar uma barra invertida para escapar os pontos finais literais exibidos nos próprios endereços IP.
O comando resultante é:
select-string -path c:\logs\*.txt -pattern
"192\.168\.17\.54(.)*207\.68\.172\.246" –allmatches
Removi o parâmetro –simpleMatch porque estou usando uma expressão regular desta vez. A saída resultante só mostrou as visitas feitas do computador do funcionário para o site específico identificado como inapropriado. A saída também incluiu as informações do carimbo de data e hora que o investigador queria. A Figura 2 mostra uma parte da saída que você deve obter ao executar um comando como este.
Figura 2 Resultados de pesquisa detalhados que mostram apenas as visitas a um determinado site (Clique na imagem para ampliá-la)
Mas é possível dar um passo além e passar a saída para Format-Table e contar com a possibilidade de exibir colunas calculadas. Posso incluir na tabela o nome do arquivo de log e o número da linha na qual a correspondência foi encontrada, e ainda exibirei a própria linha correspondente. No entanto, o shell pode substituir a correspondência da expressão regular por uma cadeia de caracteres vazia para que apenas o restante da linha – o carimbo de data e hora do meu exemplo – seja exibido. Embora seja avançado, esse truque é mais uma demonstração de como o Windows PowerShell pode manipular os dados da cadeia de caracteres e produzir uma saída altamente personalizável, tudo em uma única linha de comando:
select-string -path c:\logs\*.txt -pattern
"192\.168\.17\.54(.)*207\.68\.172\.246" -allmatches |
ft  filename,linenumber,@{"Label"="Time";
"Expression"={$_.line.replace
($_.matches[0],"")}} –auto
A Figura 3 mostra como devem ser os meus resultados finais.
Figura 3 Saída formata de um comando Select-String (Clique na imagem para ampliá-la)

Este é um mundo cheio de cadeia de caracteres
Sou rápido em proclamar a natureza orientada a objeto do Windows PowerShell como um dos seus pontos mais positivos. Porém, há momentos em que os objetos deixam de ser uma opção.
O Windows PowerShell pode viver em um mundo orientado a objeto. Felizmente, a equipe do Windows PowerShell reconheceu que o mundo costuma conter dados externos em cadeias de caracteres formatadas e acabou incluindo o comando Select-String. Contando com Select-String e alguma familiaridade com expressões regulares, você pode usar o Windows PowerShell para escrever linhas únicas que analisarão as cadeias de caracteres mais complicadas.

Don Jones é co-autor de Windows PowerShell: TFM e autor de dezenas de outros livros sobre TI. Entre em contato com ele por meio do seu blog em www.concentratedtech.com.


Ei, Equipe de Scripts! Conecte-se à sua torradeira
A Equipe de Scripts da Microsoft

Código disponível para download em: HeyScriptingGuy2008_09.exe (150 KB)

Se há algo que agrega a este nosso mundo moderno são estas palavras: conecte-se. Graças aos telefones celulares, você não precisa mais estar em casa para que as pessoas liguem; elas podem entrar em contato independentemente de onde você esteja, a qualquer hora do dia ou da noite. (Xi... Bem, legal.) Graças à computação sem fio, você não precisa mais estar no escritório para realizar o trabalho; agora é possível trabalhar em casa, na praia, em qualquer lugar imaginável.
História real: recentemente, os pais do Editor de Scripts foram acampar, mas foram forçados a enfrentar a situação – assim como os grandes desbravadores Lewis e Clark – quando tiveram problemas de conexão com a rede sem fio do acampamento. Graças a Deus, pelo menos a TV por satélite estava funcionando!
E não chegamos à metade da história. Os dispositivos GPS permitem saber exatamente onde você está, em questão de metros; dependendo do dispositivo, eles também podem permitir que outras pessoas saibam exatamente onde você está. (O velho ditado "você pode fugir, mas não pode se esconder" nunca foi tão real como atualmente.) Se quisesse, o membro da Equipe de Scripts quem escreve esta coluna poderia pedir ao banco para avisá-lo sempre que um cheque fosse compensado; da mesma forma, ele poderia receber relatórios de status mensais sobre seu carro por email. Se isso não bastasse, a torradeira se ofereceu para levar o cachorro para passear e regar as plantas sempre que ele estiver em férias.
Tudo bem, essa última parte talvez não tenha acontecido – ainda. Mas se quisesse, o membro da Equipe de Scripts poderia comprar uma torradeira habilitada para Internet. Assim, ele poderia ligar para a torradeira a caminho de casa e ter torradas quentinhas à sua espera assim que entrasse pela porta. Sinceramente, não sabemos por que você queria ter torradas quentinhas à sua espera assim que entrasse pela porta. Mas se quisesse …
É claro que se o objetivo de todos é se manter conectado, não deve ser nenhuma surpresa que a Equipe de Scripts – que tem sido uma escrava da modernidade – defenda que você se mantenha mais desconectado. Isso significa que a Equipe de Scripts recomende jogar fora o telefone celular ou o computador laptop? Não, a Equipe de Scripts é mais esperta que isso. No entanto, o que estamos defendendo é que você adicione conjuntos de registros desconectados ao arsenal de scripts. Mas se quiser jogar fora o telefone celular ou o computador laptop, bem, não o impediremos.
Observação De acordo com uma pesquisa realizada pela Harris Interactive, 43 por cento dos norte-americanos usaram um computador laptop durante as férias para verificar e enviar email relacionado a trabalho. E mais de 50 por cento deles usaram os telefones celulares durante as férias para verificar email e/ou caixa postal. E isso não inclui os 40 por cento que não tiram férias ao longo de um ano.
Não é preciso dizer que muitas pessoas adicionariam tranqüilamente conjuntos de registros desconectados ao arsenal de scripts, não fosse por uma coisa: elas não fazem idéia do que é um conjunto de registros desconectado. Bem, caso você não esteja familiarizado com o conceito, um conjunto de registros desconectado é (mais ou menos) uma tabela de banco de dados que não está vinculada a um banco de dados real; na verdade, ele é criado por um script, existe apenas na memória e desaparece no momento em que o script é encerrado. Em outras palavras, um conjunto de registros é uma estrutura de dados produzida que só existe durante alguns minutos e, em seguida, desaparece, levando os dados com ela. Deus do céu, isso parece muito útil, Equipe de Scripts. Agradecemos a ajuda!
Certo, admitimos: conjuntos de registros desconectados não parecem tão incríveis assim. E, verdade seja dita, não são. Mas eles podem ser extremamente úteis. Como sabem muito bem todos os programadores em VBScript, o VBScript não conta exatamente com os melhores recursos para classificação de dados do mundo. (Bem, não a menos que você considere a ausência de recursos para classificação de dados os melhores do mundo.) Da mesma forma, a possibilidade do VBScript de lidar com grandes conjuntos de dados é, na melhor das hipóteses, limitada. Fora do objeto Dictionary (que se restringe ao trabalho com itens com, no máximo, duas propriedades) ou da matriz (que é amplamente limitada a listas de dados de propriedade única), bem … é só isso.
O conjunto de registros desconectado permite resolver esses dois problemas (e muito mais). Precisa classificar os dados, especialmente dados com várias propriedades? Sem problemas. Como dissemos, um conjunto de registros desconectado é o equivalente virtual de uma tabela de banco de dados, e não há nada mais fácil no mundo do que classificar uma tabela de banco de dados. (Tudo bem, caso você queira ser mais exigente quanto a isso, supomos que deixar de classificar uma tabela de banco de dados seja mais fácil do que classificar uma.) Ou talvez você tenha um grande conjunto de itens, itens com várias propriedades, que precisa acompanhar? Sem problemas. Não mencionamos que um conjunto de registros desconectado é o equivalente virtual de uma tabela de banco de dados? Você precisa filtrar essas informações de alguma maneira, ou quem sabe pesquisar esses dados em busca de um valor específico? Xi... só se houvesse uma forma de usar o equivalente virtual de uma tabela de banco de dados…
Uma boa questão: talvez se trate do tempo para mostrar o que estamos falando. (Pressupondo que pelo menos saibamos do que estamos falando.) Para iniciantes, digamos que tenhamos as estatísticas de beisebol mostradas na Figura 1, estatísticas obtidas no site MLB.com e armazenadas em um arquivo cujos valores são separados por tabulações, C:\Scripts\Test.txt.
Figura 1 Estatísticas armazenadas em um arquivo de valores separados por tabulações
Jogador | Home runs | RBI | Média
D Pedroia | 4 | 28 | .276
K Kouzmanoff | 8 | 25 | .269
J Francouer | 7 | 35 | .254
C Guzman | 5 | 20 | .299
F Sanchez | 2 | 25 | .238
I Suzuki | 3 | 15 | .287
J Hamilton | 17 | 67 | .329
I Kinsler | 7 | 35 | .309
M Ramirez | 12 | 39 | .295
A Gonzalez | 17 | 55 | .299
Tudo muito bom, tudo muito bem, mas suponhamos que queiramos mesmo mostrar essa lista de jogadores classificada de acordo com o número de home runs conseguidos. Um conjunto de registros desconectado nos ajuda em algo desse tipo? Estamos prestes a descobrir. Veja a Figura 2. Sim, há muitos códigos aqui, não é mesmo? Mas não se preocupe. Como você verá daqui a pouco, o latido é bem pior do que a mordida.
Figura 2 Um conjunto de registros desconectado
Const ForReading = 1
Const adVarChar = 200
Const MaxCharacters = 255
Const adDouble = 5

Set DataList = CreateObject("ADOR.Recordset")
DataList.Fields.Append "Player", _
  adVarChar, MaxCharacters
DataList.Fields.Append "HomeRuns", adDouble
DataList.Open

Set objFSO = _
  CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile _
  ("C:\Scripts\Test.txt", ForReading)

objFile.SkipLine

Do Until objFile.AtEndOfStream
    strStats = objFile.ReadLine
    arrStats = Split(strStats, vbTab)

    DataList.AddNew
    DataList("Player") = arrStats(0)
    DataList("HomeRuns") = arrStats(1)
    DataList.Update
Loop

objFile.Close

DataList.MoveFirst

Do Until DataList.EOF
    Wscript.Echo _
        DataList.Fields.Item("Player") & _
        vbTab & _
        DataList.Fields.Item("HomeRuns")
    DataList.MoveNext
Loop
Para começar, definimos quatro constantes:
  • ForReading. Usaremos essa constante ao abrir e ler o arquivo de texto.
  • adVarChar. Trata-se de uma constante do ADO padrão para criar um campo que usa o tipo de dados Variant.
  • MaxCharacters. Trata-se de uma constante ADO usada para indicar o número máximo de caracteres (nesse caso, 255) que um campo Variant pode armazenar.
  • adDouble. Uma constante do ADO final para criar um campo que usa o tipo de dados double (numérico).
Depois de definirmos as constantes, encontramos este bloco de código:
Set DataList = CreateObject _
    ("ADOR.Recordset")
DataList.Fields.Append "Player", _
    adVarChar, MaxCharacters
DataList.Fields.Append "HomeRuns", _
    adDouble
DataList.Open
Esta é a parte do script em que efetivamente definimos e configuramos o nosso conjunto de registros desconectado. Para realizar essa tarefa, a primeira coisa que fazemos é criar uma instância do objeto ADOR.Recordset; nem é preciso dizer que isso cria a nossa tabela de banco de dados virtual (ou seja, o nosso conjunto de registros desconectado).
Em seguida, usamos essa linha de código (e o método Append) para adicionar um novo campo ao conjunto de registros:
DataList.Fields.Append "Player", adVarChar, MaxCharacters
Como se pode ver, não há nada demais acontecendo aqui: apenas chamamos o método Append seguido de três parâmetros:
  • O nome do campo (Players).
  • O tipo de dados do campo (adVarChar).
  • O número máximo de caracteres que podem ser armazenados no campo (MaxCharacters).
Depois de adicionarmos o campo Players, podemos adicionar um segundo: HomeRuns, com um tipo de dados (adDouble) numérico. Quando concluirmos essa tarefa, chamamos o método Open para declarar o nosso conjunto de registros aberto e pronto.
Em seguida, criamos uma instância de Scripting.FileSystemObject e abrimos o arquivo C:\Scripts\Test.txt. Na verdade, essa parte do script não tem nada a ver com o conjunto de registros desconectado; só está aí porque precisamos recuperar dados de um arquivo de texto. A primeira linha do arquivo de texto contém as informações do nosso cabeçalho:
Player     Home Runs     RBI        Average
Como não precisamos dessas informações para o nosso conjunto de registros, a primeira coisa que fazemos depois de abrir o arquivo é chamar o método SkipLine para ignorar essa primeira linha:
objFile.SkipLine
Agora que passamos à primeira linha com dados reais nela, configuramos um loop Do Until projetado para nos permitir ler o restante do arquivo linha por linha. Sempre que lemos uma linha do arquivo, armazenamos esse valor em uma variável chamada strLine e, em seguida, usamos a função Split para converter essa linha em uma matriz de valores (dividindo a linha sempre que encontramos uma tabulação):
arrStats = Split(strStats, vbTab)
De fato, essa é uma visão geral rápida, mas esperamos que, por enquanto, a maioria de vocês seja muito boa na recuperação de informações dos arquivos de texto. Para encurtar a história, a primeira execução do loop na matriz, arrStats, conterá os itens da Figura 3.
Figura 3 Conteúdo da matriz
Número do item | Nome do item
0 | D Pedroia
1 | 4
2 | 28
3 | .276
Agora estamos prontos para alguma diversão:
DataList.AddNew
DataList("Player") = arrStats(0)
DataList("HomeRuns") = arrStats(1)
DataList.Update
Aqui estamos adicionando as informações referentes ao jogador 1 (D Pedroia) ao conjunto de registros desconectado. Para adicionar um registro ao conjunto, começamos chamando o método AddNew; isso cria um novo registro, em branco, para nós trabalharmos. Usamos as duas próximas linhas de código para atribuir valores aos dois campos do conjunto de registros (Player e HomeRuns) e, em seguida, chamamos o método Update para gravar oficialmente o registro no conjunto. E voltando à parte superior do loop mais uma vez, onde repetimos o processo com a próxima linha – o próximo jogador – no arquivo de texto. Viu? Pode haver uma infinidade de códigos aqui, mas é tudo muito simples e direto.
E o que acontece depois que todos os jogadores são adicionados ao conjunto de registros? Bem, depois de fecharmos o arquivo de texto, executamos este bloco de código:
DataList.MoveFirst

Do Until DataList.EOF
  Wscript.Echo _
    DataList.Fields.Item("Player") & _
    vbTab & _
    DataList.Fields.Item("HomeRuns")
  DataList.MoveNext
Loop
Na linha 1 usamos o método MoveFirst para posicionar o cursor no início do conjunto de registros; se não fizermos isso, correremos o risco de mostrar apenas alguns dos dados do conjunto. Em seguida, configuramos um loop Do Until que continuará sendo executado até os dados acabarem (ou seja, até a propriedade EOF – fim do arquivo – ser True).
Dentro desse loop, tudo o que fazemos é recuperar os valores dos campos Player e HomeRuns (observe a sintaxe um pouco estranha usada para indicar um determinado campo): DataList.Fields.Item("Player"). Depois, apenas chamamos o método MoveNext para passar ao próximo registro do conjunto.
Nem é preciso dizer que isso foi bem fácil. Uma vez tudo resolvido e pronto, devemos ter o seguinte:
D Pedroia       4
K Kouzmanoff    8
J Francouer     7
C Guzman        5
F Sanchez       2
I Suzuki        3
J Hamilton      17
I Kinsler       7
M Ramirez       12
A Gonzalez      17
Como se pode ver, isso – bem, pensando melhor, nem tudo está tão bom assim, está? Certo, conseguimos os nomes dos jogadores e os totais de home runs, mas não esses totais de home runs classificados. Droga! Por que o conjunto de registros não classificou os dados para nós?
Na verdade, há um bom motivo: não informamos ao conjunto de registros qual campo queríamos classificar. Mas isso é bem fácil de se corrigir: basta modificar o script para adicionar informações de classificação pouco antes da chamada para o método MoveFirst. Em outras palavras, faça essa parte do script ficar assim:
DataList.Sort = "HomeRuns"
DataList.MoveFirst
Obviamente, não há nenhum truque envolvido aqui; apenas atribuímos o campo HomeRuns à propriedade Sort. Agora observe a saída que obtemos quando executamos o script:
F Sanchez       2
I Suzuki        3
D Pedroia       4
C Guzman        5
J Francouer     7
I Kinsler       7
K Kouzmanoff    8
M Ramirez       12
J Hamilton      17
A Gonzalez      17
Muito melhor. Muito bem, exceto por um aspecto: normalmente, os totais de home runs são listados na ordem decrescente, com o jogador com mais home runs aparecendo em primeiro lugar. Existe alguma forma de classificar um conjunto de registros desconectado na ordem decrescente?
É claro que há; tudo o que temos a fazer é acrescentar o útil parâmetro DESC da seguinte forma:
DataList.Sort = "HomeRuns DESC"
E o que o parâmetro DESC faz para nós? Isso mesmo:
A Gonzalez      17
J Hamilton      17
M Ramirez       12
K Kouzmanoff    8
I Kinsler       7
J Francouer     7
C Guzman        5
D Pedroia       4
I Suzuki        3
F Sanchez       2
Por acaso, é perfeitamente legal classificar várias propriedades; tudo o que você precisa fazer é atribuir cada uma delas à ordem de classificação. Por exemplo, suponhamos que você queira classificar primeiro os home runs e, em seguida, os RBIs. Sem problemas. O comando fará a mágica:
DataList.Sort = "HomeRuns DESC, RBI DESC"
Faça uma tentativa e veja com seus próprios olhos. Não é tão legal como verificar o email durante as férias, mas chega perto.
Observação Lembre-se de que não é possível classificar um campo que não tenha sido adicionado ao conjunto de registros. O que isso significa? Significa que, para adicionar uma propriedade como, por exemplo, RBI à instrução Sort, você precisa adicionar estas linhas ao script nos locais apropriados:
DataList.Fields.Append "RBI", adDouble

DataList("RBI") = arrStats(2)
E se quiser observar a saída, você também precisará modificar a instrução Wscript.Echo:
Wscript.Echo _
  DataList.Fields.Item("Player") & _
  vbTab & _
  DataList.Fields.Item("HomeRuns") & _
  vbTab & DataList.Fields.Item("RBI")
Vejamos, o que mais podemos fazer com conjuntos de registros desconectados? Ah, aqui está. Suponhamos que tenhamos recuperado todas as informações referentes a todos os jogadores e, em seguida, classificado esses dados de acordo com a média de rebatidas. (Dentre outras coisas, isso significa que precisamos modificar o nosso script original para criar campos chamados RBI e BattingAverage.) A saída é semelhante a esta:
J Hamilton      17      67      0.329
I Kinsler       7       35      0.309
A Gonzalez      17      55      0.304
C Guzman        5       20      0.299
M Ramirez       12      39      0.295
I Suzuki        3       15      0.287
D Pedroia       4       28      0.276
K Kouzmanoff    8       25      0.269
J Francouer     7       35      0.254
F Sanchez       2       25      0.238
Tudo bem, mas e se quiséssemos uma lista apenas dos jogadores com .300 de rebatidas ou mais? Como é possível limitar os dados exibidos apenas aos jogadores que correspondam a critérios especificados? Bem, uma forma é atribuir um filtro ao conjunto de registros:
DataList.Filter = "BattingAverage >= .300"
Um filtro do conjunto de registros tem o mesmo objetivo geral de uma consulta ao banco de dados: proporciona um mecanismo para limitar dados retornados a um subconjunto de todos os registros do conjunto. Nesse caso, estamos apenas pedindo a Filter para eliminar todos os registros, exceto aqueles nos quais o campo BattingAverage apresenta um valor maior que ou igual a .300. E adivinhe só: Filter fará exatamente aquilo que você pediu:
J Hamilton      17      67      0.329
I Kinsler       7       35      0.309
A Gonzalez      17      55      0.304
Ah se nossos filhos fossem assim, hein?
A propósito, é possível usar vários critérios em um único filtro. Por exemplo, esse comando limita os dados retornados a registros nos quais o campo BattingAverage é maior que ou igual a .300 e o campo HomeRuns, maior que 10:
DataList.Filter = _
  "BattingAverage >= .300 AND HomeRuns > 10"
Por outro, esse filtro limita os dados a registros nos quais o campo BattingAverage é maior que ou igual a .300 ou o campo HomeRuns, maior que 10:
DataList.Filter = "BattingAverage >= .300 OR HomeRuns > 10"
Faça um teste com ambos, e você verá qual é a diferença. E que burrice a minha: como diversão, eis outro filtro que é possível experimentar:
DataList.Filter = "Player LIKE 'I*'"
Acontece que também é possível usar curingas nos filtros. Para isso, use o operador LIKE (e não o sinal de igual) e, em seguida, use o asterisco da mesma forma com que faria se estivesse executando um comando do MS-DOS® como dir C:\Scripts\*.txt. No exemplo anterior, devemos receber uma lista dos jogadores cujos nomes começam pela letra I; isso porque a sintaxe que empregamos diz: "me mostre uma lista de todos os registros nos quais o valor do campo Player comece por I e seja seguido, bem, por qualquer coisa". Dê um – bem, OK; agora você já conhece bem a rotina.
A propósito, você também não fica limitado a médias de rebatida como 0,309. (As médias de rebatida costumam ser expressadas sem o 0, à esquerda .309, por exemplo.) Mas tudo bem; basta usar a função FormatNumber para formatar a média de rebatida da forma que quiser:
FormatNumber (DataList.Fields.Item("BattingAverage"), 3, 0)
Basta incluir essa função na instrução Wscript.Echo ao exibir o número (ou atribuir a saída a uma variável e colocá-la na instrução Echo):
Wscript.Echo _
  DataList.Fields.Item("Player") & _
  vbTab & _
  DataList.Fields.Item("HomeRuns") & _
  vbTab & DataList.Fields.Item("RBI") & _
  vbTab & _
  FormatNumber _
  (DataList.Fields.Item("BattingAverage"), _
   3, 0)
Legal, não?
Mas, infelizmente, acabou o espaço que tínhamos para este mês. Resumindo, gostaríamos de dizer que – desculpe, o telefone está tocando.
Então, queremos observar que – ai, que ótimo, agora é o telefone celular que está tocando. E acabamos de receber um email da torradeira. Importante: a nossa torrada está pronta e não sabemos que queremos com manteiga ou geléia... Temos que nos despedir, mas nos veremos no mês que vem!
O desafio de script do Dr. Scripto
O desafio mensal que testa não apenas sua habilidade de resolver quebra-cabeça, mas também de criar scripts.

Setembro de 2008: Pesquisa sobre scripts
Eis um caça-palavras simples (talvez nem tanto assim). Encontre todas as funções e instruções VBScript da lista. Mas eis um detalhe: as letras restantes formarão uma palavra oculta, que é nada mais, nada menos do que – você adivinhou! – um cmdlet do Windows PowerShell™!
Lista de palavras: Abs, Array, Atn, CCur, CLng, CInt, DateValue, Day, Dim, Else, Exp, Fix, InStr, IsEmpty, IsObject, Join, Len, Log, Loop, LTrim, Mid, Month, MsgBox, Now, Oct, Replace, Set, Sin, Space, Split, Sqr, StrComp, String, Timer, TimeValue, WeekdayName.

RESPOSTA:
O desafio de script do Dr. Scripto
Resposta: Setembro de 2008: Pesquisa sobre scripts

A Equipe de Scripts trabalha na – quer dizer, é contratada pela – Microsoft. Quando não estão jogando/treinando/assistindo beisebol (e praticando diversas outras atividades), eles administram o Script Center da TechNet. Confira no site www.scriptingguys.com.


Os arquivo da área de trabalho Funcionalidade avançada no WDS
Wes Miller

Conteúdo
Gerenciamento de linha de comando
Armazenamento de imagens
Multicast
Log do WDS
Outros problemas
Conclusão

Nas duas partes anteriores desta coluna, explorei o WDS (Serviços de Implantação do Windows). Comecei examinando o histórico das ferramentas de implantação baseadas no PXE (Pre-Boot eXecution Environment) da Microsoft e apresentei uma visão geral do WDS. Este mês, falarei sobre tópicos mais avançados:
WDSUtil (o poderoso utilitário de linha de comando para o WDS), o Armazenamento de Imagens do WDS, o log do WDS e como trabalhar com a funcionalidade multicast no WDS para o Windows Server® 2008.
Quando foi lançado com o Windows® 2000 e o Windows Server 2003, o RIS (Serviços de Instalação Remota) não era tão rico em recursos quanto se desejava. Três áreas em especial se destacam:
  • Desempenho (implantação mais escalonável)
  • Log/auditoria
  • Automação de linha de comando
Você verá no resto da coluna deste mês que, com o lançamento inicial do WDS e, mais especificamente, com o WDS no Windows Server 2008, houve grandes avanços em cada uma dessas frentes.

Gerenciamento de linha de comando
No mês passado, observei que o WDS fornecia um console de gerenciamento bastante aperfeiçoado. Mas, ainda mais importante para a maioria das empresas, o WDS fornecia um utilitário de linha de comando para gerenciamento, o WDSUtil.exe (consulte a Figura 1). O WDSUtil é instalado com o Componente Opcional do WDS no Windows Server 2003 (SP1 + WDS ou SP2) e com a Função do WDS no Windows Server 2008.
Figura 1 Configurando a opção de descoberta de arquitetura como yes no WDSUtil (clique na imagem para ampliá-la)
O WDSUtil é um utilitário extremamente poderoso, mas complexo. Praticamente tudo que você pode fazer usando o Microsoft® Management Console (MMC), e mais, pode ser feito no WDSUtil. Na verdade, como um ótimo exemplo disso, que também é uma das melhores formas de diagnosticar problemas, tente executar:
wdsutil /get-server /show:config
Os resultados refletem quase totalmente o que você veria no WDS MMC inteiro, embora o WDSUtil gere a mesma saída em um formato de fácil leitura que você pode enviar para um arquivo de texto.
Pouca informação? Experimente o seguinte comando em vez disso, que retorna ainda mais:
wdsutil /get-server /show:all /detailed
E você pode parar e reiniciar o servidor do WDS, executando:
wdsutil /stop-server
wdsutil /start-server
Você encontrará uma referência de comando para o WDSUtil em go.microsoft.com/fwlink/?LinkId=112194. Se preferir, também pode baixar uma versão .chm (com todos os documentos do WDS 2008) em go.microsoft.com/fwlink/?LinkId=89381.
Com o RIS, nada era fácil, a menos que você fosse um guru nas interfaces do Serviço do Active Directory®, para descobrir pela linha de comando se um endereço MAC específico ou GUID estava associado ao MAO (Objeto da conta do computador) no Active Directory. Com o WDSUtil, você pode fazer a consulta com base em qualquer um dos dois.
Os GUIDs podem ser confusos, já que é possível inseri-los como cadeias de caracteres binárias ou uma cadeia de caracteres do GUID, e a única diferença é a ordem dos bytes e a ausência de hífens. Os endereços MAC podem ser inseridos com ou sem hífens usando as seguintes linhas de código:
wdsutil /get-device /id:01-23-45-67-89-AB
wdsutil /get-device /id:0123456789AB
Você pode obter informações do dispositivo pela cadeia de caracteres binária usando este comando:
wdsutil /get device /id:ACEFA3E81F20694E953EB2DAA1E8B1B6
Ou você pode obter informações pela cadeia de caracteres do GUID usando este comando:
wdsutil /get device /id:E8A3EFAC-201F-4E69-953-B2DAA1E8B1B6
Muitos de nossos computadores provavelmente são capazes de executar a versão de 64 bits do Windows, mas alguns, infelizmente, não relatam sua arquitetura corretamente. Você pode deixar que o WDS tente determinar se um sistema é capacitado para x64 executando um pequeno programa de inicialização de rede fornecido como parte do WDS. Como mostra a Figura 1, você pode fazer isso com o seguinte:
wdsutil /set-server /architecturediscovery:yes
Na verdade, o comando WDSUtil /set-server permite definir um grande número de configurações de servidor. Para ver as possibilidades, execute o comando:
wdsutil /set-server /?
Se você atualizou um servidor do WDS do Windows Server 2003 para o Windows Server 2008, poderá converter qualquer imagem RIPrep para o formato WIM (Windows Imaging) executando:
WDSUtil /convert-RIPrepImage
Embora o WDSUtil possa converter imagens RIPrep, quaisquer imagens RISetup restantes (instalações de script do WDS herdadas/RIS tradicional) não poderão ser convertidas.
O poder do WDSUtil está na capacidade de automatizar tarefas repetitivas. Os comandos na Figura 2 dão uma idéia dos recursos do WDSUtil. Se está implantando novos servidores WDS, adicionando ou modificando imagens em vários servidores, administrando sua infra-estrutura multicast ou especificando qual programa de inicialização de rede será usado para um determinado cliente de inicialização, o WDSUtil fornece ótimos recursos que antes não estavam disponível no RIS.
Figura 2 Comandos do WDSUtil
Comando | Descrição
/add | Adiciona dispositivos, imagens ou grupos de imagens.
/approve-AutoAddDevices | Aprova dispositivos de adição automática pendentes e permite definir informações de configuração para eles.
/convert-RiprepImage | Converte uma imagem RIPrep herdada em uma imagem WIM.
/copy-Image | Duplica uma imagem dentro de um armazenamento de imagens.
/delete-AutoAddDevices | Exclui todos dispositivos ou determinados dispositivos de adição automática pendentes.
/disable | Desabilita um Servidor do WDS ou Servidor de Transporte.
/disconnect-Client | Desconecta um cliente de uma transmissão multicast ou um namespace.
/enable | Habilita um Servidor do WDS ou Servidor de Transporte.
/export-Image | Com /export no ImageX, exporta uma imagem existente do armazenamento de imagens para uma imagem WIM.
/get | Obtém propriedades e atributos para um dispositivo, imagem, grupo de imagens, servidor do WDS ou servidor de transporte.
/initialize-Server | Configura um Servidor do WDS para ser usado após a instalação inicial.
/new | Cria imagens de captura ou descoberta, transmissões multicast e namespaces.
/progress | Exibe o progresso enquanto um determinado comando é executado.
/reject-AutoAddDevices | Rejeita todos dispositivos ou determinados dispositivos de adição automática pendentes.
/remove | Remove imagens, grupos de imagens, transmissões multicast e namespaces.
/replace-Image | Substitui (sobrescreve) uma imagem por outra.
/set | Define propriedades e atributos para um dispositivo, imagem, grupo de imagens, servidor do WDS ou servidor de transporte.
/start | Inicia um Servidor do WDS ou Servidor de Transporte.
/stop | Interrompe um Servidor do WDS ou Servidor de Transporte.
/uninitialize-Server | Reverte as alterações feitas no servidor durante sua inicialização (reverte para um estado não configurado).
/update-ServerFiles | Atualiza os arquivos no compartilhamento REMINST do servidor com as versões mais recentes do diretório System32\RemInst do servidor.
/verbose | Exibe a saída detalhada enquanto um determinado comando é executado.

Armazenamento de imagens
No mês passado, mencionei que o SIS (Armazenamento de Instância Única), usado pelo RIS para armazenar arquivos com mais eficiência no disco, foi abandonado no WDS. Agora, todas as imagens (WIM) no modo nativo, independentemente do SO, são mantidas no Armazenamento de Imagens do WDS. Como indiquei nas colunas anteriores, essa funcionalidade de instância única economizava espaço nos arquivos .wim quando as imagens do volume tinham arquivos relacionados. O Armazenamento de Imagens do WDS funciona da mesma forma. Na verdade, ele usa a funcionalidade WIM para armazenar imagens.
Para trabalhar com o Armazenamento de Imagens, é necessário obter pelo menos um Grupo de Imagens; a inicialização do WDS, em geral, o solicitará a criar um. Também é possível criar um novo Grupo de Imagens ao adicionar uma Imagem de Instalação; a imagem será adicionada a ele (consulte a Figura 3).
Figura 3 Criando um novo Grupo de Imagens (clique na imagem para ampliá-la)
Então o que é um Armazenamento de Imagens? Vá para o diretório RemoteInstall, no diretório Imagens, e verá os diretórios para cada Grupo de Imagens que você criou. Como mostra a Figura 4, existe um arquivo .wim para cada Imagem de Instalação que você importou para o Grupo de Imagens e um único arquivo .rwm (Resource WIM).
Figura 4 O conteúdo de um Grupo de Imagens (clique na imagem para ampliá-la)
Observe os arquivos na Figura 4. Este Grupo de Imagens consiste em:
  • install.wim (Windows Server 2008, Standard Edition)
  • install-(2).wim (Windows Server 2008, Enterprise Edition)
  • install-(3).wim (Windows Server 2008, Datacenter Edition)
  • install-(4).wim (Windows Server 2008, Standard Edition (Server Core)
  • install-(5).wim (Windows Server 2008, Enterprise Edition (Server Core)
  • install-(6).wim (Windows Server 2008, Datacenter Edition (Server Core)
Agora compare os tamanhos desses arquivos com os do MMC (mostrados na Figura 5). O tamanho de cada arquivo .wim na Figura 4 é uma fração do tamanho do arquivo Res.rwm. Por quê? Bem, para economizar espaço, os arquivos .wim mostrados são apenas partes dos arquivos reais. Eles contêm os metadados para restaurar o arquivo .wim, mas não contêm efetivamente os recursos do arquivo. Todos os recursos de arquivo em um Grupo de Imagens são armazenados no arquivo para esse grupo.
Figura 5 Imagens mostradas no Gerenciador de Servidores (clique na imagem para ampliá-la)
Para editar uma Imagem de Instalação em um Armazenamento de Imagens, você pode exportar a imagem, fazer usas edições e substituir a imagem (ou importá-la mais uma vez) ou pode interagir com ela, desabilitando a Imagem de Instalação apropriada do MMC e fazendo suas edições ao montar e modificar o arquivo .wim.
Um problema que o RIS sempre teve é a replicação de imagens. Quando você copia arquivos SIS na rede, o SIS é perdido por ser um atributo NTFS. Isso significa que se você tivesse 40 GB de imagens RISetup e RIPrep e as estivesse replicando para outro servidor, mesmo que o Groveler do SIS as reduzisse para 5 GB apenas, ainda assim você estaria replicando 40 GB na rede. Não é o caso do Armazenamento de Imagens do WDS. Na verdade, por causa da arquitetura do Armazenamento de Imagens, você pode salvá-los em um servidor DFS (Sistema de Arquivos Distribuídos) e usar DFS-R (Replicação DFS) para replicá-los site a site.
Os detalhes disso podem variar, dependendo da versão do WDS. Para o Windows Server 2003, consulte o Capítulo 7, "Trabalhando com imagens", da documentação disponível para download em go.microsoft.com/fwlink/?LinkId=81031. Para o Windows Server 2008, consulte "Armazenando e replicando imagens com o DFS" em go.microsoft.com/fwlink/?LinkId=121960. Como os recursos são todos armazenados no arquivo .rwm, mesmo quando você copia um Grupo de Imagens de um servidor para outro, a quantidade de dados enviada pela rede é uma fração daquilo que seria se o arquivo .wim inteiro fosse transmitido (ou na antiga arquitetura SIS do RIS).
Então, quando devemos criar um novo Grupo de Imagens e quando devemos usar o antigo? As regras, em geral, são as mesmas para um arquivo .wim. Embora você possa colocar uma imagem do Windows XP Professional SP3 em um Grupo de Imagens basicamente formado por imagens do Windows Server 2008, isso não faz muito sentido, já que não economiza muito espaço. Já com .wims, provavelmente, você irá optar por ter um Grupo de Imagens pelo menos para:
  • Cada versão específica do Windows, em que uma versão corresponde a um SKU (Windows XP Professional) e uma revisão do Service Pack (SP3).
  • Windows Server 2003 e anterior: cada versão de idioma localizado (e não a Interface do Usuário Multilíngüe). Antes do Windows Vista®, as compilações localizadas eram binários totalmente diferentes, por isso não eram bem armazenadas em um arquivo .wim em termos de instância única.
  • Cada Service Pack de cada versão. Embora seja possível armazenar imagens do Windows Server 2008 e do Windows Vista SP1 juntas, considere se essa funcionalidade é adequada à sua organização.
O Armazenamento de Imagens, mais do que o SIS, é ótimo para preservar espaço, tanto no disco quanto na rede, e em geral não é preciso muito esforço mantê-lo em bom funcionamento.

Uma das grandes fraquezas do RIS era sua falta de escalabilidade. A implantação multicast tem tudo para corrigir isso. As pessoas costumam pensar em multicast como uma implantação "mais rápida", mas não se trata de rapidez e sim de quantidade. Com o RIS, era possível implantar vários sistemas. Na verdade, o RIS podia manipular uma implantação simultânea de quase 75 sistemas.
Mas antes que se pudesse chegar a esse ponto, o desempenho era afetado e as instalações demoravam cada vez mais. Pior que isso, conforme o número de instalações aumentava, a probabilidade de falha crescia. Ao mesmo tempo, várias instalações saturavam a rede com tráfego de rede SMB (por isso, durante a implantação, os funcionários às vezes não conseguiam obter recursos essenciais de rede como o Microsoft Exchange Server).
O multicast tem a ver com o escalonamento do número de implantações. Se você estiver implantando quatro servidores ou um centro de conferência com 100 sistemas, o multicast permitirá concluir essa implantação sem muita demora e sem saturar a rede. Embora você possa usar multicast para a implantação em um único sistema, a vantagem do escalonamento só ficará visível quando houver vários sistemas escutando a transmissão.
Para usar multicast, é necessário ter roteadores com suporte para tanto. Em geral, isso significa que o rastreamento IGMP deve ser habilitado. Também é necessário ter o Windows PE 2.1 (Windows Server 2008 RTM ou Windows Vista SP1), pois a versão (2.0) que acompanha o Windows Vista RTM não é capaz de receber uma transmissão multicast.
Além disso, se houver vários servidores do WDS (ou outro multicast) na mesma rede, você deverá especificar um intervalo personalizado de endereços IP. Isso pode ser alterado facilmente por meio do MMC do WDS, clicando duas vezes no servidor, clicando em Propriedades e na guia Configurações de Rede.
Ao executar uma transmissão multicast, o servidor multicast pode ajustar a velocidade a uma taxa em que o cliente mais lento possa receber ou pode regular a velocidade em um nível mais alto e descartar os clientes que não podem acompanhá-la. Por questões de confiabilidade, o WDS é executado na velocidade do cliente mais lento que recebe a transmissão.
Se você acha o desempenho da transmissão está mais lento do que o esperado, execute wdsutil /Get-MulticastTransmission/Show-clients. Isso irá revelar o cliente mestre que está otimizando a transmissão. Você pode desconectar esse cliente e reverter para o uso de SMB em vez de multicast. Para obter um exemplo de script que desconecta automaticamente clientes lentos, vá para go.microsoft.com/fwlink/?LinkId=121961.
Para criar uma transmissão multicast, você pode clicar com o botão direito do mouse em uma Imagem de Instalação e selecionar Criar Transmissão Multicast ou pode clicar com o botão direito do mouse em Transmissões Multicast no console do WDS e selecionar Criar Transmissão Multicast. Ao criar a transmissão multicast, é possível criar um Multicast Automático ou Multicast Programado. O Multicast Automático é útil quando vários clientes entram online regularmente, precisando exatamente da mesma imagem; os novos clientes são adicionados automaticamente à transmissão em andamento iniciada para o primeiro cliente que solicitou uma imagem de instalação. O Multicast Programado permite configurar um tamanho de grupo que, quando alcançado, dá início a uma transmissão.
Também é possível definir a transmissão para iniciar em um momento específico. Quando os clientes utilizam a transmissão multicast, é possível exibi-los clicando no nome da imagem. No painel direito, você pode ver os detalhes sobre os clientes conectados à transmissão.
Normalmente, seus usuários finais usam multicast do cliente de Instalação do WDS. Entretanto, existe um utilitário de linha de comando, chamado WDSMCast, que acompanha o WAIK (Kit de Instalação Automatizada do Windows) do Windows Server 2008 e permite solicitar um arquivo .wim por meio de uma transmissão multicast do WDS. O arquivo .wim deve ser transferido totalmente e aplicado ao cliente, por isso é bom garantir que haja espaço em disco suficiente para a imagem a ser armazenada e aplicada. No próximo mês, explicarei como é possível integrar o WDSMCast no seu próprio processo de implantação personalizada.

Log do WDS
O WDS é capaz de executar uma quantidade considerável de log e rastreamento, embora boa parte disso seja desabilitada por padrão para economizar espaço. Há dois tipos de log de eventos: quando um cliente grava no log de eventos do Windows e quando grava nos logs de rastreamento para outros aspectos do WDS.
No Windows Server 2008, porém, o WDS executa uma grande quantidade de logs por padrão. Esses logs estão disponíveis em Ferramentas Administrativas | Visualizador de Eventos. Os logs do WDS são visíveis no Visualizador de Eventos em Logs de Aplicativos e Serviços | Microsoft | Windows | Deployment-Services-Diagnostics. Por conveniência, esses logs são os mesmos que podem ser vistos ao exibir a função do WDS no MMC (consulte a Figura 6).
Figura 6 Exibindo eventos do WDS no Gerenciador de Servidores (clique na imagem para ampliá-la)
O log de cliente do WDS (visível nos logs de eventos na Figura 6) pode ser iniciado executando WDSUtil com os seguintes argumentos:
wdsutil /wdsclientlogging /enabled:yes /logginglevel:info
Você pode habilitar o log de rastreamento em vários subcomponentes diferentes do WDS também. Para configurar o rastreamento, defina um valor de registro DWORD adequado na(s) chave(s) do Registro, como mostra a Figura 7. Todos os logs de rastreamento são armazenados em \Windows\tracing. Em seguida, é necessário reiniciar o componente apropriado para que o log seja iniciado.
Figura 7 Configurando o log de rastreamento
Componente do WDS | Chave do Registro | Valor do Registro | Nome do log
Servidor | HKLM\SOFTWARE\Microsoft\Tracing\WDSServer\EnableFileTracing | 1 | wdsserver.log
Multicast | HKLM\System\CurrentControlSet\Services\WDSServer\Providers\WDSMC\TraceDisabled | 0 | wdsserver.log
Componentes de gerenciamento | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Tracing\WDSMGMT\EnableFileTracing | 1 | wdsmgmt.log
MMC | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Tracing\WDSMMC\EnableFileTracing | 1 | wdsmmc.log
O WDS também possui contadores de desempenho (descritos em go.microsoft.com/fwlink/?LinkId=121962) que você pode monitorar no caso de haver problemas de desempenho no sistema (ou para executar antecipadamente análises de desempenho do sistema). Conforme observado anteriormente, você pode obter informações mais detalhadas se encontrar problemas usando as opções /detailed, /verbose ou /progress com o WDSUtil.
Se tiver problemas com os clientes WDS que se conectam a um servidor do WDS ou interagem com ele, o Monitor de Rede da Microsoft (Netmon) é uma excelente ferramenta para depurá-los. O Monitor de Rede está disponível para download em go.microsoft.com/fwlink/?LinkId=121491.

Outros problemas
Conheço alguns problemas que devem ser mencionados. O primeiro é a memória; lembre-se de que o WDS se baseia principalmente no Windows PE 2.x. Isso significa que os clientes do WDS precisam de pelo menos 384 MB de RAM e, se for realista, você irá garantir 512 MB para um desempenho ideal. Lembre-se também de que o Windows PE 2.0 não é inicializado em sistemas ACPI (Interface de Energia e Configuração Avançada), e isso nem sempre significa hardware antigo. Há relatórios de sistemas relativamente recentes que não oferecem suporte a ACPI.
Observe que esses sistemas também não oferecem suporte ao Windows Vista ou ao Windows Server 2008. Para sistemas sem suporte a ACPI, você deve manter um servidor WDS ou RIS do Windows Server 2003 ou anterior disponível, com esses clientes pré-configurados para ele, ou instalar o Windows por meio de um mecanismo que não seja PXE.
Finalmente, lembre-se de que, para inicializar o Windows PE 1.x no seu servidor, também é necessário usar um servidor do WDS ou RIS do Windows Server 2003 ou anterior, já que o WDS no Windows Server 2008 não pode inicializar uma imagem do Windows PE 1.x (RAMDisk ou PXE).

Até agora, vimos o histórico, as noções básicas e tópicos avançados do WDS. No mês que vem, examinarei alguns cenários personalizados do WDS e, mais especificamente, mostrarei como interagir com o WDS e ajustá-lo para executar as tarefas necessárias, muitas vezes sem utilizar a experiência de instalação/WDS existente.

Wes Miller é gerente sênior de produto técnico da CoreTrace (www.CoreTrace.com), em Austin, no Texas. Anteriormente, ele trabalhou na Winternals Software e como gerente de programa da Microsoft. Entre em contato com ele pelo email technet@getwired.com.


Security Watch Senhas e cartões de crédito, Parte 3
Jesper M. Johansson

Conteúdo
Sobrecarregando tecnologias de atualização
Mensagens inconsistentes sobre segurança
É tudo uma questão de caixas de seleção
Um alerta
Nas duas últimas edições da TechNet Magazine, discutimos como os profissionais de segurança e a indústria de TI em geral confundem os consumidores e, na verdade, atrapalham os esforços de segurança. Nas duas primeiras partes desta série, me concentrei em problemas como, por exemplo, soluções que fornecem informações equivocadas aos clientes, sobrecarregam o
fluxo de trabalho de logon e ensinam maus comportamentos. Até aqui, mostrei a você muitos exemplos diferentes de como o setor, diante da vontade de aparentar preocupação com a segurança do cliente, acabou piorando a situação mais do que precisava. Nesta terceira e última parte, mostrarei como algumas das tecnologias mais importantes disponíveis aos clientes não estão correspondendo às expectativas que esses clientes devem ter em relação a essas soluções. Isso tudo leva ao meu alerta.

Sobrecarregando tecnologias de atualização
Uma das principais filosofias – um requisito inquestionável, na verdade – para se manter eletronicamente seguro é manter todo o software atualizado. Praticamente todos os grandes fornecedores de software agora contam com alguma forma de mecanismo semi-automático para manter pelo menos alguns dos softwares atualizados. No entanto, isso não é tão simples assim.
Primeiro, quanto mais softwares você tem, mais softwares terá de atualizar. E quanto mais fornecedores de software houver, mais mecanismos de atualização você terá de usar. Trata-se de um fator de confusão.
Por exemplo, se mantiver os padrões, o Internet Explorer® se atualizará sozinho. Mas o Internet Explorer é, na realidade, apenas um contêiner das demais tecnologias. O impacto potencial disso foi demonstrado durante a conferência CanSecWest em 2008, quando Shane Macaulay usou uma combinação de vulnerabilidades em Java e Adobe Flash para atacar um Mac. (Havia poucos detalhes no momento da redação desta coluna porque a falha ainda não tinha sido divulgada.) Mas o que digo é que nenhuma dessas tecnologias é um componente interno e, ainda assim, ambas estão disponíveis na maioria dos computadores porque são muito usadas na Internet. É um certo desafio atualizar ambas – cada uma conta com um mecanismo de atualização automático, ainda que nenhum desses mecanismos sejam ativados com muita freqüência.
Além disso, a maioria dos usuários simplesmente não percebe que essas tecnologias estão lá e que precisam ser atualizadas. Em muitos casos, elas foram fornecidas na imagem do OEM no computador, que, para o cliente, é indissociável do sistema operacional. Até onde o usuário final sabe, quando o Windows® Update diz não haver atualizações é porque não há atualizações.
O segundo problema é que os mecanismos de atualização costumam ser mais complicados do que o necessário. Qualquer mecanismo de atualização que não tenha um modo totalmente automático tem poucas chances de ser amplamente usado porque os usuários costumam desconhecer que precisam executar a ferramenta de atualização. Além disso, na maioria dos casos, o usuário deve ser um administrador para instalar as atualizações. E, na pior das hipóteses, o usuário deve ser um administrador para que seja notificado da disponibilidade de uma atualização.
Por fim, é cada vez mais comum que os fornecedores usem tecnologias de atualização de software para implantar um software completamente não-relacionado que o usuário não instalou – barras de ferramentas etc. As tecnologias de atualização de software deixaram de ser projetadas especificamente para implantar atualizações de software e passaram a ser usadas como uma forma de distribuir software adicional.
Dois casos muito claros disso são o serviço Microsoft® Windows Update (mostrado na Figura 1) e o Apple Software Update (mostrado na Figura 2). Tanto a Apple quanto a Microsoft optaram por usar os mecanismos de atualização não apenas para atualizar o software, mas também para implantar um novo software que o usuário não instalou originalmente.
Figura 1 Usando o Windows Update para implantar o Silverlight (Clique na imagem para ampliá-la)
Figura 2 Usando o Apple Software para distribuir o Safari (Clique na imagem para ampliá-la)
No caso da Apple, são oferecidos a você o iTunes e o Safari, mesmo que não tenha o QuickTime instalado. Curiosamente, eles também estão todos selecionados, por padrão.
No caso do Windows Update, o software mais recente implantado usando o serviço de atualização é o Silverlight™. A Microsoft já usou essa técnica para distribuir novo software. A seu favor, pelo menos a Microsoft não marcou a caixa de seleção para instalar o novo software por padrão.
Essa abordagem de distribuição de um novo software por meio de um mecanismo de atualização causa dois problemas para os usuários. Primeiro, muitos acabarão tendo mais software no computador do que quando começaram a usá-lo. Como você sabe, todo software, de qualquer proporção, tem bugs, e alguns desses bugs podem resultar em vulnerabilidades de segurança em potencial. E algumas dessas vulnerabilidades acabarão sendo usadas em alguma forma de ataque. Dessa forma, alguns usuários serão atacados por meio do software do qual não precisam ou sequer usam, implantado no computador por meio de um mecanismo de atualização de software.
Outro efeito é que os usuários podem ter a idéia errada a respeito da importância dos mecanismos de atualização de software. Caso achem que os mecanismos de atualização de software estejam sendo usados para implantar novo software, e não novas atualizações, os usuários podem considerar os mecanismos de atualização um incômodo e deixar de usá-los. Apenas imagine como um usuário deva se sentir depois de ser atacado por meio de uma vulnerabilidade proveniente de um programa que ele jamais usou, mas recebeu por meio de um mecanismo de atualização.
Existem algumas coisas mais perigosas para a integridade e a segurança do ecossistema tecnológico do que usuários que perdem a confiança nas tecnologias que devem mantê-los seguros. Depois que os usuários perderem essa confiança, essas tecnologias começarão a ser rejeitadas e acabarão em desuso. Se as tecnologias críticas à proteção, assim como são as tecnologias de atualização, caírem em desgraça, todo o ecossistema tecnológico estará em risco. É para proteger esse ecossistema que a Microsoft distribui atualizações de segurança mesmo para computadores que estejam executando software reconhecidamente pirata.
Por outro lado, respeito totalmente a interface de atualização limpa e objetiva do Mozilla Firefox, mostrada na Figura 3. Certamente espero que a Mozilla continue evitando a tentação de distribuir software adicional por meio da ferramenta de atualização de software.
Figura 3 A interface de atualização de software do Firefox é uma das mais limpas do mercado (Clique na imagem para ampliá-la)

Mensagens inconsistentes sobre a segurança
Seria legal se o setor, na verdade, definisse uma mesma mensagem para os clientes. Embora a concorrência no setor seja essencial, os clientes precisam saber o que a segurança deve significar para eles. Infelizmente, eles não podem fazer isso caso o setor envie mensagens conflitantes. Francamente, pediria que as empresas fossem consistentes em todas as suas mensagens.
Embora o setor provavelmente jamais vá definir uma mensagem em comum dessas, existe pelo menos a necessidade de haver consistência e honestidade nas mensagens. Dada a importância crítica na garantia de que os clientes continuem confiando nas tecnologias de segurança, o setor precisa fazer melhor como um todo.
Da mesma forma, também precisamos questionar aquilo que realmente agrega valor hoje em dia. Por exemplo, não acho que um software antivírus seja minimamente efetivo ou até mesmo essencial atualmente como o setor pode fazê-lo pensar. Considere o computador que o meu filho de sete anos usa e o computador na minha cozinha. Ambos têm um software antivírus instalado e, há três anos, desde que foram instalados, em nenhum houve sequer um alarme a respeito de algo. Agora, não estou dizendo que devemos abandonar o software antivírus – a esta altura, trata-se de um componente básico do ecossistema tecnológico. Obviamente, se removêssemos subitamente todos os antivírus, os invasores usufruiriam rapidamente disso e começaríamos a ver mais infecções.
O ponto aqui é que o setor precisa pensar em quais recursos são realmente necessários aos usuários nos produtos de segurança, qual é a eficiência desses recursos e como as empresas podem comunicar essas necessidades e valores aos clientes. Da forma como está, atualmente os usuários recebem muito mais mensagens conflitantes, exageradas e normalmente irreais sobre a segurança.

É tudo uma questão de caixas de seleção
Como exemplo, para o setor de software de segurança tudo é uma questão de pacote de aplicativos. Atualmente, o software de segurança está praticamente distribuído com exclusividade como pacotes de recursos aparentemente não-relacionados. E praticamente não há informações sobre quais desses recursos os usuários, de fato, precisam.
Isso parece resultar em uma corrida para saber quem marca mais caixas de seleção. Embora proporcionem uma boa forma de comparação dos produtos, as listas de verificação também dão margem a recursos que não são necessários, até mesmo indesejáveis ou que sequer fazem sentido. As figuras de 4 a 7 mostram quatro listas diferentes de marcas de seleção de quatro fornecedores de software de segurança diferentes. É seguro pressupor que o produto com 17 marcas de seleção seja superior àquele com apenas 10?
Na verdade, acho esses valores muito divertidos. Na Figura 4, há uma marca de seleção no produto por ser de uma versão nova. E o produto na Figura 5 tem uma marca de seleção porque ele, de acordo com o que diz a empresa, "interrompe ataques de sites perigosos". O produto na Figura 6 tem pontos extras porque "protege os filhos online". É claro que ninguém gostaria de ter um produto que deixasse de proteger as crianças. O vencedor, no entanto, recebe o prêmio de criatividade por incluir recursos como, por exemplo, limpeza do Registro e desfragmentação do disco rígido em um conjunto de aplicativos de segurança. O primeiro é raramente necessário e o segundo já é interno do sistema operacional. Na verdade, o sistema operacional Windows OS inclui 15 das 17 marcas de seleção mostradas na Figura 7.
Figura 4 Este produto top de linha tem apenas 10 marcas de seleção (Clique na imagem para ampliá-la)
Figura 5 Este produto com 11 marcas de seleção deve ser melhor (Clique na imagem para ampliá-la)
Figura 6 Calma, este tem 12 marcas de seleção (Clique na imagem para ampliá-la)
Figura 7 Mas este produto com 17 marcas de seleção deve ser a melhor solução, certo? (Clique na imagem para ampliá-la)
Existem algumas tendências perturbadoras aqui. Esses produtos não apenas estão duplicando a funcionalidade já incluída no sistema operacional (ao mesmo tempo em que deixam de mencionar esse fato na literatura de marketing), mas também reclamando coisas absolutamente falsas. Por exemplo, nenhum software de segurança do mundo é capaz de interromper ataques de lugar algum – eles só podem ajudar a impedi-los. Nenhum produto também pode, de fato, ocultar a sua presença dos invasores.
O problema é que os negócios da segurança de software têm se apoiado há muito tempo na proteção dos usuários contra vulnerabilidades possibilitadas por produtos criados por outros fornecedores. Mas esses fornecedores estão melhorando constantemente a proteção de seus clientes e, dessa forma, o setor de software de segurança está vendo seu modelo de negócios ameaçado. Mas o setor de software de segurança certamente tem muito a oferecer, à medida que surgem novos riscos, mas os fornecedores precisam ajudar os clientes a gerenciar riscos, e não apenas proteger contra ameaças que já deixaram de ser ameaças.

Um alerta
Se há algo que eu gostaria que os leitores aproveitassem desta série em três partes é que nós, como setor, precisamos nos ajustar a nossos usuários e clientes. Precisamos explicar os riscos e como os usuários podem resolvê-los. E, por fim, precisamos começar a equipar as pessoas para que elas se protejam.
A minha maior preocupação com todas essas "soluções" é que existe uma séria possibilidade de que elas acabem diminuindo a segurança a longo prazo. Se usuários e até mesmo gerentes de TI realmente acreditarem que essas soluções resolverão riscos de segurança reais, especialmente todos aqueles que reclamam resolver, poderemos perder a oportunidade de ensinar as pessoas a se proteger verdadeiramente.
Tome os sistemas de autenticação por senha como exemplo. Se os usuários acreditarem que os complementos fracos para sistemas de autenticação com base em senha que abordei na primeira parte desta série estão realmente os protegendo, eles poderão relaxar ainda mais e até mesmo usar senhas mais fracas. Na pior das hipóteses que realcei nesta série, a tecnologia efetivamente força o usuário a usar uma segurança mais fraca do que usaria se a nova tecnologia não fosse implementada. Isso significa que, quando os usuários mal-intencionados descobrirem como superar esses sistemas, o que não costuma ser difícil, estaremos em uma situação ainda pior do que estamos agora. Isso poderia resultar em um problema de confiança significativo, o que faz com que as pessoas deixem de lado soluções com valor real.
Precisamos agir agora para proteger o ecossistema tecnológico que sustenta os nossos negócios. É claro que a inovação deve ser incentivada, mas também precisamos tomar muito cuidado para evitar que a inovação pela inovação esteja à frente da análise de risco real. Do contrário, teremos apenas um teatro de segurança, que acabará cedendo próximo a nós.
O mesmo acontece com os demais exemplos que abordei. Tome a inutilidade do colírio para os olhos de segurança, por exemplo. Ele não traz absolutamente nada de bom para os usuários, e sim os apresenta a uma falsa sensação de segurança, além de permitir que os provedores de serviço online sumam com otimizações que efetivamente causam danos aos usuários. Enquanto isso, o custo líquido seria de apenas alguns milhares de dólares, ou talvez dezenas de milhares, nos casos mais graves, para fornecer as informações apropriadas aos usuários. É pedir muito que os fornecedores gastem um pouco em iniciativas para proteger os clientes e seus negócios?
Isso tem muitas implicações. Primeiro, precisamos abordar a percepção de que os usuários são incapazes de tomar decisões e que devem ser impedidos de fazer isso. Eles não são incapazes de aprender a tomar decisões. Afinal, esses usuários tomaram muitas decisões como, por exemplo, a de comprar um computador ou de usar um site, além de adquirir um ou mais dos seus produtos ou serviços. Assim como precisam aprender a dirigir um carro com segurança, as pessoas também devem aprender a usar um computador com segurança. Os invasores estão se concentrando nos usuários domésticos atualmente, e não se pode confiar na tecnologia para tomar decisões. Na verdade, as tecnologias de segurança devem ser sistemas de apoio à tomada de decisão, fornecendo as informações certas para poder permitir que o usuário tome uma decisão inteligente.
Algumas das piores interfaces do usuário do mundo provêm de soluções em segurança porque os aplicativos foram projetados para ocultar qualquer tipo de tomada de decisão do usuário ou para despejar todos os dados disponíveis (de maneira não-amigável) para ele. Nenhuma das abordagens funciona. A primeira coloca os usuários em risco porque a tecnologia não pode depender de uma escolha certa. E se for considerada um obstáculo aos objetivos de negócios do usuário, a tecnologia não durará até ser desabilitada. Já a segunda abordagem falha porque as pessoas não desejam ser incomodadas com endereços IP, IDs de processo e outros dados que não têm significado para elas. Elas só querem saber o que o computador está fazendo com senhas e cartões de crédito. Afinal, é disso que verdadeiramente se trata a segurança.

Jesper M. Johansson é arquiteto de software e trabalha na segurança de software, além de ser editor colaborador da TechNet Magazine. Ele possui Ph.D. em sistemas de informações sobre gerenciamento, tem mais de 20 anos de experiência em segurança e é MVP Microsoft em segurança corporativa. Seu livro mais recente é o Windows Server 2008 Security Resource Kit.


Anotações de campo Inovação que vem de dentro
Romi Mahajan

No livro The Future of Management (O futuro do gerenciamento), o renomado guru em gerenciamento e estrategista de negócios, Gary Hamel, afirma que uma vantagem comparativa de longo prazo vem da criação de uma cultura de inovação que, em si, é um produto da evolução de tecnologias de gerenciamento. Embora entre muitos golpes, o setor inovou e se reinventou incontáveis vezes, mas as empresas ainda estão mergulhadas em uma cultura de gerenciamento hierárquico. Isso impede o surgimento de qualquer cultura realmente inovadora porque não produz retornos suficientes em capital e criatividade humana.
Essas hierarquias são anátemas à inovação; e a criatividade humana, quando livre, é o principal combustível para a vantagem comparativa inovadora de longo prazo. Quando a criatividade humana é limitada, mais de 80% dos trabalhadores não se empenham no que fazem. Hamel acredita que isso não é apenas uma falha empresarial, mas uma questão moral.
No nível mais básico, isso deveria servir de alerta para o setor abolir a hierarquia excessiva. Em essência, o argumento é basicamente antiburocrático. O poder de decisão não deveria ser colocado nas mãos de gerentes inacessíveis e executivos ricos.
Hamel acredita que o gerenciamento, e não TI, é a fonte de inovação. Afinal, se TI pudesse ser comoditizado, como daria uma vantagem comparativa? Se TI não é a fonte de inovação e se ganhos de produtividade, tempo de atividade, confiabilidade, a rápida introdução de novos aplicativos e logon único (e outros) não podem fornecer uma vantagem comparativa, então por que estamos tão preocupados?
Você está disposto a examinar a fundo a alma das suas organizações de TI e empresas como um todo para ver se Hamel pode estar com a razão? Como fazer para que TI não seja considerada uma mercadoria?
Ao incorporar os melhores conceitos de Hamel e usá-los para ajudar as organizações de TI a garantir seu futuro como fontes de inovação, desenvolvi uma teoria chamada "Inovação que vem de dentro". O uso ideal da criatividade humana e do capital é a chave para obter uma vantagem comparativa sustentada, e as grandes organizações devem tornar a inovação uma característica intrínseca de sua função. Elas devem abraçar a comunidade, e não a burocracia. E, acima disso, o gerenciamento muitas vezes se torna um obstáculo para a verdadeira inovação; somente quando ele evolui é que essa inovação se torna possível.
Vejamos as organizações de TI. Os membros da equipe de TI tendem a ser inteligentes, dedicados e ansiosos para causar impacto. Muitas vezes chamados a realizar grandes feitos com poucos recursos, passam a maior parte do tempo executando seu trabalho essencial, o que não deixa muito espaço para a inovação.
Meu conceito "Inovação que vem de dentro" aplica a teoria de Hamel à área de TI. Os princípios mais importantes são:
  • Dada a criatividade inerente da equipe de TI, cabe a nós garantir um modelo de gerenciamento de TI que utilize seu potencial.
  • A inovação vem do processo sistemático e irreverente de idéia-teste-erro-revisão, um processo que é próprio de TI.
  • Quando a comunidade é abraçada como um todo abertamente, surgem soluções técnicas. TI pode dar o exemplo aqui, a começar por si própria!
  • Em TI, as pessoas não são apenas fontes de vantagem comparativa.
  • O gerenciamento de TI precisa deixar de dar atenção apenas ao projeto e ao orçamento e adotar uma nova e empolgante visão baseada no gerenciamento da inovação.
  • TI não deve dizer respeito à contenção de gastos, mas à criação de grandes resultados.
Está pronto para adotar esta teoria? Será que podemos aplicar o conceito da "Inovação que vem de dentro" e demonstrar que as organizações de TI são o melhor lugar para realizar essa maravilhosa experiência? Os gerentes estão prontos a renunciar ao poder e a abraçar suas próprias comunidades? O gerenciamento está pronto a ceder seu poder e abraçar a nossa habilidade coletiva?

Romi Mahajan é gerente geral de marketing da Ascentium Corporation. Antes de ir para a Ascentium, trabalhou por mais de sete anos para a Microsoft, sendo que seu último cargo foi o de diretor de público técnico e marketing de plataforma. Romi tem várias publicações nas áreas de tecnologia, política, economia e sociologia.


Windows Confidential Windows 95 não-conectado
Raymond Chen

Embora os programas de 32 bits para Windows® 95 pudessem usar o compilador médio de 32 bits e os programas de 16 bits pudessem usar o compilador médio de 16 bits, o próprio Windows 95 precisava de um compilador especial, um que compreendesse os mundos de 32 e de 16 bits e pudesse preencher essa lacuna. O Windows 95 também precisava de um vinculador personalizado que compreendesse como colar esses dois tipos de código, além de um vinculador personalizado para VxDs (o formato de driver do Windows 95).
A equipe do Windows 95 dependia da divisão de linguagens e de ferramentas para fornecer esses compiladores e vinculadores especiais. Tenho certeza de que a divisão de linguagens achou estranha esta solicitação: "Você quer que a gente escreva um compilador que faça X, Y e Z e que será usado para compilar apenas duas DLLs em todo o tempo de vida?" Verdade. Mas, afinal, elas eram duas DLLs muito importantes.
Apesar do aparente absurdo da solicitação, a divisão de linguagens e ferramentas conseguiu, e o compilador e o vinculador altamente especializados se tornaram parte do processo de compilação do Windows 95. É claro que o compilador não estava totalmente pronto desde o começo. A equipe do Windows recebeu uma versão preliminar, e atualizações periódicas como novas otimizações foram implementadas e os bugs, corrigidos.
Um dia, a compilação do Windows 95 parou inesperadamente. Um arquivo que costumava demorar segundos para ser vinculado passou a demorar minutos. Mesmo assim, o arquivo foi gerado com êxito, mas demorou uma eternidade. E isso não foi apenas na máquina do desenvolvedor – o problema atingiu todos da equipe inteira. O nosso código acabou encontrando algum caso patológico no vinculador? Nos deparamos com um bug do vinculador?
Depois de algumas depurações, identificamos a origem do problema. A versão mais recente do vinculador apresentava um código de diagnóstico que o pessoal de linguagens se esqueceu de remover antes de entregar o código à equipe do Windows. Essa ferramenta de diagnóstico gravou em log a saída para um arquivo armazenado em um computador presente no escritório de um membro da equipe do compilador. E o computador acabou sendo desligado. (Isso me lembra Leslie Lamport, famoso por descrever um sistema distribuído como sendo o único no qual não é possível realizar nenhum trabalho porque um computador do qual você nunca ouviu falar está desligado.)
Essa versão do vinculador permaneceu em execução tranqüilamente durante algumas semanas. Sempre que alguém tentava vincular a um VxD durante a compilação do Windows 95, era feita uma atualização no arquivo do computador do desenvolvedor. Enquanto esse computador permanecia ligado e conectado à rede, ninguém sequer notava. Mas um dia esse computador foi desligado, e tudo parou.
Uma vez identificado o problema, não demorou muito para que o pessoal do compilador oferecesse à equipe do Windows um patch que removia o código de diagnóstico do vinculador.
Há linhas de visão diferentes nessa história, dependendo de quem a conta. Quando eu conto, a linha é: "e esse desenvolvedor do compilador mais tarde se transferiu para a equipe do Windows e acabou virando o meu chefe". Gosto sempre de recontar essa história como uma forma de incentivo.
No entanto, quando o meu chefe conta a história, a linha é bem diferente: "E eu sequer escrevi aquele código de diagnóstico. Foi um dos meus colegas que, em vez de preencher seu próprio computador com informações de diagnóstico, preencheu o meu!"

O site do Raymond Chen, The Old New Thing, e o livro homônimo tratam do histórico do Windows e da programação Win32. Seu DNA está cheio de códigos inativos.