Creative Commons License
Ce site est sous license Creative Commons Attribution-ShareAlike 4.0 International.
whonix linux qubes os whonix

installer un VPN dans Qubes-OS:

Un vpn peut être installer facilement, directement via le network manager de la sys-net. Le problème avec cette méthode est que si la connexion avec le vpn se coupe, vous ne vous en rendrez pas compte et pourrez continuer à surfer sur le net mais SANS être protégé par votre vpn. De plus, toutes vos VMs passeront par le vpn (et nous voulons avoir la liberté de choisir laquelle peut ou pas passer par le vpn!) La meilleure méthode est de dédié directement une VM pour le vpn.

créez une nouvelle VM basée le template debian et en sélectionnant "provides network" (comme ca, si la connexion est perdu, la connexion internet se coupera.

Dans le template debian:

  • Installer le paquet openvpn
  • sudo apt-get install openvpn
                    
  • désactivez l’option de démarrage automatique (pour qu’openvpn ne démarre pas sur toutes les VMs basées sur le template debian)
  • sudo systemctl disable openvpn.service
                    

    Eteignez le template et redémarrer la sys-vpn.


    Dans la sys-vpn:

  • Créez un dossier "vpn" dans le dossier /rw/config/:
  • sudo mkdir /rw/config/vpn
                    
  • Dans ce dossier, copiez le fichier de configuration de votre fournisseur de vpn « .ovpn ». Pour plus de facilitée pour le reste de la configuration, nommez le openvpn-client.ovpn. Dans ce fichier, si elles n’existent pas, ajoutez les lignes:
  • redirect-gateway def1
                    

    et

    auth-user-pass pass.txt
                    
  • Créez le fichier pass.txt et ajoutez vos identifiants de vpn:
  •  utilisateur 
    mot de passe

    enregistrez le tout.

    Pour tester si tout fonctionne bien, taper la commande:

    sudo openvpn --cd /rw/config/vpn --config openvpn-client.ovpn
                    

    puis,

    ping 1.1.1.1

    si tout ce passe bien, faite « cntrl+C » pour fermer la commande.

    Maintenant, créez le fichier qui permettra de démarrer le vpn automatiquement lors du démar rage de la sys-vpn:

  • Créez le fichier qubes-vpn-handler.sh dans le dossier vpn:
  • sudo gedit /rw/config/vpn/qubes-vpn-handler.sh                    
                    
  • Et copiez le texte:
  • #!/bin/bash
    set -e
    export PATH="$PATH:/usr/sbin:/sbin"
                                                     
    case "$1" in
                                                     
    up)
    # To override DHCP DNS, assign DNS addresses to 'vpn_dns' env variable before calling this script;
    # Format is 'X.X.X.X  Y.Y.Y.Y [...]'
    if [[ -z "$vpn_dns" ]] ; then
        # Parses DHCP foreign_option_* vars to automatically set DNS address translation:
        for optionname in ${!foreign_option_*} ; do
            option="${!optionname}"
            unset fops; fops=($option)
            if [ ${fops[1]} == "DNS" ] ; then vpn_dns="$vpn_dns ${fops[2]}" ; fi
        done
    fi
                                                     
    iptables -t nat -F PR-QBS
    if [[ -n "$vpn_dns" ]] ; then
        # Set DNS address translation in firewall:
        or addr in $vpn_dns; do
            iptables -t nat -A PR-QBS -i vif+ -p udp --dport 53 -j DNAT --to $addr
            iptables -t nat -A PR-QBS -i vif+ -p tcp --dport 53 -j DNAT --to $addr
        done
        su - -c 'notify-send "$(hostname): LINK IS UP." --icon=network-idle' user
    else
        su - -c 'notify-send "$(hostname): LINK UP, NO DNS!" --icon=dialog-error' user
    fi
                                                     
    ;;
    down)
    su - -c 'notify-send "$(hostname): LINK IS DOWN !" --icon=dialog-error' user
    ;;
    esac
                       
                    
  • enregistrez et rendez le exécutable avec la commande:
  • sudo chmod +x /rw/config/vpn/qubes-vpn-handler.sh
  • Ouvrez le fichier openvpn-client.ovpn:
  • sudo gedit /rw/config/vpn/openvpn-client.ovpn
  • ajouter les lignes suivantes:
  •  script-security 2 
    up 'qubes-vpn-handler.sh up'
    down 'qubes-vpn-handler.sh down'

    Supprimer les autres lignes script-security » « up » et « down »

  • Modifier le fichier qubes-firewall-user-script:
  • sudo gedit /rw/config/qubes-firewall-user-script
    #!/bin/bash
    #    Block forwarding of connections through upstream network device
    #    (in case the vpn tunnel breaks):
    iptables -I FORWARD -o eth0 -j DROP
    iptables -I FORWARD -i eth0 -j DROP
    ip6tables -I FORWARD -o eth0 -j DROP
    ip6tables -I FORWARD -i eth0 -j DROP
                                
    #    Accept traffic to VPN
    iptables -P OUTPUT ACCEPT
    iptables -F OUTPUT
                                
    #    Add the `qvpn` group to system, if it doesn't already exist
    if ! grep -q "^qvpn:" /etc/group ; then
            groupadd -rf qvpn
            sync
    fi
    sleep 2s
                                
    #    Block non-VPN traffic to clearnet
    iptables -I OUTPUT -o eth0 -j DROP
    #    Allow traffic from the `qvpn` group to the uplink interface (eth0);
    #    Our VPN client will run with group `qvpn`.
    iptables -I OUTPUT -p all -o eth0 -m owner --gid-owner qvpn -j ACCEPT
                    

    enregistrez et rendez le exécutable:

    sudo chmod +x /rw/config/qubes-firewall-user-script
  • Pour démarrer le vpn automatiquement, modifier le fichier rc.local:
  • sudo chmod +x /rw/config/rc.local

    Effacez les lignes du fichier et remplacez les par:

    #!/bin/bash
    VPN_CLIENT='openvpn'
    VPN_OPTIONS='--cd /rw/config/vpn/ --config openvpn-client.ovpn --daemon'
                                
    su - -c 'notify-send "$(hostname): Starting $VPN_CLIENT..." --icon=network-idle' user
    groupadd -rf qvpn ; sleep 2s
    sg qvpn -c "$VPN_CLIENT $VPN_OPTIONS"
                    

    rendez le éxécutable:

    sudo chmod +x /rw/config/rc.local

    Il ne reste plus qu’a redemarrer la sys-vpn et configurer les AppVMs que vous vous voulez faire passer par le vpn en paramétrant «sys-vpn» dans le «networking» des paramétres.

    Plus de renseignement dans la documentation de Qubes-OS.