AWS VPN
Tags: cloud, security, devops, aws
Published: 2023-05-19 13:59:32

**Anotações sobre o AWS VPN para ajudar na preparação das certificações AWS.**

Até o momento as anotações são para as certificações abaixo:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/se0sqtegn424nami6rz8.png)

- [Link oficial](https://aws.amazon.com/pt/vpn/)
- [FAQ](https://aws.amazon.com/pt/vpn/faqs/)

---
##**Anotações gerais**

- Conecta nas instancias que estão na subnet privada
- VPN Server fica na subnet pública
- **Não garante proteção end-to-end**
- Criptografia de dados na Internet
- Proteção de dados In Transit
- Autenticação entre o VPN Gateway e o Gateway do cliente
- Proteção da integridade dos dados na Internet



---



##**AWS VPN Client**
[Documentação oficial](https://aws.amazon.com/pt/vpn/client-vpn/)

**Definição do fornecedor**
_O AWS Client VPN fornece uma solução VPN totalmente gerenciada que pode ser acessada de qualquer lugar com uma conexão à Internet e um cliente compatível com OpenVPN._

**Links importantes**

- [O que é VPN do cliente da AWS?](https://docs.aws.amazon.com/pt_br/vpn/latest/clientvpn-admin/what-is.html)
- [Better Security & Performance with AWS VPN Innovations](https://www.youtube.com/watch?v=fM0tR113t-0)

---
##**AWS Site to Site VPN**
[Documentação oficial](https://aws.amazon.com/pt/vpn/site-to-site-vpn/)

- Acesso seguro da AWS ao On-Premise
- Acesso Público
- Tráfego seguro entre on-premise e AWS
- Para aplicativos distribuídos globalmente, a opção **Accelerated Site-to-Site VPN oferece desempenho ainda maior** ao trabalhar com o **AWS Global Accelerator **para rotear seu tráfego de forma inteligente para o endpoint de rede AWS mais próximo com o melhor desempenho.

**Virtual Private Gateway**
[Documentação oficial](https://docs.aws.amazon.com/pt_br/directconnect/latest/UserGuide/virtualgateways.html)

- **Automático HA em AZ diferente**
- Customer Gateway -> Firewall do lado do cliente

**Links importantes**

- [Better Security and Performance with AWS VPN Innovations](youtube.com/watch?v=FrhVV9nG4UM&t=1s)

---
##**Endpoints do Client VPN**
[Documentação oficial](https://docs.aws.amazon.com/pt_br/vpn/latest/clientvpn-admin/cvpn-working-endpoints.html)

**Definição do fornecedor**
_Todas as sessões de Client VPN são encerradas no endpoint do Client VPN. Você configura o endpoint do Client VPN para gerenciar e controlar todas as sessões de Client VPN._

- Generate certificates - _ca.crt_, _server.crt_ e _client.crt_
- VPN port - 443
- Deve associar o VPN Client a subnet

**Autenticação Client VPN**
[Documentação oficial](https://docs.aws.amazon.com/pt_br/vpn/latest/clientvpn-admin/client-authentication.html)

Tipos de autenticação de cliente:

- Autenticação do Active Directory (baseada no usuário)
- Autenticação mútua (baseada em certificado)
- Single Sign-On (autenticação federada baseada em SAML) (baseado no usuário)

**Commands to Setup ClientVPN Endpoint**
**Step 1: Generate Certificates:**
`sudo yum -y install git
git clone https://github.com/OpenVPN/easy-rsa.git
cd easy-rsa/easyrsa3
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa build-server-full server nopass
./easyrsa build-client-full client1.kplabs.internal nopass`

**Step 2: Copy Certificates to Central Folder:**
`mkdir ~/custom_folder/
cp pki/ca.crt ~/custom_folder/
cp pki/issued/server.crt ~/custom_folder/
cp pki/private/server.key ~/custom_folder/
cp pki/issued/client1.kplabs.internal.crt ~/custom_folder
cp pki/private/client1.kplabs.internal.key ~/custom_folder/
cd ~/custom_folder/`

**Step 3: Upload Certificate to ACM:**
`aws acm import-certificate --certificate fileb://server.crt --private-key fileb://server.key --certificate-chain fileb://ca.crt --region ap-southeast-1`

**Step 4: Copy the Certificates to Laptop:**
`scp ec2-user@IP:/home/ec2-user/custom_folder/client* `

**Step 5: Central Client Configuration File:**
`Following contents to be added to central ovpn configuration file -
<cert>
Contents of client certificate (.crt) file
</cert>
<key>
Contents of private key (.key) file
</key>`

**Step 6: Prepend the DNS Name.**