09 juin 2013

SSTIC OpenVPN Synology Freebox et iPhone

Ça y est, c'est fini, le SSTIC 2013 est terminé...

Comme l'année dernière, les trois jours de conférence ont été très intéressants. J'ai encore appris de nombreuses choses, sur l'univers de la sécurité informatique, sur les spécialistes qui habitent cet univers, sur mes nombreuses lacunes techniques et sur ma faible paranoïa...

J'ai également rencontré de nombreuses personnes avec qui j'ai pu discuter longuement. Pour la plupart, ces personnes me lisent sur ce blog et en apprécient le contenu, ce qui n'a pas gâté mon plaisir. J'étais très heureux de croiser autant de personnes passionnées par l'informatique et qui, pour la grande majorité, ont choisi le côté clair de la Force. J'y ai même rencontré une experte judiciaire en informatique jeune, jolie, compétente et sympathique. Je vous assure que c'est fort rare.

Le blog est toujours en ligne cette année, mon compte Twitter aussi. Il faut dire que j'ai été beaucoup plus prudent que l'année dernière: je n'ai pas du tout utilisé mon ordinateur portable (pourtant j'aurais été un des rares Windows 8 de l'amphi ;-), et mon smartphone était en mode avion, puis timidement en 3G pour quelques tweets. Pas de connexion dans l'amphi, pas de connexion dans la rue, pas de connexion à l'hôtel: on n'est jamais assez prudent.

Mais c'est un peu pénible de ne pas pouvoir répondre à ces emails, de ne pas pouvoir se connecter à son blog, de ne pas pouvoir lire dans ses flux RSS ses blogs préférés. Bref, c'est un peu pénible de ne pas pouvoir avoir un accès sécurisé à Internet.

Tout cela, c'est un peu de ma faute: j'ai tellement procrastiné sur le sujet que je me suis retrouvé "Gros-Jean comme devant" la veille du départ au SSTIC. Du coup, pendant le SSTIC, j'ai un peu enquêté à droite et à gauche pour savoir comment les plus paranoïaques des spécialistes de la sécurité sortaient couverts. Chacun dispose de ses outils, mais les mots suivants sont revenus souvent: VPN, TLS, cryptage chiffrage chiffrement, OpenVPN, bières, sauts en parachute...

Comme je ne pratique pas tous ces concepts, je me suis au travail dès ce week-end. Voici donc la solution qui me convient, et que je partage ici avec vous.

Contexte :

- Je dispose d'un magnifique iPhone que je souhaite utiliser, dans des conditions de bonne sécurité dans un milieu inconnu, pour accéder à internet.
- J'ai la chance d'avoir un NAS Synology DS713+ familial qui permet la mise en place d'un serveur VPN. Après avoir testé plusieurs fournisseurs VPN, je souhaite pouvoir utiliser une solution personnelle que je pourrai peut-être mieux maîtriser.
- Mes activités étant conformes aux lois françaises, et protégées par celles-ci, je souhaite profiter de mon abonnement ADSL personnel, situé en France métropolitaine (avec IP fixe).
- Enfin, plutôt qu'un accès PPTP, je souhaite mettre en place une solution plus sure, basée sur OpenVPN.

Mise en œuvre :

Je vais m'appuyer sur toutes les personnes ayant partagé sur Internet leurs solutions aux différents problèmes que j'ai rencontrés.

1) Installation du serveur VPN sur le NAS Synology:
Très simple et bien expliquée sur cette page du site de Synology.

2) Installation de l'application "OpenVPN connect" sur l'iPhone (sans jailbreak):
A l'heure où j'écris ces lignes, l'application n'est pas disponible sur un compte iTunes français, mais j'ai pu l'installer à partir d'un compte américain. Pour se créer un compte américain, il suffit de suivre les explications de ce site. Une fois installée, ne lancez pas tout de suite l'application.

3) Création des certificats:
Afin de maîtriser correctement la chaîne de sécurité, il me semble préférable de générer soi-même les différents certificats, par exemple pour pouvoir les modifier en cas de compromission. Pour cela, j'ai suivi à la lettre les instructions de cette page (du point n°1 au point n°3) qui utilisent le logiciel XCA.

4) Configuration du serveur VPN sur le NAS Synology:
Une partie des certificats doit être installée sur le NAS et pris en compte par le serveur VPN. J'ai suivi à la lettre les instructions 2 et 3 détaillées sur cette page. Notez que le point n°1 a déjà été fait à l'étape précédente (Création des certificats). J'ai également rencontré plusieurs problèmes lors du point n°4 de cette liste d'instructions, c'est pourquoi je le détaille dans les étapes qui suivent.

5) Récupération du fichier de configuration OpenVPN pour l'iPhone:
- Après avoir rebooté votre NAS pour être sur que le serveur VPN utilise la bonne configuration, retournez dans l'interface d'admin du Synology pour exporter la configuration du VPN server (Connectez-vous à DSM avec les identifiants d’admin. Allez à Menu principal > VPN Server. Cliquez sur OpenVPN sous la section Paramètres dans le panneau gauche. Vous avez un bouton "exporter la configuration" qui va permettre de stocker sur votre ordinateur le fichier qui va servir de base pour la configuration de l'iPhone. Il s'agit d'une archive compressée qui s'appelle "openvpn.zip".
- Dézippez là sur votre ordinateur.
- Vous voici en possession d'un fichier openvpn.ovpn qui ressemble à cela
dev tun
tls-client
remote YOUR_SERVER_IP 1194

# The "float" tells OpenVPN to accept authenticated packets from any address,
# not only the address which was specified in the --remote option.
# This is useful when you are connecting to a peer which holds a dynamic address
# such as a dial-in user or DHCP client.
# (Please refer to the manual of OpenVPN for more information.)
#float

# If redirect-gateway is enabled, the client will redirect it's
# default network gateway through the VPN.
# It means the VPN connection will firstly connect to the VPN Server
# and then to the internet.
# (Please refer to the manual of OpenVPN for more information.)
#redirect-gateway

# dhcp-option DNS: To set primary domain name server address.
# Repeat this option to set secondary DNS server addresses.
#dhcp-option DNS DNS_IP_ADDRESS

pull
proto udp
script-security 2
ca ca.crt
comp-lzo
reneg-sec 0
auth-user-pass

6) Modification du fichier openvpn.ovpn obtenu à l'étape précédente:
- "YOUR_SERVER_IP"doit être remplacée par l'adresse IP fixe de votre box ADSL. Étant heureux propriétaire locataire d'une freebox avec adresse IP fixe, je n'ai pas eu besoin de me replonger dans mes souvenirs du paramétrage de dyndns.
- J'ai décommenté la ligne "redirect-gateway" (mais je ne suis pas sur de son impact dans le temps)
- Il faut supprimer la ligne "ca ca.crt" et la remplacer par:
< ca >
-----BEGIN CERTIFICATE-----
xxx
-----END CERTIFICATE-----
< /ca >

< cert >
-----BEGIN CERTIFICATE-----
xxx
-----END CERTIFICATE-----
< /cert >

< key >
-----BEGIN CERTIFICATE-----
xxx
-----END CERTIFICATE-----
< /key >
- Il faut ensuite remplacer les "xxx" par les contenus respectifs des fichiers certificats du client générés à l'étape n°3 "Création des certificats".
- Il faut enfin corriger la ligne "reneg-sec 0" en "reneg-sec 3600".

7) Transfert du fichier de configuration vers l'iPhone:
- Il faut transférer le fichier openvpn.ovpn modifié à l'étape précédente vers votre iPhone. Pour cela, il faut brancher votre iPhone sur votre ordinateur et utiliser iTunes: Menu iPhone / Apps. Dans "Partage de fichiers", descendre jusqu'à l'application "OpenVPN", la sélectionner, et cliquer sur le bouton "Ajouter..." pour aller chercher le fichier openvpn.ovpn.
- Sur votre iPhone, vous pouvez enfin lancer l'application OpenVPN", et accepter le chargement du profil trouvé dans le fichier openvpn.ovpn. Ne cherchez pas tout de suite à vous connecter...

8) Configuration de votre box ADSL pour le renvoi de port:
Allez dans l'interface de votre box ADSL pour paramétrer le renvoi du port UDP 1194 de l'adresse IP fixe de la box vers l'adresse IP et le même port de votre NAS familial.

9) Connexion VPN de votre iPhone:
Retournez sur votre iPhone, dans l'application OpenVPN et connectez vous dessus avec un compte valide de votre NAS. L'informatique est magique et tout fonctionne. Vous pouvez lire vos emails au SSTIC.

Erreurs possibles :

Il est possible de rencontrer plein d'erreurs tout au long de la procédure que j'indique ici, et il serait illusoire que je puisse vous donner toutes les solutions à vos problèmes. J'ai toutefois rencontré plusieurs difficultés qui m'ont fait perdre un nombre d'heures assez importantes. Je vous les indique ici en espérant faire le bonheur de quelques uns:

- Si vous avez une erreur de ce type:

Cannot load certificate file error:0906D06C: PEM routines:PEM_read_bio:no start line: error:140AD009: SSL routines:SSL_CTX_use_certificate_file:PEM lib
Il est fort probable que vous ayez modifié les certificats lors du copié/collé de l'étape 6. Une sombre histoire d'UTF8 mal géré par OpenVPN. Vous aurez plus d'informations sur cette page. Dans mon cas, j'ai recommencé mon copié/collé sous Notepad sans chercher à mettre en forme, et c'est passé.

- étape 8: vous n'allez pas le croire, mais j'avais déjà programmé sur ma box une redirection du port UDP 1194 vers mon ordinateur, il y a longtemps, lorsque j'ai effectué des tests de connexions à des VPN distants. Lorsque j'ai entré une nouvelle redirection de ce port vers celui de mon NAS, l'interface de la freebox n'a pas bronché, et évidemment, un port ne se redirige qu'une seule fois. Rien n'arrivait à mon NAS. Vérifiez donc qu'aucune redirection du port UDP 1194 n'est pas déjà faite...

Conclusion :

Je ne prétends pas avoir transformé mon iPhone en Teorem de Thales (woa le nom), mais je pense avoir rehaussé mon niveau de sécurité, du moins jusqu'à ma box ADSL. La technique est utilisable pour un ordinateur portable et certainement pour un téléphone sous Android.

Grâce à ce problème simple, j'ai pu m'intéresser d'un peu plus près à mon matériel et à ses configurations logiciels. C'est un week-end de bidouillages à mon niveau qui m'a fait réviser les certificats et découvrir l'arrière boutique de mon NAS Synology (en connexion ssh).

Bref, un hacker je vous dis ;-)

5 commentaires:

  1. Merci pour ce billet détaillé qui servira :)

    "La technique est utilisable pour un ordinateur portable et certainement pour un téléphone sous Android."
    OpenVPN a une application Android gratuite et sans avoir besoin d'un accès root : https://play.google.com/store/apps/details?id=net.openvpn.openvpn

    Le fichier de configuration est probablement identique entre les 2 applications.

    Concernant le choix de la "sortie du tunnel", il est également possible d'utiliser un serveur dédié loué chez un hébergeur. Il y a probablement moins de problème de débits (surtout l'upload de l'ADSL, pas toujours terrible). Le risque pris peut encore être réduit en chiffrant la partition qui contient les binaires et les certificats du serveur OpenVPN.

    RépondreSupprimer
  2. Merci pour le billet, cela m'a donné juste la motivation qu'il me manquait pour monter un openvpn, tâche qui restait en attente depuis un moment;)

    RépondreSupprimer
  3. Fidèle lecteur de ce blog mais maigre contributeur dans les commentaires, je vous propose une petite astuce :

    J'utilise OpenVpn depuis des années sur un serveur local derrière la Freebox.
    Par contre j'ai changé le port pour utiliser le 443 en TCP

    Certains accès wifi gratuits (SFR wifi par exemple) ne laisse pas passer tous les connexions vers des ports "exotiques" et se contente de laisser passer les ports 80,25,110 et bien sur 443 pour le HTTPS

    En utlisant ce port je ne suis pas bloqué par ce type d'accès wifi gratuit et même en 3G mon opérateur constate du trafic sur le 443 (genre je consulte le site de la banque) alors que je suis par exemple en train de faire de la voix sur ip via mon OpenVpn ;)

    Zorg

    RépondreSupprimer
  4. Bonjour,

    Merci pour ce billet qui m'a donné la motivation de monter mon propre serveur OpenVPN.

    Je me suis donc inspiré de votre technique, n'ayant pas de NAS Synology, j'ai décidé d'utiliser une machine dédier pour mon serveur OpenVPN. Le problème du tutorial du site Synology est de ne pas expliquer la configuration d'OpenVPN, la configuration réseau de la machine, ainsi que les règles de routages qui s'imposent pour rediriger le trafic du tunnel vers intrnet (point bloquant jusqu'a ce que je comprenne que j'étais connecté a mon serveur, mais bien prisonnier de celui-ci).

    Bref, grâce a ce billet, j'ai pu revoir les certificats, les configuration réseaux sous linux, routage (iptables + mon routeur), etc... Très enrichissant.

    RépondreSupprimer
  5. Maintenant en 2016 J'utilise PureVPN France. C'est bien fiable.

    RépondreSupprimer

Lectrice, admiratrice, avocate, magistrate, programmeuse, dessinatrice, chère consœur, femmes de tous les pays, lecteur, j'ai toute confiance en vous pour prendre bien soin de vérifier que votre prose est compatible avec les normes orthographiques et grammaticales en vigueur. Et si vous pouviez éviter les propos insultants ou haineux, je vous en serais reconnaissant.
N'hésitez pas à respecter ces quelques règles qui peuvent même s'appliquer en dehors de ce blog.

Les commentaires sur ce blog sont modérés. Votre message apparaîtra sur le blog dès que le modérateur l'aura approuvé. Merci de votre patience.