Comment configurer un VPN PPTP sur mon propre serveur Ubuntu?

16

En supposant que j'ai un serveur privé virtuel de quelqu'un comme Linode , exécutant Ubuntu, comment configurer facilement un VPN PPTP afin que les clients Ubuntu puissent s'y connecter?

Par défaut, Ubuntu propose de se connecter à ces réseaux PPTP. Je veux le configurer de manière à ce qu'il soit très facile de s'y connecter (c'est-à-dire sans installer de packages sur le client).

Stefano Palazzo
la source

Réponses:

28

La configuration du serveur minimum absolu

Ce qui suit sont les instructions minimales absolues dont vous avez besoin pour obtenir un serveur VPN PPTP de base fonctionnant sous Ubuntu. Les clients pourront ensuite se connecter au VPN sur le serveur et acheminer leur trafic Internet afin qu'il passe par le serveur vers Internet. Comme toujours, consultez la documentation complète pour comprendre ce que tout fait.

Tout d'abord, installez le logiciel requis:

sudo apt-get install pptpd

Deuxièmement, activez ip_forwarddans le noyau pour IPv4 en décommentant la ligne associée dans /etc/sysctl.conf :

sudo sed -i -r 's/^\s*#(net\.ipv4\.ip_forward=1.*)/\1/' /etc/sysctl.conf
# Reload the config file to have the change take effect immediately.
sudo -i sysctl -p

Troisièmement, activez NAT (si ce n'est déjà fait) pour que les utilisateurs du réseau VPN privé puissent voir leurs paquets acheminés vers Internet:

OUTIF=`/sbin/ip route show to exact 0/0 | sed -r 's/.*dev\s+(\S+).*/\1/'`
sudo -i iptables --table nat --append POSTROUTING --out-interface $OUTIF --jump MASQUERADE
# Enable NAT on boot from the rc.local script.
CMD="iptables --table nat --append POSTROUTING --out-interface $OUTIF --jump MASQUERADE"
sudo sed -i "\$i$CMD\n" /etc/rc.local

Remarque: ce guide suppose qu'aucun pare-feu n'est configuré sur le serveur. Si vous avez un pare-feu sur le serveur, comme UFW , consultez la documentation appropriée plutôt la .

Quatrièmement, pour chaque utilisateur VPN, créez un compte dans le fichier / etc / ppp / chap-secrets . Remplacez $USERpar le nom d'utilisateur réel que vous souhaitez utiliser pour cet utilisateur VPN.

KEY=`head -c 20 /dev/urandom | sha1sum | nawk '{print $1}'`
echo "$USER pptpd $KEY *" | sudo tee -a /etc/ppp/chap-secrets

Enfin, vous êtes prêt à ...

Configurer le client

Dans l' applet Network Manager , sélectionnez Connexions VPNConfigurer VPN , puis cliquez sur Ajouter . Sur l'écran suivant, sélectionnez PPTP pour le type de VPN, puis cliquez sur Créer .

entrez la description de l'image ici

Dans cette fenêtre, entrez le nom d'hôte ou l'adresse IP de votre serveur ainsi que le nom d'utilisateur et la clé que vous avez ajoutés au fichier / etc / ppp / chap-secrets sur le serveur.

Maintenant, cliquez sur Avancé .

entrez la description de l'image ici

Dans cette fenêtre, activez «Utiliser le cryptage point à point (MPPE)» et sélectionnez Sécurité 128 bits . Désactivez l'utilisation de l' authentification MSCHAP (laissez MSCHAPv2 activé).

Enfin, cliquez sur OK puis Enregistrer pour fermer la fenêtre précédente.

Vous pouvez maintenant tester la connexion VPN en accédant à l'applet Network Manager → Connexions VPN et en sélectionnant la connexion que vous venez de créer. Assurez-vous que vous recevez un message indiquant que la connexion VPN a réussi, puis accédez à un site Web de vérification IP pour vérifier que votre IP apparaît maintenant comme IP du serveur.

Si vous recevez un message indiquant que la connexion VPN au serveur a échoué: vérifiez d'abord que vous avez correctement saisi les paramètres du client; deuxièmement, vérifiez que le client dispose d'une connectivité réseau au port TCP 1723 sur le serveur; enfin, vérifiez le fichier journal / var / log / messages sur le serveur pour d'autres indices. Si votre connexion VPN réussit, mais que vous ne parvenez pas par la suite à naviguer sur les sites Web du client, consultez ce guide de diagnostic incroyablement utile sur le site Web de pptpd.

Remarques

Si le réseau local auquel vous êtes connecté utilise les sous-réseaux 192.168.0.0/24 et 192.168.1.0/24, vous allez rencontrer des problèmes car c'est ce que le serveur PPTP utilise par défaut. Vous devrez configurer PPTP pour utiliser différents sous-réseaux dans pptpd.conf .

Il existe de nombreuses autres modifications de configuration que vous souhaiterez peut-être apporter. Par exemple, toutes vos recherches de nom de domaine seront toujours interrogées à l'aide de votre serveur DNS local au lieu de passer par le serveur PPTP. Prenez le temps de lire la documentation complète pour savoir comment modifier ce paramètre et bien d'autres.

Michael Kropat
la source
4

Ce tutoriel que j'ai écrit vous guidera à travers. Cela devrait vous aider à éviter les erreurs courantes commises par les utilisateurs de VPS.

Connectez-vous d'abord à votre panneau VPS et activez TUN / TAP et PPP . Si vous ne disposez pas d'une telle option, contactez votre FAI pour l'activer pour vous.

entrez la description de l'image ici

Installez d'abord ce package:

sudo apt-get install pptpd

Parce que nous ne voulons pas que notre VPN soit public, nous allons créer des utilisateurs.
J'utilise VI, vous pouvez utiliser NANO ou n'importe quel éditeur de texte que vous aimez

vi /etc/ppp/chap-secrets

Le format est

[username] [service] [password] [ip]

Exemple

john pptpd johnspassword *

* signifie que l'accès à partir de toutes les adresses IP est autorisé, spécifiez IP uniquement si vous en avez une statique.

Modification des paramètres PPTPD

vi /etc/pptpd.conf

Recherchez les paramètres localip et remoteip. Supprimez le #(caractère de commentaire) pour les deux afin que ces paramètres soient réellement reconnus. Remplacez localip par l'adresse IP de votre serveur. Si vous ne connaissez pas l'IP de votre serveur, vous pouvez regarder dans votre panneau de configuration VPS.

Le remoteip est essentiellement la plage IP à laquelle les clients (ordinateurs connectés à votre VPN) seront affectés. Par exemple, si vous voulez la plage IP suivante: 192.168.120.231-235, votre serveur VPN pourra attribuer 192.168.120.232, 192.168.120.233, 192.168.120.234 et 192.168.120.235 aux clients. C'est à vous de décider ce que vous souhaitez utiliser pour ce domaine.

Personnellement, je choisis ces paramètres:

localip 10.0.0.1
remoteip 10.0.0.100-200

Je peux donc connecter environ 200 clients.

Ajouter des serveurs DNS à /etc/ppp/pptpd-options

ms-dns 8.8.8.8
ms-dns 8.8.4.4

Vous pouvez ajouter ceci à la fin du fichier ou trouver ces lignes, les décommenter et changer les IP en votre DNS public souhaité.

Configurer le transfert

Il est important d'activer le transfert IP sur votre serveur PPTP. Cela vous permettra de transférer des paquets entre des adresses IP publiques et privées que vous configurez avec PPTP. Modifiez simplement /etc/sysctl.conf et ajoutez la ligne suivante si elle n'existe pas déjà:

net.ipv4.ip_forward = 1

Pour rendre les modifications actives, exécutez sysctl -p

Créer une règle NAT pour iptables

C'est une partie importante, si vous utilisez VPS, vous n'utiliserez probablement pas eth0 mais venet0 à la place, vous devriez vérifier quelle interface vous avez en exécutant ifconfig

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE && iptables-save

Si vous souhaitez également que vos clients PPTP se parlent, ajoutez les règles iptables suivantes:

iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT
iptables --append FORWARD --in-interface eth0 -j ACCEPT

Encore une fois, vous devez remplacer eth0 par venet0 si vous utilisez VPS.

Je recommanderais de courir

sudo iptables-save

Maintenant, votre serveur PPTP agit également comme un routeur.

Vous pouvez exécuter cette commande pour que le service VPN démarre au démarrage

systemctl enable pptpd

Je recommande d'installer iptables-persistent pour que les règles restent même après le redémarrage

sudo apt-get install -y iptables-persistent
Luka
la source
Le lien n'ira nulle part, principalement je ne publierai jamais ce nom de domaine, deuxièmement c'est mon serveur d'hébergement, troisièmement croyez-moi: DI ne peut vraiment pas simplement copier-coller le tutoriel ici c'est trop long.
Luka
Je crains que nous n'acceptions pas les réponses contenant uniquement des liens sur ce site. Ainsi, cette réponse sera probablement bientôt supprimée, comme vous pouvez le voir, elle est déjà dans la file d'attente de révision (lien dans mon commentaire précédent).
Zanna merci beaucoup! @Paranoid Panda, alors vous devriez supprimer la réponse au-dessus de la mienne qui a 2 votes parce qu'elle contient le lien: P
Luka
1
Le problème ici était que la réponse était uniquement liée à un lien. Cela signifie que si le lien devait descendre pour une raison quelconque (même si le lien ne devait jamais descendre), la réponse deviendrait invalide. Maintenant que la réponse est devenue autonome (et en utilisant le lien pour référence), la réponse est très bien telle quelle. La réponse en question est actuellement supprimée, à moins qu'elle ne soit adaptée comme votre message.
Kaz Wolfe
1
Vous êtes les bienvenus, merci d'avoir fait le tutoriel. La prochaine fois, n'ayez pas peur de publier un message de cette longueur; c'est tout à fait acceptable.
Zanna
3

Suivez ce tutoriel: Serveur VPN PPTP avec Ubuntu

  1. Sous la sélection du logiciel, sélectionnez le serveur OpenSSH - pour la gestion à distance de la machine - et la sélection manuelle du package pour le package pptpd réel. Si vous souhaitez plus de services, par exemple si vous souhaitez également utiliser l'ordinateur comme serveur Web, vous pouvez bien sûr sélectionner le logiciel supplémentaire. Pour des raisons de sécurité, je conseille généralement aux gens de n'en exécuter qu'un à partir du service accessible par machine par extérieur s'il est installé dans un environnement critique, mais c'est vraiment à vous de décider.

  2. Dans la sélection manuelle, accédez à packages non installés> net où vous trouverez pptpd. Sélectionnez-le et appuyez deux fois sur «g» pour installer le package.

  3. Laissez l'installation se terminer et redémarrez votre système.

  4. SSH dans votre machine nouvellement configurée et exécutez d' sudo aptitude update && sudo aptitude safe-upgradeabord pour mettre à jour tous les packages. Redémarrez si nécessaire.

  5. Ouvrez le fichier pptpd.conf: ajustez sudo nano /etc/pptpd.confles paramètres IP en bas selon vos besoins. Sous IP locale, vous entrez l'IP dans le réseau local de votre serveur VPN (si vous ne le connaissez pas, tapez 'sudo ifconfig' et il vous montrera vos interfaces réseau et les IP attribuées). Pour cette question, je recommande de configurer une adresse IP statique dans / etc / network / interfaces ou dans la configuration de votre routeur.

  6. Si vous le souhaitez, vous pouvez modifier le nom d'hôte dans /etc/ppp/pptpd-options

  7. Spécifiez les noms d'utilisateur et les mots de passe auxquels vous souhaitez donner accès à votre VPN: sudo nano /etc/ppp/chap-secrets . Si vous avez modifié le nom d'hôte à l'étape précédente, assurez-vous de taper le même nom d'hôte maintenant sousserver

    Exemple:

    # client        server  secret                  IP addresses
    eubolist   pptpd   myübersecretpassword   *
    

    Comme dans pptp, il n'y a pas de sécurité de fichier de clés qui dépend uniquement du mot de passe. C'est pourquoi vous devez choisir un mot de passe long (par exemple 32 caractères) aléatoire. Vous pouvez générer un tel mot de passe ici.

  8. Maintenant, nous devons configurer le masquage ip: sudo nano /etc/rc.local

    Ajoutez les lignes suivantes au-dessus de la ligne qui dit «sortie 0»

    # PPTP IP forwarding
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    

    En option, je recommande de sécuriser votre serveur SSH contre les attaques par force brute:

    #SSH Brute Force Protection
    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j
    

    LAISSEZ TOMBER

    (à insérer également au-dessus de la «sortie 0»)

    Vous devrez peut-être changer 'eth 0' en une autre interface, selon l'interface configurée pour se connecter à Internet sur votre machine.

  9. Enfin, décommentez cette ligne dans /etc/sysctl.conf:

    net.ipv4.ip_forward=1
    
  10. Redémarrer

  11. Si votre serveur vpn ne se connecte pas directement à Internet, vous devrez peut-être transférer le port 1723 TCP et GRE vers l'IP LAN de votre serveur vpn. Reportez-vous au manuel de votre routeur ou à portforward.com pour obtenir des instructions spécifiques au fournisseur. Encore une fois, vous devrez peut-être attribuer une adresse IP statique dans /etc/network/interfaces.

Ilias
la source