Quantcast
Channel: fred – memo-linux.com
Viewing all articles
Browse latest Browse all 515

installer un VPN avec Yunohost et OpenVPN sous Debian

$
0
0

Un mémo sur comment installer un VPN avec Yunohost et OpenVPN sous Debian 8 Jessie.

Cet article décrit étapes par étapes l’installation et la configuration d’un serveur OpenVPN avec Yunohost sur un serveur VPS sous Debian Jessie.

Voici les caractéristiques du futur serveur OpenVPN :

  • tunnel chiffré en 2048 bit (rapide)
  • auth-nocache
  • cipher AES-256-CBC
  • auth SHA512
  • tls-version-min 1.2
  • tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384
  • Signature HMAC
  • Clé DH en 4096 bits

Activer l’interface réseau TUN/TAP sur un VPS

  • La première étape consiste à vérifier/activer dans le panel d’administration l’interface réseau TUN/TAP :
  • vps-tun_tap

  • Ensuite, vérifier que le système d’exploitation du VPS prend en charge le module « tun » :
lsmod | grep tun

Si aucune réponse, comme dans mon cas alors suivre les étapes suivantes sinon aller directement au chapitre « Installation de Yunohost ».

  • Charger le module tun :
  • modprobe tun
  • Redémarrer le VPS :
  • reboot

    Installation de Yunohost

    • Mise à jour et installation des paquets git et dialog (si pas installés) :
    apt update && apt upgrade
    apt install git dialog
    
  • Clone du script d’installation de Yunohost et installation :
  • git clone https://github.com/YunoHost/install_script /tmp/install_script
    cd /tmp/install_script && ./install_yunohost
    
  • Un message d’avertissement :
  • yunohost-01

  • Post installation de Yunohost :
    A la fin de l’installation de Yunohost, l’installateur propose directement de passer à l’étape de post-installation pour configurer le domaine par défaut et le compte administrateur.
    • Demande de confirmation pour exécuter de suite le script de post-install :
    • yunohost-02

    • Renseigner le domaine et le mot de passe administrateur pour Yunohost :
    • yunohost-03

  • Configuration de Yunohost pour préparer l’arrivée d’OpenVPN

    • Éditer le fichier /etc/hosts afin d’ajouter le futur FQDN associé à l’adresse public du VPS :
    nano /etc/hosts
    1.2.3.4 vpn.domaine.tld

    Pour la configuration du Yunohost, j’utilise ici la moulinette de Yunohost (L’inerface web d’administration est très simple à comprendre).

    • Ajout du sous domaine vpn.domaine.tld
    yunohost domain add vpn.domaine.tld
  • Ajout d’un utilisateur
  • yunohost user create fred

    yunohost-user-create

    Installation d’OpenVPn avec Yunohost

    Attention : OpenVPN ne fait pas encore parti des applications officielles maintenues par Yunohost, suivre dans l’ordre les étapes suivantes :

    • Création d’un sous domaine chez votre registrar : vpn 8600 IN CNAME domaine.tld.
      nb : domaine.tld est le domaine du yunohost.
    • Ajout du sous domaine vpn.domaine.tld dans yunohost
    yunohost domain add vpn.domaine.tld

    nb : Ne pas encore installer les certificats Let’s Encrypt !

  • Copier tous fichiers dans /etc/yunohost/certs/vpn.domain.tld vers /etc/yunohost/certs/vpn.domain.tld.Autosign :
  • cp -r /etc/yunohost/certs/vpn.domain.tld/ /etc/yunohost/certs/vpn.domain.tld.Autosign/
  • Installer le certificat Let’s Encrypt pour le sous domaine vpn.domaine.tld :
  • yunohost domain cert-install vpn.domane.tld
  • Installer OpenVPN :
  • yunohost app install https://github.com/YunoHost-Apps/openvpn_ynh

    nb : il est possible d’installer OpenVPN via l’interface web d’administration de Yunohost :

    nb2 : indiquer bien l’adresse IP public du serveur Yunohost, sinon le script d’installation n’aboutit pas.

  • Créer la clé Dilf Helmann en 4096 bits :
  • openssl dhparam -out /etc/yunohost/certs/vpn.domain.tld.Autosign/dh.pem 4096

    nb : changer vpn.domain.tld par le votre

  • Éditer le fichier de configuration du serveur OpenVPN :
    nano /etc/openvpn/yunohost.conf
    • Modifier comme suit :
    ca /etc/yunohost/certs/vpn.domain.tld.Autosign/ca.pem
    cert /etc/yunohost/certs/vpn.domain.tld.Autosign/crt.pem
    key /etc/yunohost/certs/vpn.domain.tld.Autosign/key.pem
    dh /etc/yunohost/certs/vpn.domain.tld.Autosign/dh.pem
    

    nb : changer vpn.domain.tld par le votre

  • Modifier le fichier /etc/openvpn/handler.sh en commentant les lignes 36 à 39 et 42 :
  •     public_ip4=$(get_ip 3)
    #    if [ -n "$public_ip4" ]; then
    #        $SUDO iptables -t nat -A PREROUTING -d $public_ip4 -j DNAT --to-destination $private_ip4
    #        $SUDO iptables -t nat -A POSTROUTING -s ${private_ip4}/32 ! -d ${private_ip4}/32 -j SNAT --to-source $public_ip4
    #    else
            iface=$(ip r|awk '/default/ { print $5 }')
            $SUDO iptables -t nat -A POSTROUTING -s $private_ip4 -o "${iface}" -j MASQUERADE
    #    fi
    
    

    nb : je fais cette modification, car dans mon cas j’obtiens un problème de routage au niveau du NAT via iptables et le serveur n’est plus joignable.

  • Redémarrer le serveur OpenVPN :
  • yunohost service stop openvpn
    yunohost service start openvpn
    

    Profiter du cache DNS de Yunohost pour la connetcion VPN

    A ce stade le VPN est fonctionnel mais les requêtes DNS passent encore par le fournisseur de la connexion Internet, si pas modifié par un perso comme Unbound par exemple.

    Par défaut, sur le serveur Yunohost la gestion DNS se fait via DNSMasq, mais ce dernier ne fait qu’office de cache DNS. L’équipe de Yunohost à quand même bien fait les choses, car ils ont choisi des serveur DNS neutres et ça c’est top !
    La liste des serveurs DNS configuré dans un Yunohost :

    cat /etc/resolv.dnsmasq.con
    nameserver 91.239.100.100
    nameserver 85.214.20.141
    nameserver 89.233.43.71
    nameserver 89.234.186.18
    nameserver 84.200.69.80
    nameserver 141.255.128.101
    nameserver 141.255.128.100
    nameserver 213.73.91.35
    nameserver 89.234.141.66
    nameserver 80.67.188.188
    nameserver 80.67.169.12
    nameserver 80.67.169.40
    nameserver 84.200.70.40
    

    Donc l’idée dans cette partie de ce tutoriel est de configurer DNSmasq pour qu’il écoute aussi sur l’interface réseau du VPN et configurer le serveur VPN pour qu’il fournisse comme serveur DNS le Yunohost chez le client.

    Configuration de DNSmasq

    • Éditer le fichier de configuration /etc/dnsmasq.conf :
    nano /etc/dnsmasq.conf
  • Ajouter :
  • listen-address=10.8.0.1
  • Redémarrer le service de DNSmasq :
  • systemctl restart dnsmasq

    Configurer le serveur OPenVPN pour utiliser DNSmasq

    • Partie serveur :
      • Éditer le fichier de configuration du serveur OpenVPN :
      nano /etc/openvpn/yunohost.conf
    • Dé commenter la ligne (supprimer le ; devant la ligne):
    push "dhcp-option DNS 10.8.0.1"
  • Redémarrer le serveur OpenVPN :
  • yunohost service stop openvpn
    yunohost service start openvpn
  • Partie client :
    • Éditer le fichier client .ovpn :
    nano /var/www/openvpn/vpn.domiane.tld.ovp
  • Ajouter :
  • dhcp-option DNS
    up /etc/openvpn/update-resolv-conf
    down /etc/openvpn/update-resolv-conf
    

    nb : sur le distribution GNU/Linux installer le paquet openvpn-update-resolv-conf

    Test de connexion au serveur OpenVPN de Yunohost

    • Ouvrir un navigateur internet, saisir l’url de son serveur Yunohost et se connecter :
    • yunohost-panel-01

    • Cliquer sur le gros bouton carré « Op » :
    • yunohost-panel-02

    • Cliquer sur le troisième lien pour télécharger le fichier client d’OpenVPN :
    • yunohost-panel-03

    • Enregistrer le fichier client .ovpn
    • yunohost-panel-04

    • Se rendre dans le répertoire ou se trouve le fichier client et se connecter au serveur OpenVPN :
    sudo openvpn vpn.domaine.tld.ovpn
  • Renseigner l’utilisateur et son mot de passe authoriser à se conencter au serveur OpenVPN :
  • Enter Auth Username: ****
    Enter Auth Password: ***********
    
  • Si tout c’est bien passé, le message suivant s’affiche tout à la fin : Initialization Sequence Completed
  • Vérifier la résoltion DNS :
  • drill @10.8.0.1 memo-linux.com

    Ressource


    Viewing all articles
    Browse latest Browse all 515

    Trending Articles