13 novembre 2011

[1/2] Tunnel IPSec entre un iPhone et Ubuntu 10.04

Pour tous ceux et celles qui, comme moi, sont paranoïaque conscient du manque de confidentialité qu'offre un hotspot wifi, voici un petit tutoriel pour créer un tunnel IPsec entre un iPhone (ou iPad) et un petit serveur Ubuntu.

Pour ma part, j'ai choisi de louer une VM dans le cloud du célèbre hébergeur français OVH.
Mon besoin étant assez réduit, j'ai choisi l'offre minimale. Seul bémol, la puissance allouée est proportionnelle au faible prix pratiqué.

Cet article s'inspire du wiki officiel de StrongSwan. J'espère toutefois apporter une dose de facilité et d'industrialisation permettant un passage rapide et sans douleur au VPN IPSec.

La gestion des fichiers par package (dpkg, rpm, ebuild...) étant, IMHO, nécessaire à une saine administration des serveurs, StrongSwan sera re-compilé et packagé. De très bons packageur (ça se dit ?) travaillent dûr chez Debian/Ubuntu. Il serait dommage de s'en passer.

Nous réutiliserons donc un paquet source destiné à la dernière version d'Ubuntu : http://packages.ubuntu.com/source/precise/strongswan


De prime abord, installation des pré-requis nécessaires au fonctionnement de StrongSwan 
$ sudo apt-get install ipsec-tools 

Pré-requis nécessaires à la compilation. Une partie de ceux-ci pourront être dé-installé après la phase de packaging. 

$ sudo apt-get install build-essential fakeroot dpkg-dev devscripts gperf libcap-dev libgmp3-dev bison flex
$ sudo apt-get install libssl-dev  libcurl4-openssl-dev  libldap2-dev libpam0g-dev libkrb5-dev po-debconf hardening-wrapper network-manager-dev libfcgi-dev clearsilver-dev libxml2-dev libsqlite3-dev libnm-util-dev debhelper libtool libnm-glib-dev

Récupération des sources de StrongSwan : 

$ mkdir Sources && cd Sources
$ wget  http://archive.ubuntu.com/ubuntu/pool/universe/s/strongswan/strongswan_4.5.2-1.2.dsc
$ wget http://archive.ubuntu.com/ubuntu/pool/universe/s/strongswan/strongswan_4.5.2.orig.tar.gz
$ wget  http://archive.ubuntu.com/ubuntu/pool/universe/s/strongswan/strongswan_4.5.2-1.2.debian.tar.gz

Decompression
$ tar xzf strongswan_4.5.2.orig.tar.gz 
$ cd strongswan-4.5.2/
$ tar xf ../strongswan_4.5.2-1.2.debian.tar.gz 

Ajout de l'option "cisco-quirks" conformément au wiki StrongSwan.
$ perl -i.bak -pe  's/(--enable-led)/\1 --enable-cisco-quirks/' debian/rules
Compilation 
$ dpkg-buildpackage -rfakeroot -uc -b

Lors de la tentative de compilation, l'erreur suivante doit apparaître : 
dpkg-checkbuilddeps: Unmet build dependencies: libnm-glib-vpn-dev (>= 0.7)

Ce paquet, lié à l'utilisation de NetworkManager n'est disponible qu'à partir de "Natty". 
Ca tombe bien, le fichier "debian/rules" configure détecte automatiquement la présence de NM.

# And only enable network-manager building if the libraries are present
# (they will be when the build-deps are fulfilled, but this makes it easier
# to do backports where the network-manager libs can not be installed, and 
# thus to just ignore build-deps).
ifeq ($(shell test -d /usr/include/libnm-glib/ && echo yes),yes)
  CONFIGUREARGS += --enable-nm
endif

Donc, soit on modifie le fichier "debian/control" pour supprimer la dépendance, soit on désactive la vérification lors de la compilation. 

La seconde option est la plus rapide : 
$ time dpkg-buildpackage -rfakeroot -uc -b -d 2>&1 | tee /tmp/dpkg-buildpackage.log
real 6m41.164s
user 4m50.970s
sys 1m32.458s

Après quelques minutes, les packages sont tous chauds dans le dossier parent : 

$ cd ..
$ ls *deb
$ ls *deb
libstrongswan_4.5.2-1.2_i386.deb
strongswan-ikev1_4.5.2-1.2_i386.deb  
strongswan-starter_4.5.2-1.2_i386.deb
strongswan_4.5.2-1.2_all.deb       
strongswan-ikev2_4.5.2-1.2_i386.deb
strongswan-dbg_4.5.2-1.2_i386.deb  
strongswan-nm_4.5.2-1.2_i386.deb

Bien sûr, il est recommandé de laisser une trace des modifications effectuées dans les packages. Au minimum, on peut utiliser les options de dpkg-buildpackage
       -vversion
       -Cdescription-des-changements
       -madresse-du-responsable
       -eadresse-du-responsable
              Passé tel quel à dpkg-genchanges. Voir sa page de manuel.


Installation de StrongSwan 
$ sudo dpkg -i *deb

L'installation de StrongSwan est terminée. On va pouvoir passer à la phase de configuration.

La suite dans le prochain billet.

Aucun commentaire: