Il y a quelques années, quand j'ai acheté mon premier portable, les réseau sans-fil était tout neuf. Personne ne les sécurisait, le wardrivin' était à la mode dans mon entourage. J'avais même volontairement laissé mon wifi ouvert afin d'espionner mes voisins qui décidaient d'utiliser ma connexion internet. En faisant cela, j'ai réalisé ce qui se passe quand on ne contrôle pas notre dhcp et/ou notre gateway vers internet. C'est à ce moment que j'ai décidé d'encapsuler mes communications dans un tunnel VPN. J'ai essayé plusieurs technologies: IPSEC, CIPE, pptp, des tunnel SSH bidon, mais rien n'était satisfaisant, souvent trop de manipulations à faire à chaque fois qu'on se connecte. J'ai longtemps utilisé CIPE ( Crypto IP Encapsulation ) un logiciel très simple à configurer comparativement à IPSEC mais il comporte encore quelques lacunes. Un jour, apparu, OpenVPN!!

Depuis plusieurs années, j'utilise OpenVPN dès que j'ai besoin d'une solution vpn. Simple, stable, sécuritaire, supportant plusieurs niveau d'authentification, du proxy http, bref rien à dire de plus pour me convaincre. Il y a même des outils hyper simple à utiliser pour faire la gestion des clef SSL.

La première étape est de se configurer un serveur OpenVPN.

Voici mon setup. J'utilise Centos 5.5, mais n'importe quelle version de linux/bsd ferait le travail tout aussi bien. Il se peut que les path des logiciel ne soient pas au même endroit, mais le concept reste le même.

Voici les grande lignes:

* Installer OpenVPN sur le serveur
* Générer les clefs SSL
* Éditer le fichier server.conf
* Paramétrer notre firewall
* Copier certaines clefs vers nos clients ( portable, téléphone cellulaire, etc. )
* Configurer notre client pour se connecter sur notre serveur.
yum install openvpn
cd /etc/openvpn/
cd easy-rsa

### configurer le fichier "vars" et répondre aux questions qui nous sont demandées.

. ./vars
sh clean-all
sh build-ca
sh build-key-server my-srv
sh build-key my-cli1
sh build-key my-cli2
sh build-key my-cli3
sh build-dh
openvpn --genkey --secret ta.key
cp keys/*.crt ../keys/
cp keys/*.key ../keys/

Quant à la configuration du firewall, je n'entrerai pas dans les détails. Brièvement, j'utilise du SNAT étant donné que j'ai une ip fixe ( chez iWeb ), mais si j'étais hébergé à la maison j'utiliserais fort probablement du Masquerade et un Dyndns.

Éditer /etc/sysctl.conf et s'assurer que les lignes suivantes sont présentes:


net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1

# relire notre config et l'appliquer
sysctl -p

iptables -t nat -A POSTROUTING -s 10.18.137.0/255.255.255.0 -o eth0 -j SNAT --to-source 72.55.147.X
iptables -I RH-Firewall-1-INPUT -d 72.55.147.X -p udp -m udp --dport 1194 -j ACCEPT
service iptables save

Ensuite, on peut éditer /etc/sysconfig/iptables ou votre quelconque script de firewall.

Voici mon fichier de configuration

local 72.55.147.X
port 1194
proto udp
dev tun
ca keys/ca.crt
cert keys/serveur.crt
key keys/serveur.key  # This file should be kept secret
dh keys/dh2048.pem
server 10.18.137.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
push "dhcp-option DNS 10.18.137.1"   # rediriger son dns sur une machine qu'on contôle!
keepalive 10 120
tls-auth keys/ta.key 0 # This file is secret
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3

Ensuite il faut copier nos clef "clients" vers nos ordinateurs portables. Dans mon cas, j'utilise TunnelBlick sur macosx et le client OpenVPN qui vient avec Android.

Pour utiliser OpenVPN sur son cellulaire il faut malheureusement l'avoir préalablement rooté son appareil. Je n'entrerai pas dans ces détails, mais sur ce site ils ont tout expliqué comment faire: http://www.cyanogenmod.com/ Lorsque CyanogenMod-6.0, de préférence, est installé, on va dans le Market, on installe OpenVPN-Installer et OpenVPN-Settings. Ensuite, il faut copier les clefs ca.crt, ta.key, my-cliX.crt. my-cliX.key dans un répertoire qui s'appelle openvpn à la racine de notre carte SD.

Voici le fichier de configuration que j'ai sur mon appareil: Notez qu'il a été créé par OpenVPN-Settings et qu'il est ensuite facilement éditable à partir de notre ordinateur.

client
dev tun
proto udp
remote 72.55.147.X 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert my-cliX.crt
key my-cliX.key
tls-auth ta.key 1
comp-lzo
verb 4

Ceci étant fonctionnel, j'ai tout de même quelques désagréments. Le vpn ne s'accroche pas automatiquement au démarrage du wifi. Si le téléphone tombe en veille ça cause parfois problème lors du réveil. Quand on est dans un environnement où il y a plusieurs bornes ( cégep, université, etc ), il se peut qu'en se déplaçant, et qu'on change de borne, le routing se brise, mais rien de terrible... Off/On du vpn et le tour est joué.

Attention à votre batterie! Elle se vide à vue d'oeil.