Dans cet article je vais vous parler de la mise en place d'un VPN pour votre serveur avec simplement ssh.
Préambule:
J'ai constaté que beaucoup d'entre vous, ne savent pas ce qu'est un VPN ou confonde avec un certain SudVPN qui n'en est pas un. Avant de commencer, je tiens à préciser quelques petites choses: VPN signifie Virtual Private Network. Cela peut paraitre anodin, mais SudVPN n'est PAS UN VPN au sens initial du terme.
Un VPN a pour but de créer un réseau privé, c'est-à-dire un réseau dans le réseau. Normalement en ce connectant à un VPN on accède à tout un réseau qui n'est potentiellement qu'accessible uniquement par ce VPN.
Il permet de protéger l'accès à ce réseau privé en cryptant la communication... OU PAS (Cela dépend du protocole et généralement de son ancienneté)
Coup de gueule:
SudVPN N'EST PAS UN VPN: c'est juste un service qui "cache" votre IP. Il remplace seulement votre emplacement géographique. Mais en aucun cas il vous fait accéder à un autre réseau (C'est toujours internet.) et en aucun cas il vaut protection de votre connexion, car il ne remplace pas les sécurités que les services internet mettent en place pour protéger la connexion TLS qui circule entre vous.
Son seul atout est de vous anonymiser sur internet SI ET SEULEMENT SI, vous n'êtes pas dans un pays possédant des certificats racine en leur nom et si vous ne laissez aucune autre trace numérique de l'autre. Pour le 1ᵉʳ, comme pour le 2ᵉ cas: vous pouvez utiliser Tor qui est tout aussi efficace et fait pour vous anonymiser.
BREF
Projet et raison:
J'ai choisi de changer de OpenVPN à un simple tunnel SSH, car OpenVPN est extrêmement lourd pour seulement se connecter à des services privés. Je ne l'utilise pas pour changer d'adresse IP et sécuriser mes connexions vers l'extérieur.
De plus, cela fait un programme en moins à gérer, et les clés de SSH sont extrêmement simples.
Contrairement à OpenVPN qui a l'inconvénient de devoir se munir d’easyRSA pour gérer une PKI entière même lorsqu'il n'y a que très peu d'utilisateur.
L'inconvénient que je connais avant de commencer, ça sera de gérer les tunnels SSH sur mon téléphone. Mais je m'en occuperai plus tard.
Fonctionnement et mise en pratique:
Les tunnels SSH sont déjà inclus dans sshd, il n'y a rien à installer. Vous pouvez même utiliser votre configuration actuelle.
Il est quand même conseillé de se munir d'une paire de clé privée/public.
Vous devez mettre la fonction PermitTunnel à yes dans /etc/ssh/sshd_config
Ensuite, vous devez trouver un moyen de créer une interface tun:
- Soit vous vous connecter en root et il aura tous les droits
- Soit vous créer l'interface en avance
Il est très peu conseillé d'utiliser root pour se connecter en ssh, au risque de grosse faille de sécurité. Par conséquent j'ai dû chercher un moyen de donner l'autorisation à mon utilisateur.
J'ai tout d'abord essayé ce qui était indiqué ici, mais rien n'a marché. Par conséquent, j'ai bricolé un truc qui créé une interface tun au démarrage de la connexion internet.
Dans le fichier /etc/network/interfaces.d/ssh_tun.conf:
auto tun0
iface tun0 inet manual
pre-up ip tuntap add tun0 mode tun user MonUser
pre-up ip link set tun0 up
pre-up ip addr add 10.0.0.1/32 peer 10.0.0.10 dev tun0
post-down ip link del dev tun0
Ce fichier permettra de créer une interface tun avec les droits pour MonUser, il attribuera une adresse ip (ici, 10.0.0.1) et indique avec quelle adresse ip il va être appareillé (ici, 10.0.0.10)
Et pour la partie serveur, c'est terminé.
Ensuite il faut configurer le client, si vous avez un linux (Debian/Ubuntu), ce sera d'une simplicité sans nom:
- vous installer les packages: NetworkManager-ssh-gnome NetworkManager-ssh
Vous aurez alors seulement à configurer avec l'interface utilisateur de network manager (des photos pour l'exemple)
Penser dans les options avancées à changer le numéro de l'interface tun que vous avez renseigné avant et le nom d'utilisateur avec lequel vous vous connectez.
Et normalement vous avez terminé. Votre serveur fonctionne avec un tunnel SSH et vous avec accès à tous vos services privés/personnels.
P.S.: Je mettrai à jour l'article lorsque j'aurais configuré le tunnel SSH sur Windows et Android.
Ou pas:
Update du 27 Avril 2020:
Après avoir testé Wireguard, je déconseille totalement le tunnel SSH. Wireguard est un VPN avec des applications pour tous les OS sans avoir besoin d’adapter des configurations pour chaque client.
(Voir article)