<?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>Antoine Benkemoun &#187; OS</title>
	<atom:link href="http://www.antoinebenkemoun.fr/tag/os/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.antoinebenkemoun.fr</link>
	<description>Sécurité informatique, Virtualisation, Administration système et Réseaux</description>
	<lastBuildDate>Fri, 19 Aug 2011 09:38:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>&#171;&#160;Benchmarker&#160;&#187; son site avec Tsung</title>
		<link>http://www.antoinebenkemoun.fr/2010/10/benchmarker-son-site-avec-tsung/</link>
		<comments>http://www.antoinebenkemoun.fr/2010/10/benchmarker-son-site-avec-tsung/#comments</comments>
		<pubDate>Sat, 02 Oct 2010 12:45:27 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Libre]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Explication]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[OS]]></category>

		<guid isPermaLink="false">http://www.antoinebenkemoun.fr/?p=1345</guid>
		<description><![CDATA[Ce blog ne déborde pas d&#8217;activité en ce moment, vous l&#8217;aurez surement remarqué. J&#8217;ai été pas mal occupé d&#8217;une part avec mon travail et mon activité en tant que bénévole à la Croix-Rouge et d&#8217;autre part mes études. J&#8217;essaye de tout concilier au mieux du coup ce blog ne déborde pas d&#8217;activité. J&#8217;ai cependant pris [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/10/tsunami.png"><img class="alignleft size-full wp-image-1353" title="tsunami" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/10/tsunami.png" alt="" width="142" height="200" /></a>Ce blog ne déborde pas d&#8217;activité en ce moment, vous l&#8217;aurez surement remarqué. J&#8217;ai été pas mal occupé d&#8217;une part avec mon travail et mon activité en tant que bénévole à la Croix-Rouge et d&#8217;autre part mes études. J&#8217;essaye de tout concilier au mieux du coup ce blog ne déborde pas d&#8217;activité. J&#8217;ai cependant pris le temps de réparer le formulaire de contact de ce blog qui ne fonctionnait plus à cause d&#8217;un petit changement de VPN. C&#8217;est désormais réparé.</p>
<p>Les billets précédents évoquaient l&#8217;amélioration de performances d&#8217;un site web grâce à un astucieux montage basé sur plusieurs machines virtuelles. Aujourd&#8217;hui, nous allons parler de benchmarking de site web.</p>
<h3>Quelques rappels</h3>
<p>L&#8217;expression &laquo;&nbsp;benchmarking&nbsp;&raquo; est devenue très populaire dans le milieu professionnelle comme de nombreux autres termes anglais cherchant à démontrer un dynamisme et une originalité. Nous parlerons ici que de sa signification originale qui est la mesure de performances.</p>
<p>Sur l&#8217;Internet, l&#8217;utilisateur ne demande plus rien d&#8217;autre que de l&#8217;instantané. Si votre site met plus de quelques secondes à s&#8217;afficher, l&#8217;utilisateur passera probablement son chemin malgré la qualité éventuelle du contenu.</p>
<p>Les outils pour mesurer les performances des sites web ne manquent pas à l&#8217;appel. On en trouve de nombreux en ligne et sous forme d&#8217;applications. Certains présentent une originalité intéressante alors que d&#8217;autres se cantonnent à des fonctionnalités basiques. L&#8217;outil le plus connu est probablement &laquo;&nbsp;ab&nbsp;&raquo; car il est souvent installé en même temps qu&#8217;Apache. Cet outil dispose de fonctionnalités intéressantes mais relativement basiques.</p>
<h3>Tsung</h3>
<p>Comme l&#8217;indique le titre, nous allons nous intéresser à <a href="http://tsung.erlang-projects.org/">Tsung</a>. Il s&#8217;agit d&#8217;un projet Open Source Français développé par Nicolas Niclausse. Cette application ne se limite pas aux sites web via HTTP mais peut également benchmarker les applications Webdav, SOAP, MySQL, PostgreSQL, LDAP et Jabber/XMPP. La mesure de performances peut se faire d&#8217;une seule machine ou de tout un cluster.</p>
<p>Tsung permet de générer et d&#8217;exécuter des scénarios de test. Cela signifie qu&#8217;il ne se limite à charger une page web selon une fréquence définie. Vous allez pouvoir lui faire naviguer votre site et utiliser diverses fonctionnalités.</p>
<h3>Fonctionnement</h3>
<p>L&#8217;enregistrement de scénarios est très simple. Il vous suffit de lancer le &laquo;&nbsp;tsung_recorder&nbsp;&raquo; et de le paramétrer en tant que proxy de votre navigateur. Les actions que vous allez ensuite effectuer dans votre navigateur vont être enregistrées. Vous aurez ainsi créé une suite d&#8217;actions.</p>
<p>Une fois la suite d&#8217;actions créée, il sera nécessaire de paramétrer les informations relatives au scénario,  à savoir l&#8217;IP du serveur à tester, la fréquence d&#8217;exécution, etc. La documentation de ce projet est claire à l&#8217;exception du chapitre sur les fichiers de configuration de scénario. Pour cela, je vous donne un <a href="http://www.antoinebenkemoun.fr/data/example.xml">fichier de configuration</a> de scénario complet et fonctionnel qui devrait vous permettre d&#8217;y voir un peu plus clair.</p>
<p>Une fois la configuration terminée, il ne vous restera plus qu&#8217;à l&#8217;exécuter et observer votre serveur travailler.</p>
<h3>Analyse des résultats</h3>
<p>L&#8217;exécution d&#8217;un scénario de benchmarking est une chose mais l&#8217;interprétation des résultats est essentielle. Tsung a tout prévu pour vous.</p>
<p>Grâce à l&#8217;utilitaire &laquo;&nbsp;tsung_stats&nbsp;&raquo;, vous allez pouvoir générer une série de graphiques traduisant les résultats du test. Cet utilitaire prendra même le soin de les mettre en page dans une page web. L&#8217;image ci-dessous est un exemple (en version réduite) des graphiques en question. Un fichier vectoriel est également généré si vous souhaitez disposer d&#8217;un visuel plus flexible.</p>
<p style="text-align: center;"><a href="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/10/graphes-Transactions-mean.png"><img class="size-full wp-image-1348 aligncenter" title="graphes-Transactions-mean" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/10/graphes-Transactions-mean.png" alt="" width="320" height="240" /></a></p>
<p>Si vous souhaitez comparer les résultats, Tsung met à votre disposition l&#8217;outil &laquo;&nbsp;tsplot&nbsp;&raquo; qui vous génèrera des graphiques comparant les différents tests que vous avez exécuté. L&#8217;image ci-dessous est un exemple de graphique généré par tsplot.</p>
<p style="text-align: center;"><a href="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/10/page_mean.png"><img class="size-full wp-image-1350 aligncenter" title="page_mean" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/10/page_mean.png" alt="" width="400" height="300" /></a></p>
<p>Au final, Tsung est un excellent outil permettant de créer simplement des scénarios de benchmarking complexes et de visualiser ces résultats à travers des graphiques clairs. Seul bémol, il ne s&#8217;agit pas d&#8217;un logiciel particulièrement simple à utiliser car tout se fait en ligne de commande. Cependant, un utilisateur de Linux un peu aguerri devrait pouvoir s&#8217;en sortir.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antoinebenkemoun.fr/2010/10/benchmarker-son-site-avec-tsung/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Accélérer son site web avec Squid – 2</title>
		<link>http://www.antoinebenkemoun.fr/2010/09/accelerer-son-site-web-avec-squid-%e2%80%93-2/</link>
		<comments>http://www.antoinebenkemoun.fr/2010/09/accelerer-son-site-web-avec-squid-%e2%80%93-2/#comments</comments>
		<pubDate>Wed, 15 Sep 2010 11:58:58 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Libre]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Explication]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Virtualisation]]></category>

		<guid isPermaLink="false">http://www.antoinebenkemoun.fr/?p=1337</guid>
		<description><![CDATA[Dans le billet précédent, nous avons vu l&#8217;intérêt d&#8217;un reverse-proxy Squid ainsi que son installation et sa configuration basique. Dans ce billet, nous allons réellement utiliser les possibilités de Squid. Rappels Historiquement, les proxy HTTP ont été mis en place afin d&#8217;accélérer les chargements des pages web. A une certaine époque l&#8217;acronyme WWW pouvait avoir [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/09/idea-squid-rsz.jpg"><img class="alignleft size-full wp-image-1329" title="idea-squid-rsz" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/09/idea-squid-rsz.jpg" alt="" width="154" height="142" /></a>Dans le <a href="http://www.antoinebenkemoun.fr/2010/09/accelerer-son-site-web-grace-a-squid-1/">billet précédent</a>, nous avons vu l&#8217;intérêt d&#8217;un reverse-proxy Squid ainsi que son installation et sa configuration basique. Dans ce billet, nous allons réellement utiliser les possibilités de Squid.</p>
<h3>Rappels</h3>
<p>Historiquement, les proxy HTTP ont été mis en place afin d&#8217;accélérer les chargements des pages web. A une certaine époque l&#8217;acronyme WWW pouvait avoir pour signification &laquo;&nbsp;World Wide Wait&nbsp;&raquo;. La solution apportée à ce problème a été de mettre en cache les contenus au plus proche de l&#8217;utilisateur par le biais de proxy.</p>
<p>La gestion du cache HTTP doit être géré du coté du fournisseur de contenu, à savoir le serveur web. En théorie, ce dernier a autorité sur les données du site qui pourront être mises en cache ou non. Ces informations sont transmises dans les en-têtes HTTP par le biais de divers champs que nous ne détaillerons pas tous ici. Un champ particulièrement intéressant est la durée de rétention dans le cache.</p>
<p>Par défaut, Apache n&#8217;envoie pas d&#8217;informations quant à la mise en cache du contenu ce qui signifie donc qu&#8217;en théorie les données de notre site ne seront pas mises en cache. Dans notre situation, cela signifie que Squid ne met rien en cache tant que nous n&#8217;avons pas configuré Apache pour lui indiquer qu&#8217;il est possible de le faire.</p>
<h3>Configuration d&#8217;Apache</h3>
<p>Nous allons donc devoir paramétrer Apache pour utiliser les en-têtes contrôlant la mise en cache de nos pages web. Ainsi, notre serveur Squid pourra prendre une partie de la charge de notre serveur web et ainsi le soulager.</p>
<p>Le module Apache qui nous intéresse plus particulièrement est <em>mod_expires</em>. Son activation est simple et, dans le cas de Debian, il est packagé avec Apache. Il suffit donc de l&#8217;activer comme suit.</p>
<blockquote><p># a2enmod expires</p>
<p># /etc/init.d/apache2 restart</p></blockquote>
<p>Une fois ce module activé, nous allons pouvoir le configurer.</p>
<h3>Configuration de mod _expires</h3>
<p>Nous allons pouvoir configurer <em>mod_expires</em> par le biais de fichiers .htaccess comme il est possible de le faire pour bon nombre d&#8217;autres modules. Ce module nous permet de gérer assez finement la mise en cache des fichiers. La syntaxe est simpliste mais efficace. Si vous souhaitez obtenir une explication exhaustive dans la syntaxe et de ses fonctionnalités, je vous recommande de consulter la <a href="http://httpd.apache.org/docs/2.0/mod/mod_expires.html">documentation</a>.</p>
<p>Pour ce site, j&#8217;ai choisi la politique suivante de mise en cache.</p>
<blockquote><p>ExpiresActive On<br />
ExpiresByType image/gif &laquo;&nbsp;access plus 1 week&nbsp;&raquo;<br />
ExpiresByType image/jpeg &laquo;&nbsp;access plus 1 week&nbsp;&raquo;<br />
ExpiresByType image/png &laquo;&nbsp;access plus 1 week&nbsp;&raquo;<br />
ExpiresByType text/css &laquo;&nbsp;access plus 1 days&nbsp;&raquo;<br />
ExpiresByType application/x-shockwave-flash &laquo;&nbsp;access plus 1 hour&nbsp;&raquo;</p></blockquote>
<p>Ensuite, c&#8217;est à vous de voir ce que vous voulez que Squid mette en cache ou pas en fonction des fonctionnalités de votre site.</p>
<h3>Vérification</h3>
<p>Afin de vérifier si tout fonctionne correctement, je vous invite à consulter les log d&#8217;accès à votre serveur Squid. Des lignes comportant &laquo;&nbsp;TCP_HIT&nbsp;&raquo; s&#8217;afficheront lorsque Squid servira des données du cache à la place d&#8217;Apache. Si vous n&#8217;avez que des &laquo;&nbsp;TCP_MISS&nbsp;&raquo;, il doit probablement manquer un élément à votre configuration.</p>
<p>Au final, cette méthode permet d&#8217;accélérer significativement son site web et ainsi d&#8217;améliorer son référencement sur Google. Dans mon cas, le temps de chargement de ce site a été divisé par un facteur 2 à 3 ce qui est tout de même très intéressant. Des lecteurs m&#8217;ont fait remarquer qu&#8217;il existait une alternative plus moderne à Squid, Varnish qui permettrait de définir des politiques de mise en cache plus fine. Je vous laisse donc y jeter un coup d’œil !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antoinebenkemoun.fr/2010/09/accelerer-son-site-web-avec-squid-%e2%80%93-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Accélérer son site web avec Squid &#8211; 1</title>
		<link>http://www.antoinebenkemoun.fr/2010/09/accelerer-son-site-web-grace-a-squid-1/</link>
		<comments>http://www.antoinebenkemoun.fr/2010/09/accelerer-son-site-web-grace-a-squid-1/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 16:02:15 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Libre]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Explication]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[OS]]></category>

		<guid isPermaLink="false">http://www.antoinebenkemoun.fr/?p=1296</guid>
		<description><![CDATA[La rapidité de l&#8217;Internet est une préoccupation omniprésente car elle améliore significativement l&#8217;expérience utilisateur. De plus, récemment Google a annoncé que la rapidité d&#8217;affichage des sites serait prise en compte dans le calcul de l&#8217;affichage des pages de résultat de recherche. Cette prise en compte avait de quoi en motiver plus d&#8217;un à accélérer l&#8217;affichage [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/09/idea-squid-rsz.jpg"><img class="alignleft size-full wp-image-1329" title="idea-squid-rsz" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/09/idea-squid-rsz.jpg" alt="" width="154" height="142" /></a>La rapidité de l&#8217;Internet est une préoccupation omniprésente car elle améliore significativement l&#8217;expérience utilisateur. De plus, récemment Google a annoncé que la rapidité d&#8217;affichage des sites serait prise en compte dans le calcul de l&#8217;affichage des pages de résultat de recherche. Cette prise en compte avait de quoi en motiver plus d&#8217;un à accélérer l&#8217;affichage de son site, dont moi.</p>
<h3>Contexte</h3>
<p>L&#8217;affichage de ce blog était relativement lent. Il pouvait mettre plus de 5 secondes pour s&#8217;afficher complètement ce qui n&#8217;est pas un temps d&#8217;affichage très bon. J&#8217;ai donc entrepris de trouver une solution à ce problème.</p>
<p>Ce site est hébergé sur une machine virtuelle Xen dont le système d&#8217;exploitation est OpenSolaris 2009.06. Elle est globalement assez lente car relativement peu de mémoire lui est alloué. De plus, la cohabitation d&#8217;Apache et de MySQL sur le même système ne favorise clairement pas les choses. Certains médisants diront que WordPress et/ou PHP sont des facteurs de lenteur. Ils auront raison mais je n&#8217;ai aucune intention d&#8217;utiliser autre chose que WordPress car c&#8217;est un réel plaisir à l&#8217;utiliser.</p>
<h3>Un peu de théorie</h3>
<p>Un proxy ou en Français &laquo;&nbsp;serveur mandataire&nbsp;&raquo; est un serveur qui se place entre le client et le serveur. Le client va interroger le proxy qui va à son tour interroger le serveur. Le serveur répondra au proxy qui, à son tour, répondra au client. Ceci est le fonctionnement le plus classique mais on peut placer un proxy dans nombreuses configurations et donner au proxy une intelligence supplémentaire.</p>
<p>Dans le cas de proxys HTTP(S) classiques, on y ajoute des mécanismes de cache afin d&#8217;économiser de la bande passante. On peut également y ajouter des fonctions de filtrage d&#8217;URL afin d&#8217;éviter la consultation de certains sites.</p>
<p>L&#8217;exemple d&#8217;application du proxy qui nous intéresse ici est le reverse proxy. Le client n&#8217;aura aucune connaissance de la présence d&#8217;un proxy et pensera qu&#8217;il s&#8217;agit d&#8217;un serveur HTTP comme un autre. Le proxy interrogera ensuite le serveur web et la requête sera renvoyée au client. Dans cette situation, la fonctionnalité de cache du proxy est très intéressante car elle permet d&#8217;éviter le traitement de certaines requêtes au serveur HTTP. On pourrait également utiliser le proxy couplé à plusieurs serveurs HTTP afin d&#8217;effectuer du load balancing et de la redondance.</p>
<h3>Une autre VM</h3>
<p>La première étape a été de trouver une machine supplémentaire afin de ne pas faire cohabiter la pile LAMP et Squid sur le même serveur. Dans l&#8217;absolu, ce n&#8217;est pas impossible mais lorsqu&#8217;on a un serveur déjà surchargé, ce n&#8217;est peut être pas la meilleure idée.</p>
<p>Étant donné qu&#8217;OVH vient de lancer son offre miniCloud, ce projet était une parfaite excuse pour la tester. Le prix de cette offre est vraiment très bas. Pour une VM de 256Mo de RAM, cela revient à 8,5€/mois. J&#8217;ai donc crédité 10€ sur mon compte. L&#8217;interface de gestion n&#8217;est pas la plus esthétique ni la plus rapide mais elle fait l&#8217;affaire.</p>
<p>En une petite dizaine de minutes, j&#8217;avais donc à ma disposition une machine virtuelle Debian Lenny 64-bits. Le réel inconvénient de l&#8217;offre d&#8217;OVH est que l&#8217;IP de la machine virtuelle change à chaque fois que vous l&#8217;arrêtez par le biais de l&#8217;interface de gestion.</p>
<p>L&#8217;installation de la pile LAMP est très simple et je ne la détaillerai donc pas ici. Il existe des masses incroyables de documentation à ce sujet.</p>
<h3>Squid</h3>
<p>L&#8217;installation de Squid est très simple. Je l&#8217;ai installé sur OpenSolaris à partir des dépôts Blastwave via <em>pkgutil</em>. Dans le cas de Debian, un <em>apt-get</em> s&#8217;occupera de tout ca pour vous.</p>
<p>Une fois installé, nous pouvons passer à sa configuration. La configuration du reverse proxy est la suivante :</p>
<blockquote><p>http_port 80 accel defaultsite=www.antoinebenkemoun.fr<br />
visible_hostname vm.antoine.fr<br />
cache_peer 178.32.yy.xx parent 80 0 no-query originserver name=myAccel<br />
acl all src 0.0.0.0/0.0.0.0<br />
cache_peer_access myAccel allow all<br />
acl our_sites dstdomain antoinebenkemoun.fr www.antoinebenkemoun.fr antoinebenkemoun.com www.antoinebenkemoun.com<br />
http_access allow our_sites</p></blockquote>
<p>Tout d&#8217;abord, on indique à Squid d&#8217;écouter les requêtes sur le port 80 et que le site que l&#8217;on va proxy-er est &laquo;&nbsp;www.antoinebenkemoun.fr&nbsp;&raquo;. Ensuite, on lui indique l&#8217;IP du serveur web où est réellement hébergé le site. Il est ensuite nécessaire de définir un certain nombre d&#8217;ACL qui sont ici assez génériques et tout à fait simples. Dans l&#8217;exemple, nous avons autorisé le reverse proxy pour 4 sites et nous avons autorisé toutes les IP à visionner le site.</p>
<p>Il est également possible d&#8217;utiliser d&#8217;autres options afin de mieux régler votre reverse proxy. L&#8217;ajout d&#8217;un &laquo;&nbsp;access log&nbsp;&raquo; va vous permettre de voir les pages qui sont consultés mais surtout si le contenu est envoyé par Squid ou par votre serveur LAMP. Il est également possible de régler la quantité de mémoire vive utilisé pour le cache de pages web. L&#8217;espace mémoire utilisé pour le cache sera donc alloué en plus de l&#8217;espace mémoire du programme principal.</p>
<blockquote><p>cache_mem 20 MB<br />
cache_access_log /opt/csw/var/logs/access.log</p></blockquote>
<p>Le chemin pour l&#8217;access log est adapté à mon OpenSolaris mais à vous de l&#8217;adapter à votre distribution. Si vous êtes sur Linux, vous voudrez surement placer les logs quelque part dans <em>/var/log/</em>.</p>
<p>Au final, nous avons installé notre serveur Squid et l&#8217;avons configuré en mode reverse-proxy. Dans le billant suivant, nous verrons les modifications qu&#8217;il faut apporter à notre serveur Apache afin d&#8217;utiliser réellement la fonctionnalité de cache du reverse proxy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antoinebenkemoun.fr/2010/09/accelerer-son-site-web-grace-a-squid-1/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Gérer les règles iptables d’un parc de serveurs : Netfilter Manager</title>
		<link>http://www.antoinebenkemoun.fr/2010/08/gerer-les-regles-iptables-dun-parc-de-serveurs-netfilter-manager/</link>
		<comments>http://www.antoinebenkemoun.fr/2010/08/gerer-les-regles-iptables-dun-parc-de-serveurs-netfilter-manager/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 12:41:25 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Libre]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[netfilter-manager]]></category>
		<category><![CDATA[OS]]></category>

		<guid isPermaLink="false">http://www.antoinebenkemoun.fr/?p=1282</guid>
		<description><![CDATA[Cet article va pouvoir expliquer une partie de l&#8217;absence d&#8217;activité sur ce blog dernièrement. Avant de rentrer dans le vif du sujet, je tiens à prévenir du fait que je ne suis pas, à la base, un développeur et donc que je débute dans le domaine de développement applicatif et du développement Open Source. Soyez-donc [...]]]></description>
			<content:encoded><![CDATA[<p>Cet article va pouvoir expliquer une partie de l&#8217;absence d&#8217;activité sur ce blog dernièrement. Avant de rentrer dans le vif du sujet, je tiens à prévenir du fait que je ne suis pas, à la base, un développeur et donc que je débute dans le domaine de développement applicatif et du développement Open Source. Soyez-donc indulgent si je fais des erreurs &laquo;&nbsp;de base&nbsp;&raquo;.</p>
<h3>Problématique</h3>
<p>Le besoin initial de cette application est la gestion des règles iptables d&#8217;un parc de machines. En tant qu&#8217;administrateurs système, nous ne retrouvons régulièrement à gérer des scripts iptables sur divers serveurs. Lorsqu&#8217;on gère 5-10 serveurs, la gestion à la main reste acceptable. Cependant, dès que l&#8217;on commence à gérer plus de serveurs, ca commence à devenir réellement long et fastidieux. Et qui dit fastidieux dit fort potentiel d&#8217;erreurs.</p>
<p>J&#8217;ai donc entrepris de créer une application qui permettrait de gérer tout ca de manière un peu plus automatisée. L&#8217;application Netfilter Manager est donc née. Le nom est pas tout à fait extraordinaire mais ca représente à peu près ce que ca fait.</p>
<h3>Présentation</h3>
<p>Netfilter Manager utilise donc une interface en ligne de commande afin de pouvoir gérer un lot d&#8217;hôtes et les règles associées. Cette CLI est inspirée quelque peu de la CLI Cisco pour ceux qui ont déjà eu <span style="text-decoration: line-through;">la chance</span> l&#8217;occasion de l&#8217;utiliser. La licence de l&#8217;application est GPLv3. J&#8217;avoue ne pas être un expert dans le domaine des licences de logiciel mais c&#8217;est une des plus répandues et le peu que j&#8217;en connais me convient.</p>
<p>Chaque hôte dispose d&#8217;un nom et d&#8217;une adresse IP. A la place de l&#8217;adresse IP, on peut bien sûr utiliser un nom DNS que le serveur de gestion saura résoudre. L&#8217;application ne supporte que pour l&#8217;instant Iptables, il n&#8217;est donc pas encore possible de sélectionner un type d&#8217;hôte mais c&#8217;est une fonctionnalité envisageable.</p>
<p>Les règles sont ajoutées hôte par hôte et peuvent être organisées par ligne. Par défaut, les règles que vous ajoutées sont ajoutés à la suite des règles existantes. Il est possible de gérer plus finement l&#8217;ordonnancement des règles en utilisant la gestion par ligne. Chaque ligne peut comporter plusieurs règles et les règles seront appliquées dans l&#8217;ordre croissant des lignes. Ce comportement est très similaire au mode de fonctionnement des access-list Cisco.</p>
<p>Voici un petit exemple d&#8217;utilisation :</p>
<p style="text-align: center;"><a href="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/08/screen1-nm.png"><img class="size-full wp-image-1287 aligncenter" title="screen1-nm" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/08/screen1-nm.png" alt="" width="505" height="338" /></a></p>
<p>Il est également possible de créer des lots de règles grâce à un moteur de template dont l&#8217;utilisation est expliquée dans le <a href="http://github.com/antoinebk/Netfilter-Manager/blob/master/README">README</a>. Vous trouverez un exemple de template dans le fichier <em>cobalt.tpl</em> présent dans le répertoire <em>templates</em>.</p>
<p>Une fois que vous avez créé toutes les règles de firewall, vous allez pouvoir les &laquo;&nbsp;pousser&nbsp;&raquo; vers vos serveurs. Un script contenant les règles est généré en prenant les règles que vous avez spécifié et en ajoutant au début le contenu du fichier <em>start.tpl</em>. Par défaut, ce fichier contient des règles permettant de supprimer les règles iptables actuellement utilisées.</p>
<p>Pour en savoir plus sur l&#8217;utilisation de l&#8217;application, la commande <em>help</em> devrait pour vous aider. Sinon je vous conseille de lire le <a href="http://github.com/antoinebk/Netfilter-Manager/blob/master/README">README</a> (en anglais pour l&#8217;instant). J&#8217;espère que les explications sont claires et vous permettront de réussir à utiliser l&#8217;application. Si ce n&#8217;est pas le cas, vous pouvez me le faire savoir soit par ce blog soit par le <a href="http://github.com/antoinebk/Netfilter-Manager/issues">bugtracker</a> de github.</p>
<h3>Bonus</h3>
<p>En petit bonus, j&#8217;ai ajouté la possibilité de créer des règles en utilisant la syntaxe Cisco. Pour l&#8217;instant, seuls les règles IP sont supportées mais les règles TCP/UDP devraient également être supportées par la suite. Dans le mode ajout, il faut utiliser la commande <em>access-list</em>. Un page d&#8217;aide a été spécifiquement ajouté, vous pouvez y accéder en tapant <em>access-list help</em>. Je ne suis pas sûr que ce soit d&#8217;une utilité débordante mais ca m&#8217;a bien amusé de le coder.</p>
<h3>Code</h3>
<p>Tout le code de l&#8217;application est disponible sur <a href="http://github.com/antoinebk/Netfilter-Manager">github</a>. Vous pouvez télécharger la version courante de l&#8217;application en cliquant sur <a href="http://github.com/antoinebk/Netfilter-Manager/archives/master">ce lien</a>.</p>
<p>Si vous souhaitez contribuer, vous êtes les bienvenus. Tout se passe via le git proposé par github. L&#8217;application est faite en Python et j&#8217;ai essayé de rendre le code le plus lisible possible. Si vous souhaitez effectuer des remontées de bugs ou me donner votre avis, vous pouvez le faire sur ce blog ou sur <a href="http://github.com/antoinebk/Netfilter-Manager/issues">github</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antoinebenkemoun.fr/2010/08/gerer-les-regles-iptables-dun-parc-de-serveurs-netfilter-manager/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Génération de certifications OpenVPN par lots avec pkitool</title>
		<link>http://www.antoinebenkemoun.fr/2010/08/generation-de-certifications-openvpn-par-lots-avec-pkitool/</link>
		<comments>http://www.antoinebenkemoun.fr/2010/08/generation-de-certifications-openvpn-par-lots-avec-pkitool/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 08:37:48 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Libre]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://www.antoinebenkemoun.fr/?p=1275</guid>
		<description><![CDATA[Ce blog n&#8217;est pas particulièrement actif ces derniers temps comme vous pouvez le remarquer. Surement une petite baisse de motivation de ma part mais également les vacances. Aujourd&#8217;hui ce sera donc un petit article simple mais efficace. En Avril, j&#8217;avais écrit un petit billet sur la génération de certificats OpenVPN par lots ce qui est [...]]]></description>
			<content:encoded><![CDATA[<p>Ce blog n&#8217;est pas particulièrement actif ces derniers temps comme vous pouvez le remarquer. Surement une petite baisse de motivation de ma part mais également les vacances. Aujourd&#8217;hui ce sera donc un petit article simple mais efficace.</p>
<p>En Avril, j&#8217;avais écrit un petit billet sur la génération de certificats OpenVPN par lots ce qui est bien pratique lorsqu&#8217;on doit en générer une quantité importante. J&#8217;ai à nouveau rencontré cette problématique mais dans un contexte légèrement différent. Sous Ubuntu Server 10.04, le jeu d&#8217;outils Easy-RSA d&#8217;OpenVPN n&#8217;utilisent plus OpenSSL directement mais utilisent <em>pkitool</em> qui ne semble être qu&#8217;un intermédiaire de simplification.</p>
<p>Du coup, le script donné précédemment n&#8217;est plus valable. Il a donc fallu trouver une parade assez simple mais non moins fonctionnelle. La solution adaptée à <em>pkitool</em> ne tient plus qu&#8217;en un seul script qui est le suivant.</p>
<blockquote>
<div id="_mcePaste">#! /bin/bash</div>
<div id="_mcePaste"># Make a certificate/private key pair using a locally generated</div>
<div id="_mcePaste"># root certificate.</div>
<div id="_mcePaste">export EASY_RSA=&nbsp;&raquo;`pwd`&nbsp;&raquo;</div>
<div id="_mcePaste">export OPENSSL=&nbsp;&raquo;openssl&nbsp;&raquo;</div>
<div id="_mcePaste">export PKCS11TOOL=&nbsp;&raquo;pkcs11-tool&nbsp;&raquo;</div>
<div id="_mcePaste">export GREP=&nbsp;&raquo;grep&nbsp;&raquo;</div>
<div id="_mcePaste">export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`</div>
<div id="_mcePaste">export KEY_DIR=&nbsp;&raquo;$EASY_RSA/keys&nbsp;&raquo;</div>
<div id="_mcePaste">export PKCS11_PIN=&nbsp;&raquo;dummy&nbsp;&raquo;</div>
<div id="_mcePaste">export KEY_SIZE=1024</div>
<div id="_mcePaste">export CA_EXPIRE=3650</div>
<div id="_mcePaste">export KEY_EXPIRE=3650</div>
<div id="_mcePaste">export KEY_COUNTRY=&nbsp;&raquo;FR&nbsp;&raquo;</div>
<div id="_mcePaste">export KEY_PROVINCE=&nbsp;&raquo;FR&nbsp;&raquo;</div>
<div id="_mcePaste">export KEY_CITY=&nbsp;&raquo;Paris&nbsp;&raquo;</div>
<div id="_mcePaste">export KEY_ORG=&nbsp;&raquo;Antoine-Corp&nbsp;&raquo;</div>
<div id="_mcePaste">export KEY_EMAIL=&nbsp;&raquo;me@myhost.mydomain&nbsp;&raquo;</div>
<div id="_mcePaste">export KEY_CNAME=$1</div>
<div id="_mcePaste">export EASY_RSA=&nbsp;&raquo;${EASY_RSA:-.}&nbsp;&raquo;</div>
<div id="_mcePaste">&laquo;&nbsp;$EASY_RSA/pkitool&nbsp;&raquo; $*</div>
</blockquote>
<p>Le tour est joué ! Vu que WordPress (ou plutôt de ces modules/thèmes) remplace les quotes par des guillemets impossibles à copier/coller dans un shell, je vous mets à disposition une <a href="http://www.antoinebenkemoun.fr/data/generatecertifpkitool.bash">version en texte brut</a> jusqu&#8217;à ce que j&#8217;ai réussi à résoudre ce problème assez agaçant.</p>
<p>Au final, ce script devrait vous être utile pour générer rapidement des certifications OpenVPN à la pelle et ainsi vous simplifier la vie.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antoinebenkemoun.fr/2010/08/generation-de-certifications-openvpn-par-lots-avec-pkitool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SNMP : Ajouter des informations personnalisées à la MIB</title>
		<link>http://www.antoinebenkemoun.fr/2010/08/snmp-ajouter-des-informations-personnalisees-a-la-mib/</link>
		<comments>http://www.antoinebenkemoun.fr/2010/08/snmp-ajouter-des-informations-personnalisees-a-la-mib/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 14:12:19 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Libre]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[OS]]></category>

		<guid isPermaLink="false">http://www.antoinebenkemoun.fr/?p=1261</guid>
		<description><![CDATA[Je n&#8217;ai pas encore beaucoup eu l&#8217;occasion de parler de supervision sur ce blog. C&#8217;est pourtant un sujet très intéressant et particulièrement vaste. Aujourd&#8217;hui, nous allons détailler une petite fonctionnalité de SNMP qui nous permet de faire de nombreuses choses très utiles. Vous le savez surement déjà, SNMP (Simple Network Management Protocol) est un protocole [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/08/monitoring3.jpg"><img class="alignleft size-medium wp-image-1270" title="monitoring3" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/08/monitoring3-300x223.jpg" alt="" width="180" height="134" /></a>Je n&#8217;ai pas encore beaucoup eu l&#8217;occasion de parler de supervision sur ce blog. C&#8217;est pourtant un sujet très intéressant et particulièrement vaste. Aujourd&#8217;hui, nous allons détailler une petite fonctionnalité de SNMP qui nous permet de faire de nombreuses choses très utiles.</p>
<p>Vous le savez surement déjà, SNMP (Simple Network Management Protocol) est un protocole très utile pour la supervision d&#8217;équipements informatiques que ce soit des serveurs, des équipements réseau, des sondes de température, etc. Il s&#8217;agit de la référence en la matière. Sa structure est quelque peu archaïque vis à vis des tendances actuelles mais sa pertinence est toujours d&#8217;actualité. Il existe de nombreuses ressources sur Internet au sujet de SNMP, je ne reprendrai donc pas la théorie de ce protocole.</p>
<p>La supervision est un domaine très vaste et surtout très compliqué. Chaque configuration et chaque équipement va avoir ses petites spécificités. De plus, chaque situation va nécessiter la supervision d&#8217;une métrique X ou Y. Concrètement, les informations que l&#8217;on souhaite superviser ne sont pas forcément présentes dans une <a href="http://christian.caleca.free.fr/snmp/la_mib.htm" class="broken_link" rel="nofollow">MIB SNMP</a> existante.</p>
<p>Les solutions alternatives sont nombreuses. On peut choisir de développer une application spécifique ce qui implique un travail assez colossal et une intégration dans l&#8217;application de supervision. Une autre solution est de &laquo;&nbsp;customiser&nbsp;&raquo; le serveur SNMP afin de nous envoyer des informations spécifiques. Ces informations ne feront pas partie d&#8217;une MIB standardisée mais pourront nous être très utiles. Les manipulations concernent uniquement snmpd sous Unix.</p>
<p>Le démon snmpd que nous utilisons comme agent SNMP sur les plateformes Unix/Linux nous renvoit par défaut un grand nombre d&#8217;informations. Il supporte également l&#8217;ajout d&#8217;informations récoltées par l&#8217;exécution de scripts tierces. Les informations renvoyées par ces scripts seront placés dans la branche &laquo;&nbsp;.1.3.6.1.4.1.2021.8 &nbsp;&raquo; de la MIB standard.</p>
<p>Il est nécessaire de spécifier l&#8217;exécution d&#8217;un script dans le fichier de configuration <em>snmpd.conf</em>. Voici un exemple de script :</p>
<blockquote><p>exec railsversion &laquo;&nbsp;/bin/bash /etc/snmp/railsversion.sh&nbsp;&raquo;</p></blockquote>
<p>Lors des tests que j&#8217;ai effectué, j&#8217;ai remarqué qu&#8217;il n&#8217;était pas possible d&#8217;utiliser des &laquo;&nbsp;pipes&nbsp;&raquo; dans cette commande ce qui est fort dommage. Une fois que vous avez ajouté cette ligne dans votre fichier de configuration snmpd, il est nécessaire de le redémarrer pour qu&#8217;elle soit prise en compte.</p>
<p>Si nous effectuons un snmpwalk sur la branche SNMP mentionnée précédemment, nous remarquons que les informations retournées par ce script son bien présentes.</p>
<blockquote><p>root@dev:~# snmpwalk -v2c -cpublic 10.8.0.6 .1.3.6.1.4.1.2021.8<br />
UCD-SNMP-MIB::extIndex.1 = INTEGER: 1<br />
UCD-SNMP-MIB::extNames.1 = STRING: railsversion<br />
UCD-SNMP-MIB::extCommand.1 = STRING: /bin/bash /etc/snmp/railsversion.sh<br />
UCD-SNMP-MIB::extResult.1 = INTEGER: 0<br />
UCD-SNMP-MIB::extOutput.1 = STRING: 2.1.0-7<br />
UCD-SNMP-MIB::extErrFix.1 = INTEGER: noError(0)<br />
UCD-SNMP-MIB::extErrFixCmd.1 = STRING:</p></blockquote>
<p>Nous avons donc réussi à intégrer nous-même des informations dans SNMP. Ces informations ne sont pas standardisées bien évidemment mais vous permettent d&#8217;adapter votre solution à vos besoins. Il est ensuite possible de réutiliser ces informations dans Nagios par le biais de plugins &laquo;&nbsp;maison&nbsp;&raquo; assez aisément. J&#8217;en reparlerai ultérieurement.</p>
<p>Au final, cette petite astuce assez simple permet de se confectionner un bout de MIB personnalisé simplement et efficacement. Cette solution est largement plus efficace que le développement d&#8217;une application spécifique.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antoinebenkemoun.fr/2010/08/snmp-ajouter-des-informations-personnalisees-a-la-mib/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>La sécurité de la virtualisation : vulnérabilités</title>
		<link>http://www.antoinebenkemoun.fr/2010/08/la-securite-de-la-virtualisation-vulnerabilites/</link>
		<comments>http://www.antoinebenkemoun.fr/2010/08/la-securite-de-la-virtualisation-vulnerabilites/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 15:42:08 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Libre]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Xen]]></category>

		<guid isPermaLink="false">http://www.antoinebenkemoun.fr/?p=1245</guid>
		<description><![CDATA[Je sais, je sais ! Le précédent article est intitulé &#171;&#160;La sécurité de la virtualisation : suite et fin&#160;&#187; induisant donc la fin de cette série de billets. Ce ne sera cependant pas le cas. Je souhaiterai aller un peu plus loin sur ce sujet particulièrement intéressant qu&#8217;est la sécurité des systèmes de virtualisation. Depuis [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.antoinebenkemoun.fr/wp-content/uploads/2009/07/tech-presentation-2.gif"><img class="alignleft size-full wp-image-225" title="tech-presentation-2" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2009/07/tech-presentation-2.gif" alt="" width="157" height="140" /></a>Je sais, je sais ! Le précédent article est intitulé &laquo;&nbsp;<a href="http://www.antoinebenkemoun.fr/2010/06/la-securite-de-la-virtualisation-suite-et-fin/">La sécurité de la virtualisation : suite et fin</a>&nbsp;&raquo; induisant donc la fin de cette série de billets. Ce ne sera cependant pas le cas. Je souhaiterai aller un peu plus loin sur ce sujet particulièrement intéressant qu&#8217;est la sécurité des systèmes de virtualisation. Depuis mon retour de vacances, j&#8217;ai eu l&#8217;occasion de lire divers documents très intéressants à ce sujet et d&#8217;y réfléchir longuement.</p>
<p style="text-align: left;">Dans les billets précédents, l&#8217;objectif avait été de proposer quelques ajustements vis à vis de la conférence sur la sécurité de la virtualisation lors de la <a href="http://www.nuitduhack.com/">Nuit de Hack</a>. Ces articles s&#8217;étaient donc voulus plutôt rassurants cependant il est nécessaire de mitiger ce portrait. Les risques liés à la sécurité de la virtualisation existent bien. Affirmer le contraire serait au mieux une vulgaire erreur.</p>
<p>Nous allons aujourd&#8217;hui nous intéresser aux vulnérabilités qui ont déjà été trouvées dans des produits de virtualisation et leurs implications.</p>
<h3><strong>Xen</strong></h3>
<p>Nous allons premièrement nous intéresser au produit Xen open source. Le produit Citrix est un produit hybride s&#8217;inspirant largement du produit open source mais disposant de nombreuses modifications qui dépassent le périmètre de ce dernier. La conception de Xen se veut sécurisée par le biais, notamment, de l&#8217;utilisation des différents <a href="http://www.antoinebenkemoun.fr/2009/08/les-anneaux-de-protection/">anneaux de protection système</a>. Son histoire n&#8217;est cependant pas exempte de vulnérabilités.</p>
<p style="text-align: center;"><a href="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/08/Capture-d’écran-2010-08-04-à-17.51.50.png"><img class="size-full wp-image-1258 aligncenter" title="Capture d’écran 2010-08-04 à 17.51.50" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/08/Capture-d’écran-2010-08-04-à-17.51.50.png" alt="" width="368" height="65" /></a></p>
<p>La plus grosse vulnérabilité de Xen date de Septembre 2007. Il s&#8217;agissait d&#8217;une faille qui permettait à un domU d&#8217;exécuter des commandes dans le dom0 lors de l&#8217;utilisation de l&#8217;outil pygrub. L&#8217;outil pygrub permet à un domU de disposer d&#8217;un bootloader similaire à celui que l&#8217;on peut trouver sur une machine physique classique. Cette faille est extrêmement problématique dans la mesure où le dom0 est un domaine exceptionnellement sensible qui dispose de très nombreuses interactions directes avec le matériel et l&#8217;hyperviseur. Vous pourrez trouver plus d&#8217;informations sur cette faille sur l&#8217;<a href="http://osvdb.org/show/osvdb/41340">OSVDB</a>.</p>
<p>D&#8217;autres vulnérabilités ont été trouvées dans Xen permettant à un domU de sortir de son isolation. La plupart de ces failles nécessitent des conditions très particulières afin d&#8217;être exploitables ou ne permettent au mieux qu&#8217;un DoS local. La liste des failles est disponible sur l&#8217;<a href="http://osvdb.org/search?search[vuln_title]=xen&amp;search[text_type]=alltext">OSVDB</a>.</p>
<h3>VMWare</h3>
<p>Nous allons ensuite nous intéresser au produit VMWare. La <a href="http://osvdb.org/search?search[vuln_title]=vmware&amp;search[text_type]=titles">liste des vulnérabilités</a> pour ce produit est nettement plus longue avec un net pic en 2008. Le plus grand nombre de vulnérabilités s&#8217;explique surement en partie par la grande étendue des produits VMWare qui incluent aussi bien l&#8217;hyperviseur que tous les outils de gestion associés (Virtual Center, Service Console, &#8230;).</p>
<p style="text-align: center;"><a href="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/08/Capture-d’écran-2010-08-04-à-17.51.41.png"><img class="size-full wp-image-1259 aligncenter" title="Capture d’écran 2010-08-04 à 17.51.41" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/08/Capture-d’écran-2010-08-04-à-17.51.41.png" alt="" width="368" height="115" /></a></p>
<p>Parmi toutes ces vulnérabilités, on en recense 4 qui permettent une violation de l&#8217;isolation des machines virtuelles. Ces élévations de privilèges se font à travers les VMWare Tools quant il s&#8217;agit de machines virtuelles ou à travers les produits connexes à l&#8217;hyperviseurs.</p>
<h3>Conclusion</h3>
<p>Les produits de virtualisation ne sont clairement pas exempts de vulnérabilités quoi que l&#8217;on puisse dire. L&#8217;impact d&#8217;une vulnérabilité sur une plateforme de virtualisation sera largement plus important par rapport à une architecture classique. Il est cependant nécessaire de nuancer ces propos. De nombreuses mesures sont prises afin d&#8217;éviter que ces vulnérabilités puissent avoir un impact quelconque sur le reste de la plateforme. De plus jusqu&#8217;à présent, l&#8217;impact des failles de sécurité est relativement minime et leur fréquence plutôt faible. Il convient donc de rester vigilant aux évolutions des plateformes de virtualisation en matière de sécurité.</p>
<p>Pour en savoir plus, je vous conseille la <a href="http://www.hsc.fr/ressources/presentations/clusif-virtualisation/index.html.fr">présentation de Julien Raeis et Nicolas Collignon</a> à ce sujet. Les deux tableaux récapitulatifs présents dans cet article sont extraits de cette présentation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antoinebenkemoun.fr/2010/08/la-securite-de-la-virtualisation-vulnerabilites/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Un serveur personnel avec ZFS</title>
		<link>http://www.antoinebenkemoun.fr/2010/05/un-serveur-personnel-avec-zfs/</link>
		<comments>http://www.antoinebenkemoun.fr/2010/05/un-serveur-personnel-avec-zfs/#comments</comments>
		<pubDate>Sat, 22 May 2010 10:04:37 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Libre]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[LAN]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[Stockage]]></category>

		<guid isPermaLink="false">http://www.antoinebenkemoun.fr/?p=1165</guid>
		<description><![CDATA[Ca fait quelques temps désormais que je souhaitais faire un retour d&#8217;expérience sur le montage d&#8217;un serveur personnel. Nous allons tout d&#8217;abord étudier les contraintes d&#8217;un tel serveur et les solutions applicatives que nous pouvons proposer. Le premier objectif d&#8217;un serveur personnel est de disposer d&#8217;un ordinateur qui permettra de rendre un certain nombre de [...]]]></description>
			<content:encoded><![CDATA[<p>Ca fait quelques temps désormais que je souhaitais faire un retour d&#8217;expérience sur le montage d&#8217;un serveur personnel. Nous allons tout d&#8217;abord étudier les contraintes d&#8217;un tel serveur et les solutions applicatives que nous pouvons proposer.</p>
<p>Le premier objectif d&#8217;un serveur personnel est de disposer d&#8217;un ordinateur qui permettra de rendre un certain nombre de services sur son réseau de domicile. Ces services peuvent être variés en fonction des envies et des motivations de chacun. Des exemples de services sont DHCP, DNS, Pare-feu, NFS, HTTP et bien d&#8217;autres. L&#8217;objectif secondaire inavoué, mais non moins important, est la disposition d&#8217;une machine permettant de &laquo;&nbsp;bidouiller&nbsp;&raquo; à loisir.</p>
<h3>Objectif</h3>
<p>Dans mon cas, l&#8217;objectif était de disposer d&#8217;une capacité de stockage convenable afin de pouvoir y stocker de nombreuses sauvegardes diverses et variées mais aussi de pouvoir héberger quelques services associés tels que NFS et HTTP. N&#8217;ayant plus que du Linux ou du MacOS, CIFS ou Samba ne m&#8217;intéressaient pas. Le besoin en puissance est donc relativement limité.</p>
<h3>Contraintes</h3>
<p>Les contraintes pour ce type de serveur sont cependant nombreuses. Tout d&#8217;abord, il est nécessaire que ce serveur soit assez silencieux. J&#8217;ai la possibilité de le stocker dans un placard et/ou dans un cagibi mais le problème est qu&#8217;il m&#8217;est impossible d&#8217;y amener un connexion Internet en câblé. Sa localisation sera donc sur une étagère ou entre le canapé et le mur. Le silence est donc un facteur contribuant à une non volonté d&#8217;extermination de la part de ma fiancée. Ensuite, il est nécessaire que ce serveur consomme relativement peu d&#8217;électricité. L&#8217;électricité, ça coûte cher et donc il faut en consommer le moins possible, c&#8217;est aussi simple que cela.</p>
<p>De plus, il faut que ce serveur ait des proportions réduites. L&#8217;espace entre le mur et le canapé est assez réduit de même pour la place sur l&#8217;étagère. Une tour moyenne sera donc bien trop grande pour ces contraintes. Je souhaitais également utiliser du ZFS pour ce serveur afin de ne pas avoir à faire du RAID logiciel standard assez douteux. Il était également nécessaire de pouvoir y placer deux disques dur de 3 pouces et demi en SATA.</p>
<h3>Solution matérielle</h3>
<p>La plateforme <a href="http://www.intel.com/technology/atom/">Intel Atom</a> répond particulièrement bien à la contrainte de consommation électrique ainsi qu&#8217;à la contrainte de volume physique. C&#8217;était donc un choix évident. Le nombre d&#8217;ordinateurs de bureau Atom capables d’accommoder deux disques dur de 3 pouces et demi est relativement faible. Mon choix s&#8217;est tourné vers la plateforme <a href="http://www.msi.com/index.php?func=proddesc&amp;maincat_no=729&amp;prod_no=1605">MSI Nettop</a>.</p>
<p style="text-align: center;"><a href="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/05/msi-nettop-d100.jpg"><img class="size-medium wp-image-1167   aligncenter" title="msi-nettop-d100" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/05/msi-nettop-d100-300x189.jpg" alt="" width="300" height="189" /></a></p>
<p style="text-align: left;">Par défaut, il n&#8217;y a qu&#8217;un seul emplacement 3 pouces et demi mais il est possible de retirer le lecteur DVD et le remplacer par un disque dur moyennant l&#8217;achat d&#8217;un petit kit adaptateur. L&#8217;alimentation électrique se fait via un transformateur qui vient fournir le PC directement en courant continu. Il dispose également d&#8217;un emplacement SD ce qui pourra éventuellement être utile pour faire de la sauvegarde sur ce type de médium.</p>
<p style="text-align: left;">Comme vous le savez, ZFS calcule de somme de contrôle pour toutes les données écrites sur ses volumes. Cette opération consomme de la ressource processeur. Le processeur étant un Intel Atom, il y a de quoi se poser des questions en effet. L&#8217;objectif n&#8217;étant pas de faire des gros transferts de données à la vitesse de la lumière, cela n&#8217;est pas réellement problématique. Le débit de données reste relativement correcte.</p>
<p style="text-align: left;">Par défaut, le MSI Nettop est fourni avec un disque dur de 160Go ce qui est trop peu. J&#8217;ai donc acheté un disque supplémentaire Western Digital de 500Go pour le remplacer.</p>
<h3 style="text-align: left;">Solution logicielle</h3>
<p>Une des contraintes était de pouvoir disposer de ZFS. Cela laisse donc trois choix : Solaris, OpenSolaris ou FreeBSD. Étant donné l&#8217;orientation entreprise de Solaris et la nouvelle politique de support d&#8217;Oracle, il n&#8217;était pas souhaitable de l&#8217;utiliser. FreeBSD est un système d&#8217;exploitation qui ne me plait pas particulièrement et ce dernier n&#8217;est pas au niveau d&#8217;OpenSolaris en terme de versions de ZFS. Il n&#8217;y a pas de <a href="http://www.antoinebenkemoun.fr/2010/05/activer-la-deduplication-de-donnees-avec-zfs/">déduplication de données</a> sur ZFS sous FreeBSD. Mon choix s&#8217;est donc naturellement tourné vers OpenSolaris.</p>
<p style="text-align: center;"><a href="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/05/sbres_1215816452_0__.jpg"><img class="size-medium wp-image-1152 aligncenter" title="sbres_1215816452_0__" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/05/sbres_1215816452_0__-300x240.jpg" alt="" width="180" height="144" /></a></p>
<p>Un autre avantage est qu&#8217;il gère directement NFS et CIFS sans avoir besoin d&#8217;applications supplémentaires. Cela rend très simple la gestion de partages réseaux par le biais de commandes simples et efficaces. La documentation Oracle est très claire à ce niveau, je vous laisse la consulter.</p>
<h3>Utilisation</h3>
<p>Une fois que nous avons une solution logicielle et une solution matérielle, nous allons pouvoir décider ce que nous allons en faire.</p>
<p>Mon serveur me sert en tant que serveur NFS afin de sauvegarder des données à la volée à partir de mes différents ordinateurs. Pour mon MacBook Pro, cela me permet d&#8217;utiliser l&#8217;excellent Time Machine. La mise en place de Time Machine sur un NFS ne se fait pas sans douleur mais il existe de nombreux tutoriels sur Internet afin de vous aider. Ce serveur effectue une sauvegarde périodique (tous les 15 minutes) de mes emails Gmail. L&#8217;application getmail permet de récupérer en POPS les nouveaux mails. La récupération initiale de mes 70.000 mails a pris une nuit sur mon ADSL 7Mbit/s et désormais il récupère juste les mails le plus récents.</p>
<p>Ce serveur héberge également mon blog en ce moment le temps que je réinstalle ma VM Xen. Le temps de chargement de pages web a même été amélioré par rapport à ma VM ce qui est assez impressionnant. J&#8217;ai activé la déduplication de données en même temps que j&#8217;ai écrit le tutoriel précédent. Ce serveur a été tout à fait stable. Je n&#8217;ai rencontré aucun problème depuis 2 mois que ce serveur est en place.</p>
<p style="text-align: left;">
]]></content:encoded>
			<wfw:commentRss>http://www.antoinebenkemoun.fr/2010/05/un-serveur-personnel-avec-zfs/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Activer la déduplication de données avec ZFS</title>
		<link>http://www.antoinebenkemoun.fr/2010/05/activer-la-deduplication-de-donnees-avec-zfs/</link>
		<comments>http://www.antoinebenkemoun.fr/2010/05/activer-la-deduplication-de-donnees-avec-zfs/#comments</comments>
		<pubDate>Tue, 11 May 2010 12:41:47 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Libre]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Explication]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[Stockage]]></category>

		<guid isPermaLink="false">http://www.antoinebenkemoun.fr/?p=1140</guid>
		<description><![CDATA[Nous avons vu la dernière fois ce qu&#8217;était la déduplication de données ainsi que les applications (essentiellement libres) de cette technologie. Nous allons désormais nous intéresser à la mise en place de cette technologie dans le cas d&#8217;un système de fichiers ZFS. Si vous avez un système de fichiers ZFS, cela signifie que vous avez [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/05/sbres_1215816452_0__.jpg"><img class="alignleft size-medium wp-image-1152" title="sbres_1215816452_0__" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/05/sbres_1215816452_0__-300x240.jpg" alt="" width="180" height="144" /></a>Nous avons vu la dernière fois ce qu&#8217;était la <a href="http://www.antoinebenkemoun.fr/2010/05/la-deduplication-de-donnees/">déduplication de données</a> ainsi que les applications (essentiellement libres) de cette technologie. Nous allons désormais nous intéresser à la mise en place de cette technologie dans le cas d&#8217;un système de fichiers ZFS.</p>
<p>Si vous avez un système de fichiers ZFS, cela signifie que vous avez soit un OpenSolaris soit un BSD. Vous ne pourrez pas faire de déduplication de données avec votre BSD car les versions actuellement implémentées ne supportent pas cette technologie. Vous devrez donc avoir un OpenSolaris sous le coude. De plus, la déduplication a été ajouté au build 128 d&#8217;OpenSolaris. Si vous avez une version 2009.06, vous allez devoir faire une <a href="http://pkg.opensolaris.org/dev">mise à jour</a> vers les dépôts de développement ou bien attendre la nouvelle version (qui aurait du être 2010.03). Je parlerais de la mise à jour très prochainement.</p>
<p>Vérifions donc que vous avez la bonne version d&#8217;OpenSolaris en regardant le fichier <em>/etc/release</em>. Vous devez avoir une information indiquant un numéro de version supérieur à 128. Dans le cas de mon OpenSolaris, ce fichier contenait, entre autre, la ligne suivante : <em>OpenSolaris Development snv_134 X86</em>.</p>
<p>Par défaut, la déduplication n&#8217;est activée sur aucun pool ZFS. Si vous avez fait la montée de version sans demander de fonctionnalités supplémentaires de ZFS, il est probable que votre version de ZFS soit antérieure à celle supportant la déduplication.</p>
<p>Vérifiez donc la liste des volumes ZFS à mettre à jour.</p>
<blockquote><p><strong># zpool upgrade</strong><br />
This system is currently running ZFS pool version 22.</p>
<p>The following pools are out of date, and can be upgraded.  After being<br />
upgraded, these pools will no longer be accessible by older software versions.</p>
<p>VER  POOL<br />
&#8212;  &#8212;&#8212;&#8212;&#8212;<br />
14   rpool</p>
<p>Use &#8216;zpool upgrade -v&#8217; for a list of available versions and their associated features.</p></blockquote>
<p>Nous allons donc mettre à jour nos pools ZFS afin de pouvoir bénéficier de la déduplication.</p>
<blockquote><p><strong># pfexec zpool upgrade -a</strong><br />
This system is currently running ZFS pool version 22.</p>
<p>Successfully upgraded &#8216;rpool&#8217;</p></blockquote>
<p>Nous avons donc mis à jour notre pool ZFS. Il nous reste plus qu&#8217;à activer la fonctionnalité.</p>
<blockquote><p>$ <strong>zfs get dedup rpool</strong><br />
NAME   PROPERTY  VALUE          SOURCE<br />
rpool  dedup     off            default<br />
$ <strong>pfexec zfs set dedup=on rpool</strong><br />
$ <strong>zfs get dedup rpool</strong><br />
NAME   PROPERTY  VALUE          SOURCE<br />
rpool  dedup     on             local<br />
$ <strong>zpool list rpool</strong><br />
NAME    SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT<br />
rpool    19.9G  10.7G    9.19G     53%  1.00x      ONLINE       -</p></blockquote>
<p>Le tour est joué ! Le facteur de déduplication vous indique la quantité d&#8217;espace disque que vous avez économisé. Lorsque vous activez la déduplication sur un volume, ce facteur est de 1x par défaut. Les données actuellement présentes sur le volume ne seront pas dédupliquées, il faudra attendre que de nouvelles données soient ajoutées.</p>
<p>Source : <a href="http://ctistrategy.com/2009/12/24/testing-zfs-deduplication/">CTIStrategy</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.antoinebenkemoun.fr/2010/05/activer-la-deduplication-de-donnees-avec-zfs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La déduplication de données</title>
		<link>http://www.antoinebenkemoun.fr/2010/05/la-deduplication-de-donnees/</link>
		<comments>http://www.antoinebenkemoun.fr/2010/05/la-deduplication-de-donnees/#comments</comments>
		<pubDate>Thu, 06 May 2010 10:36:24 +0000</pubDate>
		<dc:creator>Antoine</dc:creator>
				<category><![CDATA[Libre]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Explication]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Stockage]]></category>

		<guid isPermaLink="false">http://www.antoinebenkemoun.fr/?p=1126</guid>
		<description><![CDATA[Profitons de cette journée pluvieuse pour parler d&#8217;un peu de stockage. J&#8217;ai relativement peu l&#8217;occasion de parler de stockage sur ce blog bien que ce soit un sujet particulièrement intéressant, surtout dans le cas des réseaux de stockage. Ce n&#8217;est cependant pas de réseaux de stockage dont nous parlerons aujourd&#8217;hui mais de déduplication de données. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/01/openstorage.png"><img class="alignleft size-medium wp-image-909" title="openstorage" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/01/openstorage-263x300.png" alt="" width="142" height="162" /></a>Profitons de cette journée pluvieuse pour parler d&#8217;un peu de stockage. J&#8217;ai relativement peu l&#8217;occasion de parler de stockage sur ce blog bien que ce soit un sujet particulièrement intéressant, surtout dans le cas des <a href="http://www.antoinebenkemoun.fr/2009/12/retour-sur-le-barcamp-du-28-novembre/">réseaux de stockage</a>. Ce n&#8217;est cependant pas de réseaux de stockage dont nous parlerons aujourd&#8217;hui mais de déduplication de données.</p>
<h3>Notion de duplication</h3>
<p>La notion de duplication de données est relativement simple. Prenons un jeu de données, la duplication de ces données donne un second jeu identique de données mais sur un autre espace de stockage. Il est possible de faire de la duplication dans le cas de la copie de disques ou de DVD par exemple. Il est également intéressant de faire de la duplication de données dans le cas de la virtualisation. Lorsque des machines virtuelles sont &laquo;&nbsp;provisionnées&nbsp;&raquo; ou bien, plus simplement, créées, une technique envisageable est la duplication d&#8217;une machine virtuelle &laquo;&nbsp;template&nbsp;&raquo;.</p>
<p>Dans le cas de la virtualisation, de nombreuses données sont présentes en plusieurs exemplaires. Sur une plateforme de virtualisation, il va être exécuté un certain nombre de systèmes d&#8217;exploitation. Un serveur de virtualisation standard aujourd&#8217;hui est capable d&#8217;exécuter 20 à 30 machines virtuelles. Supposons que ces machines virtuelles disposent de 2-3 systèmes d&#8217;exploitation différents, cela implique que 7 à 15 copies du même système d&#8217;exploitation vont être stockées.</p>
<h3>Définition de la duplication</h3>
<p>La déduplication va nous permettre de solutionner en grande partie ce problème. Cette technique a pour objectif de supprimer les doublons/triplons/etc du support de stockage afin de stocker qu&#8217;une seule copie des données. Il est possible d&#8217;implémenter cette technique à plusieurs endroits et à plusieurs niveaux. Prenons tout d&#8217;abord l&#8217;exemple de la mémoire vive et ensuite, l&#8217;exemple des disques.</p>
<p style="text-align: center;"><a href="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/05/deduplication.jpg"><img class="size-medium wp-image-1132   aligncenter" title="deduplication" src="http://www.antoinebenkemoun.fr/wp-content/uploads/2010/05/deduplication-300x158.jpg" alt="" width="300" height="158" /></a></p>
<h3>Déduplication de la mémoire vive</h3>
<p>La mémoire vive est un support de stockage d&#8217;information particulièrement couteux. Nous avons donc tout intérêt à en optimiser son utilisation. L&#8217;exemple que nous avons proposé plus haut pour illustrer la duplication des données est tout à fait valable pour les informations stockées en mémoire vive.</p>
<p>Le système d&#8217;exploitation va calculer une <a href="http://fr.wikipedia.org/wiki/Hash">empreinte</a> (&laquo;&nbsp;hash&nbsp;&raquo; pour les anglophones) pour une certaine unité de stockage pour la totalité de la mémoire vive. Lorsque le système rencontrera deux unités présentant la même empreinte, il en supprimera une copie et fera un lien vers l&#8217;unique copie. L&#8217;unité de stockage utilisée est, souvent, la page mémoire. Une empreinte est donc calculée pour chaque page mémoire et la déduplication se fait à ce niveau.</p>
<p>A ma connaissance, seuls les systèmes de virtualisation utilisent cette technique pour la mémoire vive. C&#8217;est, plus particulièrement, le cas de VMWare et de Xen 4.0.</p>
<p style="text-align: center;">
<h3>Déduplication de disques</h3>
<p>L&#8217;exemple de la mémoire vive est transposable aux supports de disque divers. La déduplication au niveau des disques va permettre les mêmes avantages que la mémoire vive et utilisera le même fonctionnement. La différence se situe principalement au niveau de l&#8217;unité de stockage qui sera choisie pour le calcul de l&#8217;empreinte. Le bloc sera, le plus souvent, utilisé pour les disques.</p>
<p>Une application réelle pour la déduplication se situe d&#8217;une part dans les systèmes de virtualisation mais aussi dans les systèmes de sauvegarde dans lesquels on peut retrouver de (très) nombreuses copies d&#8217;une même copie. Les équipements qui effectuent la déduplication sont les <a href="http://fr.wikipedia.org/wiki/R%C3%A9seau_de_stockage_SAN">SAN</a> mais aussi les systèmes de fichiers (&laquo;&nbsp;filesystem&nbsp;&raquo; pour les anglophones).</p>
<p>Vous allez me dire &laquo;&nbsp;Mais mon Linux il sait pas faire ca !&nbsp;&raquo; et, oui, vous avez raison. Si vous voulez effectuer de la déduplication au niveau d&#8217;un système de fichiers, il va falloir utiliser <a href="http://hub.opensolaris.org/bin/view/Community+Group+zfs/">ZFS</a> sous <a href="http://hub.opensolaris.org/bin/view/Main/">OpenSolaris</a>. J&#8217;en parlerais dans un prochain billet. Il serait prévu d&#8217;inclure ce type de fonctionnalité dans Btrfs.</p>
<p>Au final, j&#8217;espère avoir fait un tour d&#8217;horizon assez complet de cette technique relativement récente mais que je trouve particulièrement intéressante.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.antoinebenkemoun.fr/2010/05/la-deduplication-de-donnees/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

