<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Webinside - Blog d'Hervé Delvaux &#187; Tuto Linux</title>
	<atom:link href="http://www.webinside.be/category/tutorial/linux-tutorial/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.webinside.be</link>
	<description></description>
	<lastBuildDate>Sun, 02 Oct 2011 13:16:56 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Mise en place d&#8217;un VPN</title>
		<link>http://www.webinside.be/mise-en-place-dun-vpn/</link>
		<comments>http://www.webinside.be/mise-en-place-dun-vpn/#comments</comments>
		<pubDate>Sat, 12 Jul 2008 21:35:57 +0000</pubDate>
		<dc:creator>Hervé</dc:creator>
				<category><![CDATA[Tuto Linux]]></category>
		<category><![CDATA[Tuto Réseaux]]></category>
		<category><![CDATA[Tuto Serveur]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Reseau]]></category>
		<category><![CDATA[VPN]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.webinside.be/?p=154</guid>
		<description><![CDATA[Qu’est ce qu’un VPN (Virtual Private Network) Un VPN (Virtual Private Network), réseau virtuel privé, est une sorte de &#171;&#160;tunnel&#160;&#187; permettant le passage de communications privées à travers une infrastructure partagée. Celui-ci permet donc de relié deux réseaux &#171;&#160;physiques&#160;&#187; (réseaux locaux) par une liaison non fiable (ex: Internet) de manière sécurisé. Pourquoi avoir mis en [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Qu’est ce qu’un VPN (Virtual Private Network)</strong><br />
Un VPN (<a href="http://fr.wikipedia.org/wiki/R%C3%A9seau_priv%C3%A9_virtuel">Virtual Private Network</a>), réseau virtuel privé, est une sorte de &laquo;&nbsp;tunnel&nbsp;&raquo; permettant le passage de communications privées à travers une infrastructure partagée. Celui-ci permet donc de relié deux réseaux &laquo;&nbsp;physiques&nbsp;&raquo; (réseaux locaux) par une liaison non fiable (ex: Internet) de manière sécurisé.</p>
<p><strong>Pourquoi avoir mis en place un vpn ?</strong><br />
Dans mon cas, le VPN me permet de me connecter au réseau de ma boite et d’accéder aux différentes ressources et serveurs (tel que le serveur exchange, les serveurs de développement,…) comme si mon ordinateur faisait parti du réseau local de l&#8217;entreprise.<br />
De plus, il n’y a plus qu’un seul port ouvert, celui du vpn. Le firewall bloque tout le reste se qui permet de ne pas avoir trop de porte ouverte accessible d’Internet et donc de ce fait d’augmenter la sécurité du réseau de l’entreprise.</p>
<p><strong>Mise en place d’un VPN</strong><br />
Pour ce tutorial, je pars du principe que le serveur tourne sous la distribution Linux Gentoo et que le(s) client(s) tourne(nt) sous Windows.<br />
Il va de soit que rien ne vous empêche d’adapter ce tutorial pour une autre distribution ou pour Windows.</p>
<p><strong>Installation d’openvpn</strong><br />
Pour la mise en place de notre vpn, nous allons utiliser openvpn qui est comme son nom l’indique un outil open source utilisé pour construire des VPNs. Son rôle est de &laquo;&nbsp;tunneliser&nbsp;&raquo;, de manière sécurisée, des données sur un seul port TCP/UDP à travers un réseau non sûr comme Internet et ainsi établir des VPNs.</p>
<p><span id="more-154"></span></p>
<p>Pour installer openvpn sur notre <a href="http://www.gentoo.org/">Gentoo</a>, nous allons taper la commande suivante :</p>

<div class="wp_codebox"><table><tr id="p15415"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p154code15"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># emerge openvpn</span></pre></td></tr></table></div>

<p>(sous <a href="http://www.debian.org/index.fr.html">debian</a> nous aurions tapé : apt-get install openvpn)</p>
<p><strong>Création des clés</strong><br />
Une fois openvpn installé, nous allons devoir créer des clés pour le serveur et le client. On se place dans le bon répertoire à l&#8217;aide de la commande :</p>

<div class="wp_codebox"><table><tr id="p15416"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p154code16"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># cd /usr/share/openvpn/easy-rsa/</span></pre></td></tr></table></div>

<p>Et on édite le fichier vars qui contient les variables d&#8217;openvpn à l&#8217;aide de :</p>

<div class="wp_codebox"><table><tr id="p15417"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p154code17"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># nano vars</span></pre></td></tr></table></div>

<p>Voici un exemple variables :</p>

<div class="wp_codebox"><table><tr id="p15418"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p154code18"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">KEY_COUNTRY</span>=<span style="color: #ff0000;">&quot;BE&quot;</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">KEY_PROVINCE</span>=<span style="color: #ff0000;">&quot;Belgique&quot;</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">KEY_CITY</span>=<span style="color: #ff0000;">&quot;Liège&quot;</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">KEY_ORG</span>=<span style="color: #ff0000;">&quot;maSociete&quot;</span>
<span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">KEY_EMAIL</span>=<span style="color: #ff0000;">&quot;monMail@maSociete.com&quot;</span></pre></td></tr></table></div>

<p>On exécute ensuite les commandes suivantes pour initialiser les variables d&#8217;environnement et supprimer d&#8217;éventuelles anciennes clés</p>

<div class="wp_codebox"><table><tr id="p15419"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p154code19"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># source ./vars</span>
<span style="color: #666666; font-style: italic;"># ./clean-all</span></pre></td></tr></table></div>

<p><strong>Génération des clés du Master CA (Autorité de certificat)</strong></p>

<div class="wp_codebox"><table><tr id="p15420"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p154code20"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># ./build-ca</span></pre></td></tr></table></div>

<p>Vous devrez répondre à différentes questions et les clés seront générées dans le répertoire keys : ca.crt et ca.key.</p>
<p><strong>Génération des clés du serveur</strong><br />
Maintenant que votre VPN a les clés du CA, il faut générer les clés du serveur</p>

<div class="wp_codebox"><table><tr id="p15421"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p154code21"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># ./build-key-server nom_du_serveur.com</span></pre></td></tr></table></div>

<p><em>nom_du_serveur.com</em> représente le nom de domaine du serveur.</p>
<p>Les clés du serveur seront également générées dans le répertoire keys/ : nom_du_serveur.com.crt et nom_du_serveur.com.key.</p>
<p><strong>Génération de clés pour le(s) client(s)</strong></p>

<div class="wp_codebox"><table><tr id="p15422"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p154code22"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># ./build-key client</span></pre></td></tr></table></div>

<p><em>client</em> représente le nom du client</p>
<p>Vous pouvez répéter cette opération pour chaque client que vous souhaiter ajouter au VPN.</p>
<p><strong>Génération des paramètres Diffie Hellman</strong></p>

<div class="wp_codebox"><table><tr id="p15423"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p154code23"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># ./build-dh</span></pre></td></tr></table></div>

<p>Pour résumé, voici la liste des fichiers qui ont été générés :</p>
<ul>
<li><strong>ca.crt</strong> : est le certificat du Master CA.</li>
<li><strong>ca.key</strong> : est la clé du Master CA.</li>
<li><strong>dh1024.pem</strong> : est les paramètres Diffie Hellman. Ce fichier doit rester sur le serveur.</li>
<li><strong>nom_du_serveur.com.crt</strong> : c’est le certificat du serveur.</li>
<li><strong>nom_du_serveur.com.key</strong> : c’est la clés de votre serveur.</li>
<li><strong>client.crt</strong> : est le certificat d’un de vos clients.</li>
<li><strong>client.key</strong> : est la clé d’un de vos clients.</li>
</ul>
<p>Les <strong>.key</strong> doivent rester secret.<br />
<strong>ca.crt</strong> doit être installé sur chaque client ainsi que sur le serveur<br />
<strong>client(.crt|.key)</strong> est a installer sur le client.<br />
<strong>nom_du_serveur.com(.crt|.key)</strong> est a installer sur le serveur.</p>
<p><strong>Configuration du serveur</strong><br />
Pour configurer le serveur, nous allons éditer le fichier /etc/openvpn/openvpn.conf</p>

<div class="wp_codebox"><table><tr id="p15424"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p154code24"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># nano /etc/openvpn/openvpn.conf</span></pre></td></tr></table></div>

<p>Voici un exemple de configuration :</p>

<div class="wp_codebox"><table><tr id="p15425"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code" id="p154code25"><pre class="bash" style="font-family:monospace;">port <span style="color: #000000;">1194</span>							<span style="color: #666666; font-style: italic;"># les clients se connecteront à ce port - votre firewall doit permettre cela</span>
proto udp							<span style="color: #666666; font-style: italic;"># protocole utilisé dans la connexion</span>
ca <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>openvpn<span style="color: #000000; font-weight: bold;">/</span>easy-rsa<span style="color: #000000; font-weight: bold;">/</span>keys<span style="color: #000000; font-weight: bold;">/</span>ca.crt			<span style="color: #666666; font-style: italic;"># certificat du CA</span>
cert <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>openvpn<span style="color: #000000; font-weight: bold;">/</span>easy-rsa<span style="color: #000000; font-weight: bold;">/</span>keys<span style="color: #000000; font-weight: bold;">/</span>nom_du_serveur.com.crt	<span style="color: #666666; font-style: italic;"># certificat du serveur</span>
key <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>openvpn<span style="color: #000000; font-weight: bold;">/</span>easy-rsa<span style="color: #000000; font-weight: bold;">/</span>keys<span style="color: #000000; font-weight: bold;">/</span>nom_du_serveur.com.key	<span style="color: #666666; font-style: italic;"># clé privée du serveur</span>
dev tun                 					<span style="color: #666666; font-style: italic;"># méthode &quot;routing&quot;</span>
dh <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>openvpn<span style="color: #000000; font-weight: bold;">/</span>easy-rsa<span style="color: #000000; font-weight: bold;">/</span>keys<span style="color: #000000; font-weight: bold;">/</span>dh1024.pem      		<span style="color: #666666; font-style: italic;"># paramètres Diffie Hellman</span>
server 10.8.0.0 255.255.255.0         				<span style="color: #666666; font-style: italic;"># sous-réseau que constituera le réseau virtuel</span>
push <span style="color: #ff0000;">&quot;route 192.168.0.0 255.255.255.0&quot;</span>         			<span style="color: #666666; font-style: italic;"># ajoute sur le client la route du réseau du serveur</span>
ifconfig-pool-persist ipp.txt           			<span style="color: #666666; font-style: italic;"># permet de réattribuer la même adresse à chaque client</span>
<span style="color: #c20cb9; font-weight: bold;">ping</span> <span style="color: #000000;">10</span>         						<span style="color: #666666; font-style: italic;"># utile pour garder la connexion active au travers de certains types de firewall</span>
ping-restart <span style="color: #000000;">60</span> 						<span style="color: #666666; font-style: italic;"># réinitialise la connexion si le délai est dépassé</span>
comp-lzo        						<span style="color: #666666; font-style: italic;"># compression des paquets</span>
user nobody     						<span style="color: #666666; font-style: italic;"># une fois démarré, l'appartenance du processus passe de l'utilisateur &quot;root&quot; à</span>
group nogroup   						<span style="color: #666666; font-style: italic;"># &quot;nobody&quot; et du groupe &quot;root&quot; à &quot;nogroup&quot;. Ainsi, si le processus est compromis, aucun dommage ne pourra être causé avec les privilèges du super-utilisateur</span>
persist-key     						<span style="color: #666666; font-style: italic;"># ne doit pas relire la clé en cas de réinitialisation de la connexion</span>
persist-tun     						<span style="color: #666666; font-style: italic;"># ne doit pas reconfigurer l'interface en cas de réinitialisation de la connexion</span>
status openvpn-status.log 					<span style="color: #666666; font-style: italic;"># fichier de log</span>
verb <span style="color: #000000;">3</span>          						<span style="color: #666666; font-style: italic;"># niveau de verbosité des log</span></pre></td></tr></table></div>

<p>Si pour une raison ou une autre, vous voulez utiliser la connexion Internet du réseau distant, vous pouvez rajouter l&#8217;option suivante dans le fichier de configuration :</p>

<div class="wp_codebox"><table><tr id="p15426"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p154code26"><pre class="bash" style="font-family:monospace;">push <span style="color: #ff0000;">&quot;redirect-gateway&quot;</span></pre></td></tr></table></div>

<p>Si vous devez spécifier un serveur DNS et WINS vous pouvez le faire au moyen des lignes suivant</p>

<div class="wp_codebox"><table><tr id="p15427"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p154code27"><pre class="bash" style="font-family:monospace;">push <span style="color: #ff0000;">&quot;dhcp-option DNS 192.168.0.10&quot;</span>
push <span style="color: #ff0000;">&quot;dhcp-option WINS 192.168.0.10&quot;</span></pre></td></tr></table></div>

<p>Où 192.168.0.10 représente l&#8217;adresse des serveurs.</p>
<p><strong>Configuration du client</strong><br />
Pour notre client, nous allons télécharger openvpn pour Windows sur le <a href="http://openvpn.net/index.php/downloads.html">site d&#8217;openvpn</a>.<br />
Nous prendrons la dernière version disponible – à l&#8217;heure où j&#8217;écris ce tutorial cette version est : <em>OpenVPN 2.1_rc7</em>.</p>
<p><strong>Certificats et clés</strong><br />
Une fois openvpn installé, nous allons le configurer. Nous allons nous rendre dans le répertoire C:\Program Files\OpenVPN\config où il faudra copier les fichiers ca.crt, client.key ainsi que client.crt que nous avons générés précédemment sur le serveur.</p>
<p>Ensuite, il ne nous restera plus qu&#8217;à créer le fichier de configuration du client qui se nomera client.ovpn</p>
<p>Voici un exemple de config de ce fichier :</p>

<div class="wp_codebox"><table><tr id="p15428"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code" id="p154code28"><pre class="bash" style="font-family:monospace;">client                  		<span style="color: #666666; font-style: italic;"># spécifie à openvpn de fonctionner en mode client</span>
remote nom_du_serveur.com <span style="color: #000000;">1194</span>		<span style="color: #666666; font-style: italic;"># nom_du_serveur.com est soit l'IP du serveur, soit son nom d'hôte. Votre firewall doit permettre la connexion vers l'extérieur sur le port du serveur, ici 1194</span>
proto udp               		<span style="color: #666666; font-style: italic;"># protocole utilisé dans la connexion</span>
resolv-retry infinite   		<span style="color: #666666; font-style: italic;"># tentera indéfiniment de résoudre l'IP du serveur hôte en cas d'échec</span>
nobind                  		<span style="color: #666666; font-style: italic;"># spécifie de ne pas se lier à une adresse et un port local</span>
ns-cert-type server     		<span style="color: #666666; font-style: italic;"># vérifie que le certificat du serveur est bien un certificat de serveur et ainsi évite de se connecter à un client qui se ferait passer pour le serveur avec son certificat de client</span>
ca keys<span style="color: #000000; font-weight: bold;">/</span>ca.crt          		<span style="color: #666666; font-style: italic;"># certificat du CA</span>
cert keys<span style="color: #000000; font-weight: bold;">/</span>client1.crt   		<span style="color: #666666; font-style: italic;"># certificat du client1</span>
key keys<span style="color: #000000; font-weight: bold;">/</span>client1.key    		<span style="color: #666666; font-style: italic;"># clé privée du client1</span>
dev tun                 		<span style="color: #666666; font-style: italic;"># méthode par &quot;routing&quot;</span>
comp-lzo        			<span style="color: #666666; font-style: italic;"># compression des paquets</span>
persist-key     			<span style="color: #666666; font-style: italic;"># ne doit pas relire la clé en cas de réinitialisation de la connexion</span>
persist-tun     			<span style="color: #666666; font-style: italic;"># ne doit pas reconfigurer l'interface en cas de réinitialisation de la connexion</span>
verb <span style="color: #000000;">3</span>          			<span style="color: #666666; font-style: italic;"># niveau de verbosité des log</span></pre></td></tr></table></div>

<p>Une fois toute ces opérations réalisé, il nous suffit d&#8217;exécuter le programme openvpn-gui qui fera apparaitre une petite icône (représentant 2 ordinateurs) dans le system tray.<br />
Un double clique sur celle-ci nous connectera à notre VPN et nous aurons donc accès au réseau local distant.</p>
<p>J&#8217;espère que ce tutorial vous aura plus et permit de mettre en place votre VPN.<br />
N&#8217;hésitez pas à poster un message dans les commentaires pour toutes questions ou remarques éventuelles.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webinside.be/mise-en-place-dun-vpn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

