<?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>Geekfault &#187; Linux</title>
	<atom:link href="http://geekfault.org/tag/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://geekfault.org</link>
	<description>If it doesn&#039;t segfault, you&#039;re doing it wrong.</description>
	<lastBuildDate>Tue, 08 May 2012 17:13:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Comment faire un Initram minimal avec mode rescue</title>
		<link>http://geekfault.org/2012/05/08/comment-faire-un-initram-minimal-avec-mode-rescue/</link>
		<comments>http://geekfault.org/2012/05/08/comment-faire-un-initram-minimal-avec-mode-rescue/#comments</comments>
		<pubDate>Mon, 07 May 2012 22:51:36 +0000</pubDate>
		<dc:creator>madx</dc:creator>
				<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[initram]]></category>
		<category><![CDATA[initrd]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=6143</guid>
		<description><![CDATA[Aujourd&#8217;hui Geekfault vous propose d&#8217;apprendre à construire vous même votre initram, comme un grand. On ne parlera pas de splash ou autre eyecandy pour newbies, juste de choses utiles pour nous autres les geeks. Et on vous expliquera surtout comment ça marche, afin que vous puissiez devenir un Guru de la fabrication d&#8217;initram. Mais au [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
<li><a href='http://geekfault.org/2010/12/19/la-nouvelle-mode-geek-avoir-son-domaine-42/' rel='bookmark' title='La nouvelle mode Geek : avoir son domaine .42'>La nouvelle mode Geek : avoir son domaine .42</a></li>
<li><a href='http://geekfault.org/2009/05/19/authentification-avec-une-cle-usb/' rel='bookmark' title='S&#8217;authentifier avec une clé USB'>S&#8217;authentifier avec une clé USB</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><!--pagetitle:Introduction--><a href="http://geekfault.org/wp-content/uploads/2012/05/initram.png" title="initram" rel="lightbox.6143"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2012/05/initram-300x175.png" alt="" title="initram" width="300" height="175" class="alignleft size-medium wp-image-6193" /></a>Aujourd&#8217;hui Geekfault vous propose d&#8217;apprendre à <strong>construire vous même votre initram</strong>, comme un grand.<br />
On ne parlera <strong>pas de splash ou autre eyecandy</strong> pour newbies, juste de <strong>choses utiles </strong>pour nous autres les geeks.<br />
Et on vous expliquera surtout <strong>comment ça marche</strong>, afin que vous puissiez <strong>devenir un Guru de la fabrication d&#8217;initram</strong>.</p>
<p><!--more--></p>
<h3>Mais au fait, c&#8217;est quoi un initram ?</h3>
<p>Un initram est un <strong>fichier</strong> contenant un <strong>mini système</strong> sur lequel boot le kernel.<br />
Son utilisation la plus commune est de servir d&#8217;<strong>étape pour lancer le vrai système</strong>, c&#8217;est ce cas que nous verrons.</p>
<p><strong>Étapes d&#8217;un boot typique avec initram</strong></p>
<ul>
<li>La <strong>machine</strong> démarre.</li>
<li>Le <strong>BIOS</strong> se lance, lit sa conf, et passe la main au boot-loader <strong>Grub</strong> présent sur le <strong>MBR</strong>.</li>
<li><strong>Grub</strong> lit sa conf, copie en RAM le kernel et l&#8217;initram puis passe la main au <strong>kernel</strong>.</li>
<li>Le <strong>kernel</strong> s&#8217;initialise, détecte le hardware puis passe la main à l&#8217;<strong>initram</strong>.</li>
<li>L&#8217;<strong>initram</strong> fait son boulot et passe la main au vrai système, par exemple <strong>Gentoo</strong>.</li>
<li><strong>Gentoo</strong> s&#8217;initialise et vous demande de <strong>vous</strong> logger.</li>
</ul>
<h4>Dans quel cas l&#8217;utiliser ?</h4>
<p>Si le <strong>système</strong> est <strong>directement accessible</strong> par le kernel, un <strong>initram ne sert à rien</strong>, le kernel y arrivera tout seul.<br />
En revanche si le <strong>système</strong> n&#8217;est <strong>pas directement accessible</strong> (raid, cryptage, lvm, etc), alors <strong>il faut un initram</strong> pour y accéder.</p>
<h4>Autopsie d&#8217;un initram</h4>
<p>Un fichier d&#8217;initram n&#8217;est en fait qu&#8217;une <strong>archive cpio</strong>. cpio étant un format <strong>similaire à tar</strong>, mais plus basique.<br />
Dans cette archive on retrouve une <strong>arborescence de fichier similaire à celle d&#8217;un système classique</strong> (/dev, /etc, /bin, /lib, etc)<br />
Il doit aussi y avoir le fichier <strong>init</strong> à la racine de l&#8217;arborescence, c&#8217;est à ce fichier que le kernel passe la main et c&#8217;est presque toujours un <strong>script shell</strong>.<br />
On ne laisse évidemment dans cette arborescence que le <strong>strict nécessaire</strong> si bien qu&#8217;il ne reste souvent que /bin, /init et un ou deux autres dossiers.<br />
On peux également <strong>compresser</strong> ce fichier avec gzip, bzip2 ou xz si le kernel le supporte.</p>
<p>Voila pour un rappel de la technologie.</p>
<h4>Initram vs initrd</h4>
<p>On confond souvent les deux car <strong>ils servent à la même chose</strong> mais l&#8217;initrd est en fait le <strong>grand-père</strong> de l&#8217;initram.<br />
L&#8217;<strong>initrd</strong> est un fichier de <strong>taille fixe</strong>, <strong>formaté</strong> en ext2, copié en RAM et monté comme un disque dur.<br />
Alors que l&#8217;<strong>initram</strong> est une <strong>archive</strong> cpio dont le contenu est copié dans du <strong>tmpfs</strong>, (taille dynamique, pas besoin de formater).</p>
<p>Bref l&#8217;initrd est à l&#8217;initram ce que le Tam-tam est à Internet: un <strong>ancêtre archaïque</strong>.</p>
<h3>Construire son initram</h3>
<p>Pour éviter de rester vague, prenons un <strong>exemple concret</strong>: une Gentoo sur une partition cryptée avec dm-crypt, le tout sur Raid 1 software.<br />
En <strong>bonus</strong>, et pour le même prix, on rajoutera un <strong>mode rescue</strong>.</p>
<p>Il va nous falloir les ingrédients suivant:</p>
<ul>
<li>Un <strong>shell</strong> pour exécuter le script /init</li>
<li>Un moyen de remplir <strong>/dev</strong> pour avoir /dev/sda1, etc</li>
<li>L&#8217;exécutable <strong>mdadm</strong> pour monter le <strong>Raid</strong></li>
<li>L&#8217;exécutable <strong>cryptsetup</strong> pour <strong>décrypter</strong></li>
<li>Un moyen de passer le <strong>clavier</strong> en <strong>français</strong> pour taper le mot de passe</li>
<li>Un moyen de passer en mode <strong>rescue</strong></li>
<li>Un script <strong>/init</strong> pour orchestrer tout ça</li>
</ul>
<p>On mettra tout ces ingrédients dans un dossier appelé <em>DOSSIER</em> et on verra plus tard comment transformer ce dossier en initram.</p>
<h4>Shell: Busybox</h4>
<p><strong>Busybox</strong> est une sorte de <strong>couteau suisse</strong> qui fournit les <strong>commandes de base</strong> (sh, cd, ls, rm, mount, &#8230;), tout cela contenu dans <strong>un seul petit exécutable</strong>. Il contient bien évidement un <strong>shell</strong>.</p>
<p>Il existe deux méthodes pour accéder aux commandes de Busybox:</p>
<ul>
<li>l&#8217;appel direct<code>$ busybox ls -la /etc</code></li>
<li>le lien symbolique<code>$ ln -s busybox /bin/ls<br />
$ ls -la /etc</code></li>
</ul>
<p>On ajoute Busybox à notre initram:<br />
<code><br />
$ cd DOSSIER<br />
$ mkdir bin<br />
$ cp `which busybox` bin/<br />
$ ln -s busybox bin/sh<br />
</code><br />
<br/></p>
<p>Busybox est <strong>disponible sur toutes les distribution</strong> et, sauf exception, est toujours compilé en <em>static</em>.<br />
Vous pouvez vérifier avec la commande:<br />
<code>$ file `which busybox`<br />
/bin/busybox: ELF 64-bit LSB executable, x86-64, statically linked</code></p>
<p>Si il est <em>dynamically linked</em> alors il faut soit se débrouiller pour avoir une version <em>statically linked</em>, soit inclure dans l&#8217;initram (dans /lib) les librairies dont il a besoin (utiliser la commande <em>ldd</em> pour avoir la liste).<br />
Cela est valable pour tout exécutables que vous ajoutez à votre initram.</p>
<h4>/dev: Busybox</h4>
<p>La encore, <strong>busybox</strong> a ce qu&#8217;il faut: <strong>mdev</strong>, un mini udev.<br />
mdev marche <strong>différemment de udev</strong> qui pour rappel est un service qui tourne en permanence.<br />
mdev à l&#8217;inverse est à <strong>lancer quand on en a besoin</strong>, et on en a besoin de deux façon:</p>
<ul>
<li>pour remplir /dev avec tout ce qu&#8217;a <strong>trouvé</strong> le kernel <strong>jusque là</strong><code>$ mdev -s</code></li>
<li>pour que /dev soit mis à jour chaque fois que le kernel <strong>trouve un nouveau</strong> périphérique<code>ln -s busybox /bin/mdev<br />
echo '/bin/mdev' > /proc/sys/kernel/hotplug</code></li>
</ul>
<p>On utilisera mdev dans le script /init.</p>
<h4>mdadm et cryptsetup</h4>
<p>Pour vous faciliter la tache il vaut mieux les avoir en <strong>static</strong> sinon il faut inclure les <strong>librairies</strong> avec.</p>
<p>On ajoute mdadm et cryptsetup à notre initram:<br />
<code><br />
$ cp `which mdadm` bin/<br />
$ cp `which cryptsetup` bin/<br />
</code></p>
<p>On les utilisera dans le script /init</p>
<h4>Clavier Français: Busybox</h4>
<p>Décidément ce Busybox fait tout !<br />
En fait il ne sait pas vraiment configurer le clavier en français mais il sait <strong>sauver</strong> la <strong>configuration actuelle</strong> dans un fichier.</p>
<p>On crée le fichier avec:<br />
<code><br />
$ cd DOSSIER<br />
$ mkdir etc<br />
$ busybox dumpkmap > etc/kmap-fr<br />
</code><br />
Évidement il faut que le clavier soit <strong>déjà correctement configuré</strong> pour que cette opération ait un sens.<br />
On peux ensuite charger le fichier avec <strong>loadkmap</strong>, mais nous verrons cela dans le script /init.</p>
<h4>Rescue</h4>
<p>On a donc maintenant un <strong>shell</strong>, le <strong>clavier</strong> peut etre configuré, on a <strong>mdadm</strong> et <strong>cryptsetup</strong>, en plus de ça <strong>busybox est plein d&#8217;outils divers</strong> (ip, lspci, wget, ps, etc, &#8230;). tapez <em>busybox</em> pour voir la liste.<br />
Il y a donc <strong>tout ce qu&#8217;il faut pour un rescue</strong>, autant en profiter.<br />
Le <strong>mode rescue</strong> sera tout simplement de lancer un <strong>shell</strong> pour donner la main à l&#8217;utilisateur.</p>
<p>On pourra y arrivera de deux manières:</p>
<ul>
<li>le script <strong>/init</strong> rencontre une <strong>erreur</strong> et <strong>lance un shell</strong>.</li>
<li>On rajoute &#8220;<strong>rescue</strong>&#8221; aux <strong>paramètres du kernel</strong> et on configure le script /init pour qu&#8217;il lance un shell dans ce cas.</li>
</ul>
<p>On vera tout ca dans le script /init.</p>
<p>Pour info, rajouter un paramètre au kernel peux se faire directement depuis Grub:</p>
<ul>
<li>attendez de voir grub</li>
<li>appuyez sur une touche pour arrêter le compte à rebour</li>
<li>appuyez sur e, comme edit, vous verez alors plusieurs lignes, dont celle commencant par kernel</li>
<li>appuyez a nouveau sur e et ajoutez <em>rescue</em> à la fin de cette ligne</li>
<li>appuyez sur escape pour sortir du mode edition</li>
<li>appuyez sur b, comme boot, pour booter</li>
</ul>
<p>La modification n&#8217;est pas permanente.</p>
<h4>Script /init</h4>
<p>Le gros morceau, c&#8217;est lui qui fait le boulot.<br />
<code><br />
#!/bin/sh</p>
<p># on monte /sys et /proc<br />
# certains programmes en ont besoin et ça coûte rien<br />
mkdir /proc /sys<br />
mount -t proc proc /proc<br />
mount -t sysfs sysfs /sys</p>
<p># On crée /dev et on le remplit avec mdev<br />
mkdir -p /dev<br />
mount -t tmpfs none /dev<br />
ln -s busybox /bin/mdev<br />
echo '/bin/mdev' > /proc/sys/kernel/hotplug<br />
mdev -s</p>
<p># On charge la config clavier pour pouvoir taper le mdp correctement<br />
loadkmap < /etc/kmap-fr</p>
<p># on lance le shell si il y a "rescue" dans les paramètres du kernel<br />
grep -w rescue /proc/cmdline &#038;&#038; exec sh</p>
<p># on bloque l'output du kernel le temps de taper le mot de passe<br />
PRINTK=`cat /proc/sys/kernel/printk`<br />
echo 0 > /proc/sys/kernel/printk </p>
<p># On laisse mdadm se débrouiller pour monter le RAID<br />
# On lui donne juste les dev possible et l'UUID du RAID<br />
# L'UUID peut être obtenu avec la commande "mdadm -D /dev/mdX"<br />
echo 'DEVICE /dev/sd[abcd][2]' > /etc/mdadm.conf<br />
echo 'ARRAY /dev/md2 UUID=62121:a6a45:34d17:37d8e' >> /etc/mdadm.conf<br />
mdadm --assemble --scan || exec sh</p>
<p># on décrypte (il demande donc le mdp)<br />
cryptsetup luksOpen /dev/md2 vault || exec sh</p>
<p># on monte la partition décryptée<br />
mkdir /newroot<br />
mount -r /dev/mapper/vault /newroot || exec sh</p>
<p># on sauve les paramètres du kernel pour les donner au vrai init<br />
CMDLINE=`cat /proc/cmdline`</p>
<p># on nettoie le bordel qu'on a mis<br />
echo "${PRINTK}" > /proc/sys/kernel/printk<br />
echo '' > /proc/sys/kernel/hotplug<br />
umount /dev<br />
umount /sys<br />
umount /proc</p>
<p># et on passe la main au vrai système<br />
exec switch_root /newroot /sbin/init ${CMDLINE}<br />
</code></p>
<h4>Générer l&#8217;initam</h4>
<p>Ultra simple:<br />
<code><br />
$ cd DOSSIER<br />
$ find . | cpio --quiet -o -H newc | gzip --best > /boot/mon_initram<br />
</code><br />
Vous pouvez évidement utiliser <em>bzip2</em> ou <em>xz</em> pour compresser, assurez vous juste que votre kernel le supporte.</p>
<p>Et voila, <strong>votre initram est terminé</strong>.<br />
Il n&#8217;y a <strong>plus qu&#8217;à booter dessus</strong>, à vous les kernel panic !</p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
<li><a href='http://geekfault.org/2010/12/19/la-nouvelle-mode-geek-avoir-son-domaine-42/' rel='bookmark' title='La nouvelle mode Geek : avoir son domaine .42'>La nouvelle mode Geek : avoir son domaine .42</a></li>
<li><a href='http://geekfault.org/2009/05/19/authentification-avec-une-cle-usb/' rel='bookmark' title='S&#8217;authentifier avec une clé USB'>S&#8217;authentifier avec une clé USB</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2012/05/08/comment-faire-un-initram-minimal-avec-mode-rescue/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Lancer votre dual-booting Windows dans une VirtualBox</title>
		<link>http://geekfault.org/2011/10/14/lancer-votre-dual-booting-windows-dans-une-virtualbox/</link>
		<comments>http://geekfault.org/2011/10/14/lancer-votre-dual-booting-windows-dans-une-virtualbox/#comments</comments>
		<pubDate>Fri, 14 Oct 2011 17:48:32 +0000</pubDate>
		<dc:creator>Tito</dc:creator>
				<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[raw]]></category>
		<category><![CDATA[virtualbox]]></category>
		<category><![CDATA[virtualisation]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=6053</guid>
		<description><![CDATA[Mes études me forcent à utiliser des logiciels disponibles uniquement sous Microsoft Windows. Sur ma nouvelle machine j&#8217;ai donc décidé de laisser le Windows en dual-boot. Mais je souhaite aussi pouvoir le lancer virtualisé dans mon environnement Linux ! Avec un peu d&#8217;astuce c&#8217;est tout à fait possible, grâce au mode d&#8217;accès disque &#8220;raw&#8221;. Voici [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/08/14/faille-critique-dans-tous-les-noyaux-linux/' rel='bookmark' title='Faille critique dans tous les noyaux Linux'>Faille critique dans tous les noyaux Linux</a></li>
<li><a href='http://geekfault.org/2009/03/27/keymap-linux-sous-windows/' rel='bookmark' title='Keymap Linux sous Windows'>Keymap Linux sous Windows</a></li>
<li><a href='http://geekfault.org/2010/03/09/openvz-virtualisation-legere-performante-et-amusante/' rel='bookmark' title='OpenVZ : virtualisation légère, performante et amusante'>OpenVZ : virtualisation légère, performante et amusante</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/wp-content/uploads/2011/10/Windows-in-VirtualBox.png" title="Windows-in-VirtualBox" rel="lightbox.6053"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2011/10/Windows-in-VirtualBox-300x168.png" alt="" title="Windows-in-VirtualBox" width="300" height="168" class="alignleft size-medium wp-image-6057" /></a>Mes études me forcent à utiliser des logiciels disponibles uniquement sous Microsoft Windows. Sur ma nouvelle machine j&#8217;ai donc décidé de laisser le Windows en dual-boot. Mais je souhaite aussi pouvoir le lancer <strong>virtualisé</strong> dans mon environnement Linux !</p>
<p>Avec un peu d&#8217;astuce c&#8217;est tout à fait possible, grâce au mode d&#8217;accès disque &#8220;raw&#8221;. Voici comment j&#8217;ai réussi à lancer mon Windows physique à l&#8217;intérieur d&#8217;une VirtualBox.<br />
<!--more--></p>
<h3>Préparation</h3>
<p>Je présuppose que vous avez déjà une installation dual-boot fonctionnelle. Dans votre environnement Linux, installez VirtualBox ainsi que l&#8217;utilitaire mbr :<br />
<code># apt-get install virtualbox mbr</code><br />
Si vous souhaitez lancer cette machine virtuelle en tant qu&#8217;utilisateur, nous devons ajouter l&#8217;user aux groupes nécessaires :<br />
<code># gpasswd -a tito vboxusers<br />
# gpasswd -a tito disk</code><br />
Finalement, essayez de retrouver votre CD d&#8217;installation de Windows.</p>
<h3>Création du disque virtuel</h3>
<p>Pour permettre à VirtualBox de lancer Windows, nous devons créer un disque virtuel bootable. Pour cela on crée un Master Boot Record. Il faut d&#8217;abord identifier où se trouve votre Windows. Le mien, comme beaucoup d&#8217;installations constructeur de nos jours, tient en deux partitions : la boot sur /dev/sda1 et le système sur /dev/sda2. Je suppose que vous saurez aisément situer le vôtre.<br />
<code>$ mkdir Virtual7 &#038;&#038; cd Virtual7<br />
$ install-mbr -e12 --force ./vm.mbr</code><br />
Remarquez l&#8217;option -e12 qui signifie &#8220;partitions 1 et 2&#8243;, modifiez selon votre système!</p>
<p>Nous créons maintenant le disque virtuel :<br />
<code>$ VBoxManage internalcommands createrawvmdk -filename ./win7.vmdk -rawdisk /dev/sda -partitions 1,2 -mbr ./vm.mbr -relative</code><br />
À nouveau, modifiez les arguments rawdisk et partitions selon votre système.</p>
<h3>Création de la VirtualBox</h3>
<p>Vous pouvez maintenant lancer l&#8217;interface graphique de VirtualBox et créer une nouvelle machine virtuelle. Lorsque l&#8217;assistant demande le disque dur virtuel, allez chercher le fichier Virtual7/win7.vmdk.<br />
<a href="http://geekfault.org/wp-content/uploads/2011/10/Capture-Créer-une-nouvelle-machine-virtuelle.png"><img style=' display: block; margin-right: auto; margin-left: auto;' align="center"   src="http://geekfault.org/wp-content/uploads/2011/10/Capture-Créer-une-nouvelle-machine-virtuelle-580x365.png" alt="" title="Créer une nouvelle machine virtuelle" width="580" height="365" class="aligncenter size-large wp-image-6054" /></a></p>
<h3>Réparer Windows</h3>
<p>Si vous essayez de lancer la machine virtuelle maintenant, Windows vous gratifiera d&#8217;une jolie erreur vous demandant de démarrer sur le CD d&#8217;installation pour réparation. <strong>C&#8217;est tout à fait normal!</strong></p>
<p>Après avoir monté votre CD d&#8217;installation Windows dans VirtualBox, bootez à partir de celui-ci. Choisissez vos options linguistiques et cliquez sur &#8220;Réparer l&#8217;installation&#8221;. La machine virtuelle va redémarrer sous votre Windows!</p>
<h3>Problèmes divers</h3>
<ul>
<li>Dans certains cas, la configuration par défaut de VirtualBox ne permet pas de démarrer Windows 7, ni même son CD de réparation! (Erreur 0xc0000225) Pour régler le problème, dans la configuration de la machine virtuelle cochez &#8220;<strong>Activer les IO-APIC</strong>&#8221; sous l&#8217;onglet Système.</li>
<li>Étrangement, la réparation du démarrage de Windows a modifié le comportement vis-à-vis de GRUB. J&#8217;ai donc modifié mon /boot/grub/grub.conf pour que Windows démarre depuis (hd0,1) plutôt que (hd0,0).</li>
<li>Même s&#8217;il sont bien pratique en milieu virtualisé, les additions client (guest addons) de VirtualBox font planter Windows lorsqu&#8217;il est lancé physiquement. Ne les installez donc pas.</li>
</ul>
<h3>En savoir plus</h3>
<ul>
<li><a href="http://www.rajatarya.com/website/taming-windows-virtualbox-vm">Taming Windows 7 in a VM</a></li>
<li><a href="http://www.virtualbox.org/manual/ch09.html#rawdisk">VirtualBox raw host hard disk from a guest</a></li>
<li><a href="http://bbesnard.over-blog.com/article-virtualisation-erreur-0xc0000225-virtual-box-win2008-server-r2-59594322.html">Erreur 0xc0000225</a></li>
</ul>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/08/14/faille-critique-dans-tous-les-noyaux-linux/' rel='bookmark' title='Faille critique dans tous les noyaux Linux'>Faille critique dans tous les noyaux Linux</a></li>
<li><a href='http://geekfault.org/2009/03/27/keymap-linux-sous-windows/' rel='bookmark' title='Keymap Linux sous Windows'>Keymap Linux sous Windows</a></li>
<li><a href='http://geekfault.org/2010/03/09/openvz-virtualisation-legere-performante-et-amusante/' rel='bookmark' title='OpenVZ : virtualisation légère, performante et amusante'>OpenVZ : virtualisation légère, performante et amusante</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2011/10/14/lancer-votre-dual-booting-windows-dans-une-virtualbox/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Filtrer ses mails ! Un cauchemard !</title>
		<link>http://geekfault.org/2010/04/09/filtrer-ses-mails-un-cauchemard/</link>
		<comments>http://geekfault.org/2010/04/09/filtrer-ses-mails-un-cauchemard/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 17:18:10 +0000</pubDate>
		<dc:creator>bragon</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=2808</guid>
		<description><![CDATA[Le but de ce howto est de vous présenter ma façon de filtrer mes mails de tous mes comptes pop/imap, afin de les centraliser dans une même interface. Afin de filtrer les mails qui arrivent nous allons utiliser &#8220;sieve&#8221; un merveilleux ajout disponible dans le packet dovecot, qui permet de filtrer les messages directement AVANT [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/04/09/maildir-mbox-la-migration/' rel='bookmark' title='Maildir mbox &#8211; La migration'>Maildir mbox &#8211; La migration</a></li>
<li><a href='http://geekfault.org/2009/12/31/construire-sa-gateway-from-scratch/' rel='bookmark' title='EeeGW : Créer soi-même une passerelle réseau'>EeeGW : Créer soi-même une passerelle réseau</a></li>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><!--pagetitle:Introduction et objectifs--><a href="http://geekfault.org/2010/04/09/filtrer-ses-mails-un-cauchemard/casserole3/" rel="attachment wp-att-2887"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2010/04/casserole3-300x200.jpg" alt="" title="casserole3" width="300" height="200" class="alignleft size-medium wp-image-2887" /></a>Le but de ce howto est de vous présenter <strong>ma</strong> façon de filtrer mes mails de tous mes comptes pop/imap, afin de les centraliser dans une même interface.<br />
Afin de filtrer les mails qui arrivent nous allons utiliser &#8220;sieve&#8221; un merveilleux ajout disponible dans le packet dovecot, qui permet de filtrer les messages directement <strong> AVANT </strong> qu&#8217;ils arrivent dans la casserole IMAP.<br />
<!--more--></p>
<h3>Les mails sans rangement c&#8217;est immangeable, ceci est une petite recette d&#8217;assaisonnement </h3>
<p>Centraliser mes mails m&#8217;apporte plusieurs choses :<br />
<strong><br />
- Faciliter le filtrage.<br />
- Faciliter le rangement dans différents dossiers.<br />
- Effectuer un backup de tous mes comptes IMAP/POP.<br />
- Faire apprendre à mon antispam mes différents réglages.<br />
</strong></p>
<p>Cette recette ne couvre pas l&#8217;installation de Apache + php + MySQL<br />
Nous supposons ici que vous savez faire ce type d&#8217;installation.</p>
<p>Cette recette ne couvre pas non plus l&#8217;utilisation de mutt (je mettrai tout de même en ligne ma configuration).<br />
En effet, l&#8217;utilisation de mutt mérite un article à lui seul !</p>
<p>Postulat1 : Les mails seront stockés dans cette recette ici : /home/utilisateur/.maildir<br />
Postulat2 : Nous supposons que vous avez plusieurs comptes email à rapatrier.<br />
Postulat3 : Nous supposons que vous disposez d&#8217;une machine GNU/Linux sous Gentoo et/ou Debian pour effectuer ce howto.<br />
Postulat4 : Nous supposons que vous stockez vos mails dans le format Maildir ! (se reporter au Howto Sur la conversion mbox => maildir en cas de soucis) Allez lire : <a href="http://geekfault.org/2010/04/09/maildir-mbox-la-migration/">http://geekfault.org/2010/04/09/maildir-mbox-la-migration/</a></p>
<h3> Résultat une fois que la recette est en place </h3>
<p><a href="http://geekfault.org/2010/04/09/filtrer-ses-mails-un-cauchemard/filtermail-2/" rel="attachment wp-att-2969"><img style=' display: block; margin-right: auto; margin-left: auto;' align="center"   src="http://geekfault.org/wp-content/uploads/2010/04/filtermail1.jpeg" alt="" title="filtermail" width="662" height="945" class="aligncenter size-full wp-image-2969" /></a></p>
<p><!--nextpage--><!--pagetitle:Aux fourneaux !-->  </p>
<h3> Logiciels nécessaires pour &#8220;MailFiltrés&#8221; </h3>
<li> MySQL-5 </li>
<li> Apache-2.2 </li>
<li> Php-5.2 </li>
<li> RoundCube + plugins &#8220;Report Junk&#8221; et &#8220;Manage Sieve&#8221; </li>
<li> Dovecot (pop/imap) + Sieve + ManageSieve </li>
<li> SpamAssassin + MySQL </li>
<li> Postfix </li>
<li> mutt + sidebar </li>
<li> Fetchmail </li>
<h3> Remplir la casserole </h3>
<p>Pour trier le manger dans la casserole nous devons tout d&#8217;abord la remplir !</p>
<p>Pour effectuer ce howto il nous faut tout d&#8217;abord des emails.<br />
Il va donc nous falloir configurer fetchmail.<br />
Attention ne pas lancer fetchmail de suite ! Sinon vous risquez de rapatrier les emails sans même les faire passer dans la moulinette avant de les déposer dans les bons compartiments de la casserole !</p>
<h4> Récupérer les ingrédients et les mettre dans la casserole </h4>
<p>* Gentoo<br />
<code><br />
USE="ssl" emerge -av net-mail/fetchmail<br />
</code></p>
<p>* Debian<br />
<code><br />
apt-get install fetchmail<br />
</code></p>
<p>* .fetchmailrc</p>
<p><code><br />
## les mails mondomaine.info<br />
poll pop.geekmx.org<br />
protocol pop3<br />
username bragon@mondomaine.info<br />
password ""<br />
#mda '/usr/bin/procmail -d %T' ### petit commentaire pour vous faire voir comment faire pour faire passer vos mails dans la moulinette procmail avant de les donner à manger à dovecot !!<br />
mda "/usr/libexec/dovecot/deliver"<br />
is 'bragon' here ### Nom de l'utilisateur local pour déposer les mails.<br />
keep ### Laisses mes mails sur l'imap distant ! Mechant !</p>
<p>## ensuite on recup les mails geeknode<br />
poll pop.geekmx.org<br />
protocol pop3<br />
username utilisateurvalide@g33kn0de.org<br />
password ""<br />
mda "/usr/libexec/dovecot/deliver"<br />
is 'bragon' here<br />
keep</p>
<p>## apres on passe au compte gmail<br />
poll imap.gmail.com<br />
proto imap<br />
user "bragon.unuser@gmail.com"<br />
password ""<br />
ssl<br />
keep<br />
mda "/usr/libexec/dovecot/deliver"<br />
is 'bragon' here</p>
<p>## On synchronise le compte blackberry pour virification<br />
#poll imap.geekmx.org<br />
#proto imap<br />
#user "unuser@undomaine.info"<br />
#password ""<br />
#ssl<br />
#keep<br />
#mda "/usr/libexec/dovecot/deliver"<br />
#is 'bragon' here</p>
<p>## preparation pour les mails EW<br />
#<br />
poll trucmail.euro-web.fr<br />
protocol imap<br />
username "truc.plop[_at_]euro-web[point_dot]fr" ## Mettre ici une vraie adresse mail<br />
password "" ## Mettre ici un vrai mot de passe.<br />
folder 'INBOX.sdf' ## Recupère spécifiquement un dossier IMAP<br />
folder 'INBOX.task'<br />
folder 'INBOX.sysadmin'<br />
folder 'INBOX.netavous'<br />
folder 'INBOX.frnog'<br />
folder 'INBOX.TODO'<br />
folder 'INBOX' ## Recupère le dossier imap principal<br />
keep ## Laisse les mails sur le serveur<br />
mda "/usr/libexec/dovecot/deliver" ## Utilise dovecot en tant que deliver local<br />
is 'bragon' here ## Mets les mails dans le répertoire courant de l'utilisateur bragon.</p>
<p></code></p>
<h3> Filtrer / Découper  les ingrédients Juste avant la casserole </h3>
<p><code><br />
emerge -av =net-mail/dovecot-1.2.6<br />
</code><br />
ou<br />
<code><br />
apt-get install dovecot  # Je crois que de base dans Debian dovecot est compilé avec sieve.<br />
</code></p>
<p>* Flag de compilation nécéssaire pour dovecot : &#8220;berkdb bzip2 ipv6 maildir managesieve mysql pam sieve ssl zlib -caps -cydir -dbox -doc -kerberos -ldap -mbox -postgres -sqlite -suid -vpopmail&#8221;</p>
<p>Via ces directives de compilation dovecot supporte maintenant les fichiers de filtrage &#8220;.sieve&#8221;<br />
Il vous suffit de déposer n&#8217;importe quel fichier sieve dans /home/utilisateur/sieve pour que dovecot utilise vos filtres.</p>
<p>Voici un exemple de syntaxe :  tamereenshortsurunCISCO7603.sieve</p>
<p><code><br />
# rule:[cron]<br />
elsif anyof (header :contains "Subject" "root@gn",<br />
        header :contains "From" "root@astaroth",<br />
        header :contains "From" "bragon@tobold",<br />
        header :contains "From" "root@aec-ri.com",<br />
        header :contains "From" "root@mail.geekmx.org",<br />
        header :contains "From" "root@bender")<br />
{<br />
        fileinto "cron";<br />
}<br />
</code></p>
<p>Second exemple de syntaxe : tonpapaesttellementvieuxque&#8230;.sieve</p>
<p><code><br />
# rule:[SYSADMIN ML]<br />
elsif anyof (header :contains "From" "sysadmin@domaine.net",<br />
        header :contains "Subject" "Liste Franophone Administrateur systeme")<br />
{<br />
        fileinto "boulot.sysadmin";<br />
        redirect "smartphone[at]bragon[point]info"; ## Mettre ici une adresse mail valide<br />
}<br />
# rule:[Debian Security Advertise]<br />
elsif anyof (header :contains "Subject" "[SECURITY][DSA")<br />
{<br />
        fileinto "boulot.dsa";<br />
}<br />
</code></p>
<h3> Virer les ingrédients moisis en les mettant dans un compartiment de la casserole </h3>
<p><code><br />
emerge -av =mail-filter/spamassassin-3.2.5-r2<br />
</code></p>
<p>* Flag de compilation nécessaire pour spamassassin : "berkdb ipv6 mysql ssl -doc -ldap -postgres -qmail -sqlite -tools"</p>
<p>* Voir les configurations de spamd ci-après.</p>
<h3> Renvoyer certains ingrédients au cuisinier </h3>
<p><code><br />
emerge -av =mail-mta/postfix-2.6.5<br />
</code></p>
<p>* Flag de compilation nécessaire pour postfix : "dovecot-sasl ipv6 mysql pam ssl -cdb -hardened -ldap -mbox -nis -postgres -sasl (-selinux) -vda"</p>
<p>* Voir le fichier de configuration main.cf ci-après.</p>
<p>Le postfix me sert uniquement pour transférer certaines régles sieve vers une autre adresse mail.<br />
Cette adresse mail est popé via mon smartphone.<br />
Ainsi je reçois <strong> N'importe ou </strong> Certains mails qui "matchent" une régle de filtrage spécifique !</p>
<p>Le postfix peut me servir également à faire réply dans l'interface roundcube ou mutt . (mais je l'utilise rarement car ce postfix n'a ni domainkeys ni spf pour mes domaines pro / geeknode / gmail) Et le mail bien que délivré arrivera dans la boite à spam du correspondant fréquemment.</p>
<p>Ce postfix n'est là que pour dépanner, et pour transférer mes mails super important via mon smartphone.</p>
<h3> Faire mijoter à feu doux ! </h3>
<p>Placer ce crontab pour l'utilisateur qui va devoir récupérer les mails.</p>
<p><code><br />
crontab -e<br />
*/10 * * * * /usr/bin/fetchmail > /dev/null 2>&#038;1<br />
</code></p>
<p>Les mails vont donc être récupérés toutes les dix minutes, et directement déposés dans le MDA ( Mail Délivery Agent).<br />
Le MDA de ma configuration fetchmail étant dovecot, et dovecot lisant tous mes filtres, cela devrait bien se passer <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><!--nextpage--><!--pagetitle:Exemple de présentation--></p>
<h3> Présentation sur un joli plat du résultat. </h3>

<a href='http://geekfault.org/2010/04/09/filtrer-ses-mails-un-cauchemard/mailfilter_indesirable/' title='MailFilter_Indésirable'><img width="150" height="150" src="http://geekfault.org/wp-content/uploads/2010/04/MailFilter_Indésirable-150x150.png" class="attachment-thumbnail" alt="MailFilter_Indésirable" title="MailFilter_Indésirable" /></a>
<a href='http://geekfault.org/2010/04/09/filtrer-ses-mails-un-cauchemard/spam_roundcube/' title='Spam_Roundcube'><img width="150" height="150" src="http://geekfault.org/wp-content/uploads/2010/04/Spam_Roundcube-150x150.png" class="attachment-thumbnail" alt="Spam_Roundcube" title="Spam_Roundcube" /></a>
<a href='http://geekfault.org/2010/04/09/filtrer-ses-mails-un-cauchemard/ultimate_mailfilter_roundcube-3/' title='Ultimate_Mailfilter_Roundcube'><img width="150" height="150" src="http://geekfault.org/wp-content/uploads/2010/04/Ultimate_Mailfilter_Roundcube2-150x150.png" class="attachment-thumbnail" alt="Ultimate_Mailfilter_Roundcube" title="Ultimate_Mailfilter_Roundcube" /></a>
<a href='http://geekfault.org/2010/04/09/filtrer-ses-mails-un-cauchemard/filtre_roundcube/' title='Filtre_Roundcube'><img width="150" height="150" src="http://geekfault.org/wp-content/uploads/2010/04/Filtre_Roundcube-150x150.png" class="attachment-thumbnail" alt="Filtre_Roundcube" title="Filtre_Roundcube" /></a>
<a href='http://geekfault.org/2010/04/09/filtrer-ses-mails-un-cauchemard/casserole3/' title='casserole3'><img width="150" height="150" src="http://geekfault.org/wp-content/uploads/2010/04/casserole3-150x150.jpg" class="attachment-thumbnail" alt="casserole3" title="casserole3" /></a>
<a href='http://geekfault.org/2010/04/09/filtrer-ses-mails-un-cauchemard/mutt-screenshot/' title='mutt-screenshot'><img width="150" height="150" src="http://geekfault.org/wp-content/uploads/2010/04/mutt-screenshot-150x150.png" class="attachment-thumbnail" alt="mutt-screenshot" title="mutt-screenshot" /></a>
<a href='http://geekfault.org/2010/04/09/filtrer-ses-mails-un-cauchemard/filtermail-2/' title='filtermail'><img width="150" height="150" src="http://geekfault.org/wp-content/uploads/2010/04/filtermail1-150x150.jpg" class="attachment-thumbnail" alt="filtermail" title="filtermail" /></a>

<p><!--nextpage--><!--pagetitle:Finition et garnitures--></p>
<h3> La configuration de dovecot aka "Le déversoir"</h3>
<p><code><br />
base_dir = /var/run/dovecot/<br />
protocols = imap managesieve ## Je suppose que vous n'avez pas besoin de pop pour votre interface centralisé.<br />
shutdown_clients = yes<br />
disable_plaintext_auth = no<br />
ssl = no       ## ce howto ne couvre pas la sécurité de l'imap</p>
<p># Si vous désirez utiliser seulement TLS<br />
## Pour le moment ce HowTo n'a pas été pensé pour le SSL, mais on peut très facilement l'ajouter.<br />
## disable_plaintext_auth = yes<br />
## ssl = yes<br />
## ssl_cert_file = /var/qmail/control/servercert.pem<br />
## ssl_key_file = /var/qmail/control/servercert.pem</p>
<p>login_dir = /var/run/dovecot/login<br />
login_process_per_connection = yes<br />
login_greeting = Imap ready.<br />
mail_debug = no<br />
mail_uid = 1000<br />
mail_gid = 100<br />
first_valid_uid = 1000 ### Premier utilisateur système<br />
last_valid_uid = 1001 ### Vous pouvez mettre en place cet imap pour plus de deux utilisateurs en augmentant cette directive.<br />
first_valid_gid = 100<br />
last_valid_gid = 1000<br />
mail_location = maildir:~/.maildir ### Expliqué dans le postulat de l'introduction</p>
<p>## on active le deliver local</p>
<p>protocol lda {<br />
  postmaster_address = bragon[at_at_at]bragon[dot_point_dot]info ### Mettre ici une adresse mail valide !!!<br />
  # remember to give proper permissions for these files as well<br />
  log_path = /var/log/dovecot-deliver-errors.log<br />
  info_log_path = /var/log/dovecot-deliver.log<br />
  #auth_socket_path = /var/run/dovecot/auth-master<br />
mail_plugins = sieve<br />
}</p>
<p>## On log correctement<br />
##<br />
## Logging<br />
##<br />
# Log file to use for error messages, instead of sending them to syslog.<br />
# /dev/stderr can be used to log into stderr.<br />
log_path = /var/log/dovecot/error</p>
<p># Log file to use for informational and debug messages.<br />
# Default is the same as log_path.<br />
info_log_path = /var/log/dovecot/info</p>
<p>protocol imap {<br />
         listen = 81.93.247.***:143 ### Mettre l'ip de la machine ici<br />
        login_executable = /usr/libexec/dovecot/imap-login<br />
        mail_max_userip_connections = 10<br />
        mail_plugin_dir = /usr/lib/dovecot/imap<br />
        mail_plugins = quota imap_quota<br />
}</p>
<p>plugin {<br />
        quota = maildir:User quota<br />
          # Used by both the Sieve plugin and the ManageSieve protocol<br />
          sieve=~/.dovecot.sieve ## Répertoire ou serons stockés les regles de filtrage de dovecot.<br />
          sieve_dir=~/sieve         ## Répertoire ou serons stockés les regles de filtrage de l'utilisateur  (elles sont lu par dovecot)        </p>
<p>}</p>
<p>protocol managesieve {<br />
  # Specify an alternative address:port the daemon must listen on<br />
  # (default: *:2000)<br />
listen = 81.93.247.***:2000 ## ip de votre box à mettre ici</p>
<p>  managesieve_logout_format = bytes ( in=%i : out=%o )<br />
}</p>
<p>plugin {<br />
  # Used by both the Sieve plugin and the ManageSieve protocol<br />
  sieve=~/.dovecot.sieve<br />
  sieve_dir=~/sieve<br />
}</p>
<p>auth_verbose = yes<br />
auth_debug = yes</p>
<p>auth default {                  ### On se log ici directement à la base d'utilisateur unix du système courant.<br />
        mechanisms = plain login</p>
<p>passdb pam { args = "*"<br />
}</p>
<p>userdb passwd { args = blocking=yes </p>
<p>}</p>
<p>}</p>
<p></code></p>
<h3> Configuration de .muttrc aka le rouleau à patisserie </h3>
<p>Placer ce fichier .muttrc à la racine du répertoire utilisateur : </p>
<p><code></p>
<p>### pour voir les sous dossiers</p>
<p>set spoolfile="/home/bragon/.maildir/"<br />
set folder="/home/bragon/.maildir/"<br />
set mask="!^\\.[^.]"<br />
set record="+.Sent"<br />
set postponed="+.Drafts"</p>
<p>mailboxes ! + `\<br />
for file in /home/bragon/.maildir/.*; do \<br />
  box=$(basename "$file"); \<br />
  if [ ! "$box" = '.' -a ! "$box" = '..' -a ! "$box" = '.customflags' \<br />
      -a ! "$box" = '.subscriptions' ]; then \<br />
    echo -n "\"+$box\" "; \<br />
  fi; \<br />
done`</p>
<p>### activer la sidebar de mutt<br />
macro index c "<change-folder>?<toggle-mailboxes>" "open a different folder"<br />
macro pager c "<change-folder>?<toggle-mailboxes>" "open a different folder"</p>
<p># Sidebar<br />
set sidebar_visible=yes<br />
set sidebar_width=50<br />
color sidebar_new yellow default</p>
<p># ctrl-n, ctrl-p to select next, prev folder<br />
# ctrl-o to open selected folder<br />
bind index \Cp sidebar-prev<br />
bind index \Cn sidebar-next<br />
bind index \Cb sidebar-open<br />
bind pager \Cp sidebar-prev<br />
bind pager \Cn sidebar-next<br />
bind pager \Cb sidebar-open</p>
<p>## mon editeur est emacs et je t'emmerde !!!<br />
set editor="emacs -nw"</p>
<p></code></p>
<h3> Configuration de postfix aka "Le renvoyeur" </h3>
<p><code><br />
queue_directory = /var/spool/postfix<br />
command_directory = /usr/sbin<br />
daemon_directory = //usr/lib/postfix<br />
data_directory = /var/lib/postfix<br />
mail_owner = postfix<br />
myhostname = tobold.mondomaine.info<br />
mydomain = tobold.mondomaine.info<br />
myorigin = $myhostname</p>
<p>unknown_local_recipient_reject_code = 550</p>
<p>debug_peer_level = 2</p>
<p>debugger_command =<br />
         PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin<br />
         ddd $daemon_directory/$process_name $process_id &#038; sleep 5</p>
<p>sendmail_path = /usr/sbin/sendmail</p>
<p>newaliases_path = /usr/bin/newaliases</p>
<p>mailq_path = /usr/bin/mailq</p>
<p>setgid_group = postdrop</p>
<p>html_directory = /usr/share/doc/postfix-2.6.5/html</p>
<p>manpage_directory = /usr/share/man</p>
<p>sample_directory = /etc/postfix</p>
<p>readme_directory = /usr/share/doc/postfix-2.6.5/readme<br />
home_mailbox = .maildir/</p>
<p></code></p>
<h3> Configuration SpamAssassin/MySQL </h3>
<p>* Afin de générer un bon local.cf utilisez : <a href="http://www.yrex.com/spam/spamconfig.php">http://www.yrex.com/spam/spamconfig.php</a></p>
<p>* Insérer dans une base MySQL<br />
<code><br />
CREATE TABLE userpref (<br />
username varchar(100) NOT NULL default '',<br />
preference varchar(50) NOT NULL default '',<br />
value varchar(100) NOT NULL default '',<br />
prefid int(11) NOT NULL auto_increment,<br />
PRIMARY KEY (prefid),<br />
KEY username (username)<br />
);<br />
  CREATE TABLE bayes_expire (<br />
          id                    int(11)         NOT NULL default '0',<br />
          runtime               int(11)         NOT NULL default '0',<br />
          KEY bayes_expire_idx1 (id)<br />
          ) TYPE=MyISAM;</p>
<p>      CREATE TABLE bayes_global_vars (<br />
          variable              varchar(30)     NOT NULL default '',<br />
          value                 varchar(200)    NOT NULL default '',<br />
          PRIMARY KEY           (variable)<br />
          ) TYPE=MyISAM;</p>
<p>      INSERT INTO bayes_global_vars VALUES ('VERSION','3');</p>
<p>      CREATE TABLE bayes_seen (<br />
          id                    int(11)         NOT NULL default '0',<br />
          msgid                 varchar(200) binary NOT NULL default '',<br />
          flag                  char(1)         NOT NULL default '',<br />
          PRIMARY KEY           (id,msgid)<br />
          ) TYPE=MyISAM;</p>
<p>      CREATE TABLE bayes_token (<br />
          id                    int(11)         NOT NULL default '0',<br />
          token                 char(5)         NOT NULL default '',<br />
          spam_count            int(11)         NOT NULL default '0',<br />
          ham_count             int(11)         NOT NULL default '0',<br />
          atime                 int(11)         NOT NULL default '0',<br />
          PRIMARY KEY           (id, token),<br />
          INDEX (id, atime)<br />
          ) TYPE=MyISAM;</p>
<p>      CREATE TABLE bayes_vars (<br />
          id                    int(11)         NOT NULL AUTO_INCREMENT,<br />
          username              varchar(200)    NOT NULL default '',<br />
          spam_count            int(11)         NOT NULL default '0',<br />
          ham_count             int(11)         NOT NULL default '0',<br />
          token_count           int(11)         NOT NULL default '0',<br />
          last_expire           int(11)         NOT NULL default '0',<br />
          last_atime_delta      int(11)         NOT NULL default '0',<br />
          last_expire_reduce    int(11)         NOT NULL default '0',<br />
          oldest_token_age      int(11)         NOT NULL default '2147483647',<br />
          newest_token_age      int(11)         NOT NULL default '0',<br />
          PRIMARY KEY           (id),<br />
          UNIQUE bayes_vars_idx1 (username)<br />
          ) TYPE=MyISAM;</p>
<p>      CREATE TABLE awl (<br />
          username              varchar(100)    NOT NULL default '',<br />
          email                 varchar(200)    NOT NULL default '',<br />
          ip                    varchar(10)     NOT NULL default '',<br />
          count                 int(11)         default '0',<br />
          totscore              float           default '0',<br />
          PRIMARY KEY           (username,email,ip)<br />
          ) TYPE=MyISAM;</p>
<p></code></p>
<p>* secret.cf</p>
<p><code></p>
<p>##(Tell Spamassassin to use MySQL for bayes data<br />
bayes_store_module              Mail::SpamAssassin::BayesStore::SQL<br />
bayes_sql_dsn                   DBI:mysql:sa:localhost:3306<br />
bayes_sql_username              sa<br />
bayes_sql_password              somepwd</p>
<p>##(Tell Spamassassin to use MySQL for AWL data<br />
auto_whitelist_factory          Mail::SpamAssassin::SQLBasedAddrList<br />
user_awl_dsn                    DBI:mysql:sa:localhost:3306<br />
user_awl_sql_username           sa<br />
user_awl_sql_password           somepwd</p>
<p></code></p>
<p>* local.cf</p>
<p><code><br />
# SpamAssassin config file for version 3.x<br />
# NOTE: NOT COMPATIBLE WITH VERSIONS 2.5 or 2.6<br />
# See http://www.yrex.com/spam/spamconfig25.php for earlier versions<br />
# Generated by http://www.yrex.com/spam/spamconfig.php (version 1.50)</p>
<p># How many hits before a message is considered spam.<br />
required_score           5.0</p>
<p># Change the subject of suspected spam<br />
rewrite_header subject         [SPAM]</p>
<p># Encapsulate spam in an attachment (0=no, 1=yes, 2=safe)<br />
report_safe             1</p>
<p># Enable the Bayes system<br />
use_bayes               1</p>
<p># Enable Bayes auto-learning<br />
bayes_auto_learn              1</p>
<p># Enable or disable network checks<br />
skip_rbl_checks         0<br />
use_razor2              1<br />
#use_dcc                 1<br />
use_pyzor               1</p>
<p># Mail using languages used in these country codes will not be marked<br />
# as being possibly spam in a foreign language.<br />
# - english french<br />
#ok_languages            en fr </p>
<p># Mail using locales used in these country codes will not be marked<br />
# as being possibly spam in a foreign language.<br />
#ok_locales              en fr<br />
</code></p>
<h3> Ajouter les clous de girofles dans RoundCube </h3>
<p><a href="http://www.tehinterweb.co.uk/roundcube/#pisieverules">http://www.tehinterweb.co.uk/roundcube/#pisieverules</a></p>
<p>Il vous faut installer les plugins ManageSieve et ReportasJunk<br />
Suivez la documentation officielle, elle s'en sortira mieux que moi afin de vous expliquer tout cela.</p>
<ul>
<li><a href=http://www.tehinterweb.co.uk/roundcube/plugins/sieverules.README.txt>http://www.tehinterweb.co.uk/roundcube/plugins/sieverules.README.txt</a></li>
<li><a href=http://www.tehinterweb.co.uk/roundcube/plugins/sauserprefs.README.txt>http://www.tehinterweb.co.uk/roundcube/plugins/sauserprefs.README.txt</a></li>
<li><a href=http://www.tehinterweb.co.uk/roundcube/plugins/markasjunk2.README.txt>http://www.tehinterweb.co.uk/roundcube/plugins/markasjunk2.README.txt</a></li>
</ul>
<h3> Laissez refroidir </h3>
<p><strong>Voilà c'est prêt  !</strong></p>
<p>Awesome non ?</p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/04/09/maildir-mbox-la-migration/' rel='bookmark' title='Maildir mbox &#8211; La migration'>Maildir mbox &#8211; La migration</a></li>
<li><a href='http://geekfault.org/2009/12/31/construire-sa-gateway-from-scratch/' rel='bookmark' title='EeeGW : Créer soi-même une passerelle réseau'>EeeGW : Créer soi-même une passerelle réseau</a></li>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2010/04/09/filtrer-ses-mails-un-cauchemard/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Maildir mbox &#8211; La migration</title>
		<link>http://geekfault.org/2010/04/09/maildir-mbox-la-migration/</link>
		<comments>http://geekfault.org/2010/04/09/maildir-mbox-la-migration/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 17:16:18 +0000</pubDate>
		<dc:creator>pistache</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[Non classé]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[maildir]]></category>
		<category><![CDATA[mbox]]></category>
		<category><![CDATA[pam_mail.so]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=2754</guid>
		<description><![CDATA[Traditionellement, les serveurs UNIX utilisent mbox pour stocker les mails. Pour mbox, chaque dossier de votre boîte mail (Reçu, Envoyés, Archive, Corbeille, etc) est representé par un fichier, ou tout les mails sont enregistrés à la suite, séparés par une ligne vide. Ce format, très simple à utiliser, pose de nombreux problèmes. Premièrement, on ne [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/04/09/filtrer-ses-mails-un-cauchemard/' rel='bookmark' title='Filtrer ses mails ! Un cauchemard !'>Filtrer ses mails ! Un cauchemard !</a></li>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
<li><a href='http://geekfault.org/2009/05/19/migration-de-geekfault/' rel='bookmark' title='Migration de Geekfault'>Migration de Geekfault</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/wp-content/uploads/2010/04/illustration-maildir.jpg" title="illustration-maildir" rel="lightbox.2754"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2010/04/illustration-maildir-300x270.jpg" alt="" title="illustration-maildir" width="300" height="270" class="alignleft size-medium wp-image-3040" /></a>
<p>Traditionellement, les serveurs UNIX utilisent <a href="http://fr.wikipedia.org/wiki/Mbox">mbox</a> pour stocker les mails. Pour mbox, chaque dossier de votre boîte mail (Reçu, Envoyés, Archive, Corbeille, etc) est representé par un fichier, ou tout les mails sont enregistrés à la suite, séparés par une ligne vide.</p>
</p>
<p>Ce format, très simple à utiliser, pose de nombreux problèmes. Premièrement, on ne peut pas faire d&#8217;accès parallèles, même sur des mails différents, puisque le fichier est le même (problème de verrou). Deuxièment, les serveurs POP/IMAP (comme Dovecot) ont souvent un support limité de mbox. Dovecot est obligé de placer un mail &#8220;interne&#8221; dans la boîte, pour garder l&#8217;arborescence et l&#8217;organisation des dossiers. Courier ne supporte pas mbox.</p>
<p>L&#8217;avantage principal de mbox, c&#8217;est le fait qu&#8217;il soit très répandu. Il est supporté par tout les MUA (mailutils/mail, bsd-mailx, mutt, emacs, Kmail, thunderbird, evolution). Mais les problèmes récurrents qu&#8217;il pose ont poussé <a href="http://en.wikipedia.org/wiki/Daniel_J._Bernstein">le principal développeur de qmail</a> a créer un nouveau format : <a href="http://fr.wikipedia.org/wiki/Maildir">Maildir</a>.</p>
<p><!--more--></p>
<h3>Maildir</h3>
<p>Avec Maildir, chaque mail est <b>un</b> fichier, et chaque dossier de la boîte mail, un répertoire. Attention, c&#8217;est un peu plus compliqué que ça. Les mails ne sont pas directement enregistrés dans <b>boîte/mail</b> :</p>
<ul>
<li>Le <a href="http://fr.wikipedia.org/wiki/Mail_Delivery_Agent">MDA</a> enregistre le mail dans <b>boîte/tmp/unique</b> (&#8220;unique&#8221; est un nom de fichier unique généré a partir de données pseudo-aléatoires)</li>
<li>Une fois que le mail est écrit, le MDA le déplace dans <b>boîte/new/unique</b></li>
<li>Le <a href="http://fr.wikipedia.org/wiki/Mail_User_Agent">MUA</a> le déplace dans <b>boîte/cur/unique</b> une fois qu&#8217;il voit qu&#8217;un nouveau message est arrivé dans <b>boîte/new/</b></li>
</ul>
<p><b>Pourquoi ? </b>Ce comportement est utilisé pour éviter que le MUA voit un mail incomplet (car le MDA est encore en train de l&#8217;écrire), ce qui peut arriver si la machine est surchargée, si le Maildir est sur un serveur distant (NFS,FTP), voire même si le mail est gigantesque.</p>
<h3>Maildir et procmail</h3>
<p>Le but de cet article n&#8217;est pas d&#8217;expliquer comment configurer un MDA pour qu&#8217;il enregistre les mails en Maildir,  mais malgré tout je fais une petite encartade pour les gens qui utilisent procmail. Le code suivant dans /etc/procmailrc permet de dire à procmail de mettre <b>par défaut</b> (cela peut donc être supplanté par une directive contraire dans le ~/.procmailrc) :<br />
<code>DEFAULT=$HOME/Maildir/</code><br />
Aussi, si vous n&#8217;utilisez pas encore procmail je vous conseille d&#8217;y migrer rapidement :</p>
<ul>
<li>Plus besoin de toucher à la configuration du MTA pour changer les méthodes de livraison des mails</li>
<li>Les utilisateurs peuvent écrire leurs propres règles pour leurs boîtes mails (pour avoir des boîtes séparées pour certains mails, par exemple)</li>
<li>Si vous changez de MTA vous pouvez toujours garder la même configuration, à condition de dire à votre MTA d&#8217;utiliser procmail</li>
</ul>
<h3>Configuration de mutt</h3>
<p>mutt gère très bien les Maildirs, mais il faut le configurer. Dans le .muttrc, rajoutez :<br />
<code><br />
# pour dire à mutt de que mbox est un Maildir<br />
set mbox_type=Maildir<br />
# pour dire à mutt que les chemins relatifs (avec +) sont dans "~/Maildir/"<br />
set folder="~/Maildir/"<br />
# pour dire à mutt que les mails arrivent dans Maildir/<br />
set spoolfile="~/Maildir/"<br />
# les mails archivés (pas nouveau) seront envoyés dans +Mailbox<br />
# (+ est remplacé par la variable folder).<br />
set mbox="+Mailbox"</p>
<p># remplacez par votre propre choix (ce n'est pas un tutorial de la configuration de mutt)<br />
# on indique à mutt d'envoyer les mails de ~/Maildir/ dans la boîte indiquée par la variable "mbox"<br />
set move="ask-yes"</p>
<p># ce code montre la puissance de mutt (inclure des scripts shell dans sa configuration)<br />
# ouvrir tous les dossiers qu'il trouve dans ~/Maildir/<br />
mailboxes ! + `\<br />
for file in ~/Maildir/.*; do \<br />
  box=$(basename "$file"); \<br />
  if [ ! "$box" = '.' -a ! "$box" = '..' -a ! "$box" = '.customflags' \<br />
      -a ! "$box" = '.subscriptions' ]; then \<br />
    echo -n "\"+$box\" "; \<br />
  fi; \<br />
done`<br />
</code><br />
On note qu&#8217;il faut créer les boîtes mails dans ~/Maildir/, ainsi que le Maildir en lui-même (même si procmail peut le créer tout seul, et que si vous avez converti vos mbox il existe déjà). On va créer la boîtes &#8220;Mailbox&#8221; (utilisé par mutt avec <i>set mbox=&#8221;+Mailbox&#8221;</i>).<br />
<code><br />
cd # on se place dans $HOME<br />
mkdir Maildir # on crée Maildir (ça sera peut-être déjà fait)<br />
cd Maildir<br />
mkdir cur new tmp # on crée une arborescence Maildir<br />
mkdir .Mailbox # on crée une nouvelle boite<br />
cd .Mailbox<br />
mkdir cur new tmp<br />
</code><br />
On note que :</p>
<ul>
<li>La boîte principale, ou les mails entrants sont enregistrés par le MDA, est à la racine du Maildir</li>
<li>Les sous-dossiers de la boîte, <b>commencent tous par un .</b></li>
</ul>
<p>Vous pouvez maintenant démarrer mutt, et exploiter votre mbox (pour naviguer dans les boîtes, utilisez &#8220;y&#8221;)
</p>
<h3>Migrer des boîtes mbox en Maildir</h3>
<p>Pour migrer les mbox en Maildir, le script <a href="http://perfectmaildir.home-dn.net/">perfect_maildir.pl</a> est parfait, et son usage est simple :<br />
<code>./perfect_maildir.pl path_to_Maildir/ < mbox</code></p>
<h3>pam_mail.so et You have new mail</h3>
<p>Vous avez peut-être déjà remarqué que quand vous vous ouvrez un shell, vous avez un beau message "You have new mail" qui indique de nouveaux mail dans /var/mail/$USER. Cet avertissement est geré par pam_mail.so, un module de PAM qui permet de faire ça. Si on utilise Maildir il est intéressant de dire à pam_mail.so d'aller vérifier les nouveaux mails dans le Maildir. Cette configuration se fait dans <b>/etc/pam.d/</b> sous Debian et Gentoo. Tout d'abord éditer le fichier <b>login</b>, et trouver cette ligne :<br />
<code><br />
session    optional   pam_mail.so standard<br />
</code><br />
Remplacer par :<br />
<code><br />
session optional pam_mail.so standard dir=~/Maildir<br />
</code><br />
Je recommande d'effectuer aussi la manipulation pour le fichier "ssh".</p>
<p>Normalement PAM devra modifier la variable d'environnement MAIL à Maildir/, si par hasard ce comportement ne marche pas (en fonction de la configuration de PAM) il y a toujours moyen d'ajouter<br />
<code>MAIL=Maildir/</code><br />
dans /etc/environment.</p>
<h3>Faire fonctionner la commande "mail"</h3>
<p>La commande mail est le moyen le plus simple de lire ses mails sous unix. Vous constaterez probablement que votre commande mail ne marche plus (même avec MAIL=Maildir/), car elle ne supporte pas Maildir. Mais il y a plusieurs versions de cette commande, la plus répandue étant celle de bsd (bsd-mailx avec Debian). Je vous conseille d'installer <a href="http://heirloom.sourceforge.net/mailx.html">une autre version</a>, appellée "heirloom-mailx" (sous Debian), voire "nail", qui supporte très bien les Maildir.<br />
<img src="http://pistaches.net/~pistache/stuff/maildir.png"/></p>
<h3>Liens relatifs</h3>
<ul>
<li><a href="http://wiki.dovecot.org/MailLocation/Maildir">Configurer Maildir et Dovecot</a></li>
<li><a href="http://linux.die.net/man/8/pam_mail">man pam_mail</a></li>
<li><a href="http://cr.yp.to/proto/maildir.html">la première spécification de Maildir</a> (a changé depuis)</li>
</ul>
<p>Ironiquement j'ai trouvé beaucoup de mes renseignements sur <a href="http://bugs.debian.org/">bugs.debian.org</a> :</p>
<ul>
<li><a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=421010">libpam-modules: pam_mail doesn't set MAIL enviroment variable when .hushlogin exists.</a></li>
<li><a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=109279">login.defs: QMAIL_DIR problems</a></li>
</ul>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/04/09/filtrer-ses-mails-un-cauchemard/' rel='bookmark' title='Filtrer ses mails ! Un cauchemard !'>Filtrer ses mails ! Un cauchemard !</a></li>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
<li><a href='http://geekfault.org/2009/05/19/migration-de-geekfault/' rel='bookmark' title='Migration de Geekfault'>Migration de Geekfault</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2010/04/09/maildir-mbox-la-migration/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OpenVZ : virtualisation légère, performante et amusante</title>
		<link>http://geekfault.org/2010/03/09/openvz-virtualisation-legere-performante-et-amusante/</link>
		<comments>http://geekfault.org/2010/03/09/openvz-virtualisation-legere-performante-et-amusante/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 14:11:02 +0000</pubDate>
		<dc:creator>Lord</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[openvz]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[virtualisation]]></category>
		<category><![CDATA[vps]]></category>
		<category><![CDATA[vserver]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=2265</guid>
		<description><![CDATA[OpenVZ est un système de virtualisation particulier. Il permet de faire tourner de multiples machines virtuelles partageant un seul kernel patché spécialement pour l&#8217;occasion. Cette techniques est donc limités à des machines (hôte ou invité) tournant sous linux. En contrepartie les performances sont particulièrement élevés. Il est également très aisé de modifier les particularités physiques [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2011/10/14/lancer-votre-dual-booting-windows-dans-une-virtualbox/' rel='bookmark' title='Lancer votre dual-booting Windows dans une VirtualBox'>Lancer votre dual-booting Windows dans une VirtualBox</a></li>
<li><a href='http://geekfault.org/2010/04/09/maildir-mbox-la-migration/' rel='bookmark' title='Maildir mbox &#8211; La migration'>Maildir mbox &#8211; La migration</a></li>
<li><a href='http://geekfault.org/2009/08/14/faille-critique-dans-tous-les-noyaux-linux/' rel='bookmark' title='Faille critique dans tous les noyaux Linux'>Faille critique dans tous les noyaux Linux</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/2010/03/09/openvz-virtualisation-legere-performante-et-amusante/openvz-logo-2/" rel="attachment wp-att-2425"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2010/03/OpenVZ-logo1-300x76.png" alt="" title="OpenVZ-logo" width="300" height="76" class="alignleft size-medium wp-image-2425" /></a></p>
<p>
OpenVZ est un système de virtualisation particulier. Il permet de faire tourner de multiples machines virtuelles partageant un seul kernel patché spécialement pour l&#8217;occasion. Cette techniques est donc limités à des machines (hôte ou invité) tournant sous linux. En contrepartie les performances sont particulièrement élevés. Il est également très aisé de modifier les particularités physiques des machines virtuelles sans les redémarrer. Cette technique est souvent employée chez les hébergeurs pour les offres « VPS ».</p>
<p>En pratique, c&#8217;est utile à des fins de sécurité. On essaie de mettre un seul serveur par VPS (serveur web sur un VPS, MySQL sur un autre, mail encore sur un autre &#8230;). Si l&#8217;un des serveurs possède une faille de sécurité, les autres serveurs ne pourront alors pas être impactés. Il y a également la facilité à backuper une machine virtuelle et donc au besoin de la dupliquer ou la déplacer. Cependant, on ne peut pas faire de migration à chaud comme certains de ses concurrents.</p>
<p>La création d&#8217;une machine ne prend guère plus d&#8217;une minute sur une machine correcte, ce qui permet de s&#8217;en servir comme d&#8217;un moyen de tester des logiciels sans encombrer votre distro. Qui plus est, le lancement d&#8217;une machine est quasi instantané, ce qui peut parfois sauver des manchots…
</p>
<p><!--more--></p>
<h2>Installation de la bête</h2>
<h3>Le kernel</h3>
<p>Cette partie dépend pas mal de la distro. J&#8217;aborderai ici la méthode pour Gentoo, à vous de l&#8217;adapter à votre distro.</p>
<p>On commence par installer les source du kernel patché qu&#8217;il faudra compiler :<br />
<code><br />
USE="symlink" emerge -av openvz-sources<br />
</code></p>
<p>Il faut ensuite adapter la config du kernel :<br />
Rendez-vous dans ///usr/src/linux//</p>
<p>Ensuite, lancez:<br />
<code><br />
make menuconfig<br />
</code><br />
Vérifiez que tout en haut il s&#8217;affiche bien le nom du kernel openvz : <em>.config &#8211; Linux Kernel v2.6.27-openvz-briullov.1-r2 Configuration</em></p>
<p>Dans <em>OpenVZ</em> cochez tout (personnellement je préfère mettre en module le plus possible car je ne l&#8217;utilise pas tout le temps).<br />
Puis allez dans <em>Filesystems</em> là vous aurez <em>VPS Filesystems</em> et <em>Virtuozzo Disk Quota support</em>, à ajouter également.</p>
<p>Maintenant enregistrez la config puis compilez votre tout nouveau kernel patché avant de faire une pause IRC :<br />
<code><br />
make<br />
make modules<br />
make modules install<br />
</code></p>
<p>Mettez votre kernel au chaud et préparez le reboot :<br />
<code><br />
cp /usr/src/linux/arch/x86/boot/bzImage /boot/kernel_vz<br />
</code></p>
<p>Ajoutez ces lignes en adaptant à votre cas dans <em>/boot/grub/menu.lst</em> :<br />
<code><br />
title=Gentoo OpenVZ<br />
root (hd0,0)<br />
kernel /boot/kernel_vz root=/dev/sde1<br />
</code></p>
<p>Si vous avez suivit ces instructions sans virer ce qu&#8217;il y avait avant, vous ne devriez pas foirer votre machine : l&#8217;ancien kernel est toujours présent et le grub possède juste des lignes en plus. Donc maintenant faut tester avec un reboot en choisissant la nouvelle entrée du grub.</p>
<p>Si vous parvenez à reboot alors vous venez de faire le plus dur !<br />
Un petit <em>uname -r</em> peut confirmer que vous tournez sur le noyau modifié.<br />
Passons dès maintenant à la suite.</p>
<h3>Les outils</h3>
<p>OpenVZ se pilote avec la commande <em>vzctl</em> donc installons la :<br />
<code><br />
emerge -av vzctl<br />
</code><br />
Maintenant vous avez le kernel, les outils, il ne manque plus que les templates qui sont en faites les distros que vous pourrez monter en quelques secondes.<br />
Vous pouvez les créer vous même mais généralement vous trouverez chaussure à votre pied sur le site officiel qui propose déjà une petite collection de templates pré-créés.</p>
<p>http://download.openvz.org/template/precreated/</p>
<p>Vous devrez les télécharger dans le dossier <em>/vz/template/cache</em>.</p>
<h2>Prise en main du monstre</h2>
<p>Ça y est : c&#8217;est tout bien installé et ça ne demande plus qu&#8217;à tourner.<br />
<code><br />
/etc/init.d/vz start<br />
</code><br />
Le script de démarrage fonctionne à merveille puisqu&#8217;il charge bien les modules (et les décharge en cas d&#8217;arrêt).<br />
Pour faire en sorte de le lancer au démarrage de la machine :<br />
<code><br />
rc-update add vz default<br />
</code></p>
<h3>Création d&#8217;une machine</h3>
<p>OpenVZ a pour objectif de faire tourner de nombreuses machines virtuelles simultanément. Elles sont numérotées (en commençant à 101). Ce numéro se nomme <em>CTID</em>. Imaginons que vous ayez un template <em>debian-5.0-x86</em>:<br />
<code><br />
vzctl create $CTID$ --ostemplate debian-5.0-x86<br />
</code><br />
Pendant quelques secondes ça mouline et vous pond une ptite Lenny des familles.</p>
<p>Configurons la pour qu&#8217;elle puisse rejoindre notre réseau :<br />
<code><br />
vzctl set $CTID$ --hostname lennounette --ipadd a.b.c.d --nameserver a.b.c.d --diskspace 2G:3G --cpulimit 25 --save<br />
</code><br />
Là je lui attribut un petit nom, une IP, un DNS, un quota de disque dur ainsi qu&#8217;un quota d&#8217;utilisation du processeur.</p>
<p>Bon c&#8217;est bien joli mais maintenant faut la faire tourner histoire de voir ce qu&#8217;on peut en tirer :<br />
<code><br />
vzctl start $CTID$<br />
</code><br />
Et bha voilà elle est là … « Up &#038; Running ».</p>
<h3>Entrer et interagir avec une machine</h3>
<p>Pour aller utiliser une machine rien de plus simple :<br />
<code><br />
vzctl enter $CTID$<br />
</code><br />
Sachez également que les templates pré-créés sur le site officiel possèdent toute un serveur SSH qui tourne afin de vous faciliter la tâche.</p>
<p>Il est possible d&#8217;exécuter des commandes dans une machine sans y rentrer :<br />
<code><br />
vzctl exec $CTID$ rm -rf /<br />
</code></p>
<h3>Configurer un peu plus la bestiole</h3>
<p>Il est possible de modifier la machine invitée pendant qu&#8217;elle tourne afin de lui ajouter de la ram, augmenter son quota d&#8217;espace disque ou bien restreindre son utilisation max de cpu. Pour cela vous devrez faire appel encore une fois à <em>vzctl</em>.</p>
<h4>Modifier le bridage CPU</h4>
<p>Il est donc possible de brider le pourcentage de processeur qu&#8217;une machine virtuelle peut utiliser afin d&#8217;éviter qu&#8217;une machine se goinfre et lèse le reste. Pour cela :<br />
<code><br />
vzctl set $CTID$ --cpulimit 10 --save<br />
</code><br />
En sachant que chaque processeur représente 100%, si vous possédez une machine quadcore, vous pouvez jouer de 0 à 400%.<br />
Vous constaterez que la modification est prise en compte immédiatement.</p>
<h4>Modifier le quota de disque dur</h4>
<p>Attribuons plus d&#8217;espace à une machine :<br />
<code><br />
vzctl set $CTID$ --disklimit 10G:12G --save<br />
</code></p>
<h4>Modifier la quantité de RAM</h4>
<p>C&#8217;est la commande la plus complexe :<br />
<code><br />
vzctl set $CTID$ --vmguarpages $((512 * 512)) --save<br />
vzctl set $CTID$ --privvmpages $((512 * 1024)) --save<br />
</code><br />
Là on passe à 512 Mo de ram avec possibilité de monter en pic à 1024.<br />
<code><br />
vzctl set $CTID$ --vmguarpages $((256 * 256)) --save<br />
vzctl set $CTID$ --privvmpages $((256 * 512)) --save<br />
</code><br />
Là on passe à 256 avec possibilité de monter en pic à 512.<br />
Vous voyez le principe …</p>
<h4>Les paramètres réseaux</h4>
<p><code><br />
vctl --set $CTID$ --ipadd a.b.c.d --hostname monhost --nameserver b.c.d.e --searchdomain mon_domaine --mac 00:11:22:33:44:55 --save<br />
</code><br />
Le nom des paramètres est assez explicite.</p>
<h4>Créer ou modifier le mot de passe d&#8217;un utilisateur</h4>
<p>Il est possible de modifier le mot de passe d&#8217;un utilisateur (pratique en cas de boulette pour rester propre). Si l&#8217;utilisateur n&#8217;existe pas, il sera créé dans la foulée.<br />
<code><br />
vzctl set $CTID$ --userpasswd login:motdepasse<br />
</code></p>
<h4>Tout le reste</h4>
<p><code>man vzctl</code></p>
<h4>Lancer une machine au boot</h4>
<p>Il faut avoir lancé OpenVZ au boot. Il faut ensuite :<br />
<code><br />
vzctl set $CTID$ --onboot yes --save<br />
</code></p>
<h4>Configurer un peu tout</h4>
<p>Il est possible et plus pratique de modifier la configuration directement dans le fichier de conf de la machine dans le fichier <em>/etc/vz/conf/$CTID$.conf</em></p>
<h3>Manipulons le bouzin</h3>
<p>Voici à peu près tout ce que l&#8217;on peut faire.</p>
<ul>
<li>Créer une machine avec <strong>create</strong></li>
<li>Démarrer une machine avec <strong>start</strong></li>
<li>Stopper une machine avec <strong>stop</strong></li>
<li>Rentrer dans une machine avec <strong>enter</strong></li>
<li>Supprimmer une machine avec <strong>destroy</strong></li>
</ul>
<p>Pour plus de commandes :<br />
<code><br />
man vzctl</code>  </p>
<h2>Oui mais après ?</h2>
<p>Ça y est vous savez créer vos machines en moins de trois minutes et gérer leur ressources comme un héros des temps modernes. Mais que faire de ce petit monde ?<br />
Comme expliqué plus haut la virtualisation à pour but de fiabiliser une infrastructure. On peut déplacer une machine virtuelle l&#8217;une machine physique à une autre, on isole les différents serveurs publiques afin de limiter l&#8217;impact des failles de sécurité …<br />
Il vous faut donc expérimenter ces différentes tâches afin de pouvoir parer l&#8217;imprévu. Replancher la gestion de son petit script iptables pour adapter son réseau à ce nouveau fonctionnement.<br />
Le chemin est tout tracé…</p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2011/10/14/lancer-votre-dual-booting-windows-dans-une-virtualbox/' rel='bookmark' title='Lancer votre dual-booting Windows dans une VirtualBox'>Lancer votre dual-booting Windows dans une VirtualBox</a></li>
<li><a href='http://geekfault.org/2010/04/09/maildir-mbox-la-migration/' rel='bookmark' title='Maildir mbox &#8211; La migration'>Maildir mbox &#8211; La migration</a></li>
<li><a href='http://geekfault.org/2009/08/14/faille-critique-dans-tous-les-noyaux-linux/' rel='bookmark' title='Faille critique dans tous les noyaux Linux'>Faille critique dans tous les noyaux Linux</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2010/03/09/openvz-virtualisation-legere-performante-et-amusante/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>nginx et python &#8211; le perfect setup</title>
		<link>http://geekfault.org/2010/03/01/nginx-et-python-le-perfect-setup/</link>
		<comments>http://geekfault.org/2010/03/01/nginx-et-python-le-perfect-setup/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 11:47:32 +0000</pubDate>
		<dc:creator>pistache</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[fastcgi]]></category>
		<category><![CDATA[gunicorn]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[unix]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[wsgi]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=2272</guid>
		<description><![CDATA[Python est devenu assez à la mode, pour le développement web, ces dernières années avec l&#8217;arrivée de frameworks web comme Django, Pylons et web.py. On le voit souvent utilisé sur apache2, avec mod_python, ou sur des serveurs Python dediés à ça (CherryPy, etc) Je cherche depuis longtemps un moyen de faire du Python sur HTTP. [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2011/03/24/devbox-kvmlibvirt-perfect-setup/' rel='bookmark' title='Devbox KVM+Libvirt perfect setup.'>Devbox KVM+Libvirt perfect setup.</a></li>
<li><a href='http://geekfault.org/2010/04/09/maildir-mbox-la-migration/' rel='bookmark' title='Maildir mbox &#8211; La migration'>Maildir mbox &#8211; La migration</a></li>
<li><a href='http://geekfault.org/2010/04/09/filtrer-ses-mails-un-cauchemard/' rel='bookmark' title='Filtrer ses mails ! Un cauchemard !'>Filtrer ses mails ! Un cauchemard !</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/2010/03/01/nginx-et-python-le-perfect-setup/nginx_logo/" rel="attachment wp-att-2406"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2010/03/nginx_logo-300x206.gif" alt="" title="nginx_logo" width="300" height="206" class="alignleft size-medium wp-image-2406" /></a></p>
<p><strong>Python est devenu assez à la mode, pour le développement web, ces dernières années avec l&#8217;arrivée de frameworks web comme </strong><a title="Django" href="http://djangoproject.com/"><strong>Django</strong></a><strong>, </strong><a title="Pylons" href="http://pylonshq.com/"><strong>Pylons</strong></a><strong> et </strong><a title="webpy" href="http://webpy.org"><strong>web.py</strong></a><strong>. On le voit souvent utilisé sur apache2, avec mod_python, ou sur des serveurs Python dediés à ça (CherryPy, etc)</strong></p>
<p>Je cherche depuis longtemps un moyen de faire du Python sur HTTP. J&#8217;ai mis pas mal de temps mais je pense avoir trouvé une configuration sympa.</p>
<p>Je vous propose ici d&#8217;essayer <a title="nginx" href="http://nginx.org/">nginx</a>, un serveur HTTP (entre autres), très performant et  <strong>beaucoup</strong> plus léger/rapide que apache2. Il est très efficace pour faire du reverse-proxy (c&#8217;est à dire être utilisé en frontal/load-balancer devant un serveur HTTP, et lui transmettre les requêtes en faisant du cache et le cas échéant du load-balancing).</p>
<p><!--more--></p>
<p>La configuration de nginx est très simple, et la documentation est très complète : <a href="http://wiki.nginx.org/Main">wiki.nginx.org</a>. L&#8217;installation de nginx est facile, il est inclus dans la plupart des distributions actuelles, donc à vos emerge/apt-get.</p>
<p> <code>apt-get install nginx</code>
<p>nginx ne gère pas le python nativement. Il y a plusieurs solutions cependant :</p>
<ul>
<li>Faire du proxy vers un serveur qui gère le python, comme apache2. On perd la majeure partie de l&#8217;intêret de nginx, cependant.</li>
<li>Faire du FastCGI vers un serveur FastCGI. C&#8217;est la solution la plus fréquente, en utilisant fcgi.py ou <a title="Flup" href="http://trac.saddi.com/flup">flup</a></li>
<li>Faire du WSGI. C&#8217;est un protocole de communication entre serveurs HTTP et applications Python. Solution aussi assez fréquente.</li>
<li>Faire du proxy vers un serveur qui gère le python de manière <strong>native</strong>. C&#8217;est une solution moins fréquente mais très pratique.</li>
</ul>
<p>Avant même de penser à choisir une des solutions ici présentes, il faut les comparer entre elles.</p>
<p><strong><br /> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<h4>nginx =&gt; apache2 =&gt; python</h4>
<p>L&#8217;ennui de cette solution c&#8217;est : apache2. Utiliser nginx pour forwarder à apache2 est presque inutile. Presque ? Oui, car on peut dire à nginx de garder les fichiers statiques pour lui. Cependant, le gain de cette méthode est assez minime, et ce n&#8217;est intéressant que pour faire du load balancing sur plusieurs apaches.</p>
<p><strong><br /> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<h4>le FastCGI</h4>
<p>FastCGI c&#8217;est une norme, pour faire traiter du contenu dynamique par une application externe. Donc le support du FastCGI tout seul est inutile, il faut aussi quelque chose pour gérer derrière.</p>
<p>J&#8217;ai testé <a href="http://trac.saddi.com/flup">flup</a>, un framework Python léger. Le résultat : ça marche, méééé c&#8217;est lent. Je tournais autour de 35/50 requêtes par seconde, et l&#8217;utilisation en mémoire vive était phénoménale, 150 mégas pour 1000 requêtes. (bien sur ces chiffres n&#8217;auront de valeur que lorsqu&#8217;ils seront comparés aux autres).</p>
<p>FastCGI est sympa pour faire une configuration &#8220;vite&#8221;. C&#8217;est d&#8217;ailleurs la seule solution viable, à ma connaissance pour faire du PHP sur nginx, à part le proxy vers un autre serveur HTTP.</p>
<p>Bref, FastCGI ne m&#8217;a pas convaincu. Et mes tests avec les autres solutions m&#8217;ont donné raison. Toujours avec moi ? On passe au WSGI !</p>
<p><strong><br /> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<h4>le WSGI</h4>
<p> <em>WSGI is the Web Server Gateway Interface. It is a specification for web servers and application servers to communicate with web applications (though it can also be used for more than that). It is a Python standard, described in detail in PEP 333.</em>
<p>le WSGI, c&#8217;est le standard pour le Web Python. Il n&#8217;y a qu&#8217;à consulter <a title="WSGI" href="http://wsgi.org">wsgi.org</a> pour se rendre compte que c&#8217;est tout un monde. Il consiste en un ensemble de normes (nom de variables, par exemple) pour permettre au serveur d&#8217;exécuter  un fichier codé en Python.</p>
<p>Le standard pour le WSGI sur les serveurs HTTP grand public, c&#8217;est le mod_wsgi de apache2. Il a été porté sur nginx, mais c &#8216;est une #@!## infame, qui ne marche que sur les vieilles versions et qui n&#8217;a pas été mise à jour depuis bientôt 2 ans et demi (cf. <a href="http://hg.mperillo.ath.cx/nginx/mod_wsgi/">hg.mperillo.ath.cx/nginx/mod_wsgi/</a>). J&#8217;ai obtenu des performances d&#8217;environ 133 requêtes par seconde avec, ce qui est déjà mieux que FastCGI, pour ceux qui suivent <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Par contre, dès que j&#8217;ai voulu avancer un peu avec (toucher à la configuration, et surtout, passer à une version supérieure de nginx), j&#8217;ai été confronté à ses limites (et aux #@!## de faute de frappe dans le code source)</p>
<p>D&#8217;autant plus que l&#8217;auteur de mod_wsgi pour apache2 et l&#8217;auteur de mod_wsgi pour nginx reconnaissent ses limitations, respectivement <a href="http://blog.dscpl.com.au/2009/05/blocking-requests-and-nginx-version-of.html">ici</a> et <a href="http://blogg.ingspree.net/blog/2007/11/24/nginx-mod-wsgi-vs-fastcgi/">ici</a>. Le premier document est très intéressant pour comprendre un peu l&#8217;architecture de nginx et ses différences avec apache2. En effet, le mod_wsgi pour nginx a été codé à partir de celui pour apache2, et il subit les différences d&#8217;architecture entre apache2 et nginx.</p>
<p>Attention, je ne remet absolument pas à cause le WSGI ici, juste l&#8217;implémentation de mod_wsgi dans nginx.</p>
<p>Parce que justement, un projet super récent, c&#8217;est&#8230;. uWSGI ! uWSGI sert à combler le manque de support du WSGI dans nginx, en rajoutant un module, meilleur que mod_wsgi. Il nécessite donc de recompiler nginx. Il y a encore une autre solution, nommée gunicorn, qui ne nécessite pas de recompiler nginx. C&#8217;est un serveur HTTP minimal qui gère le WSGI nativement. uwsgi offre plus de fonctionalitées que gunicorn, mais gunicorn a l&#8217;air assez dynamique (dans le développement), et est plus facile à utiliser (pas de recompilation, support de Django natif). Au niveau des performances, je me suis amusé à faire cette comparaison :</p>
<p> </p>
<p><div class="wp-caption alignnone" style="width: 434px"><img title="Comparaison des performances entre uwsgi et gunicorn en fonction du niveau de parallélisme" src="http://pistaches.net/~pistache/stuff/patch1.png" alt="Comparaison des performances entre uwsgi et gunicorn en fonction du niveau de parallélisme" width="424" height="313" /><p class="wp-caption-text">Comparaison des performances entre uwsgi et gunicorn en fonction du niveau de parallélisme</p></div>
<p> </p>
<p>On constate plusieurs choses :</p>
<ul>
<li>Les performances augmentent en utilisant 2 workers à la place d&#8217;un, mais au delà, le gain est ridicule, puis inexistant. Le nombre 2 est dépendant du nombre de coeurs de la machine, et le nombre de workers à utiliser ne sera pas le même sous un bi-socket octocore, bien évidemment. Les meilleures performances étaient obtenues en utilisant gunicorn+3workers.</li>
<li>La différence est vraiment minime, gunicorn est en moyenne légèrement au dessus de uwsgi.</li>
<li>Ces tests sont réalisés sur une application <strong>Django</strong>. Les performances augmentent en utilisant des frameworks plus légers comme <strong>web.py</strong>, bien évidemment.</li>
</ul>
<p>uwsgi dispose de plus de fonctionalitées, comme par exemple une interface d&#8217;administration de serveur wsgi dans Django. Je vais ici expliquer l&#8217;installation et la configuration des deux solutions.</p>
<p>Ici je vais couvrir l&#8217;installation et la configuration de uwsgi et gunicorn avec <strong>Django</strong> et <strong>web.py</strong>, même si c&#8217;est bien sur adaptable avec d&#8217;autres frameworks supportant le <strong>wsgi </strong>(liste sur <a href="http://wsgi.org/wsgi/Frameworks">wsgi.org/wsgi/Frameworks</a>).</p>
<h3>Installation et configuration de <strong>uwsgi</strong></h3>
<p><strong><br /> </strong></p>
<h4>Sous Debian :</h4>
<p>1) Rajouter les dépots source, par exemple :</p>
<p> <code>deb-src http://ftp.gr.debian.org/debian/ squeeze main contrib non-free</code>
<p>2) Télécharger la source</p>
<p> <code>apt-get source nginx<br />
tar -zxvf nginx_*.orig.tar.gz<br />
cd nginx-*<br />
tar -zxvf nginx_*.debian.tar.gz</code>
<p>2) Télécharger uwsgi</p>
<p> <code>cd ..</p>
<p>wget http://projects.unbit.it/downloads/uwsgi-0.9.4.2.tar.gz</p>
<p>tar -zxvf uwsgi-0.9.4.2.tar.gz</code>
<p>3) Modifier le paquet source de nginx pour y ajouter uwsgi. Il faut éditer le fichier nginx-*/debian/rules, trouver le bloc qui commence par ./configure et ou se trouvent toutes les options de compilation, et y ajouter</p>
<p> <code>--add-module=$(CURDIR)/../uwsgi-0.9.4.2/nginx/</code>
<p>$(CURDIR)/../uwsgi-0.9.4.2/nginx/ est le chemin vers le dossier du module dans la source de uwsgi</p>
<p>4) maintenant, dans le dossier de la source de nginx, faites (pas besoin de root) :</p>
<p> <code>dpkg-buildpackage</code>
<p>5) installer le .deb généré ainsi (en tant que root maintenant)</p>
<p> <code>dpkg -i ../nginx-*.deb</code>
<p>6) Dernière étape : compiler uWSGI (le binaire en lui-même, qui va communiquer avec nginx par le biais du module)</p>
<p> <code>cd ../uwsgi-0.9.4.2/ &amp;&amp; make &amp;&amp; make install &amp;&amp; cp uwsgi_params /etc/nginx/</code>
<p>Cette dernière commande (le cp uwsgi_params&#8230;) sert à placer un fichier de configuration du module uwsgi exemple dans le repertoire de nginx.</p>
<h4>Sous les autres distributions :</h4>
<p>Il faut télécharger la source de nginx et de uwsgi, compiler nginx avec le module uwsgi (dans le répertoire nginx de la source de uwsgi), puis compiler uwsgi.﻿</p>
<p>On a maintenant un serveur uWSGI et un nginx avec  le module uwsgi. Il va maintenant falloir dire à nginx de transférer les requêtes au serveur uWSGI, avec une commande uwsgi_pass. Par exemple, dans la section server d&#8217;un de vos vhost (/etc/nginx/sites-enabled/default, par exemple, sous Debian) :</p>
<p> <code>location / {<br />
include uwsgi_params;<br />
uwsgi_pass unix:///tmp/uwsgi.sock;<br />
}</code>
<p>Il faut ensuite créer une application WSGI, par exemple, pour le framework web.py :</p>
<p> <code>import web</p>
<p>urls = (<br />
    '/.*', 'hello',<br />
    )</p>
<p>class hello:<br />
    def GET(self):<br />
        return "Hello, world."</p>
<p>application = web.application(urls, globals()).wsgifunc()<br />
applications = {'/': application }</code>
<p>Pour Django :</p>
<p> <code>import django.core.handlers.wsgi<br />
application = django.core.handlers.wsgi.WSGIHandler()<br />
applications = {'/': application }</code>
<p>Nommez ce fichier wsgi.py et placez le dans le repertoire ou vous allez placer votre code (pour Django, dans le repertoire du projet, évidemment).  Si vos nerfs n&#8217;ont pas encore lâché ici, allez prendre une petite pause de 5 minutes à titre préventif, et reprenez.  Maintenant, on va démarrer un serveur uWSGI. Placez vous dans le répertoire de votre fichier wsgi.py, et faites :</p>
<p> <code>uwsgi -s /tmp/uwsgi.sock -C -w wsgi -p2 -L</code>
<p>Explications : le -s indique ou placer le socket (ça pourrait aussi être une adresse au format hôte:port, pour un usage distant). Le -w wsgi indique de charger le fichier wsgi(.py), le -p2 indique de démarrer 2 processus, et le -L désactive l&#8217;envoi des requêtes à stdout (=&gt;flood).</p>
<p>Si vous allez à l&#8217;adresse de votre serveur web, vous devriez voir votre application Python en face de vous ! Vous voilà en train d&#8217;utiliser <strong>nginx+uwsgi+python</strong>.</p>
<p>En annexe, je rappelle que uwsgi est aussi utilisable avec apache et lighttpd.</p>
<p>Aussi, dans le dossier source de uwsgi, vous trouverez des templates pour un module d&#8217;administration de Django, à installer dans le repertoire des templates de l&#8217;administration de Django (si, si).</p>
<h3>Installation et configuration de gunicorn</h3>
<p>gunicorn est <strong>carrèment</strong> plus facile à installer. Il est codé en python, donc pas de compilation, seulement un <strong>easy_install</strong> :</p>
<p> <code>easy_install gunicorn</code>
<p>La configuration est tout aussi facile, il suffit de cela dans la configuration du vhost dans nginx :</p>
<p> <code>location / {<br />
proxy_pass http://unix:/tmp/gunicorn.sock<br />
}</code>
<p>On démarre ensuite gunicorn. Pour Django, gunicorn dispose d&#8217;un support intégré, il vous suffit de vous placer dans le répertoire de votre projet, puis :</p>
<p> <code>gunicorn_django -b unix:/tmp/gunicorn.sock --workers=2</code>
<p>Pour web.py, il faut créer un module :</p>
<p> <code>import web</p>
<p>urls = (<br />
    '/.*', 'hello',<br />
    )</p>
<p>class hello:<br />
    def GET(self):<br />
        return "Hello, world."</p>
<p>application = web.application(urls, globals()).wsgifunc()</code>
<p>Il faut ensuite démarrer le serveur Gunicorn. En étant dans le repertoire ou se trouve le module web.py (le fichier donc le code vient avant, là, au-dessus, oui), :</p>
<p> <code>gunicorn -b unix:/tmp/gunicorn.sock --workers=2 wsgi</code>
<p>Je vous invite à consulter ce lien : <a href="http://gunicorn.org/tuning.html"><span style="color: #000000;">gunicorn.org/tuning.html</span></a>, pour vous permettre d&#8217;augmenter les performances de gunicorn.</p>
<h3>Annexe</h3>
<h4><span style="font-weight: normal;">Fichiers statiques</span></h4>
<p> <code>location /admin-media {alias /usr/lib/pymodules/python2.5/django/contrib/admin/media;}</p>
<p>location /static {root /var/www/byteflow;}</code>
<p>Ces deux lignes, à rajouter après le &#8220;location /&#8221; avec uwsgi_pass ou proxy_pass (selon votre configuration) indiquent à nginx de traiter les fichiers statiques directement. Il faut bien évidemment adapter à votre configuration.</p>
<h4><span style="font-weight: normal;">Munin</span></h4>
<p><span style="font-weight: normal;">Vous pouvez trouver des plugins nginx pour munin <a href="http://muninexchange.projects.linpro.no/?search=&amp;cid=54&amp;pid=51">ici</a>. Je n&#8217;ai pas trouvé de plugin munin pour uwsgi/gunicorn, mais je pourrais peut-être en faire un si je trouve le temps.</span></p>
<h4><span style="font-weight: normal;">Plusieurs serveurs</span></h4>
<p><span style="font-weight: normal;">Si par hasard vous avez plusieurs serveurs gunicorn/uwsgi répartis sur plusieurs machines , vous pouvez les utiliser en déclarant une section </span></p>
<p> <code><span style="font-weight: normal;">upstream <em>nom</em> {} </span></code>
<p><span style="font-weight: normal;">dans nginx, contenant les adresses des serveurs distant (hôte:port ou emplacement du socket) et en utilisant &#8220;<em>nom</em>&#8221; comme argument à <em>uwsgi_pass</em> et <em>proxy_pass</em>.</span></p>
<h3>Conclusion</h3>
<p>Ces deux architectures sont très pratiques pour faire tourner du python dans un serveur web, ici nginx. uwsgi dispose de plus de fonctionalités, mais la plupart (template d&#8217;admin Django, memory profiling) pourraient facilement être ajoutées à gunicorn, qui est beaucoup plus léger à installer/configurer/maintenir (2 commandes et 3 lignes de configuration dans nginx). J&#8217;ai les deux personellement sur mon serveur, j&#8217;ai eu à alterner entre les deux pour écrire cet article, et c&#8217;est pas bien dur, un daemon à arrêter, un autre à démarrer, et changer une ligne dans la configuration de nginx.</p>
<h4>Liens</h4>
<p><a href="http://wsgi.org">wsgi.org</a></p>
<p><a href="http://gunicorn.org/">gunicorn.org/</a></p>
<p><a href="http://projects.unbit.it/uwsgi/">projects.unbit.it/uwsgi/</a></p>
<p><a href="irc://irc.freenode.org/#gunicorn">irc.freenode.org/#gunicorn</a></p>
<p><a href="http://nginx.org/">nginx.org/</a></p>
<p><a href="http://djangoadvent.com/">djangoadvent.com/</a></p>
<p><a href="http://www.django-fr.org/">www.django-fr.org/</a></p>
<p><a href="http://www.djangoproject.com/">www.djangoproject.com/</a></p>
<p><a href="http://webpy.org/">webpy.org/</a></p>
<p>Je tiens à remercier la communauté Geek{node|fault}, le chan irc #gunicorn, les développeurs de gunicorn qui sont très aimables, ainsi que Amandarn qui m&#8217;a aidé pour certains détails.</p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2011/03/24/devbox-kvmlibvirt-perfect-setup/' rel='bookmark' title='Devbox KVM+Libvirt perfect setup.'>Devbox KVM+Libvirt perfect setup.</a></li>
<li><a href='http://geekfault.org/2010/04/09/maildir-mbox-la-migration/' rel='bookmark' title='Maildir mbox &#8211; La migration'>Maildir mbox &#8211; La migration</a></li>
<li><a href='http://geekfault.org/2010/04/09/filtrer-ses-mails-un-cauchemard/' rel='bookmark' title='Filtrer ses mails ! Un cauchemard !'>Filtrer ses mails ! Un cauchemard !</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2010/03/01/nginx-et-python-le-perfect-setup/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Faille critique dans tous les noyaux Linux</title>
		<link>http://geekfault.org/2009/08/14/faille-critique-dans-tous-les-noyaux-linux/</link>
		<comments>http://geekfault.org/2009/08/14/faille-critique-dans-tous-les-noyaux-linux/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 19:18:19 +0000</pubDate>
		<dc:creator>Tito</dc:creator>
				<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[faille]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[sécurité]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=1001</guid>
		<description><![CDATA[Hier, Tavis Ormandy et Julien Tinnes (Google Security) ont dévoilé une faille qui affecte tous les kernels Linux 2.4 et 2.6 depuis 2001. C&#8217;est un bug de type NULL Pointer Deference qui permet au pirate d&#8217;exécuter n&#8217;importe quel code au niveau du kernel et donc d&#8217;acquérir les droits root. NULL Pointer Dans le noyau Linux, [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2011/10/14/lancer-votre-dual-booting-windows-dans-une-virtualbox/' rel='bookmark' title='Lancer votre dual-booting Windows dans une VirtualBox'>Lancer votre dual-booting Windows dans une VirtualBox</a></li>
<li><a href='http://geekfault.org/2010/05/13/linux-laptop-ultimate-powersaving/' rel='bookmark' title='Linux &#8211; Laptop &#8211; Ultimate Powersaving !'>Linux &#8211; Laptop &#8211; Ultimate Powersaving !</a></li>
<li><a href='http://geekfault.org/2009/05/31/chromium-google-chrome-sous-linux/' rel='bookmark' title='Chromium, le Google Chrome sous Linux sans émulation'>Chromium, le Google Chrome sous Linux sans émulation</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/wp-content/uploads/2009/08/Exploit-Wunderbar.png" title="Exploit Wunderbar" rel="lightbox.1001"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2009/08/Exploit-Wunderbar-300x189.png" alt="Exploit Wunderbar" title="Exploit Wunderbar" width="300" height="189" class="alignleft size-medium wp-image-1002" /></a>Hier, Tavis Ormandy et Julien Tinnes (Google Security) <a href="http://blog.cr0.org/2009/08/linux-null-pointer-dereference-due-to.html">ont dévoilé</a> une faille qui affecte <strong>tous les kernels Linux 2.4 et 2.6 depuis 2001</strong>.</p>
<p>C&#8217;est un bug de type NULL Pointer Deference qui permet au pirate d&#8217;exécuter n&#8217;importe quel code au niveau du kernel et donc d&#8217;<strong>acquérir les droits root</strong>.<br />
<!--more--></p>
<h3>NULL Pointer</h3>
<p>Dans le noyau Linux, chaque <strong>socket de connexion</strong> a une structure d&#8217;opérations associée (<span style="font-family: monospace">proto_ops</span>) qui contient des pointeurs vers diverses opérations : accept, bind, shutdown, &#8230;</p>
<p>Si une des opérations n&#8217;est pas nécessaire à ce type de socket, le pointeur <em>devrait</em> tout de même être défini vers une fonction &#8220;inutile&#8221;. Mais évidemment tous les développeurs n&#8217;y pensent pas forcément et beaucoup de sockets laissent ces <strong>pointeurs non-initialisés</strong> (NULL).</p>
<p>Le problème, c&#8217;est que certaines fonctions du noyau Linux (<a href="http://lxr.linux.no/linux+v2.6.30.4/net/socket.c#L727"><span style="font-family: monospace">sock_sendpage</span></a>, par exemple) <strong>ne vérifient pas</strong> si ces pointeurs sont bien initialisés et <strong>exécutent le code</strong> &#8220;NULL&#8221;, c&#8217;est à dire un code à l&#8217;emplacement 0.</p>
<p>Un pirate n&#8217;a donc qu&#8217;à insérer son code dans l&#8217;emplacement 0 et faire en sorte que le kernel l&#8217;exécute. Puisque le kernel possède des droits absolus, il est très facile d&#8217;exploiter cette faille pour acquérir les droits de root (<strong>privilege escalation</strong>).</p>
<h3>Des exploits déjà disponibles</h3>
<p>Comme le précise Julien Tinnes, ce type de vulnérabilité est <strong>très facile à exploiter</strong> : « <em>ça ne nous a pris que quelques minutes pour adapter un ancien exploit</em> ». Et forcément il y en a déjà plusieurs qui circulent sur la toile.</p>
<p>Nous avons trouvé un exploit nommé <span style="font-family: monospace; font-weight: bold;"><a href="http://grsecurity.net/~spender/wunderbar_emporium.tgz">wunderbar_emporium</a></span>. Celui-ci exploite un bug dans pulseaudio et n&#8217;est donc pas dangereux pour la plupart des serveurs. <em>(NB aux petits script kiddies <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</em>  Comme vous pouvez le voir dans le screenshot ci-dessus il fonctionne plutôt pas mal!</p>
<p>Bien sûr des exploits existent pour des failles dans <a href="http://archives.neohapsis.com/archives/fulldisclosure/2009-08/0174.html">d&#8217;autres protocoles</a>, plus largement répandus que Pulseaudio. </p>
<h3>Mais un patch aussi disponible</h3>
<p><a href="http://geekfault.org/wp-content/uploads/2009/08/Diff-Correctif.png" title="Différentiel du correctif" rel="lightbox.1001"><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   src="http://geekfault.org/wp-content/uploads/2009/08/Diff-Correctif-300x136.png" alt="Différentiel du correctif" title="Différentiel du correctif" width="300" height="136" class="alignright size-medium wp-image-1008" /></a>Très exactement <strong>9 minutes après la publication</strong> de l&#8217;article sur le blog de Jean Tinnes, Linus Torvalds lui-même a mis en ligne <a href="http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=e694958388c50148389b0e9b9e9e8945cf0f1b98;hp=a3620f7545344f932873bf98fbdf416b49409c8e">le patch</a> comblant cette faille en remplaçant la fonction <span style="font-family: monospace">sock->ops->sendpage</span> par <span style="font-family: monospace">kernel_sendpage</span>, fonction ne laissant pas passer ce genre d&#8217;erreurs.</p>
<p>Les kernels gérant <span style="font-stype: monospace">mmap_min_addr</span> peuvent aussi se prémunir de certains exploits en règlant cette variable à une valeur supérieure à 0 :<br />
<code># echo 4096 > /proc/sys/vm/mmap_min_addr</code><br />
Celle-ci empêche toute écriture dans la mémoire 0&#8230; Mais cette mesure de sécurité est toute neuve et contournable pour les kernels inférieurs à 2.6.30.2. Il est donc plus qu&#8217;impératif d&#8217;appliquer le patch kernel au plus vite.</p>
<h3>La faille couvrant le plus grand nombre de kernels Linux</h3>
<p>Couvrant <strong>tous les kernels publiés depuis 2001</strong>, que ce soit en version 2.4 ou 2.6, cette faille décroche la palme de la faille portant sur le plus grand nombre de releases stables du kernel Linux. Elle est potentiellement <strong>très dangereuse</strong> puisqu&#8217;un utilisateur lambda peut acquérir les droits de root!</p>
<p>Nous ne pouvons que vous conseiller d&#8217;appliquer le patch au plus vite. Les différentes distributions devraient d&#8217;ailleurs publier le kernel mis à jour dans les prochaines heures&#8230;. Enfin, espérons <img src='http://geekfault.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<h3>En savoir plus</h3>
<ul>
<li><a href="http://blog.cr0.org/2009/08/linux-null-pointer-dereference-due-to.html">L&#8217;article sur le blog de Jean Tinnes</a></li>
<li><a href="http://archives.neohapsis.com/archives/fulldisclosure/2009-08/0174.html">Le full disclosure par Tavis Ormandy</a></li>
<li><a href="http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=e694958388c50148389b0e9b9e9e8945cf0f1b98;hp=a3620f7545344f932873bf98fbdf416b49409c8e">Le patch correctif commité dans la branche stable par Linux Torvalds</a></li>
</ul>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2011/10/14/lancer-votre-dual-booting-windows-dans-une-virtualbox/' rel='bookmark' title='Lancer votre dual-booting Windows dans une VirtualBox'>Lancer votre dual-booting Windows dans une VirtualBox</a></li>
<li><a href='http://geekfault.org/2010/05/13/linux-laptop-ultimate-powersaving/' rel='bookmark' title='Linux &#8211; Laptop &#8211; Ultimate Powersaving !'>Linux &#8211; Laptop &#8211; Ultimate Powersaving !</a></li>
<li><a href='http://geekfault.org/2009/05/31/chromium-google-chrome-sous-linux/' rel='bookmark' title='Chromium, le Google Chrome sous Linux sans émulation'>Chromium, le Google Chrome sous Linux sans émulation</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2009/08/14/faille-critique-dans-tous-les-noyaux-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Partager la connexion de son laptop</title>
		<link>http://geekfault.org/2009/07/12/transformer-laptop-en-routeur-wifi/</link>
		<comments>http://geekfault.org/2009/07/12/transformer-laptop-en-routeur-wifi/#comments</comments>
		<pubDate>Sat, 11 Jul 2009 23:27:27 +0000</pubDate>
		<dc:creator>Tito</dc:creator>
				<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[nat]]></category>
		<category><![CDATA[réseau]]></category>
		<category><![CDATA[routeur]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=934</guid>
		<description><![CDATA[C&#8217;est la première fois depuis le début de mes vacances que je me retrouve sans mon routeur WiFi&#8230; Et c&#8217;est la première fois que j&#8217;en ai besoin! Il n&#8217;y a qu&#8217;une seule fiche ethernet dans ma chambre d&#8217;hôtel que je partage avec mes deux frères. J&#8217;ai donc resorti mes vieux scripts pour transformer mon laptop [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/05/13/linux-laptop-ultimate-powersaving/' rel='bookmark' title='Linux &#8211; Laptop &#8211; Ultimate Powersaving !'>Linux &#8211; Laptop &#8211; Ultimate Powersaving !</a></li>
<li><a href='http://geekfault.org/2009/05/27/internet-via-iphone/' rel='bookmark' title='Internet sur votre laptop via un iPhone'>Internet sur votre laptop via un iPhone</a></li>
<li><a href='http://geekfault.org/2012/04/13/retrouver-un-laptop-vole/' rel='bookmark' title='Retrouver un laptop volé'>Retrouver un laptop volé</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><!--pagetitle:Un NAT simple--><a href="http://geekfault.org/wp-content/uploads/2009/07/laptop-ega-routeur.jpg" title="Laptop égal routeur" rel="lightbox.934"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2009/07/laptop-ega-routeur-300x150.jpg" alt="Laptop égal routeur" title="Laptop égal routeur" width="300" height="150" class="alignleft size-medium wp-image-938" /></a>C&#8217;est la première fois depuis le début de mes vacances que je me retrouve sans mon routeur WiFi&#8230; Et c&#8217;est la première fois que j&#8217;en ai besoin! Il n&#8217;y a qu&#8217;une seule fiche ethernet dans ma chambre d&#8217;hôtel que je partage avec mes deux frères.</p>
<p>J&#8217;ai donc resorti mes vieux scripts pour transformer mon laptop en routeur WiFi et ainsi <strong>partager ma connexion ethernet via le WiFi intégré</strong>.<br />
<!--more--></p>
<h3>Prérequis</h3>
<p>Il vous faut bien entendu un ordinateur avec <strong>deux interfaces réseau</strong>. Je verrai ici comment configurer le partage en WiFi d&#8217;une connexion filiaire, mais toutes les combinaisons sont possibles.</p>
<p>Votre kernel doit être compilé avec les redirections IPv4:<br />
<code>Networking  ---><br />
    Networking options  ---><br />
        [ M ] Network packet filtering (replaces ipchains)  ---><br />
            Core Netfilter Configuration  ---><br />
                < M > Netfilter Xtables support<br />
            IP: Netfilter Configuration  ---><br />
                < M > IP tables support (required for filtering/masq/NAT)<br />
                < M > Packet filtering</code></p>
<h3>Activer les redirections NAT</h3>
<p>Le laptop va jouer le rôle de routeur, ou plus exactement de NAT. Il accepte toutes les requêtes sur l&#8217;interface WiFi (wlan0) et les répète sur l&#8217;interface filiaire (eth0). L&#8217;hôtel aura l&#8217;impression qu&#8217;une seule machine génère toutes les requêtes, sur une seule IP.<br />
<code># iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE<br />
# sysctl -w net.ipv4.ip_forward=1</code></p>
<h3>Interconnexion des différents ordinateurs</h3>
<p>La solution la plus simple est la création d&#8217;un réseau WiFi <strong>Ad-Hoc</strong>. Créez-le sur le laptop qui joue le rôle de NAT en lui attribuant la première IP, 10.42.42.1 par exemple.</p>
<p>Connectez ensuite les autres ordinateurs sur ce réseau en faisant bien attention à spécifier l&#8217;IP du NAT comme adresse du <strong>routeur</strong>.</p>
<p>Et voilà, vous êtes prêt à surfer!</p>
<h3>Faire de votre laptop un vrai routeur</h3>
<p>Si vous n&#8217;aimez pas les réseaux Ad-Hoc et/ou préférez utiliser un vrai réseau WiFi managed, avec attribution d&#8217;IP par DHCP et tout le tralala, continuez la lecture à la page suivante.</p>
<p>Attention toutefois, la solution décrite sur cette première page fonctionne avec tous les ordinateurs qui supportent les réseaux Ad-Hoc, alors que transformer votre ordinateur en routeur nécessite une carte et un driver supportant le <strong>mode master</strong>.</p>
<p><!--nextpage--><!--pagetitle:Un vrai routeur WiFi--></p>
<h3>Mode Master</h3>
<p>Peu de combinaisons carte WiFi/driver permettent de passer en mode master. Le plus simple est d&#8217;essayer:<br />
<code># iwconfig wlan0 mode master</code><br />
Si la commande passe sans rien dire, c&#8217;est bon! Sinon, vous verrez une belle erreur du type<br />
<code>Error for wireless request "Set Mode" (8B06) :<br />
    SET failed on device wlan0 ; Invalid argument.</code></p>
<p>Avec les drivers MadWiFi, pour passer en mode master, il faut d&#8217;abord détruire l&#8217;interface:<br />
<code># wlanconfig ath0 destroy<br />
#wlanconfig ath0 create wlandev wifi0 wlanmode master</code></p>
<p>Sur mon laptop, la carte Intel interne n&#8217;accepte pas ce mode master. Je n&#8217;ai par contre aucun problème à l&#8217;utiliser avec une carte Atheros sur port PCMCIA, avec le driver madwifi.</p>
<h3>Configuration WiFi</h3>
<p>Après avoir passé votre carte en mode master, il faut faire une configuration standard du WiFi en ligne de commande. Choisissez un ESSID, un channel et même un cryptage si vous le souhaitez. Un cryptage WPA est envisageable, mais je me limiterai au simple exemple du WEP:<br />
<code># iwconfig wlan0 essid Alpha channel 1 key s:MotDePasseWEP<br />
# ifconfig wlan0 10.42.42.1 netmask 255.255.255.0 broadcast 10.42.42.255</code></p>
<h3>Serveur DHCP</h3>
<p>Il ne manque plus qu&#8217;à installer un serveur DHCP pour fournir une adresse IP à tous ceux qui essayent de se connecter sur votre &#8220;routeur&#8221;.</p>
<p>Installez <strong>dhcpcd</strong> et éditez sa configuration:<br />
<code># nano /etc/dhcp/dhcpd.conf</code><br />
<code>default-lease-time 3600;<br />
max-lease-time 7200;<br />
option subnet-mask 255.255.255.0;<br />
option broadcast-address 10.42.42.255;<br />
option routers 10.42.42.1;<br />
option domain-name-servers 208.67.222.222, 208.67.220.220;<br />
ddns-update-style none;</p>
<p>subnet 10.42.42.0 netmask 255.255.255.0 {<br />
 range 10.42.42.10 10.42.42.100;<br />
}</code></p>
<p>Et lancez le serveur DHCPD:<br />
<code># /etc/init.d/dhcpd start</code></p>
<p>Attention, ce démon ne marchera que si vous avez déjà configuré votre carte WiFi sur l&#8217;IP <strong>10.42.42.1</strong>. N&#8217;oubliez pas de lancer les commandes de NAT (voir page précédente).</p>
<h3>Et voilà!</h3>
<p>Tout ordinateur captant votre laptop sera maintenant capable de voir le réseau WiFi que vous avez créé et de s&#8217;y connecter exactement comme si c&#8217;était un simple routeur. Il aura alors accès à internet en toute transparence.</p>
<p>Si vous devez lancer ce routeur souvent, n&#8217;hésitez pas à créer un fichier bash <img src='http://geekfault.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/05/13/linux-laptop-ultimate-powersaving/' rel='bookmark' title='Linux &#8211; Laptop &#8211; Ultimate Powersaving !'>Linux &#8211; Laptop &#8211; Ultimate Powersaving !</a></li>
<li><a href='http://geekfault.org/2009/05/27/internet-via-iphone/' rel='bookmark' title='Internet sur votre laptop via un iPhone'>Internet sur votre laptop via un iPhone</a></li>
<li><a href='http://geekfault.org/2012/04/13/retrouver-un-laptop-vole/' rel='bookmark' title='Retrouver un laptop volé'>Retrouver un laptop volé</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2009/07/12/transformer-laptop-en-routeur-wifi/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Jouer à la Playstation sous linux… avec sa manette Dualshock !</title>
		<link>http://geekfault.org/2009/06/30/playstation/</link>
		<comments>http://geekfault.org/2009/06/30/playstation/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 17:55:19 +0000</pubDate>
		<dc:creator>koolfy</dc:creator>
				<category><![CDATA[Gadget]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Playstation]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=857</guid>
		<description><![CDATA[Les vacances approchent, et tous les geeks cherchent à rassembler tout le matériel nécessaire à leur survie. Mais comme la survie n&#8217;est pas suffisante, et qu&#8217;on veut tout de même passer de bonnes vacances, il faut aussi embarquer de quoi meubler les soirées: DVDs, livres, musique, laptop, Playstation… Oh mon dieu, la Playstation ne rentre [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/03/27/keymap-linux-sous-windows/' rel='bookmark' title='Keymap Linux sous Windows'>Keymap Linux sous Windows</a></li>
<li><a href='http://geekfault.org/2009/05/31/chromium-google-chrome-sous-linux/' rel='bookmark' title='Chromium, le Google Chrome sous Linux sans émulation'>Chromium, le Google Chrome sous Linux sans émulation</a></li>
<li><a href='http://geekfault.org/2009/08/14/faille-critique-dans-tous-les-noyaux-linux/' rel='bookmark' title='Faille critique dans tous les noyaux Linux'>Faille critique dans tous les noyaux Linux</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/wp-content/uploads/2009/06/play-logo.png" title="play-logo" rel="lightbox.857"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2009/06/play-logo.png" alt="play-logo" title="play-logo" width="134" height="102" class="alignleft size-full wp-image-898" /></a>Les <strong>vacances</strong> approchent, et tous les geeks cherchent à rassembler tout le <strong><a href="http://geekfault.org/2009/06/30/geek-en-avion/">matériel nécessaire à leur survie</a></strong>.</p>
<p>Mais comme la survie n&#8217;est pas suffisante, et qu&#8217;on veut tout de même passer de bonnes vacances, il faut aussi embarquer de quoi meubler les soirées: DVDs, livres, musique, laptop, Playstation…</p>
<p><strong>Oh mon dieu, la Playstation ne rentre pas dans la valise !!</strong><br />
<!--more--></p>
<h3>To Play or not to Play…Station !</h3>
<p>Je sais que l&#8217;idée d&#8217;<strong>emporter</strong> sa Playstation en vacances semble farfelue, mais j&#8217;aimerais savoir combien d&#8217;entre-vous —possesseurs d&#8217;une console— peuvent affirmer que cette idée ne leur a jamais traversé l&#8217;esprit, et qu&#8217;ils n&#8217;ont pas eu de pincement au coeur en se disant que ce n&#8217;est pas très sérieux comme idée…</p>
<p>Pour l&#8217;avoir fait, je peux vous dire que cela comporte toute une série d&#8217;<strong>inconvénients</strong>, allant de la place perdue dans les bagages, aux complications de branchements aux téléviseurs trouvés sur place. Mais il n&#8217;y a rien à faire, la laisser derrière soi est toujours une <strong>épreuve</strong>.</p>
<p>Si comme moi vous considérez qu&#8217;<strong>aucun</strong> jeu PS2, PS3, Xbox, PC ou autre n&#8217;aura jamais le charme des jeux PSX ayant bercé votre enfance, et que votre console est une pièce de musée qui doit rester à l&#8217;abris de tout danger, j&#8217;ai peut-être la solution à vos <strong>tourments</strong>.</p>
<h3>J&#8217;émule, tu émules, il émule, nous jouons !</h3>
<p>La solution, vous l&#8217;aurez deviné, est d&#8217;<strong>émuler</strong> la console depuis son ordinateur.<br />
Pour les néophytes, l&#8217;émulation est un procédé permettant de reproduire le comportement d&#8217;une plateforme, sur une autre plateforme ! Dans notre cas, faire en sorte que notre ordinateur se comporte come une Playstation. C&#8217;est bien moins compliqué que ça en a l&#8217;air, grâce à des applications appelées «<strong>émulateurs</strong>», qui sont prévues pour ça.</p>
<p>Contrairement à la légende urbaine qui dit qu&#8217;on ne peut pas jouer sur Gnu/Linux, ce système permet de jouer à des jeux GameBoy, Atari, MasterSystem, MegaDrive, Playstation et d&#8217;autres !<br />
Même si cette multitude de consoles n&#8217;est pas l&#8217;object de cet arcicle, je vous recomande cette <a href="http://doc.ubuntu-fr.org/emulateurs_console"><strong>liste d&#8217;émulateurs</strong></a> de consoles très diverses, disponibles sous Gnu/Linux.</p>
<p>Après plusieurs dixaines d&#8217;heures de tests très agréables avec des jeux comme Final Fantasy VII, Metal Gear Solid ou encore Wip3out, mon choix s&#8217;est porté sur l&#8217;émulateur propriétaire <a href="http://psxemulator.gazaxian.com/"><strong>pSX</strong></a> (dans le layman Roslin, pour Gentoo)<br />
<a href="http://geekfault.org/wp-content/uploads/2009/06/pcsx.png" title="pcsx" rel="lightbox.857"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2009/06/pcsx.png" alt="pcsx" title="pcsx" width="225" height="90" class="alignleft size-full wp-image-900" /></a>Il existe aussi un très bon émulateur libre nommé <a href="http://www.pcsx.net/"><strong>pcsx</strong></a>, mais il ne <strong>compile pas</strong> sur un système Gentoo x86_64 pour l&#8217;instant, et mes brefs tests sur ma machine Ubuntu ont révélé quelques points faibles et/ou disfonctinnements.</p>
<p><strong>pSX</strong> est capable d&#8217;émuler à peu près tous les jeux sortis pour la <strong>Playstation</strong> (première du nom), est très flexible et facile d&#8217;emploi. Tout ce dont il a besoin pour fonctionner c&#8217;est un jeu, et un «<strong>bios</strong>» Playstation. Pour des raisons légales, ce fichier bios ne sera pas linké sur cet article, mais si vous possédez la console, vous pouvez et n&#8217;aurez aucun mal à <a href="http://www.google.be/search?hl=fr&#038;q=scph1001.bin&#038;btnG=Recherche+Google&#038;meta=&#038;aq=f&#038;oq="><strong>trouver</strong></a> ce fichier sur internet.<br />
<div id="attachment_908" class="wp-caption aligncenter" style="width: 550px"><a href="http://geekfault.org/wp-content/uploads/2009/06/mgs.jpg" title="mgs" rel="lightbox.857"><img src="http://geekfault.org/wp-content/uploads/2009/06/mgs.jpg" alt="Oui, je sais, ça m&#039;a fait le même effet." title="mgs" width="540" height="269" class="size-full wp-image-908" /></a><p class="wp-caption-text">Oui, je sais, ça m'a fait le même effet.</p></div><br />
Il suffit d&#8217;insérer simplement le CD de votre jeux Playstation dans votre ordinateur, et pSX (comme tous les autres émulateurs Playstation) sera capable de le reconnaitre et de le lancer, mais en plus, si vous avez également peur d&#8217;emporter vos <strong>précieux</strong> jeux originaux, il peut également fonctionner avec une <strong>copie</strong> de ces CD, voir même avec une <strong>image</strong> du CD obtenue avec un logiciel de gravure (aux formats ex: ISO, CUE, etc).<br />
Si vous n&#8217;arrivez vraiment pas à créer cette image, sachez qu&#8217;en cherchant un peu sur la toile, on peut aisément trouver tous les jeux sortis de cette console disponibles en <strong>téléchargement gratuit</strong> (<strong>illégal</strong> si vous ne possédez pas la copie originale!)</p>
<h3>Le must du must : y jouer avec votre manette Dualshock.</h3>
<p>Non, vous ne rêvez pas: c&#8217;est possible, grace à la magie de l&#8217;USB !<br />
Il faudra par contre vous y prendre un peu à l&#8217;avance car ceci nécessite l&#8217;acquisition d&#8217;un <strong>adaptateur</strong> USB, qui coûte cependant rarement plus de 10€, et est extrêmement facile à trouver sur ebay.</p>
<p>Les avantages sont énormes : vous pourrez brancher jusqu&#8217;à <strong>quatre</strong> manettes Playstation, celles-ci sont parfaitement supportée par la plupart des émulateurs, et, comble de tout: la fonction Rumble (vibration) des manettes fonctionne comme un charme, vous permettant de retrouver toutes les sensations de vos jeux préférés, dans les oindres détails !</p>
<div id="attachment_911" class="wp-caption aligncenter" style="width: 462px"><a href="http://geekfault.org/wp-content/uploads/2009/06/psx.jpg" title="psx" rel="lightbox.857"><img src="http://geekfault.org/wp-content/uploads/2009/06/psx.jpg" alt="Réalisé sans trucages, ni Windows." title="psx" width="452" height="332" class="size-full wp-image-911" /></a><p class="wp-caption-text">Réalisé sans trucages, ni Windows.</p></div>
<p>Sous <strong>Ubuntu</strong>, le noyau Linux est déjà compilé avec le support complet de ces manettes, il suffit donc de brancher la manette, et elle sera directement reconnue !<br />
Sous <strong>Gentoo</strong> en revanche, il faudra s&#8217;assurer que votre noyeau comporte les éléments suivants :<br />
<code>Device Drivers  ---><br />
   Input device support  ---><br />
      {M}   Support for memoryless force-feedback devices<br />
      <m>   Joystick interface<br />
   [*] HID Devices  ---><br />
      </m><m>   USB Human Interface Device (full HID) support<br />
         </m><m> Pantherlord devices support<br />
         [*]   Pantherlord force feedback support<br />
   [*] USB support  ---><br />
      </m><m>   PlayStation 2 Trance Vibrator driver support</m></code></p>
<p>Pour les jeux capricieux qui ne fonctionnent pas avec des manettes analog comme la <strong>DualShock</strong> (ex : FFVII), pSX permet de faire passer votre manette pour n&#8217;importe quelle autre manette PSX, et de faire la conversion, comme le fait votre vraie console, mais en mieux car vous pourrez même y brancher une manette <strong>PS2</strong> ! (PS3 aussi mais je ne l&#8217;ai pas testé)<br />
Il est bien évidemment envisageable de faire de même avec n&#8217;importe quel Joystick ou manette USB.</p>
<h3>Conclusion</h3>
<p>Voilà, votre laptop est désormais capable de remplir toutes les fonctions de votre <strong>Playstation</strong>, et vous êtes parés à partir en vacances avec vos jeux préférés, et votre manette de jeu préférée (probablement une des meilleures manettes de console jamais conçue!)<br />
Votre console reste bien au chaud et <strong>à l&#8217;abri</strong> chez vous, et vous êtes prêts pour de longues nuits de <strong>nostalgie</strong> intense…</p>
<p>N&#8217;oubliez cependant pas de sortir un peu et de profiter de votre destination de voyage un minimum :p</p>
<p>Bonnes vacances à tous !</p>
<p>(et pour ceux qui pensent pouvoir résister à l&#8217;appel de leur vieil ami : FFVII, voici une petite <a href="http://www.youtube.com/watch?v=t7wJ8pE2qKU"><strong>vidéo</strong></a> qui devrait leur rappeller le contraire. Sans rancunes <img src='http://geekfault.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )</p>
<h3>À l&#8217;attention des gentooistes en x86_64 !</h3>
<p>La vie est dure quand on est en <strong>64bits</strong>, et si pcsx refuse totalement de compiler pour le moment, pSX n&#8217;est pas beaucoup plus conciliant.</p>
<p>En effet, ce logiciel nécessite une série de <strong>bibliothèques</strong> 32bits absentes dans portage, et en l&#8217;absence de port 64bits, on ne peut malheureusement pas s&#8217;en passer…<br />
La solution ? Elle ne va pas vous plaire: récupérer manuellement les fichiers chez un ami en 32bits, ou sur le site des ebuilds gentoo, voire des .deb ubuntu (ça reviens au même), puis les copier dans le répertoire <strong>/usr/lib32</strong>.</p>
<p>Pour vous éviter de refaire les manipulations répétitives que j&#8217;ai déjà faites, je vous ait créé un <a href='http://geekfault.org/wp-content/uploads/2009/06/psx_lib32tar.gz'><strong>tarball</strong></a> contenant tous les fichiers nécessaires.<br />
Pour ce faire, <strong>décompressez</strong> l&#8217;archive:<br />
<code>$ tar -xzvf pSX_lib32.tar.gz</code><br />
Ensuite, <strong>copiez</strong> les fichiers en reproduisant pour <u><strong>chaque</strong></u> répertoire la maneuvre suivante :<br />
<code>$ cd _répertoire_<br />
# cp * /usr/lib32</code><br />
Une fois cela fait, pSX devrait fonctionner correctement <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Liens Utiles</h3>
<ul>
<li><a href="http://doc.ubuntu-fr.org/emulateurs_console"><strong>Liste des émulateurs de diverses consoles, sous Gnu/Linux</strong></a> ( http://ubuntu-fr.org )</li>
<li><a href="http://doc.ubuntu-fr.org/psx"><strong>pSX</strong></a> ( http://ubuntu-fr.org )</li>
<li><a href="http://doc.ubuntu-fr.org/pcsx"><strong>pcsx</strong></a> ( http://ubuntu-fr.org )</li>
<li><a href="http://psxemulator.gazaxian.com/"><strong>Site officiel de pSX</strong></a> ( http://psxemulator.gazaxian.com )</li>
<li><a href="http://www.pcsx.net/"><strong>Site officiel de pcsx</strong></a> ( http://pcsx.net )</li>
</ul>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/03/27/keymap-linux-sous-windows/' rel='bookmark' title='Keymap Linux sous Windows'>Keymap Linux sous Windows</a></li>
<li><a href='http://geekfault.org/2009/05/31/chromium-google-chrome-sous-linux/' rel='bookmark' title='Chromium, le Google Chrome sous Linux sans émulation'>Chromium, le Google Chrome sous Linux sans émulation</a></li>
<li><a href='http://geekfault.org/2009/08/14/faille-critique-dans-tous-les-noyaux-linux/' rel='bookmark' title='Faille critique dans tous les noyaux Linux'>Faille critique dans tous les noyaux Linux</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2009/06/30/playstation/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>S&#8217;authentifier avec une clé USB</title>
		<link>http://geekfault.org/2009/05/19/authentification-avec-une-cle-usb/</link>
		<comments>http://geekfault.org/2009/05/19/authentification-avec-une-cle-usb/#comments</comments>
		<pubDate>Tue, 19 May 2009 20:48:32 +0000</pubDate>
		<dc:creator>koolfy</dc:creator>
				<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mot de passe]]></category>
		<category><![CDATA[sécurité]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=583</guid>
		<description><![CDATA[Il existe beaucoup de raisons pour ne pas avoir envie d&#8217;entrer son mot de passe. Pas toutes bonnes, j&#8217;en conviens, mais lorsque c&#8217;est le cas, se passer de mot de passe sans faire de son système un moulin peut devenir un vrai casse-tête… Que diriez-vous d&#8217;un compromis parfait qui garantit de ne pas sacrifier une [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
<li><a href='http://geekfault.org/2009/05/15/ssh-sans-mot-de-passe/' rel='bookmark' title='SSH sans mot de passe'>SSH sans mot de passe</a></li>
<li><a href='http://geekfault.org/2012/05/08/comment-faire-un-initram-minimal-avec-mode-rescue/' rel='bookmark' title='Comment faire un Initram minimal avec mode rescue'>Comment faire un Initram minimal avec mode rescue</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft size-full wp-image-590" title="hardware-usb-storage-256x256" src="http://geekfault.org/wp-content/uploads/2009/05/hardware-usb-storage-256x256.png" alt="hardware-usb-storage-256x256" width="142" height="142" />Il existe beaucoup de raisons pour ne pas avoir envie d&#8217;entrer son <strong>mot de passe</strong>. Pas toutes bonnes, j&#8217;en conviens, mais lorsque c&#8217;est le cas, se passer de mot de passe sans faire de son système un <strong>moulin</strong> peut devenir un vrai casse-tête…</p>
<p>Que diriez-vous d&#8217;un <strong>compromis</strong> parfait qui garantit de ne pas sacrifier une once de <strong>sécurité</strong>, tout en s&#8217;authentifiant simplement avec la touche <strong>enter</strong> et une <strong>clé USB</strong> ? </p>
<p>Oui, avec <strong>Linux</strong>, c&#8217;est possible !<!--more--></p>
<h3>su *enter* *mot de passe* … Ou Pas.</h3>
<p>En réalité, il existe très peu de prétextes valables pour ne pas tapper son mot de passe. Les seuls cas qui se sont présentés à moi sont :</p>
<ul>
<li>Se rendre à une conférence informatique (type FOSDEM) où on sait très bien que beaucoup de <strong>curieux</strong> scrutent par réflexe votre écran, et que leur regard est —toujours par réflexe— dévié vers votre <strong>clavier</strong> lorsqu&#8217;ils lisent «password:» dans votre console.</li>
<li>Se trouver dans une situation de<strong> stress</strong> face à un supérieur où, à l&#8217;heure de présenter un travail, s&#8217;y reprendre à 4 fois pour se logger ne fait pas très <strong>sérieux</strong>…</li>
<li>Faire des études orientées vers l&#8217;informatique où on cottoie quotidiennement des <strong>individus</strong> pour qui «un mot de passe de 17 <strong>caractères</strong>» équivaut à «17 <strong>jours</strong> avant la blague la <span style="text-decoration: line-through;">plus</span><strong>moins</strong> drôle de votre vie» à raison d&#8217;une touche à <strong>mémoriser</strong> par jour…</li>
</ul>
<p>Si je n&#8217;ait pas cité la «<strong>flemme</strong>», c&#8217;est tout simplement parceque celle-ci est l&#8217;ennemie de la <strong>sécurité</strong>, et ce depuis la nuit des temps.</p>
<h3>1001 idées pour anéantir toute forme de sécurité</h3>
<p>Des alternatives au traditionnel mot de passe, ça fait des années qu&#8217;on en cherche,voici un petit tour d&#8217;horizon des diverses possibilités.</p>
<ul>
<li><strong>Pas de mot de passe </strong>(!) : Probablement l&#8217;extrême dans la facilité, mais aussi dans la <strong>stupidité</strong>. Ça équivaut à laisser sa voiture ouverte, clé sur le contact, moteur en marche, en tête de file à un feu rouge. Si je prend tout de même la peine de la citer, c&#8217;est que grâce à <strong>Windows</strong>, c&#8217;est la méthode d&#8217;authentification  la plus répandue à travers le monde.</li>
</ul>
<p>Voilà, rions un grand coup, et poursuivons avec les mauvaises idées qui ont le mérite d&#8217;être <strong>sérieuses</strong> <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<ul>
<li><strong>Sudo</strong> : Si cet outil peut parfois avoir son utilité, il n&#8217;est ici d&#8217;aucune aide. Si le mdp utilisateur est de la même longueur que celui du root, il n&#8217;y a <strong>aucun avantage</strong>, sinon, cela reviens simplement à raccourcir le mdp root. Ceci n&#8217;est rien d&#8217;autre qu&#8217;une <strong>réduction du niveau</strong> de sécurité du système.</li>
<li><strong>Empreinte Digitale</strong> : Si la <strong>biométrie</strong> m&#8217;a longtemps semblé être l&#8217;ultime solution à notre problème, il ressort aujourd&#8217;hui que la plupart de ces procédés sont <strong>facilement compromis</strong>. J&#8217;ai donc renoncé à laiser mon mot de passe root sur tout ce que je touche (littéralement.), surtout depuis qu&#8217;un certain taiwanais a perdu un doigt <strong>et</strong> une voiture la même journée…</li>
<li><strong>Reconnaissance Faciale</strong> : Le meilleur moyen de faire du moindre appareil photo votre pire ennemi…</li>
</ul>
<p>Et c&#8217;est quand on pense avoir cherché partout qu&#8217;on s&#8217;apperçoit que la solution est bien plus simple…</p>
<h3>Trouver clé à sa serrure</h3>
<p>Après des décénies, des siècles d&#8217;existence et d&#8217;évolution, avec quoi ouvrez-vous votre porte d&#8217;entrée ? Une<strong> clé</strong>, évidemment. Alors pourquoi ne pas en faire de même pour votre ordinateur ?</p>
<p>Cela tombe bien, il existe un homonyme informatique qui est également un petit object, transportable dans une poche <strong>toujours avec soi</strong>, muni d&#8217;un <strong>identifiant unique</strong> et très difficilement falsifiable, qui en plus permet de stoquer des données : la <strong>clé USB</strong>.</p>
<p>Le principe est simple: le système enregistre le <strong>numéro d&#8217;identification</strong> de la clé USB et au moment de s&#8217;identifier, si il la trouve <strong>branchée</strong> sur votre systême, il lit quelques données cryptées qu&#8217;il y aura placé comme confirmation. Si tout est en ordre, il considère que vous avez <strong>prouvé</strong> votre identité, dans le cas contraire, il vous demande votre mot de passe.</p>
<div id="attachment_626" class="wp-caption aligncenter" style="width: 384px"><a href="http://geekfault.org/wp-content/uploads/2009/05/capture-733.png" title="pamusb" rel="lightbox.583"><img class="size-full wp-image-626" title="pamusb" src="http://geekfault.org/wp-content/uploads/2009/05/capture-733.png" alt="su, enter, et c'est tout !" width="374" height="135" /></a><p class="wp-caption-text">su, enter, et c&#39;est tout !</p></div>
<p>Ça fait maintenant plusieurs mois<strong> </strong>que ce procédé continue de faire ses preuves sur mon système, et que malgré toutes leurs tentatives aucun plaisantin n&#8217;est parvenu à obtenir/contourner mon mot de passe. (je ne compte pas la fois où je me suis imprudemment endormi à coté de mon laptop en laissant ma clé USB branchée…)</p>
<p>Et en cas de <strong>vol</strong> ? <strong>Don&#8217;t Panic</strong>, vous pouvez toujours accéder à votre système de façon traditionnelle, et modifier le seul fichier nécessaire à interdire l&#8217;authentification avec cette clé USB, enrayant toute initiative <strong>malveillante</strong>.</p>
<p>Une clé USB à <strong>brancher</strong>, appuyer sur <strong>enter</strong>. Aucune brèche dans la <strong>sécurité</strong>. Tous les objectifs sont atteints.</p>
<h3>Installation : 2 min,  Configuration : 3 min, la Sécurité : ça n&#8217;a pas de prix.</h3>
<p>Contrairement à la plupart de ce qui touche de près ou de loin à la sécurité, c&#8217;est très <strong>simple</strong> à mettre en place.</p>
<p>Tout d&#8217;abord, installez dans votre distribution préférée les packages relatifs à «Pam usb»</p>
<p>Sous <strong>Gentoo</strong> :<br />
<code># echo "sys-auth/pam_usb" >> /etc/portage/package.keywords<br />
# emerge sys-auth/pam_usb</code><br />
Sous <strong>Ubuntu</strong> :<br />
<code>$ sudo apt-get libpam-usb pamusb-tools</code></p>
<h3>Ajouter une Clé USB</h3>
<p>Pour cela il vous suffit de lancer la commande suivante où &#8220;<strong>NomDeMaClé</strong>&#8221; représente le nom que vous voulez assigner à cette clé pour vous y retrouver.</p>
<p><code># pamusb-conf --add-device=NomDeMaClé</code></p>
<p>Il vous affichera un <strong>résumé</strong> des données qu&#8217;il a récupéré de la clé USB détectée et vous demandera de <strong>confirmer</strong> qu&#8217;il s&#8217;agit bien de la clé à ajouter :<br />
<code>Please select the device you wish to add.<br />
* Using " USB Flash Memory (0930_USB_Flash_Memory_07652723938-0:0)" (only option)</p>
<p>Which volume would you like to use for storing data ?<br />
* Using "/dev/sdc1 (UUID: e5ff07ac-a517-4dae-9468-d9d0b309ee62)" (only option)</p>
<p>Name            : NomDeMaClé<br />
Vendor          : Unknown<br />
Model           : USB Flash Memory<br />
Serial          : 0930_USB_Flash_Memory_07652723938-0:0<br />
UUID            : e5ff07ac-a517-4dae-9468-d9d0b309ee62</p>
<p>Save to /etc/pamusb.conf ?<br />
[Y/n]y<br />
Done.</code><br />
Vous pouvez répéter cette opération avec autant de clés que vous voulez. Pour plus de sécurité, je vous conseille de n&#8217;en ajouter qu&#8217;<strong>une seule</strong>.</p>
<h3>Ajouter un utilisateur</h3>
<p>Il vous est très facilement possible de spécifier quels <strong>utilisateurs</strong> pourront s&#8217;identifier avec cette clé :<br />
<code># pamusb-conf --add-user koolfy</code><br />
pamusb vous proposera de confirmer à nouveau :<br />
<code>Which device would you like to use for authentication ?<br />
* Using "NomDeMaClé" (only option)<br />
User            : koolfy<br />
Device          : NomDeMaClé<br />
Save to /etc/pamusb.conf ?<br />
[Y/n] y<br />
Done.</code><br />
Je vous conseille de vous contenter de votre <strong>user </strong>et de votre <strong>root</strong>.</p>
<h3>Adapter l&#8217;authentification</h3>
<p>Il faut maintenant que le module d&#8217;authentification du système ajoute l&#8217;authentification par USB comme «<strong>optionelle</strong> et <strong>suffisante</strong>», ce qui se fait en éditant le fichier <strong>/etc/pam.d/system-auth</strong> ( <strong>/etc/pam.d/common-auth</strong> sous Ubutu) et en lui rajoutant comme première ligne :<br />
<code>auth       sufficient           pam_usb.so</code></p>
<p>Et voilà ! C&#8217;est dans la poche.</p>
<p>Si vous voulez forcer l&#8217;authentification par USB, remplacez «<strong>sufficient</strong>» par «<strong>required</strong>» dans la ligne précédente.</p>
<h3>Changer la serrure</h3>
<p>En cas de <strong>perte</strong> ou de <strong>vol</strong> de votre clé, <strong>changer de serrure</strong> est aussi simple que d&#8217;effacer la section <code><device id="NomDeMaClé"></device></code> ainsi que ses références dans la section <code><users></users></code> de <strong>/etc/pamusb.conf</strong></p>
<h3>Quelques conseils de survie</h3>
<ul>
<li><strong>Toujours savoir</strong> ou se trouve votre servi… euh, votre clé USB</li>
<li><strong>Ne jamais la confier</strong> à personne qui ne soit digne de <strong>confiance</strong></li>
<li><strong>Ne jamais s&#8217;endormir</strong> à coté de votre laptop en laissant la clé USB branchée</li>
<li><strong>Si vous comptez vous saouler</strong>, toujours confier votre clé à une <strong>fille</strong> de <strong>confiance</strong> qui <strong>ignore tout</strong> de l&#8217;importance de la clé.</li>
</ul>
<p>Si vous respectez ces quelques règles simples, vous devriez pouvoir dormir sur vos deux oreilles <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Liens et références</h3>
<ul>
<li><a href="http://pamusb.org/">Site du projet PamUSB</a> ( http://pamusb.org )</li>
<li><a href="http://en.gentoo-wiki.com/wiki/Pam_usb_authentication">Tutoriel Gentoo</a> ( http://en.gentoo-wiki.com )</li>
<li><a href="http://doc.ubuntu-fr.org/tutoriel/pam-usb">Tutoriel Ubuntu</a> ( http://doc.ubuntu-fr.org )</li>
</ul>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
<li><a href='http://geekfault.org/2009/05/15/ssh-sans-mot-de-passe/' rel='bookmark' title='SSH sans mot de passe'>SSH sans mot de passe</a></li>
<li><a href='http://geekfault.org/2012/05/08/comment-faire-un-initram-minimal-avec-mode-rescue/' rel='bookmark' title='Comment faire un Initram minimal avec mode rescue'>Comment faire un Initram minimal avec mode rescue</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2009/05/19/authentification-avec-une-cle-usb/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Mise en place d&#8217;un système de backup avec Rsnapshot</title>
		<link>http://geekfault.org/2009/05/16/rsnapshot/</link>
		<comments>http://geekfault.org/2009/05/16/rsnapshot/#comments</comments>
		<pubDate>Sat, 16 May 2009 14:15:28 +0000</pubDate>
		<dc:creator>bragon</dc:creator>
				<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=511</guid>
		<description><![CDATA[rsnapshot la solution pour backuper incrémentalement en local ou à distance.
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/10/24/backup-dun-compte-gmail/' rel='bookmark' title='Backup d&#8217;un compte Gmail'>Backup d&#8217;un compte Gmail</a></li>
<li><a href='http://geekfault.org/2012/05/08/comment-faire-un-initram-minimal-avec-mode-rescue/' rel='bookmark' title='Comment faire un Initram minimal avec mode rescue'>Comment faire un Initram minimal avec mode rescue</a></li>
<li><a href='http://geekfault.org/2009/05/15/ssh-sans-mot-de-passe/' rel='bookmark' title='SSH sans mot de passe'>SSH sans mot de passe</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_527" class="wp-caption alignleft" style="width: 310px"><a href="http://geekfault.org/wp-content/uploads/2009/05/rsnapshot1.png" title="Schéma de la solution à déployer" rel="lightbox.511"><img src="http://geekfault.org/wp-content/uploads/2009/05/rsnapshot1-300x195.png" alt="Schéma de la solution à déployer" title="Schéma de la solution à déployer" width="300" height="195" class="size-medium wp-image-527" /></a><p class="wp-caption-text">Schéma de la solution à déployer</p></div>Qui ne s&#8217;est jamais retrouvé dans la merde après ne pas avoir sauvegardé ses données? Je vous propose aujourd&#8217;hui un petit tutoriel qui va vous permettre d&#8217;effectuer des backups réguliers sous GNU/Linux.</p>
<p>Avec <strong>rsnapshot</strong> il est possible de faire des <strong>backups locaux</strong> (une copie régulière d&#8217;un disque sur un autre) ou des <strong>backups distants</strong> (via une connexion SSH), soit les deux en même temps !<br />
<!--more--></p>
<h3>Principe de Rsnapshot</h3>
<p>Basé sur <strong>SSH et rsync</strong>, rsnapshot est en fait une boite à outil. Pour ceux qui ne connaissent pas rsync, c&#8217;est un outil de synchronisation de fichiers libre et puissant qui ne copie que les différences entre deux backups, et non l&#8217;entièreté du système, pour économiser de la bande passante.</p>
<p>Rsnapshot est un logiciel qui tourne <strong>sur le serveur de backup</strong>. La machine qui se voit ainsi sauvegardée est totalement passive, il faut juste qu&#8217;elle ait un serveur SSH activé.</p>
<p>Quelques scripts rsync/ssh pourraient évidemment faire la même chose que rsnapshot, mais rsnapshot est fiable et sa configuration triviale, alors pourquoi s&#8217;en passer?</p>
<h3>Installation</h3>
<p><strong>Première étape</strong> : Installez rsnapshot sur le serveur où seront stockés les backups. Je ne décris pas cette installation qui est triviale et propre à chaque distribution.</p>
<p><strong>Deuxième étape</strong> : Permettez à ce serveur de se connecter automatiquement en SSH sur la machine à sauvegarder. Je vous renvoie vers l&#8217;article <a href="http://geekfault.org/2009/05/15/ssh-sans-mot-de-passe/"><strong>SSH sans mot de passe</strong></a> qui explique comment générer une paire de clés publique/privée afin de chiffrer la connexion SSH avec le protocole RSA.</p>
<p><strong>Troisième étape</strong> (facultative) : Modifiez votre fichier <strong>/etc/hosts</strong>, qui permet d&#8217;utiliser des short-names dans la configuration de rsnapshot (c&#8217;est plus propre et plus joli).</p>
<p><strong>Quatrième étape</strong> : Configurez rsnapshot dans <strong>/etc/rsnapshot.conf</strong>. Vous pouvez vous inspirer de <a href="http://geekshell.org/~bragon/doku/doku.php?id=rsnapshot.conf#rsnapshot.conf">cet exemple</a>.</p>
<h3>Lancer le backup</h3>
<p>Vous êtes maintenant prêt pour votre premier backup! Lancez la commande suivante:<br />
<code>/usr/bin/rsnapshot -cv /etc/rsnapshot.conf daily</code></p>
<p>Si tout se passe bien, vous n&#8217;avez plus qu&#8217;à ajouter cette commande à votre <strong>crontab</strong> afin d&#8217;automatiser la procédure.</p>
<h3>Problèmes connus</h3>
<ul>
<li>La toute première connection ssh du serveur de backup vers la machine à backuper doit être établi manuellement.</li>
<li>Le fichier <em>rsnapshot.conf</em> doit être réécrit en séparant les valeurs avec des <strong>tabulations</strong>. Si vous ne remplacez pas les espaces par des tabulations, rsnapshot ne fonctionnera pas.</li>
</ul>
<h3>Liens de référence</h3>
<ul>
<li><a href="http://rsnapshot.org" target="_blank">Site du projet</a></li>
<li><a href="http://geekshell.org/~bragon/doku/doku.php?id=rsnapshot.conf">Exemple de configuration</a></li>
</ul>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/10/24/backup-dun-compte-gmail/' rel='bookmark' title='Backup d&#8217;un compte Gmail'>Backup d&#8217;un compte Gmail</a></li>
<li><a href='http://geekfault.org/2012/05/08/comment-faire-un-initram-minimal-avec-mode-rescue/' rel='bookmark' title='Comment faire un Initram minimal avec mode rescue'>Comment faire un Initram minimal avec mode rescue</a></li>
<li><a href='http://geekfault.org/2009/05/15/ssh-sans-mot-de-passe/' rel='bookmark' title='SSH sans mot de passe'>SSH sans mot de passe</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2009/05/16/rsnapshot/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SSH sans mot de passe</title>
		<link>http://geekfault.org/2009/05/15/ssh-sans-mot-de-passe/</link>
		<comments>http://geekfault.org/2009/05/15/ssh-sans-mot-de-passe/#comments</comments>
		<pubDate>Fri, 15 May 2009 15:49:54 +0000</pubDate>
		<dc:creator>Tito</dc:creator>
				<category><![CDATA[Création Geekfault]]></category>
		<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mot de passe]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[rsa]]></category>
		<category><![CDATA[sécurité]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=341</guid>
		<description><![CDATA[Après avoir vu comment facilement utiliser un tunnel SSH comme proxy pour toutes vos connexions, voilà un moyen simple de ne plus avoir à rentrer son mot de passe lors de la connexion SSH et donc de pouvoir automatiser certaines connexions. Je n&#8217;ai pas trouvé de tutoriel clair et concis en français sur Google alors le [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
<li><a href='http://geekfault.org/2010/12/05/devenez-miroir-de-wikileaks-sans-risque/' rel='bookmark' title='Devenez miroir de Wikileaks sans risque (corrigé)'>Devenez miroir de Wikileaks sans risque (corrigé)</a></li>
<li><a href='http://geekfault.org/2009/05/19/authentification-avec-une-cle-usb/' rel='bookmark' title='S&#8217;authentifier avec une clé USB'>S&#8217;authentifier avec une clé USB</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2009/05/serveur-150x150.png" alt="Principe du chiffrement asymétrique" title="Principe du chiffrement asymétrique" width="150" height="150" class="alignleft size-thumbnail wp-image-363" />Après avoir vu <a href="http://geekfault.org/2009/05/14/tunnel-ssh/">comment facilement utiliser un  tunnel SSH comme proxy</a> pour toutes vos connexions, voilà un moyen simple de <strong>ne plus avoir à rentrer son mot de passe</strong> lors de la connexion SSH et donc de pouvoir automatiser certaines connexions.</p>
<p>Je n&#8217;ai pas trouvé de tutoriel clair et concis en français sur Google alors le voici.<br />
<!--more--></p>
<h3>Le principe</h3>
<p>Cette astuce ne consiste pas à encoder votre mot de passe en clair quelque part sur votre poste client. Il est basé sur un <strong>échange de clés de cryptage</strong> <a href="http://fr.wikipedia.org/wiki/Rivest_Shamir_Adleman">RSA</a> entre le serveur et le client.</p>
<div style="text-align: center;"><img src="http://geekfault.org/wp-content/uploads/2009/05/cle-rsa.png" alt="Principe du chiffrement asymétrique" title="Principe du chiffrement asymétrique" width="580" height="180" class="alignnone size-full noborder wp-image-363" /></div>
<p>Le cryptage RSA repose sur une paire de clés : une publique et une privée. Vous l&#8217;aurez compris, la clé privée reste sur votre ordinateur client et vous pouvez partager votre clé publique avec tous les serveurs sur lesquels vous souhaites vous authentifier.</p>
<p>Lors de chaque connexion, <strong>le serveur chiffre une chaine de caractères aléatoire</strong> avec la clé publique. Seule la clé privée est suffisante pour <strong>déchiffrer</strong> cette chaine de caractères et la transmettre au serveur (sans risque puisque les transmissions SSH sont elles-mêmes cryptées). C&#8217;est le principe de toutes les procédures d&#8217;authentification (GnuPG, BeID, cartes bancaires, &#8230;)</p>
<h3>Générer les clés de cryptage</h3>
<p>Il faut donc, sur le cient, générer les <strong>clés RSA</strong> qui lui permettront de signer. Il existe d&#8217;autres types de clés mais le RSA est simple et sécurisé.<br />
<code>$ ssh-keygen -t rsa</code></p>
<p>Une <strong>passphrase</strong> permet d&#8217;avoir un seul mot de passe pour toutes vos connexions SSH, même si le vrai mot de passe de connexion est différent sur chaque serveur. Si vous ne voulez pas utiliser de passphrase pour une connexion entièrement automatisée, <strong>tapez simplement <em>enter</em></strong>.</p>
<h3>Copier la clé publique sur le serveur</h3>
<p>Il faut maintenant <strong>copier la clé publique</strong> générée sur le serveur SSH, pour qu&#8217;il puisse bien vérifier que c&#8217;est vous qui signez la demande de connexion. On le fait par un petit <em>scp</em> (copie de fichier sur SSH):<br />
<code>$ scp ~/.ssh/id_rsa.pub utilisateur@serveur:~/.ssh/authorized_keys</code></p>
<p>Et voilà! C&#8217;est tout! Vous pouvez maintenant vous connecter sur votre serveur SSH sans mot de passe:<br />
<code>ssh utilisateur@serveur</code></p>
<h3>Exécuter une commande sur le SSH</h3>
<p>Une dernière petite astuce, si vous souhaitez <strong>directement exécuter une commande sur le serveur SSH</strong>, utilisez le paramètre<br />
<em>-t</em>. Par exemple, pour ouvrir votre screen IRC:<br />
<code>$ ssh utilisateur@serveur -t screen -x irc</code></p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
<li><a href='http://geekfault.org/2010/12/05/devenez-miroir-de-wikileaks-sans-risque/' rel='bookmark' title='Devenez miroir de Wikileaks sans risque (corrigé)'>Devenez miroir de Wikileaks sans risque (corrigé)</a></li>
<li><a href='http://geekfault.org/2009/05/19/authentification-avec-une-cle-usb/' rel='bookmark' title='S&#8217;authentifier avec une clé USB'>S&#8217;authentifier avec une clé USB</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2009/05/15/ssh-sans-mot-de-passe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Le tunnel SSH facile</title>
		<link>http://geekfault.org/2009/05/14/tunnel-ssh/</link>
		<comments>http://geekfault.org/2009/05/14/tunnel-ssh/#comments</comments>
		<pubDate>Wed, 13 May 2009 22:06:24 +0000</pubDate>
		<dc:creator>Tito</dc:creator>
				<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[HowTo]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tunnel]]></category>
		<category><![CDATA[vpn]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=309</guid>
		<description><![CDATA[Un tunnel SSH permet d&#8217;utiliser n&#8217;importe quel serveur SSH comme proxy. C&#8217;est une alternative intéressante à certaines utilisations d&#8217;un VPN (et bien plus facile à mettre en oeuvre): Accéder au réseau local du serveur SSH Se balader sur internet avec l&#8217;IP du serveur SSH Contourner un firewall trop restrictif Sécuriser ses communications sur un réseau public douteux [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/27/internet-via-iphone/' rel='bookmark' title='Internet sur votre laptop via un iPhone'>Internet sur votre laptop via un iPhone</a></li>
<li><a href='http://geekfault.org/2009/05/15/ssh-sans-mot-de-passe/' rel='bookmark' title='SSH sans mot de passe'>SSH sans mot de passe</a></li>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://geekfault.org/wp-content/uploads/2009/05/tunnel-ssh.jpg" title="tunnel-ssh" rel="lightbox.309"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="http://geekfault.org/wp-content/uploads/2009/05/tunnel-ssh-300x218.jpg" alt="tunnel-ssh" title="tunnel-ssh" width="300" height="218" class="alignleft size-medium wp-image-312" /></a>Un tunnel SSH permet d&#8217;utiliser <strong>n&#8217;importe quel serveur SSH comme proxy</strong>. C&#8217;est une alternative intéressante à certaines utilisations d&#8217;un VPN (et bien plus facile à mettre en oeuvre):</p>
<ul>
<li>Accéder au <strong>réseau local</strong> du serveur SSH</li>
<li>Se balader sur internet <strong>avec l&#8217;IP du serveur</strong> SSH</li>
<li><strong>Contourner un firewall</strong> trop restrictif</li>
<li><strong>Sécuriser ses communications</strong> sur un réseau public douteux</li>
</ul>
<p>Roidelapluie m&#8217;a aujourd&#8217;hui montré à quel point il était facile de créer un tunnel SSH remplissant ces fonctions.<br />
<!--more--></p>
<h3>Le serveur proxy</h3>
<p><img style=' float: right; padding: 4px; margin: 0 0 2px 7px;' align="right"   src="http://geekfault.org/wp-content/uploads/2009/05/laptop-150x150.png" alt="laptop" title="laptop" width="150" height="150" class="alignright size-thumbnail wp-image-322" />Prérequis : un accès utilisateur sur un serveur SSH. J&#8217;appellerai <em>client</em> l&#8217;ordinateur sur lequel vous êtes et <em>serveur</em> le serveur SSH.</p>
<p>L&#8217;idée générale est donc de faire tourner <strong>sur le client</strong> un <strong>serveur proxy</strong> relayant toutes les connexions vers le serveur. Cela se fait en une seule commande:<br />
<code>ssh -ND 9999 utilisateur@serveur</code><br />
Une fois authentifié sur le serveur SSH, laissez l&#8217;invite de commande tourner. Vous avez désormais un <strong>serveur proxy SOCKS</strong> (compatible v4 et v5) tournant sur <em>localhost:9999</em></p>
<h3>Les applications clientes</h3>
<p>Vous pouvez maintenant simplement régler votre système, votre navigateur ou toute autre application pour utiliser un serveur proxy <strong>SOCKS</strong>, uniquement SOCKS. Vous pouvez par exemple vérifier que ça a bien fonctionné pour Firefox en comparant <a href="http://myip.dk">votre IP</a> avant et après.</p>
<div style="text-align: center;"><img src="http://geekfault.org/wp-content/uploads/2009/05/your-ip.jpg" alt="your-ip" title="your-ip" width="533" height="222" class="size-full wp-image-315" /></div>
<p>Si le logiciel que vous souhaitez faire passer dans le tunnel ne supporte pas les proxys ou que vous voulez quelque chose de plus universel qu&#8217;un réglage logiciel au cas par cas, vous pouvez installer <strong>proxychains</strong>. Modifiez la dernière ligne de /etc/proxychains.conf pour qu&#8217;elle ressemble à ceci:<br />
<code>socks5 127.0.0.1 9999</code></p>
<p>Il suffit ensuite de lancer l&#8217;application en ajoutant proxychains avant la commande:<br />
<code>proxychains links2 "http://myip.dk"</code></p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/27/internet-via-iphone/' rel='bookmark' title='Internet sur votre laptop via un iPhone'>Internet sur votre laptop via un iPhone</a></li>
<li><a href='http://geekfault.org/2009/05/15/ssh-sans-mot-de-passe/' rel='bookmark' title='SSH sans mot de passe'>SSH sans mot de passe</a></li>
<li><a href='http://geekfault.org/2009/05/16/rsnapshot/' rel='bookmark' title='Mise en place d&#8217;un système de backup avec Rsnapshot'>Mise en place d&#8217;un système de backup avec Rsnapshot</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2009/05/14/tunnel-ssh/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>MPD : Le démon des media players.</title>
		<link>http://geekfault.org/2009/04/19/mpd-le-demon-des-media-players/</link>
		<comments>http://geekfault.org/2009/04/19/mpd-le-demon-des-media-players/#comments</comments>
		<pubDate>Sun, 19 Apr 2009 16:44:03 +0000</pubDate>
		<dc:creator>koolfy</dc:creator>
				<category><![CDATA[Logiciel]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[bliothèque]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[musique]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://geekfault.org/?p=210</guid>
		<description><![CDATA[Lorsqu&#8217;on a fini une installation Linux, et que les aspects de base du système semblent fonctionnels, on entre dans une quête perpétuelle du confort optimal, cela inclut des heures de recherches du Window Manager qui nous convient, des semaines à retourner le web à la recherche du thème parfait, puis des applications favorites, et enfin, [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/19/authentification-avec-une-cle-usb/' rel='bookmark' title='S&#8217;authentifier avec une clé USB'>S&#8217;authentifier avec une clé USB</a></li>
<li><a href='http://geekfault.org/2010/04/09/maildir-mbox-la-migration/' rel='bookmark' title='Maildir mbox &#8211; La migration'>Maildir mbox &#8211; La migration</a></li>
<li><a href='http://geekfault.org/2010/04/09/filtrer-ses-mails-un-cauchemard/' rel='bookmark' title='Filtrer ses mails ! Un cauchemard !'>Filtrer ses mails ! Un cauchemard !</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft size-full wp-image-211" title="MPD" src="http://geekfault.org/wp-content/uploads/2009/04/wiki.png" alt="MPD" width="135" height="155" /> Lorsqu&#8217;on a fini une installation Linux, et que les aspects de base du système semblent fonctionnels, on entre dans une quête perpétuelle du confort optimal, cela inclut des heures de recherches du Window Manager qui nous convient, des semaines à retourner le web à la recherche du thème parfait, puis des applications favorites, et enfin, du parfait <strong>media player</strong>.</p>
<p>Si pour vous comme pour moi, cette quête a duré des années, cherchant le parfait compromis entre configuration, maniabilité, esthétique, fonctionalité, consomation de ressources, et intégration au reste du système, et que votre player actuel vous semble encore n&#8217;être qu&#8217;un choix de résignation, <strong>Music Player Daemon</strong> pourrait être le miracle que vous n&#8217;espériez plus.<!--more--></p>
<h3>La théorie de l&#8217;éternelle lacune.</h3>
<p>Dans cette quête, le premier choc est&#8230; l&#8217;éventail de choix disponible. Si dans un premier temps il semble rassurant de réaliser qu&#8217;on partage cette quête avec beaucoup de gens et que, par conséquent, il existe un très grand nombre de logiciels répondant chacun à des critères, et à des besoins très différents, on se heurte très vite à la <strong>théorie de l&#8217;éternelle lacune</strong>.</p>
<p>Celle-ci résulte de mes expériences personelles et tire sa signification du constat simple que quel que soit le media player testé, il semble <em>toujours</em> lui manquer un critère qui vous semble essentiel. Voici quelques exemples appliqués à <em>mes</em> exigeances et <em>mes</em> observations, libre à vous de ne pas partager ces avis. (Je précise que je me focalise ici sur les défauts de ces players, omettant leurs nombreuses qualités, n&#8217;étant pas pertinentes dans cet article.)</p>
<ul>
<li><strong>Amarok</strong> : Lourd, trop de dépendances liées à KDE, interface quelque peu étrange, et vraiment, vraiment trop lourd.</li>
</ul>
<ul>
<li><strong>Banshee</strong> : Dépends de Mono (au delà des trolls, dans les faits, mono est responsable de beaucoup de comportements &#8220;étranges&#8221; de Banshee, et est tout sauf une base &#8220;saine&#8221; pour un media player léger et efficace.)</li>
</ul>
<ul>
<li><strong>Rhythmbox</strong> : Presque ce qu&#8217;il me fallait ! Mais à la longue l&#8217;absence de browsing par arborescence de fichiers pour établir des playlist est devenue pesante, ainsi que quelques reproches de confort qui me sont propres.</li>
</ul>
<ul>
<li><strong>Exaile</strong> : Pour peu que vos tags IDV3  ne soient pas Parfaitement réglés, établir une playlist à thème risque d&#8217;être particulièrement douloureux&#8230; (Dommage, tellement dommage.)</li>
</ul>
<ul>
<li><strong>Audacious</strong> : Malheureusement, son interface et ses fonctions ne correspondent plus exactement à une utilisation moderne et efficace des médias de nos jours&#8230; (ceci est bien sûr totalement subjectif)</li>
<li><strong>Aqualung</strong> : Très prometteur mais encore quelques problèmes à régler dans l&#8217;interface et la gestion des bilbiothèques de médias</li>
</ul>
<ul>
<li> <strong>Mocp :</strong> S&#8217;amuse à me planter à la figure quand ça lui chante.</li>
</ul>
<ul>
<li>(&#8230;)</li>
</ul>
<p>Tout ceci m&#8217;a conduit à la conclusion suivante : un seul player ne répondra jamais à mes attentes.</p>
<h3>La réponse : diviser pour mieux écouter</h3>
<p><strong>MPD</strong> offre une approche radicalement différente : décentraliser la lecture des médias <span style="text-decoration: underline;">hors</span> du logiciel de lecture, et déléguer la gestion des médias à un démon (tâche tournant en toîle de fond).</p>
<p>Dans la pratique, cela signifie simplement que MPD n&#8217;est que le &#8220;moteur&#8221; de votre média player, et que l&#8217;application avec laquelle vous contrôlerez MPD s&#8217;y connectera par protocole TCP, comme à un serveur.</p>
<p>Il existe un nombre surprenant de plugins/add-ons de toutes sortes ajoutant le &#8220;support de MPD&#8221; à différentes d&#8217;applications, comme la plupart des Windows Managers, certains moniteurs système (gkrellm, etc) ainsi que des logiciels de messagerie instantanée (Amsn, Pidgin), vous perméttant de passer à la musique précédente/suivante, de faire pause ou de récupérer la musique écoutée et l&#8217;afficher.</p>
<p><img class="size-medium wp-image-235 alignright" align="right"  style="border: 1px solid #000000;;  float: right; padding: 4px; margin: 0 0 2px 7px;" title="Ncmpcpp, un client mpd très puissant en mode texte." src="http://geekfault.org/wp-content/uploads/2009/04/ncmpcpp-300x225.jpg" alt="Ncmpcpp, un client mpd très puissant en mode texte." width="210" height="158" />Cette non-dépenance d&#8217;un client graphique permet également de se passer de serveur X, ainsi, à l&#8217;instar de MOCP, il vous sera possible de &#8220;Tuer&#8221; X ou de ne pas le lancer du tout, sans que cela n&#8217;affecte la lecture de vos médias préférés. Il est même possible d&#8217;installer MPD sur une machine distante et d&#8217;y accéder par internet/LAN.</p>
<p><strong>MPD offre un moteur de lecture de vos médias solide et flexible répondant à vos attentes, quelle que soit l&#8217;interface graphique que vous lui associerez, vous serez rassuré que le confort graphique et l&#8217;interface seront les seules variables restantes</strong>, étant donné que les exigeances de type &#8220;légèreté, peu de dépendances, pas besoin de serveur X, bonne gestion de bibliothèques multimedia, intégration au système&#8221; seront toujours assurées de la même façon quel que soit le client.</p>
<p>Fini les dilemmes entre, par exemple, la puissance de rhythmbox/exaile/amarok et l&#8217;interface textuelle légère de MOCP ! Il suffisait d&#8217;y penser.</p>
<h3>Les clients</h3>
<p>Il existe un très grand nombre de clients MPD, cela s&#8217;explique probablement par le fait qu&#8217;il est beaucoup plus simple de créer une façade qu&#8217;un logiciel multimédia complet, ceci permettant à des &#8220;concepts&#8221; d&#8217;interface graphique de voir le jour quand la perspective de devoir recréer un logiciel multimedia à partir de zéro aurait découragé son auteur.</p>
<p>Parmi mes préférés, je citerais :</p>
<ul>
<li><a href="http://unkart.ovh.org/ncmpcpp/" target="_blank"><strong>Ncmpcpp</strong></a> : Parcequ&#8217;un lecteur multimedia en console, ça a toujours plus de charme. (et qu&#8217;il est monstrueusement puissant.)</li>
</ul>
<ul>
<li><a href="http://emphasis.tuxfamily.org/" target="_blank"><strong>Emphasis</strong></a> : Un client utilisant la bilbiothèque graphique ETK (Enlightenment)</li>
</ul>
<p>Pour être franc, ncmpcpp me convient tellement que j&#8217;ai n&#8217;ai pas été plus loin dans mes recherches (c&#8217;est dire.), mais je vous invite à vous rendre <a href="http://mpd.wikia.com/wiki/Clients" target="_blank">ici</a> pour une liste impressionnante des clients MPD disponibles pour chaque environnement graphique.</p>
<h3>La configuration</h3>
<p>Elle se fait très simplement à partir du fichier /etc/mpd.conf très généreusement commenté, ci-joint un exemple de ma configuration:<br />
<code>######################## REQUIRED PATHS ########################<br />
music_directory                 "/home/koolfy/Son"<br />
playlist_directory              "/home/koolfy/Son/mpd/playlist"<br />
db_file                         "/home/koolfy/Son/mpd/database"<br />
log_file                        "/home/koolfy/Son/mpd/mpd.log"<br />
error_file                      "/home/koolfy/Son/mpd/mpd.error.log"<br />
####################### OPTIONAL PATHS ########################<br />
state_file "/home/koolfy/Son/mpd/state"<br />
pid_file                        "/home/koolfy/Son/mpd/mpd.pid"<br />
####################### DAEMON OPTIONS ########################<br />
user                            "koolfy"<br />
bind_to_address                 "localhost"<br />
port                            "6600"<br />
################################################################</p>
<p></code></p>
<h3>Pour plus d&#8217;informations</h3>
<ul>
<li> <a href="http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki" target="_blank">http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki</a></li>
<li><a href="http://fr.wikipedia.org/wiki/Music_Player_Daemon" target="_blank">http://fr.wikipedia.org/wiki/Music_Player_Daemon</a></li>
</ul>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2009/05/19/authentification-avec-une-cle-usb/' rel='bookmark' title='S&#8217;authentifier avec une clé USB'>S&#8217;authentifier avec une clé USB</a></li>
<li><a href='http://geekfault.org/2010/04/09/maildir-mbox-la-migration/' rel='bookmark' title='Maildir mbox &#8211; La migration'>Maildir mbox &#8211; La migration</a></li>
<li><a href='http://geekfault.org/2010/04/09/filtrer-ses-mails-un-cauchemard/' rel='bookmark' title='Filtrer ses mails ! Un cauchemard !'>Filtrer ses mails ! Un cauchemard !</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2009/04/19/mpd-le-demon-des-media-players/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>On a testé pour vous : Ubuntu Jaunty Jackalope 9.04</title>
		<link>http://geekfault.org/2009/03/28/ubuntu-jaunty-jackalope-9-04/</link>
		<comments>http://geekfault.org/2009/03/28/ubuntu-jaunty-jackalope-9-04/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 16:34:34 +0000</pubDate>
		<dc:creator>Tito</dc:creator>
				<category><![CDATA[Review]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mise à jour]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://geekfault.webtito.be/?p=109</guid>
		<description><![CDATA[Parce que je serai toujours téméréraire et Intrépide (huhu) pour vous, j&#8217;ai osé passer ma petite Ubuntu en Jaunty Jackalope 9.04. Elle est en effet sortie officiellement en Beta aujourd&#8217;hui et me semble assez sympa pour que je mette en péril mon installation fonctionnelle. Au programme: Mises à jour du Kernel (2.6.28), de Gnome (2.26) [...]
<h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/06/30/redshift-ne-vous-abimez-plus-les-yeux-la-nuit/' rel='bookmark' title='Redshift, ne vous abimez plus les yeux la nuit'>Redshift, ne vous abimez plus les yeux la nuit</a></li>
<li><a href='http://geekfault.org/2009/05/20/firmware-linksys-wag200g/' rel='bookmark' title='Firmware modifié pour Linksys WAG200G'>Firmware modifié pour Linksys WAG200G</a></li>
<li><a href='http://geekfault.org/2010/02/24/denyhosts-pour-empecher-le-bruteforce-sur-ssh/' rel='bookmark' title='DenyHosts pour empêcher le bruteforce sur SSH'>DenyHosts pour empêcher le bruteforce sur SSH</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft size-full wp-image-115" title="Ubuntu" src="/wp-content/uploads/2009/03/ubuntu.png" alt="Ubuntu" width="202" height="55" />Parce que je serai toujours téméréraire et Intrépide (huhu) pour vous, j&#8217;ai osé passer ma petite Ubuntu en Jaunty Jackalope 9.04. Elle est en effet sortie officiellement en Beta aujourd&#8217;hui et me semble assez sympa pour que je mette en péril mon installation fonctionnelle.</p>
<p>Au programme:</p>
<ul>
<li>Mises à jour du Kernel (2.6.28), de Gnome (2.26) et de Xorg (1.6)</li>
<li>Support de l&#8217;Ext4</li>
<li>Démarrage plus rapide</li>
<li>Nouveau style pour les notifications et les préférences</li>
</ul>
<p>Voyons donc ce que ça donne <img src='http://geekfault.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
<!--more--></p>
<h3>Mettre à jour</h3>
<p><a href="/wp-content/uploads/2009/03/capture-mise-a-niveau-de-la-distribution.png" title="Plus d'une heure et demi de mises à jour" rel="lightbox.109"><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   src="/wp-content/uploads/2009/03/capture-mise-a-niveau-de-la-distribution-300x206.png" alt="Mise à jour" title="Plus d'une heure et demi de mises à jour" width="300" height="206" class="alignleft size-medium wp-image-112" /></a>Comme toute mise à jour sous Ubuntu, c&#8217;est très simple. Il faut juste spécifier au gestionnaire de mises à jour qu&#8217;on veut bien qu&#8217;il nous prévienne de l&#8217;existence de versions Beta en l&#8217;appelant avec l&#8217;option -d :<br />
<code>update-manager -d</code><br />
La mise à jour de tous mes paquets représentait <strong>1200Mo à télécharger et a mis 1h30 à s&#8217;installer</strong>, en plus de l&#8217;heure nécessaire au téléchargement.</p>
<h3>Mis à jour&#8230;</h3>
<p>Aucune grosse modification ne saute aux yeux. Le SplashScreen du boot a été mis à jour, ainsi que les thèmes intégrés et j&#8217;ai remarqué quelques modifications dans les effets Compiz. En fait tout ça ressemble plutôt à une <strong>mise à jour mineure</strong> !</p>
<p>Les développeurs annonçaient un boot plus rapide&#8230; D&#8217;après mon chrono, il a pourtant été <strong>rallongé de 12 secondes</strong> entre le GRUB et l&#8217;affichage de Google.com! Y&#8217;a quelque chose qui m&#8217;échappe dans l&#8217;expression &#8220;plus rapide&#8221; je crois.</p>
<p><img style=' float: left; padding: 4px; margin: 0 7px 2px 0;' align="left"   class="alignleft size-full wp-image-113" title="Notification foireuse" src="/wp-content/uploads/2009/03/notification.jpg" alt="Notification foireuse" width="263" height="142" />La grosse nouveauté visible c&#8217;est ces nouvelles bulles de notifications. Dans <a href="http://www.markshuttleworth.com/wp-content/uploads/2008/12/jaunty904_notifications_example1_web_092.swf">la vidéo de présentation</a> ça a l&#8217;air cool mais à l&#8217;utilisation on se demande sérieusement pourquoi ils ont fait ça! Avant une bulle de notification était liée à son icône dans la traybar par une petite flèche&#8230;<br />
Maintenant on recoit des notifications sans savoir d&#8217;où elles viennent. Pire, <strong>l&#8217;API de la librairie de notification n&#8217;a pas été respectée !</strong> Si une action est associée à une bulle, &#8220;ouvrir la fenêtre de conversation&#8221; par exemple, on se mange un popup d&#8217;avertissement en plein milieu de l&#8217;écran qui attend validation.</p>
<p>J&#8217;ai pu remarquer une légère <strong>amélioration des problèmes d&#8217;entrée/sortie de veille</strong> (s2ram) que j&#8217;avait avec mon laptop en 8.04 et toutes les hotkeys de mon clavier sont maintenant reconnues.</p>
<h3>Recommandation</h3>
<p>Si vous êtes geeks en quête de péripétie aussi trépidantes que la mise à jour d&#8217;une Ubuntu, rien ne vous empêche de mettre à jour. Le système est <strong>stable et abouti</strong>. On tire aussi l&#8217;avantage des mises à jour permanentes (mon Firefox est déjà en 3.0.8 alors qu&#8217;elle n&#8217;est sortie qu&#8217;il y a quelques heures).</p>
<p>Sinon je ne vois aucune raison pour que vous tentiez déjà la mise à jour&#8230; Ce n&#8217;est pas plus rapide et il n&#8217;y a <strong>aucune nouvelle fonctionnalité impressionnante</strong>. Je me demande sérieusement ce qu&#8217;on fait les développeurs d&#8217;Ubuntu pendant 6 mois.</p>
<p><h3>Si vous avez aimé ce post...</h3><ol>
<li><a href='http://geekfault.org/2010/06/30/redshift-ne-vous-abimez-plus-les-yeux-la-nuit/' rel='bookmark' title='Redshift, ne vous abimez plus les yeux la nuit'>Redshift, ne vous abimez plus les yeux la nuit</a></li>
<li><a href='http://geekfault.org/2009/05/20/firmware-linksys-wag200g/' rel='bookmark' title='Firmware modifié pour Linksys WAG200G'>Firmware modifié pour Linksys WAG200G</a></li>
<li><a href='http://geekfault.org/2010/02/24/denyhosts-pour-empecher-le-bruteforce-sur-ssh/' rel='bookmark' title='DenyHosts pour empêcher le bruteforce sur SSH'>DenyHosts pour empêcher le bruteforce sur SSH</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geekfault.org/2009/03/28/ubuntu-jaunty-jackalope-9-04/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

