Comment configurer OpenVPN pour pouvoir utiliser Internet en toute sécurité depuis un hotspot non sécurisé?

31

Objectif: Je veux pouvoir utiliser Internet en toute sécurité via mon ordinateur personnel lorsque mon ordinateur portable est connecté à un point d'accès / point d'accès ouvert.

Je sais que je peux utiliser un proxy SSH tunnel / SOCKS, mais je ne veux pas contourner les applications (en les faisant utiliser, si possible). Je suppose que ce dont j'ai besoin est une configuration OpenVPN, donc je cherche un guide détaillé sur la façon de:

  1. Installer et configurer le serveur OpenVPN
  2. Configurez le client OpenVPN (NetworkManager)
Les versions d'Ubuntu sur lesquelles cela devrait fonctionner sont 10.10 et 11.04.

    
posée htorque 17.04.2011 - 22:06
la source

3 réponses

40

J'ai la question exacte il y a quelques mois, mais en plus, je souhaitais avoir une connexion IPv6 si possible. Vous pourriez être intéressé par mes questions sur Serverfault:

Je n’avais qu’un seul NIC ("interface réseau") sur mon serveur pour l’utiliser. Dans ma configuration, NetworkManager ne suffisait pas car je dois exécuter un script personnalisé pour prendre en charge IPv6. Pour plus de simplicité, je vais utiliser NetworkManager ici et omettre le support IPv6.

D'abord, prenez simplement une décision sur la méthode d'authentification. J'utiliserai la méthode du certificat plus sûr qui fonctionne comme SSL: pendant le handshake, un secret commun est choisi qui sera utilisé pour la session. Les autres méthodes sont une clé partagée; un nom d'utilisateur et un mot de passe.

Serveur

1. Préparez

D'abord, installez le serveur openvpn. C'est aussi simple que sudo apt-get install openvpn . La partie difficile est la configuration. La configuration est présente dans /etc/openvpn .

2. Configurer l'authentification

Le serveur a besoin de certificats pour s’identifier et identifier ses clients. Ces certificats sont extraits d'une autorité de certification (Common Authority). La création des certificats et des clés privées associées peut être effectuée sur n'importe quelle machine, cela ne doit pas être fait sur le serveur. Si vous êtes vraiment paranoïaque, vous devez le faire sur une machine qui n’est pas connectée à un réseau et utiliser une clé USB pour transférer les certificats.

Créer une autorité de certification et des certificats pour le serveur

Cette étape doit être effectuée une fois, à moins que la clé privée de votre autorité de certification ne soit compromise. Dans ce cas, des certificats valides peuvent être créés, qui seront acceptés par le serveur, entraînant une violation de la sécurité.

La documentation officielle suggère d’effectuer l’administration en /etc/openvpn . Je ne suis pas un grand fan de tout faire en tant que root, alors je vais le mettre dans un répertoire différent.

  1. Créez le répertoire d’administration et copiez-y les fichiers en exécutant:

    mkdir ~/openvpn-admin
    cd ~/openvpn-admin
    cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ ./easy-rsa
    cd easy-rsa
    
  2. Modifiez les valeurs par défaut dans vars si nécessaire, par exemple en définissant KEY_SIZE=2048 parce que vous êtes paranoïaque.
  3. Chargez les variables et créez le répertoire de clés en exécutant:

    . vars
    
  4. Si vous rencontrez une erreur, No ... openssl.cnf file could be found Further invocations will fail , exécutez ln -s openssl-1.0.0.cnf openssl.cnf , puis . vars à nouveau.

  5. Si vous utilisez cette autorité de certification pour la première fois, préparez l’environnement des clés. N'exécutez pas cette commande si vous souhaitez conserver votre autorité de certification précédemment créée. Pour ce faire, vous devrez déployer un nouveau ca.crt .

    ./clean-all
    
  6. Créez l’autorité de certification en exécutant ./build-ca . Vous pouvez remplir tous les détails de votre choix, mais notez que ces informations seront visibles dans les fichiers journaux lorsque le client se connecte au serveur. Cela créera les fichiers ca.key et ca.crt dans le sous-dossier keys . Conservez le secret du fichier ca.key dans toutes les circonstances . Si vous ne le faites pas, toute personne disposant de la clé pourra se connecter à votre serveur.
  7. Si vous avez perdu ou expiré un certificat précédent, vous devez d'abord révoquer l'ancien avec ./revoke-full server . Sinon, vous obtenez une erreur de base de données.
  8. Créez le certificat pour le serveur en exécutant:

    ./build-key-server server
    

    Lorsqu'on vous demande un mot de passe, laissez-le vide à moins que vous ne souhaitiez entrer le mot de passe à chaque démarrage du serveur (non recommandé). Confirmez la signature du certificat et validez-le. Deux nouveaux fichiers apparaîtront dans le répertoire keys : server.key et server.crt .

DH et utilisez prepare pour tls-auth

Génération des paramètres Diffie-Hellman à l'aide de:

./build-dh

Selon les conseils de renforcement , utilisez tls-auth . Pour cela, générez la clé de secret partagé en utilisant:

openvpn --genkey --secret ta.key

Le fichier résultant ( ta.key ) doit également être distribué aux clients, mais vous ne devez pas le mettre en public.

Créer des certificats pour les clients

Pour chaque client, ces étapes doivent être répétées:

  1. Entrez le répertoire dans lequel vous avez créé votre certificat d’autorité de certification et de serveur:

    cd ~/openvpn-admin/easy-rsa
    
  2. Si vous avez ignoré l’étape de création de l’autorité de certification car vous en avez déjà une, vous devez d’abord charger les variables:

    . vars
    
  3. Si vous créez de nouveaux certificats car les anciens sont perdus ou expirés , vous devez d'abord révoquer l'ancien avec ./revoke-full you . Sinon, vous obtenez une erreur de base de données.
  4. Créer le certificat client you.key et son certificat correspondant you.crt :

    ./build-key you
    

    Le CommonName devrait être unique. Laissez le mot de passe vide si vous utilisez KDE car il n'est pas encore pris en charge à partir de 10.10.Comme pour la génération du certificat de serveur, confirmez la signature du certificat et validez les modifications.

3. Configurez le service OpenVPN

Par défaut, OpenVPN s'exécute en tant que root lors de l'acceptation de connexions. Ce n'est pas une bonne idée si le service est accessible depuis Internet.

  1. Créez l'utilisateur dédié pour OpenVPN, dites openvpn :

    sudo useradd openvpn
    
  2. Copiez les fichiers server.key , server.crt , ca.crt et dh1024.pem (ou dh2048.pem si vous avez changé la taille de la clé) du répertoire keys dans /etc/openvpn . Une autorisation de 400 (lecture seule pour le propriétaire) est correcte.

    sudo cp ~/openvpn-admin/easy-rsa/keys/{server.key,server.crt,ca.crt,dh*.pem} /etc/openvpn
    sudo chmod 400 /etc/openvpn/{server.key,server.crt,ca.crt}
    
  3. Copiez également le fichier ta.key :

    sudo cp ~/openvpn-admin/easy-rsa/ta.key /etc/openvpn
    sudo chmod 400 /etc/openvpn/ta.key
    
  4. Créez le fichier /etc/openvpn/server.conf et insérez les lignes suivantes:

    proto udp
    dev tap
    ca ca.crt
    cert server.crt
    key server.key
    dh dh1024.pem
    server 10.8.0.0 255.255.255.0
    push "redirect-gateway def1"
    ifconfig-pool-persist ipp.txt
    keepalive 10 120
    tls-auth ta.key 0
    # Compress data to save bandwidth
    comp-lzo
    user openvpn
    group openvpn
    persist-key
    persist-tun
    # Logs are useful for debugging
    log-append openvpn-log
    verb 3
    mute 10
    
  5. Définissez les autorisations appropriées, il n’a pas besoin d’être secret, mais je préfère ne pas divulguer les détails de la configuration pour:

    sudo chmod 640 /etc/openvpn/server.conf
    

4. Terminer le serveur

Si vous avez créé les certificats sur le serveur, il est préférable de les chiffrer ou de les retirer du serveur. Dans tous les cas, ne perdez pas les ca.key et server.key . Dans le premier cas, les autres pourront se connecter à votre serveur. Dans ce dernier cas, un MITM est possible.

Client

Outre l’adresse IP du serveur, l’administrateur du serveur doit remettre les fichiers suivants:

  • ca.crt : pour vérifier les certificats
  • server.crt : pour vérifier le serveur et communiquer avec lui
  • ta.key : pour renforcer la sécurité
  • you.crt : pour vous identifier avec le serveur
  • you.key : c'est comme votre mot de passe, les autorisations de fichier doivent être 400 (lecture seule pour le propriétaire)

1. Installation

Installez OpenVPN et le plug-in NetworkManager (adapté à KDE et Gnome):

sudo apt-get install openvpn network-manager-openvpn

network-manager-openvpn est dans le référentiel d'univers.

2. Configuration

Dans le panneau de configuration, utilisez les informations suivantes:

  • Passerelle: l’adresse IP du serveur
  • Tapez: "Certificats (TLS)" (Gnome) ou "Certificat X.509" (KDE)
  • Certificat CA: chemin d'accès à ca.crt
  • Certificat utilisateur: chemin d'accès à you.crt
  • Clé privée: chemin d'accès à you.key

À Avancé :

  • Port de la passerelle: Automatique (1194) (n’a pas besoin d’être modifié)
  • Utiliser la compression de données LZO: activée
  • Utiliser la connexion TCP: désactivé
  • Utiliser le périphérique TAP: activé
  • Cipher: default
  • Authentification HMAC: par défaut
  • Utiliser l'authentification TLS: activé
    Spécifiez le chemin d'accès du fichier de clés à ta.key et définissez "Direction de la clé" sur 1 .
  • ( todo - check it out ) le serveur pousse la passerelle par défaut pour que tout le trafic passe par la connexion VPN. La dernière fois que j'ai vérifié, le plug-in network-manager-openvpn ne l'a pas fait.

Si vous ne parvenez pas à faire fonctionner NetworkManager ou si vous ne souhaitez pas l’utiliser, placez les fichiers ( ca.crt , ...) dans /etc/openvpn et créez le fichier /etc/openvpn/client.conf file:

client
dev tap
proto udp
# replace 1.2.3.4 by your server IP
remote 1.2.3.4 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert you.crt
key you.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
user nobody
group nogroup
verb 3
mute 20

Si vous ne souhaitez pas activer ce VPN au démarrage, éditez /etc/default/openvpn et supprimez la mise en commentaire de la ligne suivante en supprimant # :

#AUTOSTART="none"

Pour démarrer cette connexion, exécutez:

sudo /etc/init.d/openvpn start client

client doit être renommé si votre fichier de configuration n'est pas nommé client.conf . Exemple: si vous avez nommé votre fichier de configuration safe.conf , vous devez exécuter sudo /etc/init.d/openvpn start safe .

Pour arrêter OpenVPN, vous devez exécuter:

sudo /etc/init.d/openvpn stop
    
réponse donnée Lekensteyn 17.04.2011 - 23:53
la source
8

Vous n'avez pas besoin de manipuler des applications. Cela fonctionne "juste comme VPN."

  1. D'abord, installez le paquetage tsocks (chaussettes temporaires):

    sudo apt-get install tsocks
    
  2. Puis éditez /etc/tsocks.conf et entrez

    server = 127.0.0.1
    server_port = 3333
    
  3. Maintenant, ouvrez un terminal et tapez (cela vous connecte):

    ssh -ND 3333 ssh.url.to.your.home.machine
    
  4. Exécuter (via un autre terminal ou ALT-F2):

    tsocks firefox
    

Maintenant, Firefox transmet toutes les communications au serveur SOCKS de votre ordinateur que SSH a créé. Cela se transforme en tunnel vers votre machine à la maison, où il va sur le Web. Tout ce dont vous avez besoin sur votre ordinateur est un serveur SSH. Après la première fois, répétez simplement les étapes 3 et 4.

Cela fonctionne comme un charme! Hélas, le chrome n'aime pas les tsocks, mais bon, Firefox fonctionne.

    
réponse donnée MarkovCh1 18.04.2011 - 01:16
la source
1

La solution de tunnel SSH est plus facile que vous ne le pensez. Un programme comme gSTM démarrera / arrêtera les tunnels avec une interface graphique. Ensuite, ouvrez simplement Network Proxy et changez-le de Connexion Internet directe à Configuration manuelle du proxy, appuyez sur "Appliquer à l'échelle du système" et toutes vos applications doivent envoyer leurs données dans le tunnel - inutile de manipuler individuellement.     

réponse donnée Felix 18.04.2011 - 00:37
la source

Lire d'autres questions sur les étiquettes