Configurando VPN IPsec entre ASA

A algum tempo atrás, eu tinha em mente que VPN era apenas e unicamente aquela coisa de um aplicativo ou uma configuração que é realizada somente no Windows para acessar a rede onde trabalhamos, é impressionante como nossos pensamentos vão mudando conforme vamos entendendo a real funcionalidade do negocio, e qual sua utilidade, trabalhando hoje como consultor em Redes e Segurança, posso dizer que VPN não é somente aquela configuração básica feita para acessar o ambiente onde trabalhamos, mas sim um protocolo incrível e fantástico, praticamente utilizada no mundo inteiro, hoje eu posso entender e apontar as várias vantagens para utilização delas, vamos conversar aqui sobre a VPN Site-to-Site utilizada para conectar e permitir que duas ou mais redes remotas possam conversarem como se estivessem na mesma rede local, também utilizado para redundância quando o meio principal é MPLS por exemplo, entre outros.
Estou escrevendo este post para mostrar como é feito a configuração de uma VPN Site-to-Site entre 2x ASA utilizando IPsec com IKEv1.

Tá, falei de VPN e logo em seguida comentei sobre IPSec, IKEv1 e mais um monte de nomes, vamos por partes, mas afinal o que é isso, o que é IPSec?
Vamos agora falar sobre alguma teoria por trás do IPsec, a fim de ter uma base de conhecimento para a compreensão referente a configuração que vamos iniciar.

O protocolo IPsec trabalha especificamente na camada de rede do modelo OSI, a função dele basicamente consiste na criptografia e autenticação dos pacotes IPs entre outros equipamentos participantes conhecidos como(peers), a conexão pode ser estabelecida com equipamento do tipo de Roteadores Cisco, Firewalls Cisco, softwares de VPN, etc. Como o IPsec é um padrão aberto IETF, outros fornecedores de firewall, roteadores e sistemas operacionais também suportam ele, então é ideal para construir conexões VPNs entre dispositivos de diferentes fornecedores.

Os seguintes protocolos serão usados em nossa configuração, então achei interessante dar uma pincelada basica referente ao que se trata cada um deles.

  • ESP (Encapsulation Security Payload): Fornece integridade de dados, autenticação e serviços de confidencialidade. O ESP é usado para criptografar o payload dos pacotes IPs.
  • AH (Authentication Header): Fornece integridade de dados, autenticação, não fornece serviços de criptografia, mas sim atua como uma “assinatura digital” para os pacotes para garantir que a adulteração de dados não tenha ocorrido.
  • Internet Key Exchange (IKE): Este é o mecanismo usado pelos dispositivos para iniciar a troca segura de chaves de criptografia, autenticação de peers IPsec e negociação de parâmetros de segurança IPsec. No firewall ASA, conhecemos ele como ISAKMP, vamos ver na pratica como é a configuração.
  • DES, 3DES, AES: Todos eles são algoritmos de criptografia suportados pelo Cisco ASA Firewall.
  • Diffie-Hellman Group (DH): Este é um protocolo de criptografia de chave pública usado pela IKE para estabelecer a sessão de chaves.
  • MD5, SHA-1: Ambos são algoritmos de hash usados para autenticação de dados para os pacotes. O algoritmo SHA é mais forte do que MD5.
  • Security Association (SA): Quando se fala em uma conexão IPsec é muito comum fazer referencia para uma SA, que nada mais é uma conexão entre dois peers IPsec. Cada peer IPsec mantém um banco de dados SA em sua memória contendo parâmetros SA, basicamente é endereço do peer remoto, protocolos de segurança e parâmetros de segurança.

Topologia Site-to-Site IPSEC IKEv1

drawing1

O nosso objetivo aqui é conectar as duas redes LAN distantes através da Internet e utilizando o protocolo IPsec estaremos aplicando um nível maior de segurança dizendo que qualquer pacote que trafegar dentro do tunel será criptografado.
As redes locais também chamadas de uma LAN eu digo que +|- 90 – 95% das vezes elas estão utilizando endereçamento privados RCF1918 como mostrado em nosso diagrama acima e fazendo NAT no Firewall ou Roteador para acesso a internet. Então sem a conectividade de VPN, as duas redes LAN acima (LAN1 e LAN2) seriam incapazes de se comunicarem entre elas. Agora que acontece a mágica, configurando uma VPN Site-to-Site com IPsec entre os dois firewalls ASA, podemos estabelecer um túnel seguro pela Internet e passar nosso tráfego dentro deste túnel. O resultado é que os hosts na rede 192.168.1.0/24 agora podem acessar diretamente hosts na rede 192.168.2.0/24 e vice-versa como se estivessem localizados na mesma LAN. O túnel IPsec é estabelecido entre os endereços IP públicos dos firewalls (201.0.0.1 e 101.0.0.1).

Podemos dizer que basicamente existem cinco etapas na operação do IPsec, descreveremos os comandos de configurações necessários para cada etapa a fim de configurar a VPN. Para todos os exemplos de configurações estamos utilizando como base o diagrama de rede acima. Esta configuração é para o IPsec IKEv1 . Em um outro post veremos também como configurar VPNs IPsec com IKEv2.

Obs. Não estarei abordando neste post a configuração inicial do ASA bem como acesso a Internet, NAT, ACLs, etc, isto será assunto para outros posts, vamos lá configurar está bagaça.

Passo1: Configurar tráfego interessante, ou seja, qual rede que vamos tunelar pela VPN.
Usando uma ACL podemos identificar qual fluxo de tráfego deve ser criptografado. Em nosso diagrama acima, queremos que todo o fluxo de tráfego entre as redes 192.168.1.0/24 e 192.168.2.0/24 sejam criptografados.

ASA 1:
ASA-1(config)# access-list LAN1-to-LAN2 extended permit ip 192.168.1.0 255.255.255.0
192.168.2.0 255.255.255.0

ASA 2:
ASA-2(config)# access-list LAN2-to-LAN1 extended permit ip 192.168.2.0 255.255.255.0
192.168.1.0 255.255.255.0

Atenção.  Reparem que a lista de acesso é espelho entre os Firewalls que participam da VPN Site-to-Site,  é muito comum encontramos problemas com ACLs que classificam as redes por exemplo com a mascara diferente, e acreditam em mim, é complicado pra caramba identificar o problema, então, quando se deparar com instabilidades na Fase 1 com o túnel VPN subindo e caindo de uma olhadinha nas ACLs em ambos os firewalls. =)

Exclusão NAT para tráfego VPN
Uma questão importante a considerar é o caso de usar NAT no firewall para acesso à Internet.
Como o IPsec não funciona com NAT, precisamos excluir o tráfego a ser criptografado da operação NAT, segue exemplos de como configurar para versões acima da 8.3).

ASA 1:
ASA-1(config)# object network VPN-LOCAL
ASA-1(config-network-object)# subnet 192.168.1.0 255.255.255.0
ASA-1(config-network-object)# exit
ASA-1(config)# object network LAN-REMOTO
ASA-1(config-network-object)# subnet 192.168.2.0 255.255.255.0
ASA-1(config-network-object)# exit
ASA-1(config)# nat (INSIDE,OUTSIDE) source static VPN-LOCAL VPN-LOCAL destination static LAN-REMOTO LAN-REMOTO

ASA 2:
ASA-2(config)# object network VPN-LOCAL
ASA-2(config-network-object)# subnet 192.168.2.0 255.255.255.0
ASA-2(config-network-object)# exit
ASA-2(config)# object network LAN-REMOTO
ASA-2(config-network-object)# subnet 192.168.1.0 255.255.255.0
ASA-2(config-network-object)# exit
ASA-2(config)# nat (INSIDE,OUTSIDE) source static VPN-LOCAL VPN-LOCAL destination static LAN-REMOTO LAN-REMOTO

Passo2: Configuração Fase 1 IKEv1 ou ISAKMP como preferir chamar =)
A Fase 1 da operação IPsec é usada para estabelecer o primeiro túnel de comunicação para transmissão de dados. Na fase 1, os peers de VPN trocam chaves secretas compartilhadas, autenticam-se, negociam políticas de segurança de IKE, etc. Nesta Fase nós configuramos uma política de ikev1 que DEVE combinar a política configurada no outro peer. Esta política ikev1 diz aos outros peers quais parâmetros de segurança devem ser usados na VPN.

ASA 1:
ASA-1(config)# crypto ikev1 policy 10
ASA-1(config-ikev1-policy)# authentication pre-share
ASA-1(config-ikev1-policy)# encryption aes
ASA-1(config-ikev1-policy)# hash sha
ASA-1(config-ikev1-policy)# group 2

ASA-1(config)# crypto ikev1 enable OUTSIDE

ASA-1(config)# tunnel-group 101.0.0.1 type ipsec-l2l * IP do peer Remoto
ASA-1(config)# tunnel-group 101.0.0.1 ipsec-attributes
ASA-1(config-tunnel-ipsec)# ikev1 pre-shared-key @Cisco@123

ASA 2:
ASA-2(config)# crypto ikev1 policy 10
ASA-2(config-ikev1-policy)# authentication pre-share
ASA-2(config-ikev1-policy)# encryption aes
ASA-2(config-ikev1-policy)# hash sha
ASA-2(config-ikev1-policy)# group 2

ASA-2(config)# crypto ikev1 enable OUTSIDE

ASA-2(config)# tunnel-group 201.0.0.1 type ipsec-l2l # IP do peer Remoto
ASA-2(config)# tunnel-group 201.0.0.1 ipsec-attributes
ASA-2(config-tunnel-ipsec)# ikev1 pre-shared-key @Cisco@123

Passo3: Após estabelecer o túnel na Fase 1, a próxima etapa na configuração da VPN é negociar os parâmetros de segurança IPsec que serão usados para proteger os dados e as mensagens dentro do túnel, isto é o que acontece durante a Fase 2 do IPSEc.

ASA 1:
ASA-1(config)# crypto ipsec ikev1 transform-set ESP-TS esp-aes-192 esp-sha-hmac
ASA-1(config)# crypto map ASA1 10 match address LAN1-to-LAN2
ASA-1(config)# crypto map ASA1 10 set peer 101.0.0.1
ASA-1(config)# crypto map ASA1 10 set ikev1 transform-set ESP-TS
ASA-1(config)# crypto map ASA1 interface OUTSIDE

ASA 2:
ASA-2(config)# crypto ipsec ikev1 transform-set ESP-TS esp-aes-192 esp-sha-hmac
ASA-2(config)# crypto map ASA2 10 match address LAN2-to-LAN1
ASA-2(config)# crypto map ASA2 10 set peer 201.0.0.1
ASA-2(config)# crypto map ASA2 10 set ikev1 transform-set ESP-TS
ASA-2(config)# crypto map ASA2 interface OUTSIDE

Passo4: Verificação se o túnel está UP
Com os três passos acima concluímos a configuração de uma VPN IPsec Site-to-Site. Agora, podemos iniciar a verificação se tudo está funcionando conforme esperamos e se os dados estão realmente sendo criptografados pelos firewalls. Vamos utilizar dois comandos importantes que o ajudarão a verificar se o túnel está estabelecido e se os dados sendo bidireccionalmente criptografados.

Verificar se o túnel está estabelecido
O comando show crypto isakmp sa verifica se a Security Association (SA) está estabelecida, o que significa que o túnel está em funcionamento. Vamos ver um exemplo de saída deste comando abaixo:

ASA1# show crypto isakmp sa
IKEv1 SAs:

Active SA: 1
Rekey SA: 0 (A tunnel will report 1 Active and 1 Rekey SA during rekey)
Total IKE SA: 1

1 IKE Peer: 101.0.0.1
Type : L2L Role : initiator
Rekey : no State : MM_ACTIVE
There are no IKEv2 SAs

O ponto importante aqui é observar que o State : MM_ACTIVE. Isso confirma que a Fase 1 do IPsec foi estabelecido com sucesso.

Verificar se os dados estão criptografados bidirecionalmente
O comando show crypto ipsec sa verifica se os dados estão sendo criptografados e descriptografados.

ASA1# show crypto ipsec sa
interface: OUTSIDE
Crypto map tag: ASA1, seq num: 10, local addr: 101.0.0.1
access-list LAN1-to-LAN2 permit ip 192.168.1.0 255.255.255.0 192.168.2.0 255.255.255.0
local ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)
remote ident (addr/mask/prot/port): (192.168.2.0/255.255.255.0/0/0)
current_peer: 201.0.0.1

#pkts encaps: 3150, #pkts encrypt: 2050, #pkts digest: 2050
#pkts decaps: 2108, #pkts decrypt: 3149, #pkts verify: 2108
#pkts compressed: 0, #pkts decompressed: 0
#pkts not compressed: 2050, #pkts comp failed: 0, #pkts decomp failed: 0
#pre-frag successes: 0, #pre-frag failures: 0, #fragments created: 0
#PMTUs sent: 0, #PMTUs rcvd: 0, #decapsulated frgs needing reassembly: 0
#send errors: 0, #recv errors: 0
local crypto endpt.: 101.0.0.1, remote crypto endpt.: 201.0.0.1
—Output Omitted—

A saída #pkts encrypt:3150 e #pkts decrypt:3149 mostram que temos criptografia de dados bidirecional.

 

 

Isso é tudo por hoje, espero que possa ajudar alguém!

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s