Opções de VPN na AWS

Francisco Edilton
4 min readAug 17, 2017

--

Periodicamente sou questionado sobre qual a melhor solução de VPN na AWS. IMHO não existe bala de prata. As opções listadas abaixo devem ser consideradas de acordo com o seu projeto. Lembrando que o tráfego de saída da AWS é cobrado. Vamos falar das opções:

1 . VPC VPN: A própria AWS provê um serviço de VPN. Ele faz parte do VPC. Para criar uma VPN você precisa primeiro criar um Customer Gateway. Que é a definição da outra ponta da VPN. A AWS aceita VPN estática e dinâmica. A principal diferença é que na dinâmica vai ter BGP como protocolo de roteamento dinâmico. Assim você não precisa adicionar rotas estáticas nem no lado AWS, nem no lado cliente.

Com o lado do cliente definido, você precisar criar o gateway no lado AWS. Para isso crie um Virtual Private Gateway e anexe ao VPC que você pretende que se comunique com a VPN.

No terceiro passo, você efetivamente cria a conexão VPN:

Caso a VPN seja estática, nesse momento você precisa definir qual rede do lado remoto da VPN, caso seja dinâmica apenas continue com a criação pois as rotas serão propagadas via BGP.

A partir do momento que a VPN ficar disponível (status available) a AWS começara a cobrar. No momento desse post o custo para todas as regiões era US$ 0,05/hora (exceto Tokyo). Ou seja em um mês de 30 dias ficará US$ 36,00.

Fica um custo superior as outras soluções, porém você tem redundância e não precisa cuidar da administração dos servidores de VPN.

Por fim faça download da sua configuração:

Caso o seu firewall não esteja na lista, faça download da configuração genérica:

Acompanhe o status da sua conexão em Tunnel Details:

Caso tenha a VPN não feche, consulte o guia de troubleshooting da AWS: https://aws.amazon.com/premiumsupport/knowledge-center/vpn-tunnel-troubleshooting/

2 . VPN Appliance: Existem diversos appliances de VPN disponíveis no AWS Marketplace. Basta você contratar e configurar de acordo com as instruções do fabricante. Você vai ter o custo da instância contratada mais o custo da imagem (caso ele tenha). Recomendo as soluções da Watchguard e Sophos.

3. Caso você não queira o custo das soluções de mercado, você pode subir uma instância Linux e ter a sua VPN funcionando. Esse normalmente é o menor custo visto que você pode desligar a sua instância e não pagar por licença, ou hora de uso que não seja necessária. Algumas pessoas optam por usar o OpenVPN outras pelo IPSEC. Em geral quando os dois lados da VPN estão sob a mesma administração se usa o OpenVPN. Quando cada lado administra o seu lado, ou há algum tipo de compliance envolvido o IPSEC é o melhor caminho.

Aqui vai o caminho das pedras para instalar StrongSwan (umas das implementações de IPSEC) no Ubuntu:

Instalação de pacotes:

apt-get -y install strongswan moreutils strongswan-ikev1 strongswan-plugin-unity

Como outros servidores vão precisar passar por este, libere o ip_forward:

sysctl -w net.ipv4.ip_forward=1
echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/89-ipforward.conf

Adicione a chave da vpn:

echo "IP_PUBLICO_AMAZON IP_PUBLICO_REMOTO : PSK 'SHARED_KEY'" >> /etc/ipsec.secrets

Crie o arquivo de configuração da VPN

echo "# ipsec.conf - strongSwan IPsec configuration fileconfig setupconn %default
conn NOME_DA_CONEXAO
left=IP_PRIVADO_DA_INSTANCIA
leftid=IP_PUBLICO_DA_INSTANCIA
leftsubnet=REDE_LOCAL
right=IP_PUBLICO_REMOTO
rightsubnet=REDE_REMOTA
ike=aes256-sha1-modp1536
esp=aes256-sha1-modp768

keyingtries=0
ikelifetime=1h
lifetime=1h
dpddelay=30
dpdtimeout=120
dpdaction=restart
authby=secret
auto=start
keyexchange=ikev1
type=tunnel" > /etc/ipsec.conf

Em negrito estão as configurações de ike e esp que devem ser combinadas entre as partes. Feito isso Você precisa liberar o tráfego do IP_PUBLICO_REMOTO no security group

E por último e muito importante, para que essa máquina atue como um concentrador duas ações devem ser tomadas:

1- Desativar Source/Destination Check

2- Criar a rota para a REDE_REMOTA:

Feito só testar a conectividade e usar a conectividade criada.

Espero ter ajudado a esclarecer o assunto. Caso tenha alguma dúvida, escreve aqui em baixo. Caso esteja testando, não esqueça de remover os recursos criados.

--

--