Como: Usar o IPSec para fornecer comunicação segura entre dois servidores

Atualizado em: 25 de Maio de 2004
Nesta página
ObjetivosObjetivos
Aplica-se aAplica-se a
Como usar este móduloComo usar este módulo
ResumoResumo
O que é necessário saberO que é necessário saber
Criar um filtro IPCriar um filtro IP
Criar ações de filtroCriar ações de filtro
Criar regrasCriar regras
Exportar a diretiva IPSec para o computador remoto Exportar a diretiva IPSec para o computador remoto
Atribuir diretivasAtribuir diretivas
Verificar o funcionamentoVerificar o funcionamento
Recursos adicionaisRecursos adicionais

Objetivos

Use este módulo para:

Configurar um canal de comunicação segura entre dois computadores Microsoft®
Windows® 2000 Server usando o IPSec.

Início da páginaInício da página

Aplica-se a

Este módulo aplica-se aos seguintes produtos e tecnologias:

Windows 2000 Server (com Service Pack 3)

Monitor de rede Microsoft

Microsoft .NET Framework versão 1.0 (com Service Pack 2) e versões posteriores

Microsoft Visual Studio® 1.0 .NET e versões posteriores

Microsoft Visual C#® .NET

Microsoft SQL Server– 2000 (com Service Pack 2) e versões posteriores

Início da páginaInício da página

Como usar este módulo

Para obter o máximo deste módulo:

Você deve ter dois computadores executando o sistema operacional Windows 2000 Server e configurados da seguinte maneira:

Endereços IP fixos.

SQL Server 2000 no computador do servidor de banco de dados com o banco de dados Northwind de exemplo instalado.

Você deve ter experiência em programação usando Visual C# .NET.

Você deve ter experiência no uso do ambiente de desenvolvimento Visual Studio .NET.

Você deve ter experiência na configuração do Windows 2000 Server usando as Ferramentas Administrativas do Windows.

Você deve ter experiência no uso da ferramenta Monitor de Rede.

Leia o módulo 4 "Comunicações seguras". Ele fornece uma visão geral dos problemas associados aos canais de comunicação segura e uma introdução ao IPSec.

Início da páginaInício da página

Resumo

O IPSec (segurança de protocolo de Internet) é um mecanismo de camada de transporte por meio do qual é possível garantir a confidencialidade e a integridade das comunicações com base em TCP/IP entre computadores. O IPSec também oferece suporte à autenticação com base em computadores. Esses recursos tornam o IPSec ideal para proporcionar um canal de comunicação segura entre computadores que seja transparente para todos os aplicativos.

Este módulo descreve como configurar um canal de comunicação segura entre dois computadores usando o IPSec.

Início da páginaInício da página

O que é necessário saber

O IPSec pode ser usado para proteger os dados transmitidos entre dois computadores, como, por exemplo, um servidor de aplicativos e um servidor de banco de dados. O IPSec torna-se completamente transparente para os aplicativos porque os serviços de criptografia, integridade e autenticação são implementados no nível de transporte. Os aplicativos continuam a se comunicar uns com os outros, da maneira habitual, usando as portas TCP e UDP.

Usando o IPSec, você pode:

Agregar confidencialidade às mensagens, criptografando todos os dados transmitidos entre dois computadores.

Proporcionar integridade às mensagens transmitidas entre dois computadores (sem criptografar os dados).

Proporcionar autenticação mútua entre dois computadores. Por exemplo, você pode ajudar a proteger um servidor de banco de dados estabelecendo uma diretiva que permita enviar solicitações somente a partir de um determinado computador cliente (por exemplo, um servidor de aplicativo ou um servidor Web).

Restringir quais computadores podem se comunicar entre si. Pode também restringir a comunicação com protocolos IP e portas TCP/UDP específicos.

Este módulo mostra como proteger o canal de comunicação entre um servidor de aplicativos e um servidor de banco de dados executando o SQL Server 2000. O servidor de aplicativos usa a biblioteca de rede cliente TCP/IP recomendada para conectar-se ao SQL Server e usa a porta TCP padrão 1433 do SQL Server. A configuração é mostrada na Figura 1.

Configuração da solução do módulo Como

Figura 1
Configuração da solução do módulo Como

Este módulo descreve como usar uma diretiva simples do IPSec para aplicar o seguinte:

Permitir comunicações com o SQL Server apenas do servidor de aplicativos usando o protocolo TCP através da porta 1433.

Ignorar todos os outros pacotes IP, inclusive ICMP (ping).

Criptografar todos os dados transmitidos entre os dois computadores para garantir a confidencialidade.

As vantagens dessa abordagem são:

A confidencialidade de dados é fornecida a todos os dados transmitidos entre os dois computadores.

A superfície de ataque no SQL Server é significativamente reduzida. Os únicos pontos de ataque restantes são fazer logon interativamente no servidor de banco de dados ou obter o controle do servidor de aplicativos e tentar atacar o SQL Server através da porta TCP 1433.

A diretiva IPSec é extremamente simples de definir e implementar.

Esta diretiva apresenta as seguintes desvantagens:

O SQL Server não pode se comunicar com os controladores de domínio e como resultado:

A diretiva de grupo não pode ser aplicada (o servidor de banco de dados deve ser um servidor autônomo).

A autenticação do Windows entre o servidor de aplicativos e o servidor de banco de dados requer contas locais sincronizadas (com o mesmo nome de usuário e senha) nos dois computadores.

Não é possível usar métodos mais robustos de aplicação do IPSec (Windows 2000 padrão / Kerberos).

O SQL Server não conseguirá se comunicar com outros computadores, inclusive servidores DNS.

A abordagem apresentada neste módulo usa autenticação de chave pré-compartilhada, que não é recomendada para cenários de produção. Os sistemas de produção devem usar certificados ou a autenticação de domínio do Windows 2000. As diretivas do IPSec que usam segredos pré-compartilhados são apropriadas para uso apenas nos ambientes de desenvolvimento ou de teste.

Os dois computadores devem ter endereços IP estáticos.

Observações

Uma diretiva IPSec consiste em um conjunto de filtros, ações de filtro e regras.

Um filtro consiste em:

Um endereço IP de origem ou um intervalo de endereços.

Um endereço IP de destino ou um intervalo de endereços.

Um protocolo IP, como TCP, UDP ou "any".

Portas de origem e de destino (apenas para TCP ou UDP).

Os filtros também podem ser espelhados em dois computadores. Um filtro espelhado aplica a mesma regra no computador cliente e no servidor (com os endereços de origem e de destino invertidos).

Uma ação de filtro especifica ações a serem tomadas quando um determinado filtro é chamado. Pode ser uma das seguintes:

Permitir. O tráfego não é protegido. Ele pode ser enviado e recebido sem intervenção.

Bloquear. O tráfego não é permitido.

Negociar segurança. Os pontos de extremidade devem concordar e, em seguida, usar um método seguro de comunicação. Se eles não puderem concordar quanto a um método, a comunicação não ocorrerá. Se a negociação falhar, é possível especificar se será permitida a comunicação não segura ou se toda comunicação deverá ser bloqueada.

Uma regra associa um filtro a uma ação de filtro.

Uma diretiva espelhada é aquela que aplica regras a todos os pacotes com o inverso exato dos endereços IP de origem e de destino especificados. Uma diretiva espelhada é criada neste módulo.

Início da páginaInício da página

Criar um filtro IP

Para criar um novo filtro IP no computador do servidor de banco de dados

1.

Faça logon no servidor de banco de dados como administrador.

2.

Inicie o snap-in MMC (Console de Gerenciamento Microsoft) da Diretiva de Segurança Local a partir do grupo de programas Ferramentas Administrativas.

3.

No painel à esquerda, clique com o botão direito do mouse em Diretivas de Segurança IP na Máquina Local e clique em Gerenciar listas de filtros IP e ações de filtro.
Você verá que duas listas de filtros já estão definidas para todo o tráfego ICMP e todo o tráfego IP.

4.

Clique em Adicionar.

5.

Na caixa de diálogo Lista de Filtros IP, digite Porta SQL no campo Nome.

6.

Clique em Adicionar e clique em Avançar para sair da caixa de diálogo de boas-vindas do Assistente de Filtro IP.

7.

Na caixa de diálogo Origem do Tráfego IP, marque Um Endereço IP Específico na lista suspensa Endereço de origem e digite o endereço IP do computador do servidor de aplicativos.

8.

Clique em Avançar.

9.

Na caixa de diálogo Destino do Tráfego IP, marque Um Endereço IP Específico na lista suspensa Endereço de destino e digite o endereço IP do computador do servidor de banco de dados.

10.

Clique em Avançar.

11.

Na caixa de diálogo Tipo de Protocolo IP, marque TCP como o tipo do protocolo e clique em Avançar.

12.

Na caixa de diálogo Porta do Protocolo IP, marque De qualquer porta e, em seguida, Para esta porta. Digite 1433 como o número da porta.

13.

Clique em Avançar e, em seguida, em Concluir para fechar o assistente.

14.

Clique em Fechar para fechar a caixa de diálogo Lista de Filtros IP.

Início da páginaInício da página

Criar ações de filtro

Este procedimento cria duas ações de filtro. A primeira será usada para bloquear todas as comunicações de computadores especificados e a segunda para aplicar o uso de criptografia entre computadores do servidor de aplicativos e do servidor de banco de dados.

Para criar ações de filtro

1.

Clique na guia Gerenciar Ações de Filtro.
Observe que já estão estabelecidas várias ações predefinidas.

2.

Clique em Adicionar para criar uma nova ação de filtro.
Nas próximas etapas, você criará uma ação de bloqueio que poderá ser usada para bloquear todas as comunicações dos computadores selecionados.

3.

Clique em Avançar para ir à caixa de diálogo inicial do Assistente de Ação de Filtro.

4.

No campo Nome, digite Bloquear e clique em Avançar.

5.

Na caixa de diálogo Opções Gerais da Ação de Filtro, marque Bloquear e clique em Avançar.

6.

Clique em Concluir para fechar o assistente.

7.

Clique em Adicionar para reiniciar o Assistente da Ação de Filtro.
Nas próximas etapas, você criará uma ação de filtro para forçar o uso de criptografia entre computadores do servidor de aplicativos e do servidor de banco de dados.

8.

Clique em Avançar para ir para a caixa de diálogo inicial do Assistente de Ação de Filtro.

9.

No campo Nome, digite Requer Alta Segurança e clique em Avançar.

10.

Marque Negociar segurança e clique em Avançar.

11.

Marque Não se comunicar com computadores que não dêem suporte para segurança IP e clique em Avançar.

12.

Marque Personalizado e clique em Configurações.

13.

Verifique se a caixa de seleção Integridade e criptografia de dados (ESP) está marcada.

14.

Marque SHA1 na lista suspensa Algoritmo de integridade.

15.

Marque 3DES na lista suspensa Algoritmo de criptografia.

16.

Marque as duas caixas de seleção no grupo Configurações de Chave de Sessão para gerar uma nova chave a cada 100.000 Kb e 3.600 segundos respectivamente.

17.

Clique em OK para fechar a caixa de diálogo Configurações Personalizadas do Método de Segurança e clique em Avançar.

18.

Marque a caixa de seleção Editar Propriedades e clique em Concluir.

19.

Desmarque a caixa de seleção Aceitar comunicação não protegida, mas sempre responder usando o IPSec.

20.

Marque a caixa de seleção Sigilo Total na Transferência de Chave da Sessão e clique em OK.

21.

Clique em Fechar para fechar a caixa de diálogo Gerenciar listas de filtros IP e ações de filtro.

Início da páginaInício da página

Criar regras

Este procedimento cria duas novas regras que serão usadas para associar o filtro criado no primeiro procedimento às duas ações de filtro criadas no procedimento anterior.

Para criar regras

1.

No painel à esquerda, clique com o botão direito do mouse em Diretivas de Segurança IP na Máquina Local e clique em Criar Diretiva de Segurança IP.

2.

Clique em Avançar para ir para a caixa de diálogo inicial do Assistente de Diretiva de Segurança IP.

3.

No campo Nome, digite Proteger SQL e clique em Avançar.

4.

Desmarque a caixa de seleção Ativar a regra de resposta padrão e clique em Avançar.

5.

Deixe a caixa de seleção Editar propriedades marcada e clique em Concluir.

6.

Clique em Adicionar para iniciar o Assistente de Regra de Segurança.

7.

Clique em Avançar para sair da caixa de diálogo inicial do Assistente de Regra de Segurança.

8.

Clique em Esta regra não especifica um encapsulamento e clique em Avançar.

9.

Clique em Todas as conexões de rede e clique em Avançar.

10.

Clique em Usar esta seqüência para proteger a troca de chaves (chave pré-compartilhada).

11.

Digite MySecret como uma chave "secreta" na caixa de texto.

Observação: Esta chave deve ser a mesma para os dois computadores para que eles se comuniquem com êxito. Você deve usar um número aleatório longo, mas para este módulo, "MySecret" é suficiente.

12.

Clique em Avançar.

13.

Marque a opção Porta SQL.

Observação: É necessário clicar no círculo (botão de opção) e não no texto da opção a ser selecionada.

14.

Clique em Avançar.

15.

Marque a opção Exigir Segurança e clique em Avançar.

16.

Clique em Concluir para retornar à caixa de diálogo Proteger Propriedades do SQL.

17.

Clique em Adicionar para reiniciar o Assistente de Regra de Segurança e clique em Avançar para sair da caixa de diálogo inicial.

18.

Clique em Esta regra não especifica um encapsulamento e clique em Avançar.

19.

Clique em Todas as conexões de rede e clique em Avançar.

20.

Na caixa de diálogo Método de Autenticação, deixe a opção Padrão do Windows 2000 (protocolo V5 Kerberos) marcada e clique em Avançar.

Observação: Esta regra especificará a ação de filtro Bloquear, então nenhuma autenticação será necessária.

21.

Na caixa de diálogo Lista de Filtros IP, clique em Todo Tráfego IP e clique em Avançar.

22.

Na caixa de diálogo Ação de Filtro, marque a opção Bloquear e clique em Avançar.

23.

Clique em Concluir.

24.

Clique em Fechar para fechar a caixa de diálogo Propriedades de Proteger SQL.

Início da páginaInício da página

Exportar a diretiva IPSec para o computador remoto

A diretiva IPSec criada no servidor de banco de dados deve, agora, ser exportada e copiada para o computador do servidor de aplicativos.

Para exportar a diretiva IPSec para o computador do servidor de aplicativos

1.

No painel à esquerda, clique com o botão direito do mouse no nó Diretivas de Segurança IP na Máquina Local, aponte para Todas as Tarefas e clique em Exportar Diretivas.

2.

No campo Nome, digite Proteger SQL e clique em Salvar para exportar o arquivo para o disco rígido local.

3.

Copie o arquivo .ipsec para o servidor de aplicativos ou disponibilize-o usando um compartilhamento de arquivo.

Importante: Como o arquivo exportado da diretiva contém uma chave pré-compartilhada em texto não criptografado, o arquivo deve ser protegido apropriadamente. Ele não deve ser armazenado no disco rígido de nenhum computador.

4.

Faça logon no servidor de aplicativos como administrador e inicie o snap-in MMC da Diretiva de Segurança Local.

5.

Selecione e clique com o botão direito do mouse em Diretivas de Segurança IP na Máquina Local, aponte para Todas as Tarefas e clique em Importar Diretivas.

6.

Procure o arquivo .ipsec exportado anteriormente e clique em Abrir para importar a diretiva.

Início da páginaInício da página

Atribuir diretivas

Uma diretiva IPSec deve ser atribuída antes de se tornar ativa. Observe que apenas uma diretiva de cada vez pode estar ativa em um computador específico.

Para atribuir a diretiva Proteger SQL nos computadores do servidor de aplicativos e do servidor de banco de dados

1.

No computador do servidor de aplicativos, clique com o botão direito do mouse na diretiva Proteger SQL importada recentemente e clique em Atribuir.

2.

Repita a etapa anterior no computador do servidor de banco de dados.
A diretiva espelhada está, agora, atribuída nos dois computadores.

As diretivas asseguram que apenas o servidor de aplicativos possa se comunicar com o servidor de banco de dados. Além disso, apenas conexões TCP usando a porta 1433 são permitidas e todo o tráfego transmitido entre os dois computadores é criptografado.

Início da páginaInício da página

Verificar o funcionamento

Este procedimento usa o Monitor de Rede para verificar se os dados transmitidos entre o servidor de aplicativos e o servidor de banco de dados estão criptografados.

Para verificar o funcionamento

1.

No computador do servidor de aplicativos, use o Visual Studio .NET para criar um novo aplicativo de console C# chamado SQLIPSecClient.

2.

Copie o código a seguir para o arquivo class1.cs substituindo todo o código existente.

Observação: Substitua o endereço IP na seqüência de conexões pelo endereço IP do servidor de banco de dados.

using System; 
using System.Data; 
using System.Data.SqlClient; 
namespace SQLIPSecClient 
{ 
  class Class1 
  { 
    [STAThread] 
    static void Main(string[] args) 
    { 
      // Replace the IP address in the following connection string with   
      the IP 
      // address of your database server 
      SqlConnection conn = new SqlConnection( 
        "server=192.168.12.11;database=NorthWind;Integrated Security= 
        'SSPI'"); 
      SqlCommand cmd = new SqlCommand( 
                              "SELECT ProductID, ProductName FROM  
                              Products"); 
      try 
      { 
        conn.Open(); 
        cmd.Connection = conn; 
        SqlDataReader reader = cmd.ExecuteReader(); 
        while (reader.Read()) 
        { 
         Console.WriteLine("{0} {1}",  
                     reader.GetInt32(0).ToString(),  
                     reader.GetString(1) ); 
        } 
        reader.Close(); 
      } 
      catch( Exception ex) 
      { 
      } 
      finally 
      { 
        conn.Close(); 
      } 
    } 
  } 
} 

3.

No menu Build, clique em Build Solution.

4.

Para que a autenticação do Windows seja bem-sucedida entre os dois computadores, é necessário duplicar a conta com a qual você fez logon interativamente no computador do aplicativo, no computador do servidor de banco de dados. Verifique se o nome do usuário e a senha correspondem.

Também é necessário usar o SQL Server Enterprise Manager para criar um logon para a conta criada recentemente e adicionar um novo usuário para este logon ao banco de dados Northwind.

5.

Cancele temporariamente a atribuição da diretiva IPSec do SQL Seguro em ambos os computadores:

1.

Inicie a opção Configurações Locais de Segurança no computador do servidor de aplicativos.

2.

Clique em Diretivas de Segurança IP na Máquina Local.

3.

No painel à direita, clique com o botão direito do mouse em Proteger SQL e clique em Cancelar atribuição.

4.

Repita as Etapas a – c no computador do servidor de banco de dados.

6.

No computador do servidor de banco de dados, clique em Monitor de Rede no grupo de programas Ferramentas Administrativas.

Observação: Uma versão limitada do Monitor de Rede está disponível com o Windows 2000 Server. Uma versão completa está disponível com o Microsoft SMS.

Se o Monitor de Rede não estiver instalado, vá para Adicionar ou Remover Programas no Painel de controle, clique em Adicionar ou Remover Componentes do Windows, marque Ferramentas de Gerenciamento e Monitoramento na lista Componentes do Windows, clique em Detalhes e marque Ferramentas de Monitoria de Rede. Clique em OK e, em seguida, em Avançar para instalar a versão limitada do Monitor de Rede. Um CD do Windows 2000 Server poderá ser solicitado.

7.

No menu Capturar, clique em Filtro para criar um novo filtro configurado para exibir o tráfego de rede TCP/IP transmitido entre o servidor de aplicativos e o servidor de banco de dados.

8.

Clique no botão Iniciar Captura.

9.

Retorne ao computador do servidor de aplicativos e execute o aplicativo do console de teste. Uma lista de produtos do banco de dados Northwind deve ser exibida na janela do console.

10.

Retorne ao servidor de banco de dados e clique no botão Parar e Visualizar a Captura no Monitor de Rede.

11.

Clique duas vezes no primeiro quadro capturado para exibir os dados capturados.

12.

Role pelos quadros capturados. Você deve ver a instrução SELECT em texto não criptografado seguida por uma lista de produtos recuperados do banco de dados.

13.

Atribua a diretiva IPSec de Proteger SQL a ambos os computadores:

1.

Inicie a opção Configurações Locais de Segurança no computador do servidor de aplicativos.

2.

Clique em Diretivas de Segurança IP na Máquina Local.

3.

No painel à direita, clique com o botão direito do mouse em Proteger SQL e clique em Atribuir.

4.

Repita as Etapas a – c no computador do servidor de banco de dados.

14.

No Monitor de Rede, feche a janela de captura.

15.

Clique no botão Iniciar Captura e, em seguida, clique em Não na caixa de mensagem Salvar Arquivo.

16.

Retorne ao computador do servidor de aplicativo e execute o aplicativo do console de teste mais uma vez.

17.

Retorne ao computador de servidor de banco de dados e clique em Parar e Visualizar a Captura no Monitor de Rede.

18.

Confirme se os dados agora estão ininteligíveis (porque estão criptografados).

19.

Feche o Monitor de Rede.

Início da páginaInício da página

Recursos adicionais

Para obter mais informações sobre o IPSec, consulte "IP Security and Filtering" no TechNet em:http://www.microsoft.com/resources/documentation/Windows/XP/all/reskit/en-us/Default.asp?url=/resources/documentation/Windows/XP/all/reskit/en-us/prcc_tcp_erqb.asp.

Para obter mais informações sobre o Monitor de Rede, consulte a seção "Network Monitor" do Microsoft Platform SDK no MSDN em: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmon/netmon/network_monitor.asp.


Início da páginaInício da página