1105 lines
111 KiB
XML
1105 lines
111 KiB
XML
|
<?xml version="1.0" encoding="utf-8"?>
|
|||
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Wxcafé</title><link>//wxcafe.net/</link><description></description><atom:link href="//wxcafe.net/feeds/feed.rss.tutoriel.xml" rel="self"></atom:link><lastBuildDate>Thu, 28 Aug 2014 12:16:00 +0200</lastBuildDate><item><title>Installer FreeBSD sur un serveur Online avec MfsBSD</title><link>//wxcafe.net/posts/%D/freebsd-online-mfsbsd/</link><description><p>J'ai récemment eu l'occasion de louer un serveur chez Online.net (filiale de Illiad)
|
|||
|
Voulant depuis pas mal de temps gérer un serveur sous FreeBSD (et tester <a href="http://bhyve.org/">bhyve</a>)
|
|||
|
et n'ayant pour différentes raisons pas eu l'occasion de le faire sur mon
|
|||
|
<a href="http://home.wxcafe.net">serveur auto-hebergé</a> ni sur <a href="http://wxcafe.net">ce serveur ci</a>,
|
|||
|
j'ai commencé a chercher comment le faire sur ce serveur.</p>
|
|||
|
<p>Étant donné que Online ne propose pas directement d'image FreeBSD sur ses serveurs, il m'a fallu
|
|||
|
chercher un peu plus loin. Il se trouve que <a href="http://forum.online.net/index.php?/topic/3557-installation-de-freebsd-91-amd64-sur-une-dedibox-lt15k-2013/">ce post</a> sur les forums
|
|||
|
d'online explique une procédure, mais celle-ci ne fonctionnait pas pour mon serveur en particulier. </p>
|
|||
|
<p>J'ai donc cherché un peu sur internet, puis demandé sur irc (#freebsd-fr@freenode),
|
|||
|
ou l'on m'a dirigé vers <a href="http://mfsbsd.vx.sk/">mfsbsd</a>, un projet d'installeur
|
|||
|
alternatif, minimaliste et simplifié pour FreeBSD.</p>
|
|||
|
<p>Pour installer FreeBSD sur votre serveur, donc, il vous faudra accéder a une
|
|||
|
console KVM (dans mon cas personnel, iLO). Cela doit être faisable depuis le
|
|||
|
panel Online. Une fois cela fait, lancez une console, puis téléchargez l'image
|
|||
|
mfsbsd. Dans la console iLO, choisissez de booter sur une image CD/DVD, puis
|
|||
|
choisissez l'image mfsbsd. Ensuite, rebootez le serveur. Choisissez de booter
|
|||
|
sur l'image CD/DVD (F11 puis 1). Une fois ceci fait, un FreeBSD a l'air tout
|
|||
|
a fait classique va démarrer. Une fois ceci fait, la partie importante arrive:
|
|||
|
mfsbsd contient un script d'installation root-on-zfs, nommé logiquement
|
|||
|
zfsinstall, qui va se charger de tout le travail pour nous.</p>
|
|||
|
<p>Utilisez donc ce script ainsi : </p>
|
|||
|
<div class="highlight"><pre><span class="cp"># tout d&#39;abord, wipons le MBR :</span>
|
|||
|
<span class="n">dd</span> <span class="o">&lt;</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">zero</span> <span class="o">&gt;</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">da0</span> <span class="n">count</span><span class="o">=</span><span class="mi">1</span>
|
|||
|
<span class="cp"># maintenant, installons le système</span>
|
|||
|
<span class="n">zfsinstall</span> <span class="o">-</span><span class="n">g</span> <span class="n">da0</span> <span class="o">-</span><span class="n">u</span> <span class="n">ftp</span><span class="o">:</span><span class="c1">//ftp.freebsd.org/pub/FreeBSD/releases/amd64/10.0-RELEASE/ -s 2G -p root -c</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>Avec <code>-g da0</code> votre disque dur principal, <code>-s 2G</code> la quantité de swap désirée,
|
|||
|
<code>-p root</code> le nom du zpool, et <code>-c</code> pour activer la compression. D'autres options
|
|||
|
sont disponibles, je vous invite a faire un <code>zfsinstall -h</code> si mon setup ne vous
|
|||
|
convient pas.</p>
|
|||
|
<p>Une fois ceci fait, faites un chroot dans /mnt (ou doit se trouver le nouveau
|
|||
|
système) et éditez /etc/rc.conf :</p>
|
|||
|
<div class="highlight"><pre><span class="n">zfs_load</span><span class="o">=</span><span class="s">&quot;YES&quot;</span>
|
|||
|
<span class="n">sshd_load</span><span class="o">=</span><span class="s">&quot;YES</span>
|
|||
|
<span class="n">hostname</span><span class="o">=</span><span class="s">&quot;whatever&quot;</span>
|
|||
|
<span class="n">ifconfig_igb0</span><span class="o">=</span><span class="s">&quot;DHCP&quot;</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>Remplacez whatever par votre hostname, et igb0 par le nom de votre interface
|
|||
|
physique connectée a internet. Quittez le chroot, rebootez, et voila, vous avez
|
|||
|
maintenant un système FreeBSD tout propre installé sur zfs a découvrir et
|
|||
|
utiliser!</p>
|
|||
|
<p>Voila, c'est la fin de ce tutoriel.
|
|||
|
(Cela dit, bon courage pour tester bhyve, vu que l'IPv6 chez online est... peu
|
|||
|
crédible, disons)</p>
|
|||
|
<p>Bon sinon sur d'autres sujets, j'ai mis en place des bots twitter
|
|||
|
<a href="https://twitter.com/wxcafe_ebooks">wxcafe_ebooks</a>,
|
|||
|
<a href="https://twitter.com/petitefanfare">petitefanfare</a>,
|
|||
|
<a href="https://twitter.com/capet_ebooks">capet_ebooks</a>,
|
|||
|
<a href="https://twitter.com/zengisse">zengisse</a>,
|
|||
|
et <a href="https://wxcafe.net/kim_ebooks">kim_ebooks</a>. Ils sont tous basés sur <a href="https://github.com/wxcafe/ebooks_example">ce
|
|||
|
code</a>, qui vient de
|
|||
|
<a href="https://twitter.com/m1sp">@m1sp</a>
|
|||
|
(<a href="https://github.com/twitter_ebooks">github.com/twitter_ebooks</a>). Donc voila.</p>
|
|||
|
<p>A plus</p></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Thu, 28 Aug 2014 12:16:00 +0200</pubDate><guid>tag:wxcafe.net,2014-08-28:posts/%D/freebsd-online-mfsbsd/</guid></item><item><title>Mise en place d'un serveur DNS</title><link>//wxcafe.net/posts/%D/mise-en-place-dun-serveur-dns/</link><description><p>Le DNS (Domain Name System) est le service permettant la résolution des noms de
|
|||
|
domaines en différentes informations : adresses IPv4, adresses IPv6, certificats
|
|||
|
DNSSEC ou IPsec, localisation géographique, ou encore texte. En général, le DNS
|
|||
|
est utilisé pour résoudre des noms de domaines en adresses IP, et ainsi pour
|
|||
|
simplifier la vie de tous les utilisateurs (je doute que tout le monde retienne
|
|||
|
de se connecter a <a href="http://173.194.45.66">http://173.194.45.66</a>, ou a
|
|||
|
<a href="http://199.16.156.70">http://199.16.156.70</a>. Voire même a
|
|||
|
<a href="http://5.39.76.46">http://5.39.76.46</a>).</p>
|
|||
|
<p>Cependant, le DNS est un système qui date de 1984, et les exigences de l'époque
|
|||
|
en termes d'expérience utilisateur n'étaient pas forcément aussi importantes que
|
|||
|
de nos jours. La configuration des serveurs DNS peut ainsi être assez
|
|||
|
contre intuitive.
|
|||
|
Cela étant dit, comprendre le fonctionnement de DNS et contrôler ses
|
|||
|
enregistrements est important.</p>
|
|||
|
<p>Tout d'abord, une petite explication théorique. Le DNS fonctionne de la même
|
|||
|
façon que le système de fichiers : en arborescence. Cependant, là ou la racine
|
|||
|
du FS est <code>/</code>, celle de DNS est <code>.</code>, et là ou il convient d'écrire, par exemple,
|
|||
|
<code>/usr/</code> et ou la progression se fait de gauche a droite pour le FS, pour DNS le
|
|||
|
<code>.</code> n'est pas obligatoire et la progression se fait de droite a gauche. Par
|
|||
|
exemple, le tld(top level domain, domaine de haut niveau) <code>com</code>, et le domaine
|
|||
|
<code>google.com</code> appartient a <code>com</code>, on écrit donc <code>google.com</code> sans écrire le point
|
|||
|
a la fin de façon courante.</p>
|
|||
|
<p>Le reverse DNS est une variante du DNS "classique" permettant de résoudre les
|
|||
|
adresses IP en nom de domaine. Ainsi, 5.39.46.76 a pour domaine wxcafe.net.
|
|||
|
Cependant, le reverse DNS n'a, par définition, pas de TLD sur lequel se diriger
|
|||
|
quand on lui adresse une query. Les "adresses" que l'on query en reverse DNS
|
|||
|
sont donc constituées de l'adresse IP, <strong><em>dans le sens contraire a l'ordre
|
|||
|
habituel</em></strong>, et du faux domaine .in-addr.arpa
|
|||
|
Par exemple, pour connaitre le reverse de 5.39.46.76, il faudra faire <code>dig PTR
|
|||
|
76.46.39.5.in-addr.arpa</code>. La réponse sera, évidemment, <code>wxcafe.net</code></p>
|
|||
|
<p>Voyons maintenant comment mettre en place son propre serveur DNS. Tout d'abord,
|
|||
|
quelques informations. DNS fonctionne sur le port 53 en UDP, et la commande
|
|||
|
utilisée pour faire des tests DNS est <code>dig</code>. Le DNS fonctionne avec des
|
|||
|
"enregistrements", records en anglais. Par exemple, un record A indique une
|
|||
|
adresse IP, un record NS indique un Serveur de nom, etc. <code>dig</code> se base sur ces
|
|||
|
records : par défaut, il ira chercher le(s) record(s) A correspondant(s) au nom
|
|||
|
de domaine que vous donnez en argument, mais en précisant un autre type de
|
|||
|
record, vous pouvez obtenir n'importe quelle information : par exemple, <code>dig NS
|
|||
|
wxcafe.net</code> devrait vous renvoyer</p>
|
|||
|
<div class="highlight"><pre><span class="p">;</span> <span class="o">&lt;&lt;&gt;&gt;</span> DiG <span class="m">9.8.4</span><span class="o">-</span>rpz2<span class="o">+</span>rl005.12<span class="o">-</span>P1 <span class="o">&lt;&lt;&gt;&gt;</span> NS wxcafe.net
|
|||
|
<span class="p">;;</span> global options<span class="o">:</span> <span class="o">+</span>cmd
|
|||
|
<span class="p">;;</span> Got answer<span class="o">:</span>
|
|||
|
<span class="p">;;</span> <span class="o">-&gt;&gt;</span>HEADER<span class="o">&lt;&lt;-</span> opcode<span class="o">:</span> QUERY<span class="p">,</span> status<span class="o">:</span> NOERROR<span class="p">,</span> id<span class="o">:</span> <span class="m">13846</span>
|
|||
|
<span class="p">;;</span> flags<span class="o">:</span> qr rd ra<span class="p">;</span> QUERY<span class="o">:</span> <span class="m">1</span><span class="p">,</span> ANSWER<span class="o">:</span> <span class="m">2</span><span class="p">,</span> AUTHORITY<span class="o">:</span> <span class="m">0</span><span class="p">,</span> ADDITIONAL<span class="o">:</span> <span class="m">0</span>
|
|||
|
|
|||
|
<span class="p">;;</span> QUESTION SECTION<span class="o">:</span>
|
|||
|
<span class="p">;</span>wxcafe.net. IN NS
|
|||
|
|
|||
|
<span class="p">;;</span> ANSWER SECTION<span class="o">:</span>
|
|||
|
wxcafe.net. <span class="m">3600</span> IN NS ns.wxcafe.net.
|
|||
|
wxcafe.net. <span class="m">3600</span> IN NS ns.home.wxcafe.net.
|
|||
|
|
|||
|
<span class="p">;;</span> Query time<span class="o">:</span> <span class="m">60</span> msec
|
|||
|
<span class="p">;;</span> SERVER<span class="o">:</span> <span class="m">10.0.42.1</span><span class="c1">#53(10.0.42.1)</span>
|
|||
|
<span class="p">;;</span> WHEN<span class="o">:</span> Tue Dec <span class="m">10</span> <span class="m">13</span><span class="o">:</span><span class="m">31</span><span class="o">:</span><span class="m">18</span> <span class="m">2013</span>
|
|||
|
<span class="p">;;</span> MSG SIZE rcvd<span class="o">:</span> <span class="m">67</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>Comme vous pouvez le voir, les serveurs DNS principaux pour
|
|||
|
<a href="http://wxcafe.net">wxcafe.net</a> sont <code>ns.wxcafe.net</code> et <code>ns.home.wxcafe.net</code>,
|
|||
|
qui sont respectivement des alias pour <code>wxcafe.net</code> et <code>home.wxcafe.net</code>. Ainsi,
|
|||
|
chacun fait autorité pour lui même, et le problème évident est que le résolveur
|
|||
|
ne peut résoudre la query si il est renvoyé encore et encore vers le même
|
|||
|
serveur. Il convient donc de définir dans le même fichier de configuration
|
|||
|
l'adresse de ces deux serveurs. Ainsi, le résolveur, au bout de son deuxième
|
|||
|
loop, se rendra compte qu'il est en train de faire une boucle infinie et
|
|||
|
demandera l'adresse au serveur auquel il est connecté. La première indication de
|
|||
|
direction se fait grâce au serveur du TLD.</p>
|
|||
|
<p>La configuration de bind est assez simple dans le principe, le plus complexe
|
|||
|
étant en fait d'écrire les fichiers de zone.
|
|||
|
La configuration de bind sous debian se fait dans le dossier /etc/bind/. Il
|
|||
|
existe 4 fichiers de configuration principaux : <code>named.conf</code>,
|
|||
|
<code>named.conf.default-zones</code>, <code>named.conf.local</code> et <code>named.conf.options</code>.
|
|||
|
<code>named.conf</code> contient les options par défaut de bind, <code>named.conf.default-zones</code>
|
|||
|
les déclarations des zones par défaut (auxquelles il vaut mieux ne pas toucher),
|
|||
|
<code>named.conf.local</code> contient les déclarations de vos zones, et
|
|||
|
named.conf.options contient les options que vous rajoutez pour changer le
|
|||
|
comportement de bind.</p>
|
|||
|
<p>Pour commencer, il convient de préciser que nous allons parler ici du cas dans
|
|||
|
lequel se trouve wxcafe.net: deux domaines dont nous voulons faire l'autorité,
|
|||
|
deux serveurs DNS, et un service de résolution récursive limitée a quelques IPs
|
|||
|
(notamment mon accès chez moi). </p>
|
|||
|
<p>Examinons tout d'abord les fichiers de configuration de named.
|
|||
|
<code>named.conf.local</code> contient les définitions des zones forward et reverse.
|
|||
|
Sur wxcafe.net, les zones <code>wxcafe.net</code> et <code>76.46.39.5.in-addr.arpa</code> sont gérées
|
|||
|
en master, et les zones <code>home.wxcafe.net</code> et <code>103.177.67.80.in-addr.arpa</code> sont
|
|||
|
gérées en slave. Nous n'examinerons ici que les déclarations de zones sur ce
|
|||
|
serveur, et pas sur home., car elles sont sensiblement les mêmes. La différence
|
|||
|
principale étant que l'un héberge en slave les masters de l'autre.
|
|||
|
Le fichier <code>named.conf.local</code> sur wxcafe.net contient donc </p>
|
|||
|
<div class="highlight"><pre><span class="n">zone</span> <span class="s">&quot;wxcafe.net&quot;</span> <span class="p">{</span>
|
|||
|
<span class="n">type</span> <span class="n">master</span><span class="p">;</span>
|
|||
|
<span class="n">file</span> <span class="s">&quot;/etc/bind/master/wxcafe.net&quot;</span><span class="p">;</span>
|
|||
|
<span class="n">allow</span><span class="o">-</span><span class="n">transfer</span> <span class="p">{</span>
|
|||
|
<span class="mf">80.67.177.103</span><span class="p">;</span>
|
|||
|
<span class="p">};</span>
|
|||
|
<span class="p">};</span>
|
|||
|
|
|||
|
<span class="n">zone</span> <span class="s">&quot;home.wxcafe.net&quot;</span> <span class="p">{</span>
|
|||
|
<span class="n">type</span> <span class="n">slave</span><span class="p">;</span>
|
|||
|
<span class="n">file</span> <span class="s">&quot;/etc/bind/slave/home.wxcafe.net&quot;</span><span class="p">;</span>
|
|||
|
<span class="n">masters</span> <span class="p">{</span>
|
|||
|
<span class="mf">80.67.177.103</span><span class="p">;</span>
|
|||
|
<span class="p">};</span>
|
|||
|
<span class="p">};</span>
|
|||
|
|
|||
|
<span class="n">zone</span> <span class="s">&quot;46.76.39.5.in-addr.arpa&quot;</span> <span class="p">{</span>
|
|||
|
<span class="n">type</span> <span class="n">master</span><span class="p">;</span>
|
|||
|
<span class="n">file</span> <span class="s">&quot;/etc/bind/master/46.76.39.5.in-addr.arpa&quot;</span><span class="p">;</span>
|
|||
|
<span class="n">allow</span><span class="o">-</span><span class="n">transfer</span> <span class="p">{</span>
|
|||
|
<span class="mf">80.67.177.103</span><span class="p">;</span>
|
|||
|
<span class="p">};</span>
|
|||
|
<span class="p">};</span>
|
|||
|
|
|||
|
<span class="n">zone</span> <span class="s">&quot;103.177.67.80.in-addr.arpa&quot;</span> <span class="p">{</span>
|
|||
|
<span class="n">type</span> <span class="n">slave</span><span class="p">;</span>
|
|||
|
<span class="n">file</span> <span class="s">&quot;/etc/bind/slave/103.177.67.80.in-addr.arpa&quot;</span><span class="p">;</span>
|
|||
|
<span class="n">masters</span> <span class="p">{</span>
|
|||
|
<span class="mf">80.67.177.103</span><span class="p">;</span>
|
|||
|
<span class="p">};</span>
|
|||
|
<span class="p">};</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>Cela devrait être relativement clair. Globalement, les zones master ont un
|
|||
|
fichier dans <code>/etc/bind/master/</code>, et les slaves un fichier dans
|
|||
|
<code>/etc/bind/slave/</code>, les masters autorisent le transfert vers home.wxcafe.net
|
|||
|
tandis que les slaves déclarent home.wxcafe.net comme master, et le reste est
|
|||
|
assez parlant.</p>
|
|||
|
<p>Voyons maintenant le fichier de zone concernant wxcafe.net, soit
|
|||
|
<code>/etc/bind/master/wxcafe.net</code> : </p>
|
|||
|
<div class="highlight"><pre><span class="err">$</span><span class="n">TTL</span> <span class="mi">3600</span> <span class="p">;</span> <span class="mi">1</span> <span class="n">hour</span>
|
|||
|
<span class="err">@</span> <span class="n">IN</span> <span class="n">SOA</span> <span class="n">ns</span><span class="p">.</span><span class="n">wxcafe</span><span class="p">.</span><span class="n">net</span><span class="p">.</span> <span class="n">wxcafe</span><span class="p">.</span><span class="n">wxcafe</span><span class="p">.</span><span class="n">net</span><span class="p">.</span> <span class="p">(</span>
|
|||
|
<span class="mi">2014011001</span> <span class="p">;</span> <span class="n">serial</span>
|
|||
|
<span class="mi">3</span><span class="n">h</span> <span class="p">;</span> <span class="n">refresh</span>
|
|||
|
<span class="mi">1</span><span class="n">h</span> <span class="p">;</span> <span class="n">retry</span>
|
|||
|
<span class="mi">168</span><span class="n">h</span> <span class="p">;</span> <span class="n">expire</span>
|
|||
|
<span class="mi">300</span> <span class="p">;</span> <span class="n">negative</span> <span class="n">response</span> <span class="n">ttl</span>
|
|||
|
<span class="p">)</span>
|
|||
|
|
|||
|
<span class="p">;</span> <span class="n">Name</span> <span class="n">servers</span>
|
|||
|
<span class="n">IN</span> <span class="n">NS</span> <span class="n">ns</span><span class="p">.</span><span class="n">wxcafe</span><span class="p">.</span><span class="n">net</span><span class="p">.</span>
|
|||
|
<span class="n">IN</span> <span class="n">NS</span> <span class="n">ns</span><span class="p">.</span><span class="n">home</span><span class="p">.</span><span class="n">wxcafe</span><span class="p">.</span><span class="n">net</span><span class="p">.</span>
|
|||
|
|
|||
|
<span class="p">;</span> <span class="n">Mail</span> <span class="n">exchangers</span>
|
|||
|
<span class="n">IN</span> <span class="n">MX</span> <span class="mi">10</span> <span class="n">wxcafe</span><span class="p">.</span><span class="n">net</span><span class="p">.</span>
|
|||
|
<span class="n">IN</span> <span class="n">SPF</span> <span class="s">&quot;v=spf1 ip4:5.39.76.46 a -all&quot;</span>
|
|||
|
|
|||
|
<span class="p">;</span> <span class="n">Main</span> <span class="n">A</span><span class="o">/</span><span class="n">AAAA</span> <span class="n">records</span>
|
|||
|
<span class="n">IN</span> <span class="n">A</span> <span class="mf">5.39.76.46</span>
|
|||
|
<span class="n">ns</span> <span class="n">IN</span> <span class="n">A</span> <span class="mf">5.39.76.46</span>
|
|||
|
|
|||
|
<span class="p">;</span> <span class="n">Aliases</span>
|
|||
|
<span class="n">data</span> <span class="n">IN</span> <span class="n">CNAME</span> <span class="n">wxcafe</span><span class="p">.</span><span class="n">net</span><span class="p">.</span>
|
|||
|
<span class="p">;</span> <span class="p">[...]</span>
|
|||
|
<span class="n">www</span> <span class="n">IN</span> <span class="n">CNAME</span> <span class="n">wxcafe</span><span class="p">.</span><span class="n">net</span><span class="p">.</span>
|
|||
|
|
|||
|
|
|||
|
<span class="p">;</span> <span class="n">home</span><span class="p">.</span><span class="n">wxcafe</span><span class="p">.</span><span class="n">net</span><span class="p">.</span> <span class="n">definition</span>
|
|||
|
<span class="err">$</span><span class="n">ORIGIN</span> <span class="n">home</span><span class="p">.</span><span class="n">wxcafe</span><span class="p">.</span><span class="n">net</span><span class="p">.</span>
|
|||
|
<span class="err">@</span> <span class="n">IN</span> <span class="n">NS</span> <span class="n">ns</span><span class="p">.</span><span class="n">home</span><span class="p">.</span><span class="n">wxcafe</span><span class="p">.</span><span class="n">net</span><span class="p">.</span>
|
|||
|
<span class="n">IN</span> <span class="n">NS</span> <span class="n">ns</span><span class="p">.</span><span class="n">wxcafe</span><span class="p">.</span><span class="n">net</span><span class="p">.</span>
|
|||
|
<span class="n">ns</span> <span class="n">IN</span> <span class="n">A</span> <span class="mf">80.67.177.103</span>
|
|||
|
<span class="n">IN</span> <span class="n">A</span> <span class="mf">80.67.177.103</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>Alors. Expliquons ligne par ligne.<br />
|
|||
|
Tout d'abord, le TTL (time to live) est un paramètre définissant le temps
|
|||
|
pendant lequel les serveurs récursif (qui font un cache des données) doivent
|
|||
|
cacher ce fichier de zone. <br />
|
|||
|
Le @ est un raccourci pour exprimer le nom de domaine courant. Ici, donc,
|
|||
|
wxcafe.net. <br />
|
|||
|
Maintenant, nous arrivons a un record important : SOA (Start of Authority).
|
|||
|
Ce record prend de nombreux arguments, dans l'ordre :<br />
|
|||
|
- Le nameserver autoritaire pour le nom de domaine en question,<br />
|
|||
|
- L'adresse email du responsable de cette zone, avec le premier point
|
|||
|
remplacé par un @, </p>
|
|||
|
<p>puis entre parenthèses :<br />
|
|||
|
- Le numéro de série ("version" du fichier de zone, ici au format
|
|||
|
YYYYMMDDNN) <br />
|
|||
|
- La période de refresh, période entre chaque mise a jour du nameserver
|
|||
|
authoritaire secondaire, <br />
|
|||
|
- La période de retry, le temps entre chaque essai de mise a jour si le
|
|||
|
nameserveur authoritaire primaire est indisponible, <br />
|
|||
|
- La période d'expire, le temps qu'attendra le serveur autoritaire
|
|||
|
secondaire avant de supprimer les informations de son cache si le primaire
|
|||
|
reste indisponible, et enfin <br />
|
|||
|
- La période de TTL négatif, le temps qu'attendra le serveur secondaire
|
|||
|
avant de ne plus offrir les informations de cette zone si le serveur
|
|||
|
primaire est injoignable. </p>
|
|||
|
<p>Bon, tout ceci est peut-être un peu confus, mais ce n'est pas le record le plus
|
|||
|
important a lire (pour les humains en tout cas). Continuons : </p>
|
|||
|
<p>NS (nameserver) permet de désigner les différents nameservers faisant autorité
|
|||
|
pour ce domaine. </p>
|
|||
|
<p>MX permet d'indiquer ou il convient d'envoyer les emails pour ce domaine.
|
|||
|
SPF est un record d'authentification pour les emails.
|
|||
|
Les records A désignent l'association entre un nom de domaine et une adresse
|
|||
|
IPv4. Les records AAAA font de même pour les IPv6, mais malheureusement ce site
|
|||
|
n'est pas encore en IPv6.</p>
|
|||
|
<p>Les CNAME (canonical name) sont en quelque sorte des alias, ils permettent de
|
|||
|
mettre en place des domaines exactement semblables a d'autre (ce qui permet par
|
|||
|
exemple de filtrer ensuite avec les Virtual Hosts d'Apache, pour le web)</p>
|
|||
|
<p>Enfin, la partie qui suit commence avec une déclaration $ORIGIN, ce qui permet
|
|||
|
de changer la valeur du @ et des noms de domaine non complets (qui ne se
|
|||
|
terminent pas avec un .). Ainsi, la partie suivant définit les nameservers et
|
|||
|
l'adresse IP principale de home.wxcafe.net et de ns.home.wxcafe.net. Comme on
|
|||
|
l'a vu, étant donné que ce nom de domaine est géré par un autre serveur DNS,
|
|||
|
cela permet de rediriger les requêtes nous parvenant et demandant un domaine se
|
|||
|
trouvant sous home.wxcafe.net.</p>
|
|||
|
<p>Les autres fichiers de zone sont sensiblement similaires, avec les quelques
|
|||
|
différences n'étant en fin de compte que des différences de valeurs (dues au
|
|||
|
fait que, eh bah, c'est pas les mêmes domaines...).</p>
|
|||
|
<p>Voila donc une courte explication de ce qu'est le DNS. Bien entendu, tout n'est
|
|||
|
pas expliqué ici, je ne suis passé que sur ce qui est en place au niveau de
|
|||
|
wxcafe.net, et encore, rapidement. Si vous voulez en savoir plus, vous pouvez
|
|||
|
aller vous renseigner directement a la source : le <a href="https://www.ietf.org/rfc/rfc1034.txt">RFC
|
|||
|
1034</a> et le
|
|||
|
<a href="https://www.ietf.org/rfc/rfc1035.txt">RFC 1035</a>. Dans un autre style (bien plus
|
|||
|
avancé) le blog de <a href="http://bortzmeyer.org">Stéphane Bortzmeyer</a> est interessant
|
|||
|
aussi.</p></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Mon, 24 Feb 2014 02:49:00 +0100</pubDate><guid>tag:wxcafe.net,2014-02-24:posts/%D/mise-en-place-dun-serveur-dns/</guid></item><item><title>Sed Basics</title><link>//wxcafe.net/posts/%D/sed-basics/</link><description><p><code>sed</code> est un outil Unix très largement utilisé et très pratique pour manipuler
|
|||
|
le texte (ce qui se montre relativement indispensable dans un environnement
|
|||
|
Unix, puisque ce système est assez porté sur le texte). Cependant, il assez peu
|
|||
|
connu en détail, et la plupart du temps une seule fonction est utilisée : le
|
|||
|
remplacement de texte.<br />
|
|||
|
Or <code>sed</code> a bien plus de possibilités que ça, comme nous allons le voir.</p>
|
|||
|
<p>Tout d'abord, rappelons les bases : <code>sed</code> est un programme Unix de base, mais
|
|||
|
aussi un langage de manipulation de texte dérivé de <code>ed</code>, l'éditeur original.
|
|||
|
<code>ed</code> est un éditeur de ligne, conçu a l'époque ou les ordinateurs n'étaient pas
|
|||
|
personnels et étaient utilisés avec des <a href="http://fr.wikipedia.org/wiki/telescripteur">téléscripteurs</a>, c'est a dire des
|
|||
|
machines dépourvues d'écrans et ne permettant donc pas l'utilisation d'éditeurs
|
|||
|
dits "visuels", tels que vim, emacs, et globalement tous les éditeurs ayant un
|
|||
|
curseur et affichant plusieurs lignes. <code>sed</code> est donc une évolution de <code>ed</code>, le
|
|||
|
s signifiant stream, <code>sed</code> est un éditeur de flux, prenant donc avantage du
|
|||
|
concept Unixien de flux de données (voir <a href="http://fr.wikipedia.org/wiki/Flux_standard">Flux standards</a>) pour éditer plus d'une ligne a la fois.
|
|||
|
En pratique, <code>sed</code> est principalement utilisé sur des fichiers.</p>
|
|||
|
<p><code>sed</code> a quelques options pratique, notamment <code>-s</code> qui permet d'empêcher
|
|||
|
l'affichage systématique des lignes traitées, ou bien <code>-i</code> (pour GNU sed) qui
|
|||
|
permet de rediriger l'output dans le fichier d'input. Cela dit, l'intérêt unique
|
|||
|
du programme est son langage de manipulation de texte.</p>
|
|||
|
<p><code>ed</code>, et donc <code>sed</code>, utilise un langage basé sur les séparations (en général des
|
|||
|
/). Ainsi, la commande de base dans <code>sed</code> est </p>
|
|||
|
<div class="highlight"><pre><span class="o">/</span><span class="p">[</span><span class="n">regex</span><span class="p">]</span><span class="o">/</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>qui permet de ne sélectionner que les lignes qui matchent [regex] (et donc de
|
|||
|
n'exécuter les commandes qui suivent que sur ces lignes.) </p>
|
|||
|
<p><br/>
|
|||
|
La commande <code>sed</code> la plus utilisée est bien entendu le <strong>s</strong>, qui s'utilise de
|
|||
|
la façon suivante : </p>
|
|||
|
<div class="highlight"><pre><span class="n">s</span><span class="o">/</span><span class="p">[</span><span class="n">old</span> <span class="n">text</span><span class="p">]</span><span class="o">/</span><span class="p">[</span><span class="n">new</span> <span class="n">text</span><span class="p">]</span><span class="o">/</span><span class="p">[</span><span class="n">options</span><span class="p">]</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>qui se propose donc de remplacer (substitute) [old text] (qui peut être une
|
|||
|
regex) par [new text] (qui doit être un texte fixe, avec quelques
|
|||
|
exceptions), en appliquant [options], la plus connue des options étant <code>g</code>,
|
|||
|
qui permet d'appliquer la commande affectée a toutes les occurrences du texte
|
|||
|
matché sur la/les lignes concernée-s.<br />
|
|||
|
Les exceptions a la "fixité" de [new text] sont particulièrement
|
|||
|
intéressantes. En effet, <code>sed</code> utilise un langage de regex plutôt standard,
|
|||
|
excepté le fait qu'il permet jusqu'à 9 "holding spaces", qui sont délimités par
|
|||
|
\( et \), et qui sont représentées dans le texte de remplacement par \1 à
|
|||
|
\9.</p>
|
|||
|
<p>Par exemple, la commande </p>
|
|||
|
<div class="highlight"><pre><span class="n">sed</span> <span class="err">&#39;</span><span class="n">s</span><span class="o">/</span><span class="err">\</span><span class="p">(</span><span class="n">hello</span> <span class="n">world</span><span class="err">\</span><span class="p">)</span> <span class="n">world</span><span class="o">/</span><span class="err">\</span><span class="mi">1</span><span class="o">/</span><span class="err">&#39;</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>sur le texte "hello world world" renverrait comme résultat</p>
|
|||
|
<div class="highlight"><pre><span class="n">hello</span> <span class="n">world</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>De la même façon, le symbole <code>&amp;</code> dans le texte de remplacement représente le
|
|||
|
texte original. Ainsi, la commande </p>
|
|||
|
<div class="highlight"><pre><span class="n">sed</span> <span class="err">&#39;</span><span class="n">s</span><span class="o">/</span><span class="n">hello</span> <span class="n">world</span><span class="o">/&amp;</span> <span class="n">world</span><span class="o">/</span><span class="err">&#39;</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>sur le texte "hello world" renverrait comme résultat</p>
|
|||
|
<div class="highlight"><pre><span class="n">hello</span> <span class="n">world</span> <span class="n">world</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p><br/></p>
|
|||
|
<p>Une autre commande utile est <strong>p</strong>, qui sert a afficher le texte présent dans
|
|||
|
l'espace courant :</p>
|
|||
|
<div class="highlight"><pre><span class="o">/</span><span class="p">[</span><span class="n">regex</span><span class="p">]</span><span class="o">/</span><span class="n">p</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p><code>sed</code> stocke en effet la ligne sur laquelle il travaille dans un espace mémoire
|
|||
|
dédié, que j'appelle l'espace courant (pattern space en anglais). La commande
|
|||
|
<code>p</code> affiche (print) ce qui ce trouve dans cet espace. La /[regex]/ réduit
|
|||
|
le pattern space de façon a ce qu'il ne contienne que les lignes matchant, et le
|
|||
|
<strong>p</strong> affiche donc ce dernier.</p>
|
|||
|
<p>Un autre exemple de commande sont <strong>c</strong>, <strong>i</strong> et <strong>a</strong>, qui s'utilisent ainsi :</p>
|
|||
|
<div class="highlight"><pre><span class="n">c</span> \
|
|||
|
<span class="p">[</span><span class="n">text</span><span class="p">]</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>De la même façon, pour le i : </p>
|
|||
|
<div class="highlight"><pre><span class="n">i</span> \
|
|||
|
<span class="p">[</span><span class="n">text</span><span class="p">]</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>Et de même pour a. </p>
|
|||
|
<p>Ces trois commandes s'utilisent de la même façon pour la bonne raison qu'elles
|
|||
|
sont très proches. <strong>i</strong> sert a insérer du texte <em>avant</em> le pattern space. <strong>a</strong>
|
|||
|
sert a insérer du texte <em>après</em> le pattern space, et enfin <strong>c</strong> sert a
|
|||
|
remplacer <em>tout</em> le pattern space. Les trois utilisent [text] comme
|
|||
|
remplacement ou insert.
|
|||
|
Attention, les insertions se font sur la ligne précédant ou suivant le pattern
|
|||
|
space, et non sur la ligne en question.</p>
|
|||
|
<p>Enfin, dernière commande ne fonctionnant que ligne par ligne, <strong>d</strong> :
|
|||
|
/[regex]/d
|
|||
|
<strong>d</strong> (delete) supprime les contenus du pattern space.</p>
|
|||
|
<p><code>sed</code> est un outil puissant, mais complexe. Dans un prochain article, je
|
|||
|
parlerai des commandes multilignes et des labels.</p></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Sun, 18 Aug 2013 22:57:00 +0200</pubDate><guid>tag:wxcafe.net,2013-08-18:posts/%D/sed-basics/</guid></item><item><title>Le chiffrement de partitions avec dm-crypt et device-mapper</title><link>//wxcafe.net/posts/%D/le-chiffrement-de-partition-avec-dm-crypt-et-device-mapper/</link><description><p>Le chiffrement en tant que concept informatique est traditionnellement associé
|
|||
|
au chiffrement de fichiers, c'est a dire au fait de passer d'un fichier <em>en
|
|||
|
clair</em> a un fichier chiffré dit <em>cyphertext</em>. Cependant, il ne se limite pas a
|
|||
|
ça, et peut aussi servir a garantir l'intégrité d'un système d'exploitation, ou
|
|||
|
bien la confidentialité d'un support de stockage, par exemple. Nous allons ici
|
|||
|
voir comment mettre en place un système de ce type sous GNU/Linux. Cet article
|
|||
|
n'a pas pour but de vous apprendre a mettre en place un système basé sur une
|
|||
|
procédure de boot sécurisée, mais plutôt d'expliquer les concepts qui entrent en
|
|||
|
jeu dans l'utilisation du sous-système du noyau Linux <a href="http://en.wikipedia.org/wiki/dm-crypt"><strong>dm_crypt</strong></a> et de
|
|||
|
présenter un rapide tutoriel concernant la création d'un support chiffré sur
|
|||
|
lequel garder vos informations confidentielles (par exemple, votre <a href="http://wxcafe.net/posts/11/19/12/la-cryptographie-avec-pgp-et-principalement-gnupg">clé GPG</a>)</p>
|
|||
|
<p>dm-crypt est un sous-système de device-mapper, qui est lui-même un sous-système
|
|||
|
du noyau Linux, et s'appuie sur <a href="http://en.wikipedia.org/wiki/Linux_Unified_Key_Setup">LUKS</a>, un standard de chiffrement
|
|||
|
de disques. Comme son nom l'indique, device-mapper est un système qui a pour but
|
|||
|
de <strong>mapper</strong> des <strong>block devices</strong>. Pour être plus clair, le kernel considère
|
|||
|
comme "block device" tout fichier spécial (en gros, les fichiers disques dans
|
|||
|
<code>/dev/</code>, les systèmes de fichiers type LVM, les RAID logiciels, et, dans le
|
|||
|
cas qui nous intéresse, les systèmes de fichier chiffrés). Son mode de
|
|||
|
fonctionnement est simple : a partir d'un "fichier de périphérique" (trad.
|
|||
|
Wikipédia), il en "crée" un nouveau, virtuel, ayant des propriétés différentes.
|
|||
|
Par exemple, un disque partitionné via LVM apparaîtra comme un seul disque dans
|
|||
|
/dev, et device-mapper est requis pour pouvoir en voir les partitions (qui
|
|||
|
apparaîtront donc dans /dev/mapper)</p>
|
|||
|
<p>Ainsi, dans le cas qui nous intéresse ici, device-mapper prend un système de
|
|||
|
fichier chiffré, crée un périphérique virtuel non chiffré dans /dev/mapper, et
|
|||
|
déchiffre a la volée tous les accès disques a ce périphérique non chiffré en les
|
|||
|
traduisant sur le système de fichier chiffré, le tout de manière tout a fait
|
|||
|
transparente pour les applications utilisant le disque en question. Cela induit
|
|||
|
bien entendu une baisse de performance relativement significative dans le cas
|
|||
|
d'un chiffrement du système de fichier root, mais quasiment insignifiante dans
|
|||
|
le cas de chiffrement de partitions de données.</p>
|
|||
|
<p>D'ailleurs, certain-e-s se demandent peut-être comment le système peut démarrer
|
|||
|
si le système de fichier root est chiffré. Dans ce cas précis, la procédure de
|
|||
|
boot <strong><em>doit</em></strong> s'appuyer sur une image initrd (l'initrd est un système de
|
|||
|
fichier minimal qui sert uniquement a initialiser le système. Les kernels de
|
|||
|
base de la plupart des distributions GNU/Linux en utilisent un dans tous les
|
|||
|
cas, pour des raisons de compatibilité) et sur une partition de boot qui elle
|
|||
|
n'est pas chiffrée. Ainsi, le bootloader de niveau 2 (grub, syslinux,...) charge
|
|||
|
en mémoire le kernel depuis la partition de boot, puis ce dernier décompresse et
|
|||
|
charge l'initrd en RAM, celui-ci a son tour lance un script permettant de
|
|||
|
charger les modules nécessaires a la suite du boot (que ce soit pour un boot
|
|||
|
sans disque root local, ou bien comme ici avec un système chiffré), puis le
|
|||
|
système de fichier "cible" est remonté sur la racine, et l'initrd est démonté
|
|||
|
est la RAM qu'il occupait est libérée, puis la procédure de boot normale reprend
|
|||
|
depuis le système de fichier maintenant monté sur la racine.</p>
|
|||
|
<p>La méthode la plus évidente pour contourner le chiffrement du disque est alors
|
|||
|
de remplacer le fichier compressé initrd dans /boot, qui n'est pas chiffrée, par
|
|||
|
un autre modifié, copiant par exemple la phrase de passe permettant de
|
|||
|
déchiffrer la partition cible. Plusieurs méthodes permettent de se prémunir
|
|||
|
contre ce genre d'attaques : l'une des plus simple est de faire un checksum du
|
|||
|
fichier initrd utilisé et reconnu comme sûr, et de vérifier lors du <em>vrai</em> boot
|
|||
|
que l'initrd présente toujours le même checksum. Cela dit, cette méthode a
|
|||
|
l'inconvénient d'intervenir après les faits, et de nécessiter au moins un accès
|
|||
|
a un fichier initrd reconnu comme sûr.<br />
|
|||
|
Une autre approche consisterait a placer le système de fichier /boot sur un
|
|||
|
périphérique dédié, protégé en écriture de façon matérielle (par exemple, une
|
|||
|
carte SD) ou, de façon encore plus efficace, sur un périphérique chiffré et
|
|||
|
protégé en écriture de façon matérielle. Ainsi, il n'est pas possible pour un
|
|||
|
attaquant de modifier ce système de fichier, et l'initrd est alors toujours de
|
|||
|
confiance. Cependant, cela a pour conséquence de rendre la mise a jour de
|
|||
|
l'initrd et du noyau <em>beaucoup</em> plus difficile qu'elle ne le serait sans.</p>
|
|||
|
<p>Pour en revenir aux systèmes de fichiers chiffrés, leur gestion est faite par un
|
|||
|
programme dédié, <code>cryptsetup</code>. Ce dernier était en charge de cryptoloop,
|
|||
|
l'ancien sous-système de chiffrement du kernel Linux (déprécié depuis), et est
|
|||
|
maintenant responsable de l'utilisation <em>userspace</em> de dm-crypt, qui pour sa
|
|||
|
part est entièrement <em>kernel-space</em>. Cryptsetup permet ainsi le chiffrement, la
|
|||
|
manipulation (montage/démontage/...) et la gestion de clé des systèmes de fichier
|
|||
|
LUKS. Cryptsetup est cependant conçu pour être utilisé en tant que root, et les
|
|||
|
utilisateurs qui veulent monter de systèmes de fichiers chiffrés devront ainsi
|
|||
|
obligatoirement être capables de le faire en tant que root. </p>
|
|||
|
<p>Voyons comment il faudrait procéder pour créer une image disque chiffrée de 1Go :<br />
|
|||
|
Tout d'abord, il nous faut créer le fichier qui contiendra l'image. Pour cela,
|
|||
|
dans une situation réelle ou l'on cherche a chiffrer un disque, il convient
|
|||
|
d'utiliser /dev/urandom comme source, pour éviter la détection du système de
|
|||
|
fichier chiffré sur le disque.
|
|||
|
Ici, par exemple, nous allons faire : </p>
|
|||
|
<div class="highlight"><pre><span class="n">dd</span> <span class="n">bs</span><span class="o">=</span><span class="mi">1000</span> <span class="n">count</span><span class="o">=</span><span class="mi">1000000</span> <span class="k">if</span><span class="o">=/</span><span class="n">dev</span><span class="o">/</span><span class="n">urandom</span> <span class="n">of</span><span class="o">=</span><span class="n">image</span><span class="p">.</span><span class="n">img</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>Maintenant que notre image est créée, nous pouvons la chiffrer : </p>
|
|||
|
<div class="highlight"><pre><span class="n">sudo</span> <span class="n">cryptsetup</span> <span class="n">luksFormat</span> <span class="n">image</span><span class="p">.</span><span class="n">img</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p><code>cryptsetup</code> va alors nous demander si nous sommes absolument surs de vouloir
|
|||
|
formater ce disque (nous allons donc valider en tapant YES), puis une
|
|||
|
passphrase. Il convient ici de choisir une passphrase particulièrement sûre,
|
|||
|
puisque toute personne ayant accès a la passphrase aura aussi accès au disque et
|
|||
|
donc a vos secrets.<br />
|
|||
|
Une fois cela fait, nous allons mapper cette image : </p>
|
|||
|
<div class="highlight"><pre><span class="n">sudo</span> <span class="n">cryptsetup</span> <span class="n">luksOpen</span> <span class="n">image</span><span class="p">.</span><span class="n">img</span> <span class="n">crypto</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p><code>cryptsetup</code> nous redemande la passphrase, charge pendant quelques secondes,
|
|||
|
puis nous redonne le prompt. Que s'est-il passé? En cherchant un peu, nous
|
|||
|
voyons qu'il n'y a pas de nouveau disque dans /dev. C'est tout a fait normal. En
|
|||
|
effet, cryptsetup (et par lui, device-mapper et dm-crypt) ne monte pas les
|
|||
|
systèmes de fichiers chiffrés, il les mappe, et ça n'a rien a voir. On remarque
|
|||
|
qu'est apparu dans /dev/mapper le fichier crypto. Ce fichier est le disque
|
|||
|
virtuel qui correspond a notre image. Il se comporte comme toute partition, et
|
|||
|
peut donc être monté, formaté, etc (il ne peut cependant pas être partitionné.
|
|||
|
Il se comporte en effet comme une partition, et non comme un véritable disque.)
|
|||
|
Bon, ceci fait, notre disque virtuel n'est pas formaté. Il nous reviens donc de
|
|||
|
le faire, pour pouvoir l'utiliser. </p>
|
|||
|
<div class="highlight"><pre><span class="n">sudo</span> <span class="n">mkfs</span><span class="p">.</span><span class="n">ext4</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">mapper</span><span class="o">/</span><span class="n">crypto</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>Maintenant que notre disque est formaté, il peut être monté : </p>
|
|||
|
<div class="highlight"><pre><span class="n">sudo</span> <span class="n">mount</span> <span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">mapper</span><span class="o">/</span><span class="n">crypto</span> <span class="o">/</span><span class="n">mnt</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>Et voila, nous avons un système de fichier fonctionnel et chiffré! Si vous
|
|||
|
voulez vérifier, un <code>mount | grep crypto</code> devrait vous donner le résultat
|
|||
|
suivant : </p>
|
|||
|
<div class="highlight"><pre><span class="o">/</span><span class="n">dev</span><span class="o">/</span><span class="n">mapper</span><span class="o">/</span><span class="n">crypto</span> <span class="n">on</span> <span class="o">/</span><span class="n">mnt</span> <span class="n">type</span> <span class="n">ext4</span> <span class="p">(</span><span class="n">rw</span><span class="p">,</span><span class="n">relatime</span><span class="p">,</span><span class="n">data</span><span class="o">=</span><span class="n">ordered</span><span class="p">)</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>Vous pouvez maintenant commencer a stocker tous vos secrets sur ce fichier, ils
|
|||
|
sont (en fonction de votre passphrase) en sécurité. </p>
|
|||
|
<p>Pour résumer :</p>
|
|||
|
<ul>
|
|||
|
<li>
|
|||
|
<p>Pour monter vos partitions : </p>
|
|||
|
<div class="highlight"><pre><span class="nx">sudo</span> <span class="nx">cryptsetup</span> <span class="nx">luksOpen</span> <span class="o">&lt;</span><span class="nx">fichier</span> <span class="nx">chiffré</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="nx">nom</span> <span class="nx">de</span> <span class="nx">disque</span> <span class="nx">virtuel</span><span class="o">&gt;</span>
|
|||
|
<span class="nx">sudo</span> <span class="nx">mount</span> <span class="p">/</span><span class="nx">dev</span><span class="p">/</span><span class="nx">mapper</span><span class="o">/&lt;</span><span class="nx">nom</span> <span class="nx">de</span> <span class="nx">disque</span> <span class="nx">virtuel</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="nx">emplacement</span><span class="o">&gt;</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>Pour démonter vos partitions : </p>
|
|||
|
<div class="highlight"><pre><span class="nx">sudo</span> <span class="nx">umount</span> <span class="o">&lt;</span><span class="nx">emplacement</span><span class="o">&gt;</span>
|
|||
|
<span class="nx">sudo</span> <span class="nx">cryptsetup</span> <span class="nx">luksClose</span> <span class="o">&lt;</span><span class="nx">nom</span> <span class="nx">de</span> <span class="nx">disque</span> <span class="nx">virtuel</span><span class="o">&gt;</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
<p>Pour simplifier la vie de tous, j'ai créé deux petits scripts vous permettant de
|
|||
|
créer et de monter/démonter vos images/disques chiffré-e-s en une seule
|
|||
|
commande. Ils se trouvent sur <a href="https://github.com/wxcafe/cryptoscripts">github</a>. </p>
|
|||
|
<p>Par ailleurs, si vous comptez transferer votre image disque sur un véritable
|
|||
|
disque (ou clé usb, ou autre), il est préférable de créer une partition de
|
|||
|
taille appropriée et de faire un <code>dd if=votre_image of=/dev/votre_partition</code>
|
|||
|
pour ce faire.</p></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Wed, 10 Jul 2013 03:18:00 +0200</pubDate><guid>tag:wxcafe.net,2013-07-10:posts/%D/le-chiffrement-de-partition-avec-dm-crypt-et-device-mapper/</guid></item><item><title>Monter son propre serveur, partie 1: le serveur et l'apache.</title><link>//wxcafe.net/posts/%D/monter-son-propre-serveur-partie-1/</link><description><p>Il y a un certain temps, j'avais parlé du concept du self-hosting. Il
|
|||
|
s'agit de posséder son propre serveur, et donc, par extension, ses
|
|||
|
données. </p>
|
|||
|
<p>Bien entendu, il n'est pas nécessaire pour cela de posséder
|
|||
|
physiquement son propre serveur (encore que ce soit possible, mais ce
|
|||
|
n'est pas le sujet abordé ici.)<br />
|
|||
|
Nous expliquerons ici les étapes nécessaires pour arriver a avoir un
|
|||
|
serveur utilisable, du moment ou vous arrivez sur le système fraichement
|
|||
|
installé, au moment ou vous possédez un serveur avec tous les paquets
|
|||
|
nécessaires a l'utilisation que l'on veut en faire ici d'installés.
|
|||
|
Cette partie va consister a paramétrer le système (ici un debian
|
|||
|
squeeze. Il est bien sur possible de faire la même chose avec a peu près
|
|||
|
toutes les distributions Linux disponibles, tout comme avec les BSD et
|
|||
|
tous les autres systèmes UNIX, mais je vais ici me limiter a debian 6.0.x
|
|||
|
squeeze, parce que c'est une distribution simple a utiliser comme
|
|||
|
serveur, stable, et facile a configurer (puisqu'une bonne partie de la
|
|||
|
configuration est déjà faite et incluse dans le paquet), donc adaptée au
|
|||
|
but de cet article, a savoir rendre l'installation simple et
|
|||
|
compréhensible).</p>
|
|||
|
<p>La première chose a faire est bien entendu d'obtenir le serveur en lui
|
|||
|
même. Cette partie de la chose ne sera pas traitée dans cet article. Il
|
|||
|
existe en effet un nombre infini d'obtenir un serveur, que ce soit en le
|
|||
|
louant chez OVH/1&amp;1/n'importe quel autre hébergeur commercial, en
|
|||
|
participant a un système d'hébergement collaboratif (je vous laisse
|
|||
|
chercher), en achetant un serveur et en le faisant fonctionner de chez
|
|||
|
vous, en utilisant un vieux PC... Bref, les possibilités sont multiples.
|
|||
|
Dès lors que vous avez accès a un système debian serveur, peu importe sur
|
|||
|
quel matériel il fonctionne, et a priori peu importe aussi la manière
|
|||
|
dont vous y accédez, le résultat est le même (et la procédure aussi...).
|
|||
|
Dans cet article, nous parlerons de la configuration de base, du moment
|
|||
|
ou vous avez le serveur vierge dans les mains au moment ou vous
|
|||
|
installez le serveur http.</p>
|
|||
|
<p>Dans cet article, lorsque est précisée le type d'IP a utiliser, il
|
|||
|
convient de mettre ce type précisément. Quand le type n'est pas
|
|||
|
précisée, libre a vous de choisir ipv4 ou ipv6.</p>
|
|||
|
<p>Bref. Commençons au point ou vous avez un accès root a votre serveur,
|
|||
|
n'ayant soit aucun mot de passe, soit un choisi par l'hébergeur, et ou
|
|||
|
rien n'est configuré. Connectez vous a celui-ci (ssh root@). Commencez
|
|||
|
donc par faire un <code>passwd</code>, pour mettre au plus vite un mot de passe
|
|||
|
solide sur le compte root. Continuons en allant vite mettre en place le
|
|||
|
nom de domaine. Pour cela, votre registrar doit vous fournir une
|
|||
|
interface vous permettant d'éditer l'entrée DNS pour votre nom de
|
|||
|
domaine. </p>
|
|||
|
<p>Cette entrée doit donc pour l'instant ressembler a ca :</p>
|
|||
|
<div class="highlight"><pre> <span class="o">&lt;</span><span class="n">votre</span> <span class="n">nom</span> <span class="n">de</span> <span class="n">domaine</span><span class="o">&gt;</span> <span class="n">NS</span> <span class="mi">1</span>
|
|||
|
<span class="n">IN</span> <span class="n">MX</span> <span class="mi">1</span>
|
|||
|
<span class="n">IN</span> <span class="n">A</span> <span class="o">&lt;</span><span class="n">IPv4</span> <span class="n">de</span> <span class="n">votre</span> <span class="n">serveur</span><span class="o">&gt;</span>
|
|||
|
<span class="n">IN</span> <span class="n">AAAA</span> <span class="o">&lt;</span><span class="n">IPv6</span> <span class="n">de</span> <span class="n">votre</span> <span class="n">serveur</span><span class="o">&gt;</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>Cela vous permet de rediriger tout le trafic se référant a votre nom de
|
|||
|
domaine vers votre ip (le fonctionnement exact du DNS est assez
|
|||
|
compliqué a expliquer, donc on va dire que c'est de la magie pour
|
|||
|
l'instant, ca sera peut être le sujet d'un autre article), et d'indiquer
|
|||
|
que les mails @votre-nom-de-domai.ne doivent aussi être redirigés vers
|
|||
|
votre serveur, ce qui est un bon début. Faisons un petit point sécurité
|
|||
|
ici : pour accéder a votre serveur, il vous suffit actuellement de taper
|
|||
|
le mot de passe root.</p>
|
|||
|
<p>root est un utilisateur <strong>assez</strong> répandu, et il est assez simple de
|
|||
|
bruteforcer le mot de passe. (<em>Relativement</em> assez simple, en fonction
|
|||
|
du nombre de caractères, ça prend plus ou moins de temps, et si vous
|
|||
|
avez suffisamment de caractères, ça peut prendre un temps assez
|
|||
|
conséquent. Cela dit, il vaut mieux être prudent...) Ainsi, nous allons
|
|||
|
arrêter d'utiliser root et nous allons commencer a utiliser des couples
|
|||
|
clés publiques/privées pour nous connecter au serveur.<br />
|
|||
|
Cela se fait en deux temps : tout d'abord, créer un nouvel utilisateur,
|
|||
|
grâce auquel nous administrerons le serveur a l'avenir; puis configurer
|
|||
|
OpenSSH pour que celui ci n'accepte que les connections par clés et plus
|
|||
|
celles sur root.</p>
|
|||
|
<p>Commençons par ajouter un utilisateur. Si vous êtes sous debian, cela se
|
|||
|
fait avec adduser, qui est interactif (vous ne devriez pas avoir de
|
|||
|
problème avec, puisqu'il crée tout les dossiers et fichiers nécessaires,
|
|||
|
et vous pose toutes les questions utiles pour vous aider.) sinon, vous
|
|||
|
devrez utiliser useradd, qui est (en plus d'être très chiant a
|
|||
|
distinguer de l'autre, bien plus chiant a utiliser. (adduser est en fait
|
|||
|
un simple script permettant l'utilisation d'useradd plus facilement.)</p>
|
|||
|
<p>Avec adduser, vous pouvez soit utiliser le mode interactif en tapant
|
|||
|
juste <code>adduser &lt;username&gt;</code>, soit utiliser le mode non-interactif
|
|||
|
en faisant un <code>adduser --group &lt;username&gt;</code></p>
|
|||
|
<p>Avec useradd, vous devrez utiliser la commande suivante : <code>useradd -m
|
|||
|
-N -g &lt;username&gt;</code>. Cette commande ajoutera un utilisateur, créera
|
|||
|
son dossier principal dans /home/, et l'ajoutera au groupe du même nom
|
|||
|
que lui (ce qui est en général nécessaire pour des questions de vie
|
|||
|
privée).</p>
|
|||
|
<p>Il convient maintenant d'ajouter cet utilisateur aux groupes qu'il sera
|
|||
|
amené a administrer: <code>usermod &lt;username&gt; -a -G www-data postfix
|
|||
|
users staff sudo wheel</code>, puis de changer son mot de passe
|
|||
|
<code>passwd</code>. Enfin, ajoutons le aux utilisateurs autorisés a utiliser
|
|||
|
sudo: <code>echo "%sudo ALL=(ALL) ALL" &gt;&gt; /etc/sudoers</code><br />
|
|||
|
Enfin, changeons d'utilisateur : <code>su</code>. A ce point, vous avec un
|
|||
|
utilisateur complètement fonctionnel et utilisable pour toutes les
|
|||
|
taches d'administration. Si vous devez encore utiliser root, c'est que
|
|||
|
quelque chose ne va pas.</p>
|
|||
|
<p>Vous êtes donc loggés sur le système en tant qu'utilisateur normal. Nous
|
|||
|
allons maintenant passer a la phase 2 du plan : désactiver le login ssh
|
|||
|
root et le login ssh par mot de passe.<br />
|
|||
|
Tout d'abord, qu'est-ce qu'un login par clé ssh? Il s'agit en fait d'un
|
|||
|
système assez semblable a celui vous permettant de chiffrer vos mail :
|
|||
|
vous avec une clé publique et une clé privée sur le client, et la clé
|
|||
|
publique est aussi sur le serveur. Lorsque vous vous connectez, openssh
|
|||
|
vérifie que vous possédez la clé privée qui correspond a la clé publique
|
|||
|
stockée sur le serveur (pour votre utilisateur, bien entendu). Il est
|
|||
|
également possible d'utiliser plusieurs clés publique pour chaque<br />
|
|||
|
utilisateur.</p>
|
|||
|
<p>Bref, maintenant que nous avons la théorie, passons a la pratique : tout
|
|||
|
d'abord, il nous faut générer un couple de clés publique/privée sur le
|
|||
|
client. Openssh fait ça via la commande <code>ssh-keygen -t rsa</code> (le -t
|
|||
|
rsa précise a ssh que nous voulons un chiffrement rsa, qui est
|
|||
|
suffisamment solide pour cette utilisation.) Entrez les informations que
|
|||
|
ssh-keygen vous demande. Trois fichiers devraient maintenant se trouver
|
|||
|
dans votre dossier .ssh/ : id_rsa, id_rsa.pub, et known_hosts.<br />
|
|||
|
known_hosts liste les serveurs auxquels vous vous êtes connectés déjà
|
|||
|
une fois (pour éviter les attaques MITM, mais bref). Non, ce qui nous
|
|||
|
intéresse ici c'est id_rsa et id_rsa.pub . id_rsa contient votre clé
|
|||
|
privée, sauvegardez la sur une clé USB ou notez la sur un bout de
|
|||
|
papier, si vous la perdez, vous ne pourrez plus vous connecter au
|
|||
|
serveur. (planquez la clé usb/le bout de papier...) id_rsa.pub, quand a
|
|||
|
lui, contient votre clé publique. Copiez la sur le serveur, avec un
|
|||
|
<code>scp ~/.ssh/id_rsa.pub &lt;username&gt;@&lt;votre nom de domaine&gt;:~/</code> , ou
|
|||
|
en la copiant a la main, si ça vous amuse. </p>
|
|||
|
<p>Vous avez maintenant un fichier id_rsa.pub dans votre dossier personnel
|
|||
|
sur le serveur, il faut le mettre a un endroit ou openssh le reconnaitra.
|
|||
|
Il est donc nécessaire de créer le dossier .ssh (<code>mkdir .ssh</code>), puis
|
|||
|
de déplacer ce fichier a la bonne place (<code>mv ~/id_rsa.pub ~/.ssh/authorized_keys</code>).
|
|||
|
Testez si ça fonctionne : ouvez un autre terminal, et<br />
|
|||
|
connectez vous a votre serveur (<code>ssh &lt;username&gt;@&lt;votre nom de
|
|||
|
domaine&gt;</code>), et il ne devrait pas vous demander de mot de passe.<strong>Si
|
|||
|
il vous en demande un, NE PASSEZ PAS A LA SUITE. Quelque chose a foiré,
|
|||
|
donc vérifiez que vous avez suivi correctement les instruction
|
|||
|
ci-dessus.</strong></p>
|
|||
|
<p>Continuons. Il ne nous reste plus qu'a installer le serveur web, et a le
|
|||
|
configurer: </p>
|
|||
|
<div class="highlight"><pre><span class="n">sudo</span> <span class="n">apt</span><span class="o">-</span><span class="n">get</span> <span class="n">install</span> \
|
|||
|
<span class="n">apache2</span> <span class="n">apache2</span><span class="mf">.2</span><span class="o">-</span><span class="n">common</span> <span class="n">apache2</span><span class="o">-</span><span class="n">doc</span> <span class="n">apache2</span><span class="o">-</span><span class="n">mpm</span><span class="o">-</span><span class="n">prefork</span> \
|
|||
|
<span class="n">apache2</span><span class="o">-</span><span class="n">utils</span> <span class="n">libexpat1</span> <span class="n">ssl</span><span class="o">-</span><span class="n">cert</span> <span class="n">libapache2</span><span class="o">-</span><span class="n">mod</span><span class="o">-</span><span class="n">php5</span> \
|
|||
|
<span class="n">php5</span> <span class="n">php5</span><span class="o">-</span><span class="n">common</span> <span class="n">php5</span><span class="o">-</span><span class="n">gd</span> <span class="n">php5</span><span class="o">-</span><span class="n">cgi</span> <span class="n">libapache2</span><span class="o">-</span><span class="n">mod</span><span class="o">-</span><span class="n">fcgid</span> \
|
|||
|
<span class="n">apache2</span><span class="o">-</span><span class="n">suexec</span> <span class="n">php</span><span class="o">-</span><span class="n">pear</span> <span class="n">php</span><span class="o">-</span><span class="n">auth</span> <span class="n">php5</span><span class="o">-</span><span class="n">mcrypt</span> <span class="n">mcrypt</span> \
|
|||
|
<span class="n">php5</span><span class="o">-</span><span class="n">imagick</span> <span class="n">imagemagick</span> <span class="n">libapache2</span><span class="o">-</span><span class="n">mod</span><span class="o">-</span><span class="n">suphp</span> <span class="n">libruby</span> \
|
|||
|
<span class="n">libapache2</span><span class="o">-</span><span class="n">mod</span><span class="o">-</span><span class="n">ruby</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>(faisons large, on aura besoin de l'excédent plus tard...), puis activons les<br />
|
|||
|
mods apache en faisant <code>a2enmod suexec rewrite ssl actions include
|
|||
|
dav_fs dav auth_digest</code>, et faisons en sorte que ces activations
|
|||
|
soient prises en compte par apache via un <code>sudo service apache2
|
|||
|
restart</code> </p>
|
|||
|
<p>Le serveur fonctionne, maintenant, il est necessaire de lui expliquer
|
|||
|
comment fonctionner sur notre nom de domaine et ou trouver les fichiers
|
|||
|
a envoyer. </p>
|
|||
|
<p>Pour cela, nous allons faire un simple <code>ln -s /etc/apache2/sites-{available,enabled}/default</code>, car apache est assez
|
|||
|
sympa pour nous filer un fichier de configuration par défaut. Il nous
|
|||
|
faut encore l'éditer, en changeant l'adresse mail au début du document
|
|||
|
par la votre, et en changeant <code>AllowOverride none</code> en <code>AllowOverride All</code>,
|
|||
|
et enfin redémarrer apache pour qu'il prenne en compte les
|
|||
|
modifications, par un <code>sudo service apache2 restart</code> </p>
|
|||
|
<p>Et maintenant, il vous reste a apprendre le html, parce que ca y est,
|
|||
|
votre serveur est fonctionnel! Voila voila. Dans la prochaine partie, on
|
|||
|
verra l'installation du serveur mail (c'est suffisamment complexe pour
|
|||
|
prendre un article seul...)</p></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Mon, 18 Mar 2013 09:51:00 +0100</pubDate><guid>tag:wxcafe.net,2013-03-18:posts/%D/monter-son-propre-serveur-partie-1/</guid></item><item><title>Mutt ou le client email le meilleur moins mauvais</title><link>//wxcafe.net/posts/%D/mutt-ou-le-client-email-le-meilleur-moins-mauvais/</link><description><p>Les clients mails ont une particularité en commun : ils sont tous
|
|||
|
<del>très</del> mauvais. Cela pour nombre de raisons, mais la principale reste
|
|||
|
que leurs interfaces/raccourcis claviers ne sont pas efficaces pour une
|
|||
|
utilisation <strong>a la</strong> UNIX<br />
|
|||
|
Cependant, un d'entre eux se démarque par sa moins-mauvais-itude, c'est
|
|||
|
le relativement bien connu <del>Outlook Express 2003</del> Mutt!<br />
|
|||
|
Mutt est un client mail en ligne de commande, qui, comme le dit sa page
|
|||
|
d’accueil, <a href="http://www.mutt.org">"just sucks less"</a>. Dans les faits, mutt est assez
|
|||
|
chiant a configurer mais particulièrement pratique a utiliser après.</p>
|
|||
|
<p>La configuration de mutt se fait dans le fichier <code>.muttrc</code> ou dans
|
|||
|
<code>/etc/Muttrc</code>, et il est courant d'utiliser offlineimap en
|
|||
|
conjonction avec celui ci, de façon a accéder aux mails même sans accès
|
|||
|
internet (mutt dispose d'un système d'accès IMAP/POP et SMTP, mais ne
|
|||
|
crée pas de cache, ce qui empêche la consultation des emails sans
|
|||
|
connexion internet.) La configuration d'offlineimap se fait dans
|
|||
|
<code>~/.offlineimaprc</code> ou dans rien d'autre en fait, c'est une config
|
|||
|
par user. Offlineimap est un petit logiciel en python qui synchronise un
|
|||
|
dossier en Maildir avec un serveur IMAP, ce qui tombe bien puisque
|
|||
|
justement mutt accepte les dossiers au format Maildir. (De plus, cela va
|
|||
|
tout a fait dans le sens de la libération des données en cela que vous
|
|||
|
possédez vos mails en local.)<br />
|
|||
|
Bref, passons aux choses serieuses : le code. Déjà, installez
|
|||
|
offlineimap et <a href="http://data.wxcafe.net/scripts/mutt-sidebar.sh">ce script</a> fait par moi, qui vous permet d'installer
|
|||
|
mutt avec le patch sidebar, qui crée un listing des dossiers sur la
|
|||
|
partie gauche.<br />
|
|||
|
Ensuite, voyons pour la partie configuration :<br />
|
|||
|
Ma configuration d'offlineimap :</p>
|
|||
|
<div class="highlight"><pre><span class="cp">## Config file for offlineimap</span>
|
|||
|
<span class="cp">## Originally located in ~/.offlineimaprc</span>
|
|||
|
<span class="cp">## This should not be edited without creating a copy before</span>
|
|||
|
<span class="cp">## Created by Wxcafe (Clément Hertling)</span>
|
|||
|
<span class="cp">## Published under CC-BY-SA</span>
|
|||
|
|
|||
|
<span class="p">[</span><span class="n">general</span><span class="p">]</span>
|
|||
|
<span class="cp"># List of accounts to be synced, separated by a comma.</span>
|
|||
|
<span class="n">accounts</span> <span class="o">=</span> <span class="n">main</span>
|
|||
|
|
|||
|
<span class="p">[</span><span class="n">Account</span> <span class="n">main</span><span class="p">]</span>
|
|||
|
<span class="cp"># Identifier for the local repository; e.g. the maildir to be synced via IMAP.</span>
|
|||
|
<span class="n">localrepository</span> <span class="o">=</span> <span class="n">main</span><span class="o">-</span><span class="n">local</span>
|
|||
|
<span class="cp"># Identifier for the remote repository; i.e. the actual IMAP, usually non-local.</span>
|
|||
|
<span class="n">remoterepository</span> <span class="o">=</span> <span class="n">main</span><span class="o">-</span><span class="n">remote</span>
|
|||
|
<span class="cp"># Status cache. Default is plain, which eventually becomes huge and slow.</span>
|
|||
|
<span class="n">status_backend</span> <span class="o">=</span> <span class="n">sqlite</span> <span class="err">#</span> <span class="n">le</span> <span class="n">type</span> <span class="n">de</span> <span class="n">cache</span><span class="p">.</span> <span class="p">(</span><span class="n">plain</span> <span class="n">ou</span> <span class="n">sqlite</span><span class="p">)</span>
|
|||
|
|
|||
|
<span class="p">[</span><span class="n">Repository</span> <span class="n">main</span><span class="o">-</span><span class="n">local</span><span class="p">]</span>
|
|||
|
<span class="cp"># Currently, offlineimap only supports maildir and IMAP for local repositories.</span>
|
|||
|
<span class="n">type</span> <span class="o">=</span> <span class="n">Maildir</span> <span class="err">#</span> <span class="n">le</span> <span class="n">type</span> <span class="n">de</span> <span class="n">stockage</span> <span class="p">(</span><span class="n">Maildir</span> <span class="n">ou</span> <span class="n">IMAP</span><span class="p">)</span>
|
|||
|
<span class="cp"># Where should the mail be placed?</span>
|
|||
|
<span class="n">localfolders</span> <span class="o">=</span> <span class="o">~/</span><span class="n">Emails</span><span class="o">/</span> <span class="err">#</span> <span class="n">le</span> <span class="n">dossier</span> <span class="n">dans</span> <span class="n">lequel</span> <span class="n">vous</span>
|
|||
|
<span class="err">#</span> <span class="n">voulez</span> <span class="n">que</span> <span class="n">vos</span> <span class="n">emails</span> <span class="n">apparaissent</span>
|
|||
|
|
|||
|
<span class="p">[</span><span class="n">Repository</span> <span class="n">main</span><span class="o">-</span><span class="n">remote</span><span class="p">]</span>
|
|||
|
<span class="cp"># Remote repos can be IMAP or Gmail, the latter being a preconfigured IMAP.</span>
|
|||
|
<span class="n">type</span> <span class="o">=</span> <span class="n">IMAP</span>
|
|||
|
<span class="n">remotehost</span> <span class="o">=</span> <span class="c1">//placeholderhost// # le serveur de votre messagerie</span>
|
|||
|
<span class="n">remoteuser</span> <span class="o">=</span> <span class="c1">//placeholderusername// # votre nom d&#39;utilisateur</span>
|
|||
|
<span class="n">remotepass</span> <span class="o">=</span> <span class="c1">//placeholderpassword// # votre mot de passe</span>
|
|||
|
<span class="n">cert_fingerprint</span> <span class="o">=</span> <span class="c1">//placeholdercert// # le certificat du serveur (IMAPS only)</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>Ça devrait être assez simple a lire, j'ai tout bien commenté :3<br />
|
|||
|
Puis ma config mutt :</p>
|
|||
|
<div class="highlight"><pre><span class="cp">## Mutt MUA configuration file</span>
|
|||
|
<span class="cp">## This file should not be edited without creating a copy</span>
|
|||
|
<span class="cp">## File Created and edited by Wxcafe (Clément Hertling)</span>
|
|||
|
<span class="cp">## Published under CC-BY-SA</span>
|
|||
|
|
|||
|
<span class="cp"># General config for reading (fetched via offlineimap)</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">mbox_type</span> <span class="o">=</span> <span class="n">Maildir</span>
|
|||
|
<span class="cp"># type de boite mail (voir dans offlineimap, mailbox par defaut)</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">folder</span> <span class="o">=</span> <span class="o">~/</span><span class="n">Email</span><span class="o">/</span>
|
|||
|
<span class="cp"># dossier root mailbox/imap</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">spoolfile</span> <span class="o">=</span> <span class="o">+</span><span class="n">INBOX</span>
|
|||
|
<span class="cp"># dossier d&#39;inbox</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">mbox</span> <span class="o">=</span> <span class="o">+</span><span class="err">&#39;</span><span class="n">All</span> <span class="n">Mail</span><span class="err">&#39;</span>
|
|||
|
<span class="cp"># dossier ou archiver les emails</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">copy</span> <span class="o">=</span> <span class="n">yes</span>
|
|||
|
<span class="cp"># yes pour copier les messages dans les differents dossier, no pour...</span>
|
|||
|
<span class="cp"># enfin voila quoi.</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">header_cache</span> <span class="o">=</span> <span class="o">/</span><span class="p">.</span><span class="n">hcache</span><span class="o">/</span>
|
|||
|
<span class="cp"># dossier ou sont stockés les headers (pour le cache)</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">record</span> <span class="o">=</span> <span class="o">+</span><span class="n">Sent</span>
|
|||
|
<span class="cp"># dossier dans lequel sont stockés les messages envoyés</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">postponed</span> <span class="o">=</span> <span class="o">+</span><span class="n">Drafts</span>
|
|||
|
<span class="cp"># dossier dans lequel sont stockés les brouillons</span>
|
|||
|
|
|||
|
<span class="n">mailboxes</span> <span class="o">=</span> <span class="o">+</span><span class="n">INBOX</span> <span class="o">+</span><span class="n">Drafts</span> <span class="o">+</span><span class="n">Sent</span> <span class="o">+</span><span class="n">Trash</span> <span class="o">+</span><span class="n">All</span><span class="err">\</span> <span class="n">Mail</span>
|
|||
|
<span class="cp"># liste des dossiers qui vont apparaitre dans la colonne de gauche</span>
|
|||
|
|
|||
|
<span class="cp"># General config for sending (using Mutt&#39;s native support)</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">smtp_pass</span> <span class="o">=</span> <span class="err">&#39;</span><span class="n">password_placeholder</span><span class="err">&#39;</span>
|
|||
|
<span class="cp"># votre mot de passe</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">smtp_url</span> <span class="o">=</span> <span class="s">&quot;smtp://username@whatev.org:465/&quot;</span>
|
|||
|
<span class="cp"># l&#39;url ou envoyer les emails</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">send_charset</span> <span class="o">=</span> <span class="s">&quot;utf-8&quot;</span>
|
|||
|
<span class="cp"># UTF8, NE PAS CHANGER</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">signature</span> <span class="o">=</span> <span class="s">&quot;.sign&quot;</span>
|
|||
|
<span class="cp"># vous pouvez mettre votre signature dans .sign</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">sig_on_top</span> <span class="o">=</span> <span class="n">yes</span>
|
|||
|
<span class="cp"># il est d&#39;usge de mettre no ici. Cependant, je trouve ca plus lisible </span>
|
|||
|
<span class="cp"># comme ca.</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">ssl_verify_host</span> <span class="o">=</span> <span class="n">no</span>
|
|||
|
<span class="cp"># mettez yes ici si votre serveur a un certificat configuré correctement</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">hostname</span> <span class="o">=</span> <span class="s">&quot;wxcafe.net&quot;</span>
|
|||
|
<span class="cp"># mettez l&#39;adresse de votre serveur ici</span>
|
|||
|
|
|||
|
<span class="cp"># Misc settings</span>
|
|||
|
|
|||
|
<span class="n">auto_view</span> <span class="n">text</span><span class="o">/</span><span class="n">html</span>
|
|||
|
<span class="cp"># la façon de voir les emails par défaut.</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">date_format</span> <span class="o">=</span> <span class="s">&quot;%y-%m-%d %T&quot;</span>
|
|||
|
<span class="cp"># format de date d&#39;envoi/de reception.</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">index_format</span> <span class="o">=</span> <span class="s">&quot;%2C | %Z [%D] %-30.30F (%-4.4c) %s&quot;</span>
|
|||
|
<span class="cp"># format de l&#39;index (la présentation de l&#39;interface)</span>
|
|||
|
<span class="cp"># voir http:</span><span class="c1">//www.mutt.org/doc/manual/manual-6.html#index_format</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">sort_alias</span> <span class="o">=</span> <span class="n">alias</span>
|
|||
|
<span class="n">set</span> <span class="n">reverse_alias</span> <span class="o">=</span> <span class="n">yes</span>
|
|||
|
<span class="n">set</span> <span class="n">alias_file</span> <span class="o">=</span> <span class="s">&quot;$HOME/.mutt/aliases&quot;</span>
|
|||
|
<span class="cp"># liste des alias noms/email. a créer et remplir vous même.</span>
|
|||
|
<span class="cp"># format : &quot;alias short_name long_email_adress&quot;</span>
|
|||
|
<span class="n">source</span> <span class="err">$</span><span class="n">alias_file</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">beep</span> <span class="o">=</span> <span class="n">no</span>
|
|||
|
<span class="cp"># ne pas biper. CE SON ME TUE T.T</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">tilde</span> <span class="o">=</span> <span class="n">yes</span>
|
|||
|
<span class="n">set</span> <span class="n">sleep_time</span> <span class="o">=</span> <span class="mi">0</span>
|
|||
|
<span class="cp"># ?</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">sidebar_visible</span> <span class="o">=</span> <span class="n">yes</span>
|
|||
|
<span class="n">set</span> <span class="n">sidebar_width</span> <span class="o">=</span> <span class="mi">15</span>
|
|||
|
<span class="cp"># parametres de la barre coté gauche</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">realname</span> <span class="o">=</span> <span class="s">&quot;Clément Hertling (Wxcafé)&quot;</span>
|
|||
|
<span class="n">set</span> <span class="n">from</span> <span class="o">=</span> <span class="s">&quot;wxcafe@wxcafe.net&quot;</span>
|
|||
|
<span class="n">set</span> <span class="n">use_from</span> <span class="o">=</span> <span class="n">yes</span>
|
|||
|
<span class="n">set</span> <span class="n">certificate_file</span> <span class="o">=</span> <span class="s">&quot;$HOME/.mutt/cacert&quot;</span>
|
|||
|
<span class="cp"># parametres d&#39;envoi. mettez vos propres infos a la place des miennes...</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">edit_headers</span> <span class="o">=</span> <span class="n">yes</span>
|
|||
|
<span class="cp"># vous permet de vois les headers des mails. j&#39;aime, donc je laisse.</span>
|
|||
|
|
|||
|
<span class="cp"># Macros</span>
|
|||
|
|
|||
|
<span class="cp"># le titre dit tout. index veut dire que la macro est active dans les menus,</span>
|
|||
|
<span class="cp"># pager qu&#39;elle l&#39;est dans la visionneuse, les deux qu&#39;elle l&#39;est dans les </span>
|
|||
|
<span class="cp"># deux</span>
|
|||
|
<span class="cp"># \C represente la touche Control</span>
|
|||
|
|
|||
|
<span class="n">bind</span> <span class="n">index</span><span class="p">,</span><span class="n">pager</span> <span class="err">\</span><span class="n">Cp</span> <span class="n">sidebar</span><span class="o">-</span><span class="n">prev</span>
|
|||
|
<span class="cp"># Control+p -&gt; remonter d&#39;un dossier dans la sidebar</span>
|
|||
|
|
|||
|
<span class="n">bind</span> <span class="n">index</span><span class="p">,</span><span class="n">pager</span> <span class="err">\</span><span class="n">Cn</span> <span class="n">sidebar</span><span class="o">-</span><span class="n">next</span>
|
|||
|
<span class="cp"># Control+n -&gt; descendre d&#39;un dossier dans la sidebar</span>
|
|||
|
|
|||
|
<span class="n">bind</span> <span class="n">index</span><span class="p">,</span><span class="n">pager</span> <span class="err">\</span><span class="n">Co</span> <span class="n">sidebar</span><span class="o">-</span><span class="n">open</span>
|
|||
|
<span class="cp"># Control+o -&gt; ouvrir le dossier selectionné dans la sidebar</span>
|
|||
|
|
|||
|
<span class="n">macro</span> <span class="n">index</span><span class="p">,</span><span class="n">pager</span> <span class="n">d</span> <span class="s">&quot;=Trash&quot;</span> <span class="s">&quot;Trash&quot;</span>
|
|||
|
<span class="cp"># d supprime le message en cours</span>
|
|||
|
|
|||
|
<span class="n">bind</span> <span class="n">pager</span> <span class="n">previous</span><span class="o">-</span><span class="n">line</span>
|
|||
|
<span class="cp"># permet de monter d&#39;une ligne avec la touche up, au lieu de changer de message.</span>
|
|||
|
|
|||
|
<span class="n">bind</span> <span class="n">pager</span> <span class="n">next</span><span class="o">-</span><span class="n">line</span>
|
|||
|
<span class="cp"># permet de descendre d&#39;une ligne avec la touche down, au lieu de changer de </span>
|
|||
|
<span class="cp"># message</span>
|
|||
|
|
|||
|
<span class="n">bind</span> <span class="n">pager</span> <span class="n">j</span> <span class="n">next</span><span class="o">-</span><span class="n">line</span>
|
|||
|
<span class="n">bind</span> <span class="n">pager</span> <span class="n">k</span> <span class="n">previous</span><span class="o">-</span><span class="n">line</span>
|
|||
|
<span class="cp"># raccourcis vim</span>
|
|||
|
|
|||
|
<span class="cp"># PGP signing commands</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">pgp_decode_command</span><span class="o">=</span><span class="s">&quot;gpg %?p?--passphrase-fd 0? --no-verbose --batch --output - %f&quot;</span>
|
|||
|
<span class="n">set</span> <span class="n">pgp_verify_command</span><span class="o">=</span><span class="s">&quot;gpg --no-verbose --batch --output - --verify %s %f&quot;</span>
|
|||
|
<span class="n">set</span> <span class="n">pgp_decrypt_command</span><span class="o">=</span><span class="s">&quot;gpg --passphrase-fd 0 --no-verbose --batch --output - %f&quot;</span>
|
|||
|
<span class="n">set</span> <span class="n">pgp_sign_command</span><span class="o">=</span><span class="s">&quot;gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --detach-sign --textmode %?a?-u %a? %f&quot;</span>
|
|||
|
<span class="n">set</span> <span class="n">pgp_clearsign_command</span><span class="o">=</span><span class="s">&quot;gpg --no-verbose --batch --output - --passphrase-fd 0 --armor --textmode --clearsign %?a?-u %a? %f&quot;</span>
|
|||
|
<span class="n">set</span> <span class="n">pgp_encrypt_only_command</span><span class="o">=</span><span class="s">&quot;pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust --encrypt-to 0x******** -- -r %r -- %f&quot;</span>
|
|||
|
<span class="n">set</span> <span class="n">pgp_encrypt_sign_command</span><span class="o">=</span><span class="s">&quot;pgpewrap gpg --passphrase-fd 0 --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust --encrypt-to 0x******** -- -r %r -- %f&quot;</span>
|
|||
|
<span class="n">set</span> <span class="n">pgp_import_command</span><span class="o">=</span><span class="s">&quot;gpg --no-verbose --import -v %f&quot;</span>
|
|||
|
<span class="n">set</span> <span class="n">pgp_export_command</span><span class="o">=</span><span class="s">&quot;gpg --no-verbose --export --armor %r&quot;</span>
|
|||
|
<span class="n">set</span> <span class="n">pgp_verify_key_command</span><span class="o">=</span><span class="s">&quot;gpg --no-verbose --batch --fingerprint --check-sigs %r&quot;</span>
|
|||
|
<span class="n">set</span> <span class="n">pgp_list_pubring_command</span><span class="o">=</span><span class="s">&quot;gpg --no-verbose --batch --with-colons --list-keys %r&quot;</span>
|
|||
|
<span class="n">set</span> <span class="n">pgp_list_secring_command</span><span class="o">=</span><span class="s">&quot;gpg --no-verbose --batch --with-colons --list-secret-keys %r&quot;</span>
|
|||
|
<span class="n">set</span> <span class="n">pgp_autosign</span><span class="o">=</span><span class="n">yes</span>
|
|||
|
<span class="n">set</span> <span class="n">pgp_sign_as</span><span class="o">=</span><span class="mi">0</span><span class="n">x</span><span class="o">********</span>
|
|||
|
<span class="cp"># remplacez 0x******** par votre identifiant PGP!!!!!</span>
|
|||
|
|
|||
|
<span class="n">set</span> <span class="n">pgp_replyencrypt</span><span class="o">=</span><span class="n">no</span>
|
|||
|
<span class="n">set</span> <span class="n">pgp_timeout</span><span class="o">=</span><span class="mi">7200</span>
|
|||
|
<span class="n">set</span> <span class="n">pgp_good_sign</span><span class="o">=</span><span class="s">&quot;^gpg: Good signature from&quot;</span>
|
|||
|
|
|||
|
<span class="cp"># si vous ne comptez pas utiliser PGP, commentez toute cette section, depuis</span>
|
|||
|
<span class="cp"># PGP signing options</span>
|
|||
|
|
|||
|
<span class="cp"># Palette for use with the Linux console. Black background.</span>
|
|||
|
|
|||
|
<span class="cp"># Schéma de couleur Rouge et Noir. Commentez si vous voulez le </span>
|
|||
|
<span class="cp"># défaut noir et blanc.</span>
|
|||
|
<span class="cp"># d&#39;autres schémas sont trouvables sur google et autre.</span>
|
|||
|
|
|||
|
<span class="n">color</span> <span class="n">hdrdefault</span> <span class="n">red</span> <span class="n">black</span>
|
|||
|
<span class="n">color</span> <span class="n">quoted</span> <span class="n">brightblack</span> <span class="n">black</span>
|
|||
|
<span class="n">color</span> <span class="n">signature</span> <span class="n">brightblack</span> <span class="n">black</span>
|
|||
|
<span class="n">color</span> <span class="n">attachment</span> <span class="n">red</span> <span class="n">black</span>
|
|||
|
<span class="n">color</span> <span class="n">message</span> <span class="n">brightwhite</span> <span class="n">black</span>
|
|||
|
<span class="n">color</span> <span class="n">error</span> <span class="n">brightred</span> <span class="n">black</span>
|
|||
|
<span class="n">color</span> <span class="n">indicator</span> <span class="n">black</span> <span class="n">red</span>
|
|||
|
<span class="n">color</span> <span class="n">status</span> <span class="n">white</span> <span class="n">black</span>
|
|||
|
<span class="n">color</span> <span class="n">tree</span> <span class="n">white</span> <span class="n">black</span>
|
|||
|
<span class="n">color</span> <span class="n">normal</span> <span class="n">white</span> <span class="n">black</span>
|
|||
|
<span class="n">color</span> <span class="n">markers</span> <span class="n">red</span> <span class="n">black</span>
|
|||
|
<span class="n">color</span> <span class="n">search</span> <span class="n">white</span> <span class="n">black</span>
|
|||
|
<span class="n">color</span> <span class="n">tilde</span> <span class="n">brightmagenta</span> <span class="n">black</span>
|
|||
|
<span class="n">color</span> <span class="n">index</span> <span class="n">red</span> <span class="n">black</span> <span class="o">~</span><span class="n">F</span>
|
|||
|
<span class="n">color</span> <span class="n">index</span> <span class="n">red</span> <span class="n">black</span> <span class="s">&quot;~N|~O&quot;</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>Voila, pour plus d'informations vous pouvez aller voir le manuel de mutt
|
|||
|
@ <a href="http://www.mutt.org/doc/manual/">http://www.mutt.org/doc/manual/</a><br />
|
|||
|
J'espère que cette configuration "toute faite" vous aidera a commencer
|
|||
|
a utiliser mutt. Il est tout de fois important de se souvenir
|
|||
|
qu'utiliser une configuration toute faire n'aide pas a comprendre un
|
|||
|
programme ou un système, et que cette façon de faire devrait être
|
|||
|
réservée a l'introduction ou a des situations ou il est absolument
|
|||
|
nécessaire d'avoir rapidement une configuration fonctionnelle (c'est a
|
|||
|
dire, dans le cas d'un client email, euh... jamais?). Je vous invite
|
|||
|
donc a relire les annotations dont sont parsemés les fichiers de
|
|||
|
configuration en question, et surtout a lire le manuel, a chercher sur
|
|||
|
<del>Bing</del> <del>Google</del> <del>Yahoo</del> Seeks, et globalement
|
|||
|
a tenter de comprendre les configurations en question et a les améliorer!</p></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Wed, 02 Jan 2013 02:12:00 +0100</pubDate><guid>tag:wxcafe.net,2013-01-02:posts/%D/mutt-ou-le-client-email-le-meilleur-moins-mauvais/</guid></item><item><title>La cryptographie avec PGP et principalement GnuPG</title><link>//wxcafe.net/posts/%D/la-cryptographie-avec-pgp-et-principalement-gnupg/</link><description><p>PGP (pour <a href="http://fr.wikipedia.org/wiki/Pretty_Good_Privacy">pretty good privacy</a>) est un système de
|
|||
|
chiffrement asymétrique (pour plus d'information sur le chiffrement
|
|||
|
asymétrique, voir <a href="http://fr.wikipedia.org/wiki/Cryptographie_asym%C3%A9trique">ici</a>) utilisant en général les algorithmes RSA
|
|||
|
et/ou DSA, et pouvant servir a chiffrer tout fichier, mais aussi a
|
|||
|
signer des emails. Le système de signature consiste a s'identifier en
|
|||
|
tant que la personne que l'on est, en certifiant de son identité, et
|
|||
|
repose sur un système dit de <em>Web of Trust</em>. </p>
|
|||
|
<p>Ce concept de Web of Trust est simple: si je valide le code vous
|
|||
|
identifiant (votre clé), en certifiant que vous êtes qui vous êtes et
|
|||
|
que je vous connais, et que d'autres personnes m'ont déjà
|
|||
|
personnellement validé, les autres utilisateurs seront enclins a croire
|
|||
|
que vous êtes en effet la personne que vous prétendez être. Bien
|
|||
|
entendu, les utilisateurs validant trop de clés rapportées comme fausses
|
|||
|
voient la valeur de leurs signatures baissée, et toutes les clés signées
|
|||
|
par ces utilisateurs voient leur crédibilité baisser.<br />
|
|||
|
Inversement, les "bons utilisateurs" voient la valeur de leurs
|
|||
|
signatures augmentée, ce qui augmente la crédibilité des clés qu'ils ont
|
|||
|
signées.</p>
|
|||
|
<p>Ceci dit, un email peut être a la fois signé et chiffré, de façon a être
|
|||
|
sûr, non seulement que l’expéditeur de l'email est bien celui qu'il dit
|
|||
|
être, mais aussi que l'email n'a pas été modifié entre l'envoi et
|
|||
|
la réception (en effet, avec un chiffrement de type RSA/DSA, une
|
|||
|
modification du corps de l'email rend ce dernier illisible, la clé
|
|||
|
publique ne correspondant plus a la phrase de passe du message), ce qui
|
|||
|
offre bien évidemment des avantages non négligeables dans un
|
|||
|
environnement ou la protection des échanges est importante (soit a peu
|
|||
|
près partout sur internet, si vous tenez a votre vie privée. Pensez a
|
|||
|
<a href="http://www.hauteresolution.net/pourquoi-je-vais-quitter-gmail/">quitter Gmail</a> aussi, par exemple).</p>
|
|||
|
<p>Il est cependant a noter que les clés publiques sont généralement
|
|||
|
situées sur un serveur de clés publiques, tel pgp.mit.edu ou encore
|
|||
|
subkeys.pgp.net (certaines personnes préfèrent garder leur clés hors des
|
|||
|
serveurs de clés publiques, craignant une compromission de ces serveurs.
|
|||
|
Dans le cas d'utilisateurs normaux (c'est a dire n'échangeant pas de
|
|||
|
secrets classés secret-défense par email), la protection offerte par les
|
|||
|
serveurs de clé publiques est suffisante)</p>
|
|||
|
<p>L'une des implémentations les plus connues et utilisées de PGP est sans
|
|||
|
conteste GPG (<a href="http://fr.wikipedia.org/wiki/GNU_Privacy_Guard">GNU Privacy Guard</a>) , qui comme son nom l'indique fait
|
|||
|
partie du projet GNU, et qui (<code>&lt;troll&gt;</code> de façon surprenante pour un
|
|||
|
programme GNU<code>&lt;/troll&gt;</code>) est extrêmement efficace et claire.</p>
|
|||
|
<p>Après ces explications techniques, voici venue le
|
|||
|
moment intéressant/utile, a savoir l'application. Le chiffrement et la
|
|||
|
signature de mails doivent cependant attendre un petit peu, étant donné
|
|||
|
qu'il vous faut d'abord créer votre clé et la placer sur un serveur de
|
|||
|
clés publiques, de façon à ce que votre destinataire puisse vous
|
|||
|
identifier lorsqu'il recevra le mail, mais aussi a configurer votre
|
|||
|
client mail pour utiliser gpg (je baserai les explications de cet
|
|||
|
article sur Thunderbird, mais des explications efficaces sont trouvables
|
|||
|
facilement sur les interwebs).</p>
|
|||
|
<p>Tout d'abord, générons une clé GPG :</p>
|
|||
|
<div class="highlight"><pre> <span class="n">gpg</span> <span class="o">--</span><span class="n">gen</span><span class="o">-</span><span class="n">key</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>GPG va vous demander les méthodes de chiffrement que vous voulez
|
|||
|
utiliser, le plus sur est de laisser la valeur par défaut. La question
|
|||
|
suivante est de savoir quelle taille votre clé doit faire, il est
|
|||
|
préférable de choisir la taille la plus importante possible (4096). GPG
|
|||
|
veut ensuite savoir quand votre clé doit expirer. La méthode simple est
|
|||
|
bien évidemment de ne jamais la faire expirer, il est cependant plus
|
|||
|
intéressant dans une logique de sécurité de régler cette durée a six
|
|||
|
mois/un an. </p>
|
|||
|
<p>Des informations personnelles vous sont ensuite demandées,
|
|||
|
concernant votre nom (mettez le vrai, tel qu'il apparaît sur votre carte
|
|||
|
d'identité, si vous souhaitez utiliser votre véritable identité), votre
|
|||
|
adresse mail (mettez la plus utilisée, vous pourrez en rajouter plus
|
|||
|
tard), et un mot de passe pour la clé (utilisez un mot de passe
|
|||
|
sécurisé!! Il est conseillé d'utiliser au moins 8 caractères, dont majuscules,
|
|||
|
minuscules, caractères spéciaux et nombres (vous pouvez utiliser la
|
|||
|
commande <code>makepasswd</code>, qui génère automatiquement un mot de
|
|||
|
passe) </p>
|
|||
|
<p>GPG va maintenant prendre un peu de temps pour générer le couple clé
|
|||
|
publique/clé privée, vous devriez profiter de ce temps pour effectuer
|
|||
|
des opérations autres sur votre ordinateur : taper des textes, lancer
|
|||
|
des films, écouter de la musique... De façon à augmenter les chances
|
|||
|
d'obtenir un nombre bien aléatoire (le générateur d'aléatoire se base
|
|||
|
sur la RAM pour obtenir des bits au hasard) </p>
|
|||
|
<p>Une fois cela fini, vous obtenez un couple clé publique/clé privée, que
|
|||
|
vous ne pouvez pas visualiser entièrement pour l'instant. Il est
|
|||
|
cependant possible (et recommandé) de les exporter pour les sauvegarder
|
|||
|
via une commande:</p>
|
|||
|
<div class="highlight"><pre><span class="n">gpg</span> <span class="o">--</span><span class="n">armor</span> <span class="o">--</span><span class="n">export</span> <span class="o">--</span><span class="n">output</span><span class="o">=</span><span class="n">pubkey</span><span class="p">.</span><span class="n">gpg</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>pour la clé publique, et</p>
|
|||
|
<div class="highlight"><pre><span class="n">gpg</span> <span class="o">--</span><span class="n">armor</span> <span class="o">--</span><span class="n">export</span><span class="o">-</span><span class="n">secret</span><span class="o">-</span><span class="n">keys</span> <span class="o">--</span><span class="n">output</span><span class="o">=</span><span class="n">seckey</span><span class="p">.</span><span class="n">gpg</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>pour la clé privée. Il est possible et même souhaitable de copier ces
|
|||
|
clés sur une clé USB, une carte SD, ou un autre support de stockage
|
|||
|
résistant, de façon a avoir une solution de sauvegarde, au cas ou vous
|
|||
|
perdiez ces clés sur ce PC. </p>
|
|||
|
<p>Cela fait, listons les informations sur votre clé publique :</p>
|
|||
|
<div class="highlight"><pre><span class="err">$</span> <span class="n">gpg</span> <span class="o">--</span><span class="n">list</span><span class="o">-</span><span class="n">keys</span> <span class="o">--</span><span class="n">fingerprint</span>
|
|||
|
<span class="n">pub</span> <span class="mi">4096</span><span class="n">R</span><span class="o">/</span><span class="mi">27</span><span class="n">D81AC8</span> <span class="mi">2012</span><span class="o">-</span><span class="mi">11</span><span class="o">-</span><span class="mi">17</span>
|
|||
|
<span class="n">Key</span> <span class="n">fingerprint</span> <span class="o">=</span> <span class="mi">6345</span> <span class="n">A91A</span> <span class="n">FF89</span> <span class="mf">97E0</span> <span class="mi">13</span><span class="n">D0</span> <span class="mi">96</span><span class="n">A9</span> <span class="mf">9E2</span><span class="n">A</span> <span class="mi">1917</span> <span class="mi">27</span><span class="n">D8</span> <span class="mi">1</span><span class="n">AC8</span>
|
|||
|
<span class="n">uid</span> <span class="n">Cl</span><span class="err">é</span><span class="n">ment</span> <span class="n">Hertling</span> <span class="p">(</span><span class="n">Wxcafe</span><span class="p">)</span>
|
|||
|
<span class="n">uid</span> <span class="p">[</span><span class="n">jpeg</span> <span class="n">image</span> <span class="n">of</span> <span class="n">size</span> <span class="mi">14692</span><span class="p">]</span>
|
|||
|
<span class="n">sub</span> <span class="mi">4096</span><span class="n">R</span><span class="o">/</span><span class="mi">9</span><span class="n">ED7F77F</span> <span class="mi">2012</span><span class="o">-</span><span class="mi">11</span><span class="o">-</span><span class="mi">17</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>La partie <code>pub</code> indique que c'est une clé publique, <code>4096R</code> indique que c'est
|
|||
|
une clé RSA sur 4096 bits. La partie <code>27D81AC8</code> est
|
|||
|
l'identifiant de la clé publique, <code>Key fingerprint = 6345 A91A FF89 97E0 13D0
|
|||
|
96A9 9E2A 1917 27D8 1AC8</code> est appelé fingerprint de la clé. Les champs
|
|||
|
<code>uid</code> sont des manières d'identifier la clé et la personne associée a
|
|||
|
celle-ci, et enfin le champ <code>sub</code> est indicateur d'une subkey, système
|
|||
|
uniquement pris en charge par GPG et non inclus dans les premières
|
|||
|
versions de PGP, donc non-implémentées dans nombre de clients pgp.<br />
|
|||
|
Passons maintenant a la mise en place de cette clé publique sur un
|
|||
|
serveur de clés : nous utiliserons ici le serveur pgp.mit.edu.</p>
|
|||
|
<div class="highlight"><pre><span class="n">gpg</span> <span class="o">--</span><span class="n">keyserver</span> <span class="n">pgp</span><span class="p">.</span><span class="n">mit</span><span class="p">.</span><span class="n">edu</span> <span class="o">--</span><span class="n">send</span><span class="o">-</span><span class="n">keys</span> <span class="o">*</span><span class="n">ID</span> <span class="n">de</span> <span class="n">la</span> <span class="n">cl</span><span class="err">é</span> <span class="n">a</span> <span class="n">uploader</span><span class="o">*</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>Maintenant que votre clé publique a été uploadée, vous pouvez l'utiliser
|
|||
|
pour signer et chiffrer vos emails!<br />
|
|||
|
Installons donc l'extension Enigmail pour Thunderbird, permettant de
|
|||
|
chiffrer/signer vos emails de façon transparente. Il conviendra de
|
|||
|
paramétrer cette extension, via le menu OpenPGP dans Thunderbird, puis
|
|||
|
Setup Wizard (l'option entre Help et About OpenPGP). Normalement,
|
|||
|
Enigmail détecte votre installation de gpg automatiquement, si cependant
|
|||
|
ce n'était pas le cas, vous pouvez utiliser la clé exportée tout a
|
|||
|
l'heure (pubkey.gpg) en l'important (import key from file). </p>
|
|||
|
<p>Selon les options que vous avez utilisées, vos emails seront
|
|||
|
automatiquement signés et/ou chiffrés a l'envoi. Gardez cependant a
|
|||
|
l'esprit que si tout le monde peut lire les mails signés, il n'en est
|
|||
|
pas de même pour les mails chiffrés, pour lesquels il est nécessaire de
|
|||
|
posséder la clé publique du correspondant en question, et de posséder
|
|||
|
soi même une clé privée, donc d'utiliser OpenPGP aussi.<br />
|
|||
|
Concernant les signatures de clés, elles fonctionnent de manière très
|
|||
|
simple :<br />
|
|||
|
Vous devez télécharger la clé de votre correspondant, via un</p>
|
|||
|
<div class="highlight"><pre> <span class="n">gpg</span> <span class="o">--</span><span class="n">keyserver</span> <span class="n">pgp</span><span class="p">.</span><span class="n">mit</span><span class="p">.</span><span class="n">edu</span> <span class="o">--</span><span class="n">search</span><span class="o">-</span><span class="n">keys</span> <span class="o">*</span><span class="n">ID</span> <span class="n">de</span> <span class="n">la</span> <span class="n">cl</span><span class="err">é</span> <span class="n">de</span> <span class="n">votre</span> <span class="n">correspondant</span><span class="o">*</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>(a noter que cette commande fonctionne aussi en cherchant une adresse
|
|||
|
email ou un nom. Cependant, en cherchant via l'identifiant de la clé,
|
|||
|
vous êtes sur de trouver votre correspondant. Globalement, l'email est
|
|||
|
lui aussi assez sûr en terme de recherche de clés, tandis que le nom
|
|||
|
donne rarement un résultat). L'étape suivante est de vérifier que votre
|
|||
|
correspondant est bien la personne qui est spécifiée sur sa clé. Pour
|
|||
|
cela, il convient d'avoir déjà vu physiquement cette personne et si
|
|||
|
possible d'avoir vu une pièce d'identité lui appartenant, et d'avoir une
|
|||
|
confirmation de cette personne que la clé que vous voyez lui appartient
|
|||
|
bien.<br />
|
|||
|
Ceci fait, vous pouvez signer la clé via un</p>
|
|||
|
<div class="highlight"><pre> <span class="n">gpg</span> <span class="o">--</span><span class="n">sign</span> <span class="o">*</span><span class="n">ID</span> <span class="n">de</span> <span class="n">la</span> <span class="n">cl</span><span class="err">é</span> <span class="n">a</span> <span class="n">signer</span><span class="o">*</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>puis la renvoyer au serveur via</p>
|
|||
|
<div class="highlight"><pre> <span class="n">gpg</span> <span class="o">--</span><span class="n">keyserver</span> <span class="n">pgp</span><span class="p">.</span><span class="n">mit</span><span class="p">.</span><span class="n">edu</span> <span class="o">--</span><span class="n">send</span><span class="o">-</span><span class="n">key</span> <span class="o">*</span><span class="n">ID</span> <span class="n">de</span> <span class="n">la</span> <span class="n">cl</span><span class="err">é</span> <span class="n">a</span> <span class="n">signer</span><span class="o">*</span>
|
|||
|
</pre></div>
|
|||
|
|
|||
|
|
|||
|
<p>Voila, la clé de votre correspondant est signée!</p>
|
|||
|
<p>Ce tutoriel sur PGP/GPG est terminé, et votre sécurité est améliorée
|
|||
|
grâce a cette superbe invention qu'est la cryptographie!</p></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Wxcafe</dc:creator><pubDate>Mon, 19 Nov 2012 00:36:00 +0100</pubDate><guid>tag:wxcafe.net,2012-11-19:posts/%D/la-cryptographie-avec-pgp-et-principalement-gnupg/</guid></item></channel></rss>
|