Aller au contenu

Lab 04 : Connection de VPN

Découvrir comment utiliser le service VPN de Cloud OUTSCALE afin d’établir une connexion sécurisée entre votre réseau d’entreprise et l’un de vos Virtual Private Clouds (VPC) dans le Cloud OUTSCALE.

Une connexion VPN se compose des éléments suivants :

  • Une customer gateway, de votre côté de la connexion. Cette ressource se situe dans votre réseau d’entreprise, et peut être logicielle ou matérielle.
  • Une virtual private gateway, du côté 3DS OUTSCALE de la connexion. Cette ressource est attachée à l’un de vos VPC.
  • Un tunnel VPN, qui relie la customer gateway et la virtual private gateway de manière sécurisée à travers le réseau internet.

VPN connection

Le protocole de chiffrement du tunnel VPN est l’Internet Protocol security (IPsec).

Une fois la connexion VPN créée, le tunnel VPN devient actif dès que du trafic est généré depuis votre côté de la connexion. C’est donc à partir de votre customer gateway que s’établit le tunnel, et non de la virtual private gateway.

Pour assurer redondance et haute disponibilité, vous pouvez créer plusieurs connexions VPN entre votre réseau et un même VPC.

Déploiement d’une instance dans le cloud publique

Section intitulée « Déploiement d’une instance dans le cloud publique »

Afin de pouvoir tester le service connexion VPN fournie par 3DS OUTSCALE on va commencer par créer une instance de VM dans le cloud publique.

  1. Connectez-vous sur le Dashboard cockpit d’OUTSCALE
  2. Provisionner une VM avec les paramètres suivants :
    1. Nom vm-vpn
    2. OMI : Ubuntu 22.04 ami-cd8d714e
    3. Subnet : Laisser cocher cloud public
    4. Security group : Créer un SG autorisant le ping et les connections SSH depuis toutes les IP,
    5. Type : tinav4.c1r1p2
    6. Keypair : créez une nouvelle keypair pour cette VM ou utilisez celle des labs précédents.

Notez l’adesse IP Publique de la VM une fois celle-ci créée et démarée.

lab04-9

  1. Cliquez sur VPN > Client Gateways.
  2. Cliquez sur Créer, la boîte de dialogue CRÉER UNE Client Gateway apparaît.
    1. Donnez lui un nom, par exemple lab4-gateway
    2. Dans le champ BGP ASN, l’Autonomous System Number (ASN) renseignez la valuer adéquat pour votre customer gateway. Celle-ci doit être comprise entre 1 et 4294967295. Tapez la valeur 65000 par exemple.
    3. Dans le champ Adresse IP, tapez l’IP statique de la ressource que vous voulez utiliser comme client gateway. Vous devez utiliser une adresse IPv4. Mettez l’IP publique de votre machine créée auparavant.
  3. Cliquez sur Créer pour valider.
  4. La client gateway est créée et apparaît sur la page.

pdf%

Création d’une Virtual Gateway et attachement au VPC

Section intitulée « Création d’une Virtual Gateway et attachement au VPC »
  1. Cliquez sur VPN > Virtual Gateways.

  2. Cliquez sur Créer. La boîte de dialogue CRÉER UNE VIRTUAL GATEWAY apparaît.

    1. Donnez un nom à votre Virtual Gateway, par exemple lab04-VG
  3. Cliquez sur Créer pour valider.

  4. La virtual gateway est créée et apparaît sur la page.

    pdfwith=60%

  5. Sélectionnez la virtual gateway que vous venez de créer en cochant la case associée.

  6. La virtual gateway est sélectionnée.

  7. Cliquez sur Attacher. La boîte de dialogue ATTACHER VGW-XXXXXXXX apparaît.

  8. Dans la liste VPC, sélectionnez l’ID du VPC du lab02.

  9. Cliquez sur Attacher pour valider.

  10. La virtual gateway est attachée au VPC spécifié.

  1. Cliquez sur VPN > Connexions VPN.

  2. Cliquez sur Créer. La boîte de dialogue CRÉER UNE CONNEXION VPN apparaît.

  3. Sélectionnez les informations suivantes :

    1. Dans la liste Customer gateway, sélectionnez l’ID de la customer gateway que vous avez créé précédemment (lab4-gateway).
    2. Dans la liste Virtual private gateway, sélectionnez l’ID de la virtual private gateway que vous avez créé auparavant (lab04-VG).
    3. Dans la liste Routage, selectionnez le type de routage que vous voulez utiliser. Sélectionnez Statique
  4. Cliquez sur Créer pour valider.

  5. La connexion VPN est créée.

    pdf%

  6. Téléchargez les informations de configuration au format XML qu’on va utiliser dans la suite de cet atelier. Pour cela, sélectionnez la connexion VPN et cliquez sur Configuration.

  7. Visualisez le détail de cette connexion VPN, vous allez constater qu’elle comporte un tunnel. Pour le moment, il est en état DOWN. Profitez-en pour noter l’adresse IP publique (Outside IP).

    lab04-5

Pour tester la connexion VPN, on va installer un client VPN sur la VM créé au début de ce TP, et plus précisément strongswan qui est une implémentation IPSec open source. La plupart des distributions Linux incluent strongswan ou facilitent son installation.

  1. Connetez vous à votre VM placé dans le cloud public:

    Terminal window
    ssh -i /path/to/keypair outscale@<IP_PUBLIC_VM>
  2. Une fois connecté à la VM, installons strongswan:

    Terminal window
    sudo -i
    apt update
    apt install -y strongswan
  3. Récupérez le CIDR de votre réseau avec la commande suivante :

    Terminal window
    ip r

    Cette commande renvoie par exemple

    Terminal window
    default via 10.8.48.3 dev eth0 proto dhcp src 10.8.48.121 metric 100
    10.8.48.0/24 dev eth0 proto kernel scope link src 10.8.48.121 metric 100

    Donc le CIDR de notre réseau client est 10.8.48.0/24. Notez cette valeur.

  4. Créez un fichier de configuration /etc/ipsec.conf pour le client VPN sur la VM abvec le contenu suivant et éditez les détails de la connexion VPN avec l’IP publique de tunnel VPN, dans notre cas, c’est 142.44.57.55

    Terminal window
    # ipsec.conf - strongSwan IPsec configuration file
    # Basic configuration
    config setup
    # strictcrlpolicy=yes
    # uniqueids = no
    # VPN connection definition
    conn test
    auto=start
    left=10.8.48.121
    leftid=171.33.101.48 # l'adresse IP publique de l'instance
    right=142.44.57.55. # l'adresse IP publique de la connexion VPN créée plus haut
    leftsubnet=0.0.0.0/0
    rightsubnet=0.0.0.0/0
    ike=aes256-sha256-modp2048
    keyexchange=ikev2
    authby=psk
    ikelifetime=28800s
    esp=aes256-sha256-modp2048
    keylife=3600s
    type=tunnel
    mobike=no
    compress=no
    installpolicy=no
    mark=42
    dpddelay=30s
    dpdtimeout=90s
    dpdaction=restart
  5. Affichez le fichier de configuration .xml de votre VPN téléchargé précédemment et récupérez la clé partagée (PSK). Par exemple :

    Terminal window
    <pre_shared_key>
    sfIEAe3J2kQhKNfefqhcw8sn9s
    </pre_shared_key>
  6. Créer le fichier /etc/ipsec.secrets avec le contenu suivant :

    Terminal window
    142.44.57.55 : PSK "sfIEAe3J2kQhKNfefqhcw8sn9s"

    Avec :

    • 142.44.57.55 : l’adresse IP du tunnel VPN
    • sfIEAe3J2kQhKNfefqhcw8sn9s : la clé PSK contenu dans le fichier de config
  7. Vérifiez votre configuration IPSEC

    Terminal window
    systemctl enable strongswan --now
  8. Vérifez le status du client VPN strongswan en lancant la commande ipsec statusall, une sortie similaire à celle-ci doit apparaite:

    Terminal window
    ipsec statusall
    Status of IKE charon daemon (strongSwan 5.9.5, Linux 5.15.0-60-generic, x86_64):
    uptime: 4 minutes, since Dec 06 13:08:12 2024
    malloc: sbrk 2179072, mmap 0, used 1362240, free 816832
    worker threads: 11 of 16 idle, 5/0/0/0 working, job queue: 0/0/0/0, scheduled: 4
    loaded plugins: charon aesni aes rc2 sha2 sha1 md5 mgf1 random nonce x509 revocation constraints pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf gmp agent xcbc hmac gcm drbg attr kernel-netlink resolve socket-default connmark stroke vici updown eap-mschapv2 xauth-generic counters
    Listening IP addresses:
    10.8.48.121
    Connections:
    test: 10.8.48.121...142.44.57.55 IKEv2, dpddelay=30s
    test: local: [171.33.101.48] uses pre-shared key authentication
    test: remote: [142.44.57.55] uses pre-shared key authentication
    test: child: 0.0.0.0/0 === 0.0.0.0/0 TUNNEL, dpdaction=restart
    Security Associations (1 up, 0 connecting):
    test[1]: ESTABLISHED 4 minutes ago, 10.8.48.121[171.33.101.48]...142.44.57.55[142.44.57.55]
    test[1]: IKEv2 SPIs: 0f835e441fe6ec05_i* 9ac6268b63e98373_r, pre-shared key reauthentication in 7 hours
    test[1]: IKE proposal: AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/ECP_521
    test{1}: INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: c8e1d69b_i cc18b4fb_o
    test{1}: AES_CBC_256/HMAC_SHA2_256_128, 1680 bytes_i, 0 bytes_o, rekeying in 44 minutes
    test{1}: 0.0.0.0/0 === 0.0.0.0/0
  9. Si la connexion test est UP alors, vous avez réussi !

  1. Dans cockpit, si vous visualisez à nouveau les détails de la connexion, vous devriez avoir le tunnel à l’état UP
    pdf%
  1. Editez la route table myrt associée au subnet mysubnet et ajoutez les routes suivantes :

    • Cible : ID de la virtual private gateway, Destination : CIDR de votre réseau interne (entreprise) 10.0.0.0/16
    • Cible : local, destination : CIDR VPC 172.31.0.0/16
  2. Editez la security group mysg associée à la VM myvm, ajoutez la règle SSH sur le CIDR interne (entreprise) 10.0.0.0/16

  3. Editez la connexion VPN et sous la table Route VPN ajoutez la route suivante :

    • Bloc CIDR de destination : 10.8.67.0/24 (remplacez par le CIDR interne de votre entreprise), source : static
  4. Testez le ping de votre machine vm-vpn vers la VM déployée dans le VPC.

  5. Connectez-vous en SSH depuis la VM vm-vpn vers la VM myvm en utilisant la keypair et l’IP privée.