VPN SSL autogéré sur NGP

From Cloud Avenue
Jump to navigation Jump to search

La solution

La solution retenue sur NGP pour le déploiement de tunnel SSL gratuit est basée sur OpenVPN Access Server.

La solution est déployée et maintenue par le client dans son tenant. Elle permet gratuitement la connexion simultanée de deux utilisateurs. Plus de connections simultanées peuvent être autorisées via une souscription payante sur le site officiel d'OpenVPN Access Server.

La présente page wiki est fournie à titre indicatif et dans le but d'aider à la configuration d'OpenVPN Access Server. La solution est sous l'entière responsabilité du client pour ce qui est de sa sécurisation et son exploitation.

Prérequis

Vous devez posséder un tenant avec un vDC opérationnel et une passerelle Edge associée. Vous aurez également besoin d'une IP publique, à commander via l'Espace Client Cloud.

Si vous souhaitez utiliser un FQDN pour accéder à la console d'administration et au VPN, il vous faudra l'accès à la zone DNS du domaine idoine. De la même façon si vous souhaitez protéger le portail web d'OpenVPN-AS par un certificat signé, il vous faudra fournir ce dernier.

La VM hébergeant la solution tournera sous Debian 11 et nécessitera une simple IP privée. Elle peut être déployée dans un réseau existant ou dédié du vDC.

Déploiement de la solution

Configuration réseau du vDC

  • Commandez via l'Espace Client Cloud une passerelle Edge associée au vDC où vous souhaitez déployer OpenVPN. Notez que les clients connectés à ce serveur OpenVPN pourront accéder à tous les réseaux que vous souhaitez autoriser et qui sont présents dans le vDC group de la passerelle Edge
  • Commandez via l'Espace Client Cloud une IP publique et attribuez-la à la passerelle Edge (cf. capture d'écran ci-dessous)

Screen ippub.png

  • Le cas échéant, configurer un nouveau réseau pour y connecter la VM hébergeant le serveur OpenVPN (lien : Réseau d'organisation (NGP)). Ce réseau doit être acheminé via la passerelle Edge créée ci-dessus. Un pool d'IP et des serveurs DNS peuvent être associés à la passerelle Edge afin de simplifier la configuration de la VM OpenVPN par la suite
  • Configurer une règle de NAT Source (SNAT) pour permettre à la future VM d'accéder à Internet (Configurer le NAT (NGP))

NetRules.png

  • Configurer une règle de NAT Destination (DNAT) pour permettre aux clients depuis Internet d'accéder à la future VM (Configurer le NAT (NGP)). Utiliser pour ce faire l'IP publique commandée plus tôt.

Openvpn dnat.png

  • Créer deux profils de port d'application
    • Se rendre sur la console technique sur la passerelle Edge créer plus tôt, sous Sécurité dans "Profils de port d'application"
    • Un profil 'openvpn' sur les ports TCP/443, TCP/943 et UDP/1194
    • Un profil 'ssh_custom' sur le port TCP/2222

Profil openvpn.png

Profile ssh.png

  • Configurer le pare-feu de la passerelle Edge (Pare-Feu) :
    • Autoriser l'ip privée de la future VM vers 'tous' sur les protocoles DNS, DNS-UDP, HTTP, HTTPS, ICMP ALL
    • Autoriser 'tous' vers l'ip privée de la future VM sur le profil de port 'ssh' créé plus tôt
    • Autoriser 'tous' vers l'ip privée de la future VM sur le profil de port 'openvpn' créé plus tôt

Openvpn fwrules.png

Déploiement de la VM

  • Déployer une nouvelle VM
    • OS : Debian 11 non managé
    • Une carte réseau dans le réseau créé plus tôt
    • Utiliser l'adresse IP utilisée pour la configuration des NAT et du pare-feu (via le pool d'IP si configuré lors de la création du réseau, sinon configurer la VM manuellement)
    • S'assurer que la VM a bien accès à Internet et peut résoudre les requêtes DNS via un resolver public

Configuration de la VM

Configuration de base

  • Se connecter à la VM à l'aide de la console vCD
  • Mettre à jour les dépôt logiciels
apt update
  • Mettre à jour les paquets existant
apt upgrade
  • Installer le paquet permettant de passer le clavier en français (la commande 'loadkeys fr' deviendra alors disponible pour permettre un plus simple passage au clavier français en console)
apt install console-data
  • Configurer l'heure (sélectionner Europe puis Paris)
dpkg-reconfigure tzdata 
  • Installer les dépôts d'OpenVPN et mettre à jour le cache de dépôts
wget https://as-repository.openvpn.net/as-repo-public.asc -qO /etc/apt/trusted.gpg.d/as-repository.asc
echo "deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/as-repository.asc] http://as-repository.openvpn.net/as/debian bullseye main">/etc/apt/sources.list.d/openvpn-as-repo.list
apt update

Création de l'utilisateur administrateur

  • Créer un nouvel utilisateur admin
useradd -m adminvpn
passwd adminvpn
usermod -aG sudo adminvpn
chsh adminvpn -s /usr/bin/bash

Sécurisation de l'accès distant

  • Procéder à une première sécurisation de l'accès SSH
nano /etc/ssh/sshd_config

Décommenter la ligne "#Port 22" et la changer pour "Port 2222" et changer "PermitRootLogin yes" en "PermitRootLogin no"

En dessous ajouter la ligne "AllowUsers adminvpn"

service sshd restart
  • Se connecter en SSH en tant que l'utilisateur adminvpn et confirmer que tout est OK (connexion OK, shell fonctionnel et accès sudoer)

sshd

  • Installer fail2ban afin de bloquer automatiquement les IPs des clients se tentant de se connecter en force
sudo apt install fail2ban
cd /etc/fail2ban
sudo cp jail.conf jail.local
sudo nano jail.local

Sous [sshd] modifier "port = ssh" en "port = 2222"

sudo service fail2ban restart
  • Afin de sécuriser davantage SSH il est conseillé de n'autoriser que les authentifications par clé SSH. Voici un exemple de configuration depuis un client Linux.
    • Sur le client linux entrer les commandes suivantes
ssh-keygen -t rsa -b 4096
  • "Enter" pour accepter la localisation du fichier (en prendre note)
  • Indiquer une passphrase si souhaitée
  • Copier la clé publique vers le serveur (le mot de passe sera demandé pour cette seule connexion)
ssh-copy-id adminvpn@server_public_ip_address -p 2222
  • Se reconnecter au serveur depuis ce même client pour confirmer que la connexion se fait sans mot de passe
  • Finir la sécurisation de SSH sur le serveur
sudo nano /etc/ssh/sshd_config

Changer "UsePAM yes" en "UsePAM no"

Décommenter "PasswordAuthentication yes" et le changer en "PasswordAuthentication no"

sudo service sshd restart

Obtention d'un certificat signé (optionnel)

  • Générer une demande de certificat depuis le serveur
openssl req -out server.csr -new -newkey rsa:4096 -sha256 -nodes -keyout server.key

Renseigner les champs demandés, notamment le common name qui doit être le FQDN par lequel vous souhaitez accéder au service depuis Internet (exemple : openvpn.masociete.com) et qui sera via DNS traduit en l'IP publique du service sur Cloud Avenue.

Récupérer les fichiers server.csr et server.key et utiliser le CSR pour générer un certificat signé auprès de l'autorité de certification de votre choix. Conserver le certificat obtenu, la chaine de certification de l'autorité choisie et le fichier server.key pour la configuration d'OpenVPN plus tard.

Installation d'OpenVPN

  • Se connecter au serveur en SSH et lancer la commande
sudo apt install openvpn-as

Noter à la fin de l'installation le mot de passe autogénéré pour votre instance.

Configuration d'OpenVPN

Configuration de base

  • Se connecter à l'interface d'admin depuis Internet via l'URL : https://openvpn.masociete.com:943/admin
  • Se connecter avec le login 'openvpn' et le mot de passe noté à la fin de l'installation

Screen1.png

  • Accepter le contrat de licence
  • Changer le mot de passe de l'utilisateur 'openvpn' : User management > user permissions > cliquer sur 'More settings' en face de l'utilisateur 'openvpn'. Entrer le nouveau mot de passe. Enregistrer puis cliquer sur 'Update running server'.

Screen2.png

  • Changer le nom du serveur : Configuration > Network settings > indiquer dans 'Hostname or IP address' le FQDN (par exemple openvpn.masociete.com). Enregistrer puis cliquer sur 'Update running server'. Il faudra alors se reconnecter au portail.

Screen3.png

  • (Optionnel) Changer le certificat du serveur web pour utiliser celui généré par votre autorité de confiance : Configuration > Web server > cocher User-provided certificate en bas de la page et uploader les fichiers demandés. Enregistrer puis cliquer sur 'Update running server'.
  • Configurer les vLANs accessibles aux terminaux se connectant au VPN :
    • Configuration > VPN Settings > Routing > Specify the private subnets[...] > indiquer les sous-réseaux auxquels vous souhaitez autoriser les terminaux l'accès (un par ligne). Ces réseaux doivent être accessibles par la VM hébergeant le serveur OpenVPN.

Screen4.png

Création d'un compte utilisateur

  • Se connecter au portail d'administration avec le login 'openvpn' et le mot de passe associé
  • Créer un nouvel utilisateur : User management > user permissions > remplir la case 'New username' avec le nom de compte souhaité, puis cliquer sur 'More settings' et définir un mot de passe. Enregistrer puis cliquer sur 'Update running server'.Screen5.png

Téléchargement du client et connexion au VPN

  • Se connecter au portail pour les utilisateurs : https://openvpn.masociete.com/ à l'aide des identifiants de son compte utilisateur
  • Télécharger le client adéquat selon l'OS de son terminal
  • Installer le logiciel fourni
  • Au démarrage et depuis les clients Windows et Mac OS OpenVPN Connect est préconfiguré avec le profil de l'utilisateur qui était connecté au portail pour télécharger le logiciel. Il suffit de se connecter à l'aide du bouton idoine.
  • Depuis Android et iOS, il faut installer le client OpenVPN Connect depuis le store officiel. Il suffit ensuite d'indiquer l'URL https://openvpn.masociete.com et de renseigner ses identifiants de connexion.