Comment utiliser AWS VPN pour verrouiller l'accès à vos serveurs
Si vous souhaitez exécuter un serveur dans un sous-réseau privé, vous devrez utiliser un VPN pour vous y connecter. AWS VPN est un service OpenVPN géré qui peut gérer cela pour vous et vous permettre de verrouiller l'accès public à vos instances protégées.
VPN client vs VPN site à site
AWS propose deux types de VPN différents. Le premier, et le plus simple, est le VPN client. Il s'agit d'un service VPN élastique entièrement géré basé sur OpenVPN. Combiné avec un appareil client compatible OpenVPN, cela permet aux utilisateurs d'accéder à votre infrastructure AWS de n'importe où comme s'ils se trouvaient dans le réseau lui-même.
Cela permet à vos employés de se connecter directement aux serveurs dans des sous-réseaux privés, tels que les serveurs de base de données que vous préférez ne pas laisser sur le Web. Vous pouvez également choisir de bloquer SSH sur les serveurs publics à partir de n'importe où qui ne se trouve pas sur le sous-réseau local, ce qui autorisera uniquement l'administration des utilisateurs connectés au VPN.
C'est assez bien et cela fonctionne assez bien pour les grandes charges de travail des entreprises, mais si vous n'avez que quelques personnes qui ont besoin de se connecter, cela peut être assez cher. Le VPN client a deux frais: un tarif fixe pour chaque VPN associé à un sous-réseau et un tarif horaire pour chaque client qui y est connecté. Le tarif forfaitaire est de 75 $ par mois et le tarif par utilisateur est de 0,05 $ par heure. Avec une utilisation modérée de quelques personnes, vous pourriez facilement accumuler plus de 100 $ de frais totaux pour le VPN client. Et, bien sûr, vous encourrez tous les frais de transfert de données standard pour déplacer des données dans AWS et vers Internet.
Tout le VPN client est vraiment un serveur OpenVPN géré, qui est open source. Si vous avez un peu de temps, vous pouvez configurer votre propre serveur OpenVPN sur une instance EC2, ce qui coûtera beaucoup moins cher. Il est assez léger, donc si les frais de 75 $ par mois vous semblent beaucoup, vous pouvez probablement les exécuter sur un t2.micro
par exemple pour une fraction du prix du VPN client.
Le deuxième VPN qu'AWS propose est un VPN de site à site. Plutôt que de connecter plusieurs clients distants, le VPN de site à site connecte votre AWS VPC directement à votre réseau local via un tunnel sécurisé.
Cela vous permet de déplacer des applications sur site vers le cloud et de les connecter directement à votre réseau préexistant, en utilisant le même pare-feu d'entreprise que vous avez en place, et sans changer la façon dont vos utilisateurs accèdent à vos applications. D'une certaine manière, le VPN de site à site étend simplement en toute sécurité votre réseau local dans le cloud, vous permettant d'accéder aux instances EC2 dans le VPC choisi comme si elles se trouvaient sur votre réseau.
Le VPN de site à site est très élastique et prend même en charge les connexions de basculement redondantes si le principal perd la connexion pour une raison quelconque. Le prix est également un peu différent: vous ne payez que 36 $ par mois, par connexion, mais vous devrez payer 0,09 $ par Go de données transférées, en plus des frais de données AWS standard.
Configuration d'un VPN client
Nous allons montrer ici comment configurer un VPN client, car il est le plus polyvalent et le plus utile pour les personnes sans matériel local.
Avant de commencer, vous devrez créer des certificats pour le serveur et chaque client à utiliser. Vous pouvez les générer avec ACM, mais cela nécessite la mise en place d'une autorité de certification privée, ce qui coûte 400 $ par mois. Si vous n’avez pas envie de payer ce coût, vous pouvez les générer en utilisant easy-rsa
de OpenVPN
. Téléchargez et initialisez une nouvelle autorité de certification:
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
Maintenant, générez un certificat client, en remplaçant "client1.domain.tld
"Avec le nom du client et
./easyrsa build-client-full client1.domain.tld nopass
Maintenant, nous devons télécharger les certificats dans ACM pour qu'ils soient utilisables avec Client VPN. Ils sont tous situés dans le pki
dossier, donc cd
là bas:
cd pki
et téléchargez le certificat du serveur à l'aide de cette commande plutôt maladroite, en vous assurant que votre région CLI est définie sur la même région dans laquelle vous créez le VPN client:
aws acm import-certificate --certificate file://issued/server.crt --private-key file://private/server.key --certificate-chain file://ca.crt
Vous pouvez également utiliser le bouton "Importer un certificat" dans ACM, qui vous permettra de coller le contenu de chaque fichier, mais il est plus facile de copier et coller. Importez le certificat client de la même manière:
aws acm import-certificate --certificate file://issued/client1.domain.tld.crt --private-key file://private/client1.domain.tld.key --certificate-chain file://ca.crt
Maintenant, vous pouvez configurer le VPN client. Dans la console de gestion VPC, cliquez sur «Client VPN Endpoints» sous la section «Network (VPN)» dans la barre latérale, et créez un nouveau point de terminaison.
Tout d'abord, vous devrez attribuer au VPN un bloc CIDR qui n'est pas utilisé par votre VPC actuel. Vous pouvez trouver le bloc de votre VPC sous l'onglet "Vos VPC". Par exemple, si vous utilisez le bloc par défaut de 172.31.0.0/16
, vous pouvez définir Client VPN sur 172.16.0.0/16
, qui ne se chevauchent pas.
Ensuite, collez l'ARN de votre certificat de serveur principal (vous pouvez le trouver dans la console ACM), cochez «Utiliser l'authentification mutuelle» et collez l'ARN pour les certificats clients. Vous pouvez utiliser ce certificat client pour plusieurs utilisateurs, mais si vous souhaitez une meilleure façon de gérer l'accès, vous pouvez plutôt utiliser l'authentification Active Directory avec AWS Directory Service.
C'est tout ce qui est nécessaire, alors allez-y et cliquez sur créer. Vous serez facturé dès sa création.
Vous devrez associer ce VPN à un VPC et un sous-réseau particuliers. Dans l'onglet «Associations», cliquez sur «Associer», puis sélectionnez le VPC et le sous-réseau que vous souhaitez utiliser.
Si vous utilisez les valeurs par défaut, vous aurez un VPC disponible et plusieurs sous-réseaux pour chaque zone de disponibilité. Sélectionnez le sous-réseau de zone de disponibilité que vous utilisez actuellement.
Sous "Autorisation", vous souhaiterez ajouter une règle d'entrée permettant d'accéder au sous-réseau auquel vous avez associé le VPN. Il peut s'agir d'un bloc CIDR plus spécifique ou de l'ensemble du sous-réseau. Si vous utilisez AD, vous pouvez également limiter l'accès à un groupe particulier.
Dans la console VPC, cliquez sur «Télécharger la configuration du client». Cela va télécharger un .ovpn
fichier que vous pouvez utiliser dans n'importe quel client OpenVPN pour vous connecter au VPN. Cependant, ce fichier provient uniquement d'AWS avec le certificat CA du serveur, vous devrez donc l'ouvrir et le coller dans /issued/client1.domain.tld.crt
cert dans un
bloc, et /private/client1.domain.tld.key
fichier clé dans un
bloquer. Votre .ovpn
Le fichier ressemblera à ceci:
client dev tun proto udp asdfa.cvpn-endpoint-0dbc42be17e0f2c68.prod.clientvpn.us-east-1.amazonaws.com 443 distant nom d'hôte distant aléatoire resolv-retry infinite nobind persist-key persist-tun serveur distant-cert-tls chiffrement AES-256-GCM verbe 3----- COMMENCER LE CERTIFICAT ----- CLÉ CA ----- CERTIFICAT FINAL ----- ----- COMMENCER LE CERTIFICAT ----- FICHIER CRT CLIENT ----- CERTIFICAT FINAL ----- ----- COMMENCER LA CLÉ PRIVÉE ----- FICHIER CLÉ CLIENT ----- FIN CLÉ PRIVÉE ----- reneg-sec 0
Vous souhaiterez également ajouter une chaîne aléatoire au "remote cvpn-endpoint-xxxxxx
”, Comme ceci:
remote asdfa.cvpn-endpoint-xxxxxx....