Openvpn

From wiki
Jump to: navigation, search

OpenVPN permet à des pairs de s'authentifier entre eux à l'aide d'une clé privée partagée à l'avance, de certificats électroniques ou de couples de noms d'utilisateur/mot de passe. Il utilise de manière intensive la bibliothèque d'authentification OpenSSL ainsi que le protocole SSLv3/TLSv1. Disponible avec une multitude d'environnements tel que Solaris, OpenBSD, FreeBSD, NetBSD, Linux (Debian, Redhat, Ubuntu, etc...), Mac OS X, Windows 2000, XP, Vista, 7 et 8, il offre de nombreuses fonctions de sécurité et de contrôle.

OpenVPN n'est pas compatible avec IPsec ou d'autres logiciels VPN. Le logiciel contient un exécutable pour les connexions du client et du serveur, un fichier de configuration optionnel et une ou plusieurs clés suivant la méthode d'authentification choisie.

Des suggestions? Envoyez moi un mail à wiki@lomb.fr =)

Contents

Installation

Cette partie du wiki est un tuto pour l'installation d'OpenVPN. L'installation c'est faite sur une Debian Wheezy

Openvpn

Serveur

Commençons par télécharger le package openVPN :

apt-get install openvpn

Nous allons créer un nouveau sous-répertoire et copier l'intégralité d'un exemple la conf de base d'OpenVPN :

mkdir /etc/openvpn/easy-rsa/
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/

[FACULTATIF]

Vous pouvez modifier le fichier "var" qui se situe dans /etc/openvpn/easy-rsa"

cd /etc/openvpn/easy-rsa/
vi vars

Vous pouvez personnaliser votre cert en fin de fichier en modifiant :

export KEY_COUNTRY="FR"
export KEY_PROVINCE="FR"
export KEY_CITY="FR"
export KEY_ORG="VILLE"
export KEY_EMAIL="MAIL"
export KEY_CN=changeme
export KEY_NAME=changeme
export KEY_OU=changeme

[FIN FACULTATIF]

Une fois la modification effectuée, vous récupérez les sources :

cd /etc/openvpn/easy-rsa/
source vars

Puis exécutez successivement les commandes suivantes :

./clean-all
./build-dh
./pkitool --initca
./pkitool --server server
openvpn --genkey --secret keys/vpn.key 

Openvpn a généré différent fichiers, nous allons les placers dans /etc/openvpn. Ça sera notre cert d'OpenVPN côté serveur :

cp keys/ca.crt keys/vpn.key keys/server.crt keys/server.key keys/dh1024.pem /etc/openvpn/

Nous allons créer une "prison"

mkdir /etc/openvpn/jails

Nous allons créer le fichier conf d'OpenVPN serveur :

vi /etc/openvpn/server.conf

/!\ Si vous souhaitez écouter sur un autre port que le 443, il faut modifier la ligne "port 443" par celui de votre choix /!\

# VPN
   mode server
   proto tcp
   port 443
   dev tun
   ca ca.crt
   cert server.crt
   key server.key
   dh dh1024.pem
   tls-auth vpn.key 0
   cipher AES-256-CBC
   server 10.8.0.0 255.255.255.0
   push "redirect-gateway def1 bypass-dhcp"
   push "dhcp-option DNS 8.8.8.8"
   keepalive 10 120
   user nobody
   group nogroup
   chroot /etc/openvpn/jails
   persist-key
   persist-tun
   comp-lzo
   verb 3
   mute 20
   status openvpn-status.log
   log-append /var/log/openvpn.log

Pour la valeur -- push "dhcp-option DNS 8.8.8.8" -- Si vous souhaitez utiliser votre serveur en résolveur c'est possible, suivez le tuto suivant :

===> OPENVPN DNS /!\ Ne loupez pas la partie OPENVPN DNS /!\

Une fois le tuto suivi, modifier l'adresse IP "8.8.8.8" par "10.8.0.1"

Client

/!\ Toujours sur le serveur /!\
Il faut se rendre dans le répertoire adéquate :

cd /etc/openvpn/easy-rsa

Et créer un répertoire pour accueillir nos nouveaux clients :

mkdir /etc/openvpn/clientconf
mkdir /etc/openvpn/clientconf/bob

Et générer une clef pour un nouvel Utilisateur, par exemple "bob"

./build-key bob

Créons un répertoire pour bob et plaçons le cert dans ce nouveau répertoire :

cp /etc/openvpn/ca.crt /etc/openvpn/vpn.key keys/bob.crt keys/bob.key /etc/openvpn/clientconf/bob/

Il faut maintenant créer le fichier client :

cd /etc/openvpn/clientconf/bob
vi client.conf

/!\ Remplacer X.X.X.X par l'adresse IP de votre serveur, le port '443' si vous choisi un autre port et 'bob.crt' et 'bob.key' si vous avez choisi un autre nom d'utilisateur /!\

# Config Client
client
dev tun
proto tcp-client
remote X.X.X.X 443
resolv-retry infinite
cipher AES-256-CBC
ca ca.crt
cert bob.crt
key bob.key
tls-auth vpn.key 1
nobind
persist-key
persist-tun
comp-lzo
verb 3

Créer un fichier ovpn qui sera lu par le client Openvpn de votre client :

cp client.conf client.ovpn

Normalement dans le répertoire de notre client bob, nous avons les fichiers suivants :

ls
 ca.crt
 client.conf  
 client.ovpn  
 bob.crt  
 bob.key  
 vpn.key

Routage

Nous devons nous occuper de notre routage. Oui, nous avons créer un tunnel, mais nous devons autoriser la connexion directe entre votre interface [souvent eth0] et votre tunnel. Et créer un NAT sur votre tunnel.

Si vous avez fait le gros barbu (comme moi) avec un iptables qui DROP tout, voici les règles à ajouter : /!\ Si vous avez choisi un autre numéro de port que 443, modifiez le /!\

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT

Dans mon exemple c'est l'interface "eth0" mais pour vérifier si c'est aussi "eth0" pour vous, taper :

ifconfig 

Il faut maintenant autoriser le routage sur votre système, pour cela il suffit :

echo 1 > /proc/sys/net/ipv4/ip_forward

Et modifier la ligne contenant "net.ipv4.ip_forward=0" par la valeur "1":

vi /etc/sysctl.conf
net.ipv4.ip_forward=1

Cient Openvpn GUI

Le client est téléchargeable au lien suivant : https://openvpn.net/index.php/open-source/downloads.html

Transférez l'intégralité des fichiers du dossier bob [/etc/openvpn/client/bob] vers votre client.

Copier les fichiers dans le répertoire config d'OpenVpn. Par exemple, pour Windows nous pouvons les mettres dans :

C:\Program Files\OpenVpn\config\

Exécutez le client en mode ADMINISTRATEUR ! Puis via l’icône qui est apparu connectez-vous.

Test

Rendez-vous sur le site : http://whatismyipaddress.com/

Vous devriez voir l'adresse IP de votre serveur et non celle de votre box.

WebRTC

WebRtc .. on sait même votre adresse IP privé magrés votre VPN. Rendez-vous sur le site suivant et admirez le résultat :

http://ipleak.net

Comme le site l'annonce, on connait seulement la solution sous Firefox, taper dans votre URL :

about:config

Et modifier la ligne => media:peerconnection.enabled en false

Personal tools
Namespaces

Variants
Actions
Navigation
Système UNIX
Cisco
Tools