GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer votre propre VPN – Instructions détaillées

VPN :qu'est-ce que c'est ?

Le VPN est un réseau privé virtuel qui crée un tunnel crypté entre votre appareil et la connexion Internet. Il existe un double VPN qui est l'utilisation simultanée de deux serveurs VPN différents. Lors de l'utilisation de VeePN, toutes les données entrantes et sortantes sont cryptées. Lors de la connexion à un serveur VPN, toute votre activité en ligne passera par ce tunnel et non par le fournisseur. Ainsi, les cybercriminels qui voudront scanner votre trafic ne verront que le pays auquel vous êtes connecté et ne pourront pas voler les mots de passe des réseaux sociaux, les cartes de crédit, ou toute information personnelle.

Le VPN est un très bon outil pour lutter contre les cyber-intrus, et vous êtes intéressé par la question :« Puis-je configurer mon propre serveur VPN ? Vous pouvez, bien sûr, configurer votre propre VPN ou chaînage VPN. En créant votre serveur VPN, vous bénéficiez de nombreux avantages :

  • Vous contrôlez vos serveurs et les personnes utilisant le VPN.
  • Vous pouvez être sûr que personne n'est propriétaire de vos données.
  • Vous aurez accès à de nombreuses ressources bloquées dans votre région.
  • Vous pourrez vous connecter sur un réseau Wi-Fi public et personne ne pourra récupérer vos données.
  • Vous pouvez masquer le trafic des services spéciaux.

Instructions pour créer votre propre serveur VPN basé sur Linux Debian

Vous trouverez ci-dessous des instructions étape par étape sur la façon de créer un vpn maison. Suivez attentivement tous les conseils, car votre résultat dépendra de l'exactitude des étapes.

Inscrivez-vous auprès d'Amazon AWS et connectez-vous au serveur

Amazon Web Services propose un processus d'inscription simple et des conseils pour créer un profil afin que vous puissiez parcourir cette étape vous-même. Après avoir terminé le processus d'inscription, accédez à Lightsail et sélectionnez la zone géographique dans laquelle vous souhaitez créer votre serveur VPN. Créez ensuite une nouvelle instance et sélectionnez ces données :"OS uniquement", système d'exploitation Debian 9.5. Ensuite, vous verrez un plan d'instance - le plus courant avec 512 Mo de RAM vous conviendra.

Certains sites sont agressifs envers les visiteurs dont les adresses IP appartiennent à des hébergeurs populaires et les bloquent. Selon eux, ces visiteurs participent aux attaques DDOS. Pour ne pas être bloqué et ne pas avoir à partager une adresse IP avec des milliers d'autres machines AWS, accédez à Mise en réseau, puis assurez-vous de vous attribuer une adresse IP statique. Attribuez-le à l'instance que vous avez créée.

Vous devez maintenant télécharger la clé privée pour l'accès SSH. La clé privée se trouve dans la section Compte> Clés SSH. Téléchargez cette clé et chargez-la sur le client SSH. Nous avons installé un serveur à Bali en utilisant iPad Pro et Termius. Cependant, vous pouvez utiliser un autre client SSH. Par exemple, une bonne alternative est le Terminal.app intégré à macOS. Dans nos instructions, nous considérerons Terminal, mais l'algorithme est similaire pour les autres clients SSH.

Commençons simplement - ouvrez Terminal. Le terminal a un problème connu appelé "locale". Si vous utilisez Termius, ce problème n'existe pas. Ajoutez quelques nouvelles lignes à votre fichier .profile macOS local pour éliminer le problème de paramètres régionaux. Modifiez ce fichier à l'aide de l'éditeur de texte nano. Cela aiderait si vous aviez quelque chose comme ça :nano ~/ .profile. Vous devez maintenant y insérer quelques lignes :

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

Vous devez enregistrer ce fichier à l'aide de la commande Ctrl+X. Fermez le terminal en utilisant la commande Cmd+Q. Après cette étape, relancez-la.

Vous devez maintenant déplacer la clé privée Lightsail précédemment téléchargée vers un répertoire spécial où les clés SSH sont stockées :mv ~/Downloads/YOUR_DOWNLOADED_KEY.pem ~/.ssh. Après cette étape, limitez les droits de la clé. Sinon, macOS bloquera son utilisation. Cela peut être fait en utilisant ces chiffrements :

cd ~/ .ssh/
chmod 600 YOUR_DOWNLOADED_KEY.pem

Une fois cette étape terminée, vous pouvez vous connecter à votre machine Lightsail. Vous verrez un champ spécial YOUR_LIGHTSAIL_IP. Dans celui-ci, vous devez spécifier une adresse IP statique externe :ssh -i YOUR_DOWNLOADED_KEY.pem admin @ YOUR_LIGHTSAIL_IP. Si vous avez tout fait correctement, vous verrez une inscription spéciale avec toutes vos données.

Configurer Debian

Toutes les étapes suivantes que vous devez effectuer sous l'utilisateur root. Et donc, spécifiez sudo su. Mettez ensuite à jour l'index des packages dans les référentiels. Peut-être pouvez-vous voir par vous-même qu'il y a des mises à jour :apt-get update. Votre tâche consiste maintenant à installer ces mises à jour :apt-get upgrade.

Installer strongSwan

À l'aide d'un chiffrement spécial, installez strongSwan :apt-get install strongswan. Nous parlerons de la façon de configurer strongSwan un peu plus tard. Pour le moment, le plus important est de créer des certificats pour que vos appareils puissent utiliser le VPN.

Générer des certificats d'accès

Dans notre guide, nous utilisons des certificats auto-signés car seule notre équipe utilisera le serveur VPN. Pour créer des certificats, vous avez besoin du package strongswan-pki. Installez-le :package strongswan-pki.

Vous pouvez maintenant commencer à créer des certificats. La première étape consiste à créer un certificat racine. Surtout, il est connu sous le nom de CA (Certificate Authority). Ce certificat vous délivrera les autres certificats dont vous avez besoin. Vous pouvez créer un certificat dans le fichier ca.pem :

cd /etc/ipsec.d
ipsec pki --gen --type rsa --size 4096 --outform pem > private/ca.pem
ipsec pki --self --ca --lifetime 3650 --in private/ca.pem --type rsa --digest sha256 --dn "CN=YOUR_LIGHTSAIL_IP" --outform pem > cacerts/ca.pem

Pour créer un certificat pour votre serveur VPN, vous avez besoin d'un fichier debian.pem :

ipsec pki --gen --type rsa --size 4096 --outform pem > private/debian.pem
ipsec pki --pub --in private/debian.pem --type rsa | ipsec pki --issue --lifetime 3650 --digest sha256 --cacert cacerts/ca.pem --cakey private/ca.pem --dn "CN=YOUR_LIGHTSAIL_IP" --san YOUR_LIGHTSAIL_IP --flag serverAuth --outform pem > certs/debian.pem

Pour créer un certificat pour vos appareils, vous avez besoin d'un fichier me.pem :

ipsec pki --gen --type rsa --size 4096 --outform pem > private/me.pem 
ipsec pki --pub --in private/me.pem --type rsa | ipsec pki --issue --lifetime 3650 --digest sha256 --cacert cacerts/ca.pem --cakey private/ca.pem --dn "CN=me" --san me --flag clientAuth --outform pem > certs/me.pem

Vous n'avez plus besoin du fichier ca.pem, donc pour des raisons de sécurité et de fiabilité, supprimez-le :rm /etc/ipsec.d/private/ca.pem. Vous avez terminé le processus de création de certificats - félicitations, vous êtes presque à la fin !

Que faire si les certificats prennent trop de temps ?

Qu'entend-on par trop longtemps ? Par exemple, vos certificats sont générés pendant plus de 5 secondes. Ces données indiquent une faible quantité d'entropie. Notez que la création de certificats peut prendre de 40 à 60 minutes en raison de la faible quantité d'entropie, ce qui n'est pas très bon pour votre travail. Par conséquent, pour vérifier la quantité d'entropie, vous pouvez démarrer une autre session dans l'onglet suivant :

En utilisant la commande ci-dessus, vous verrez la quantité d'entropie au moment de la demande. Si vous souhaitez contrôler l'entropie en temps réel, vous pouvez utiliser cette commande :watch -n 0.25 cat /proc/sys/kernel/random/entropy_avail.

Si le résultat affiche moins de 200 entropies, nous vous recommandons de changer d'hébergeur. En outre, de nombreux experts conseillent d'installer le package haveged, dont la tâche est de générer des entropies. Cependant, l'utilité de ce forfait n'a pas été prouvée, donc de plus, tout dépendra de vous. Lorsque vous utilisez Amazon Lightsail, ces problèmes ne se posent pas et vous pouvez rapidement générer des clés. Pour quitter la requête, vous devez utiliser les touches Ctrl + Z.

Configurer strongSwan

Pour configurer correctement strongSwan, vous devez effacer la configuration par défaut de strongSwan. Utilisez cette commande :> /etc/ipsec.conf. Ensuite, vous pouvez créer le vôtre dans l'éditeur de texte nano :nano /etc/ipsec.conf.

Vous verrez le champ YOUR_LIGHTSAIL_IP et votre tâche consiste à le remplacer par l'adresse IP externe de la machine dans AWS Lightsail. Vous pouvez maintenant insérer du texte comme ceci :

include /var/lib/strongswan/ipsec.conf.inc

config setup
    	uniqueids=never
    	charondebug="ike 2, knl 2, cfg 2, net 2, esp 2, dmn 2,  mgr 2"

conn %default
    	keyexchange=ikev2
    	ike=aes128gcm16-sha2_256-prfsha256-ecp256!
    	esp=aes128gcm16-sha2_256-ecp256!
    	fragmentation=yes
    	rekey=no
    	compress=yes
    	dpdaction=clear
    	left=%any
    	leftauth=pubkey
    	leftsourceip=YOUR_LIGHTSAIL_IP
    	leftid=YOUR_LIGHTSAIL_IP
    	leftcert=debian.pem
    	leftsendcert=always
    	leftsubnet=0.0.0.0/0
    	right=%any
    	rightauth=pubkey
    	rightsourceip=10.10.10.0/24
    	rightdns=8.8.8.8,8.8.4.4

conn ikev2-pubkey
    	auto=add

Important! strongSwan est très strict sur toutes les indentations de la configuration. Par conséquent, lorsque vous entrez des commandes, séparez chaque section de la configuration à l'aide de la touche Tab. Dans notre exemple, nous avons spécifié à quoi cela devrait ressembler. Vous pouvez utiliser notre modèle ou faire un seul retrait. Sinon, strongSwan ne fonctionnera pas.

Enregistrez le fichier créé à l'aide des touches Ctrl + X. Dans le fichier ipsec.secrets, qui stocke toutes les références aux certificats et aux clés d'authentification, ajoutez un pointeur spécial vers votre certificat de serveur :

nano /etc/ipsec.secrets
include /var/lib/strongswan/ipsec.secrets.inc

: RSA debian.pem

Si vous avez suivi toutes les étapes, la configuration de Strongswan est terminée. Il serait utile que vous redémarriez le service :ipsec restart. À condition que vous ayez entré toutes les commandes correctement, le serveur démarrera avec le message ci-dessous :

Démarrage de strongSwan 5.5.1 IPsec [starter]…

Si vous remarquez que le programme génère une erreur, lisez le journal système pour déterminer quel est le problème. La commande affichera les 50 dernières lignes du journal :tail -n 50> /var/log/syslog.

Configurer les paramètres du noyau réseau

Dans le fichier /etc/sysctl.conf, vous devez apporter quelques modifications :nano /etc/sysctl.conf. À l'aide des deux touches Ctrl + W, recherchez les variables suivantes dans le fichier et apportez-y les modifications :

  • Décommentez cette option pour activer le transfert de paquets :net.ipv4.ip_forward =1
  • Décommentez ce paramètre pour empêcher les attaques MITM :net.ipv4.conf.all.accept_redirects =0
  • Décommentez ce paramètre pour désactiver l'envoi de redirections ICMP :net.ipv4.conf.all.send_redirects =0
  • Ajoutez ce paramètre n'importe où dans le fichier, sur une nouvelle ligne, en désactivant les recherches PMTU :net.ipv4.ip_no_pmtu_disc =1

Chargez les nouvelles valeurs obtenues :sysctl -p. Vous avez terminé de configurer les paramètres réseau du noyau.

Configurer iptables

iptables est un outil spécial qui gère et contrôle le pare-feu netfilter intégré de Linux. Installez le package iptables-persistent, qui vous permettra d'enregistrer les règles iptables dans un fichier et de les charger à chaque démarrage du système :apt-get install iptables-persistent.

Après avoir installé ce package, le système vous demandera de conserver les règles IPv4 et IPv6 actuelles. Vous devez spécifier "non", car vous avez un nouveau système et aucune donnée à enregistrer.

Commencez maintenant à créer vos règles iptables. Pour garantir la sécurité et la fiabilité, supprimez toutes les chaînes :

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables -Z

Afin de ne pas perdre l'accès au système, autorisez les connexions SSH sur le port 22 :

iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

L'étape suivante consiste à autoriser les connexions sur l'interface de bouclage :iptables -A INPUT -i lo -j ACCEPT. Autorisez ensuite les connexions IPSec entrantes sur les ports UDP 500 et 4500 :

iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT

Autoriser le transfert de trafic ESP :

iptables -A FORWARD --match policy --pol ipsec --dir in  --proto esp -s 10.10.10.0/24 -j ACCEPT
iptables -A FORWARD --match policy --pol ipsec --dir out --proto esp -d 10.10.10.0/24 -j ACCEPT

Un serveur VPN est comme un fil entre Internet et les clients VPN, vous devez donc configurer le masquage du trafic :

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE

Configurez la taille maximale du segment de paquet :

iptables -t mangle -A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN, RST SYN -m tcpmss --mss 1361: 1536 -j TCPMSS --set-mss 1360

Refuser toutes les connexions tierces au serveur à l'aide des commandes :

iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP

Enregistrez les règles créées afin qu'elles existent après chaque redémarrage :

netfilter-persistent save
netfilter-persistent reload

Redémarrez le système :redémarrez et vérifiez si les règles que vous avez créées fonctionnent.

Autoriser les connexions dans le pare-feu Lightsail

AWS Lightsail a créé son pare-feu pour protéger les systèmes. Sélectionnez votre instance, accédez à Réseau et autorisez les connexions sur les ports UDP 500 et 4500. Supprimez le port 80 en même temps - vous n'en aurez pas besoin.

Créer .mobileconfig pour iPhone, iPad, Mac

Vos appareils sont iPhone, iPad et Mac afin que vous puissiez utiliser un profil VPN .mobileconfig. Il serait utile que vous créiez une configuration à la demande. Si un service ou une application tente de se déconnecter, la connexion VPN continuera à fonctionner automatiquement. Vous éviterez la situation où vous avez martelé pour établir une connexion VPN et que le trafic est passé par le fournisseur. Utilisez le script qui générera cette configuration pour vous :

wget https://gist.githubusercontent.com/borisovonline/955b7c583c049464c878bbe43329a521/raw/966e8a1b0a413f794280aba147b7cea0661f77a8/mobileconfig.sh

Installez le package zsh pour que le script fonctionne correctement :apt-get install zsh. Modifiez le nom du serveur en fonction de vos idées et écrivez l'adresse IP externe de la machine Lightsail que vous avez précédemment spécifiée lors de la création des certificats :

nano mobileconfig.sh
SERVER="AWS Frankfurt" FQDN="YOUR_LIGHTSAIL_IP"

Exécutez maintenant le script et récupérez le fichier iphone.mobileconfig :

chmod u+x mobileconfig.sh
./mobileconfig.sh > iphone.mobileconfig.

Supprimez ce fichier du serveur en vous connectant avec Transmit ou Cyberduck - envoyez-le à tous vos appareils via Airdrop. Confirmez l'installation de la configuration sur les appareils. Vous établirez automatiquement des connexions au serveur VPN.

Assurez-vous de nettoyer après vous :

rm mobileconfig.sh
rm iphone.mobileconfig

Linux
  1. Comment créer un rôle IAM dans AWS à l'aide de Terraform

  2. Comment créer un volume physique sous Linux en utilisant LVM

  3. Comment créer un RPM pour votre propre script dans CentOS/RedHat

  4. Comment créer un utilisateur Linux avec Ansible

  5. Comment créer votre site Plesk

Comment créer et gérer vos propres pages de manuel

Comment créer votre pile de développeurs WordPress sur OpenShift 4

Comment créer votre propre serveur VPN IPsec sous Linux

Comment créer une partition à l'aide de la commande "parted"

Comment créer des partitions de disque à l'aide de cfdisk

Comment créer facilement votre propre distribution Linux ?