<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ingnu &raquo; Ingnu</title>
	<atom:link href="http://ingnu.fr/feed/" rel="self" type="application/rss+xml" />
	<link>http://ingnu.fr</link>
	<description>Liberté !</description>
	<lastBuildDate>Tue, 07 Feb 2012 02:34:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Si j&#8217;étais président</title>
		<link>http://ingnu.fr/2012/02/07/si-jetais-president/</link>
		<comments>http://ingnu.fr/2012/02/07/si-jetais-president/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 02:34:29 +0000</pubDate>
		<dc:creator>Jimmy</dc:creator>
				<category><![CDATA[Non classé]]></category>

		<guid isPermaLink="false">http://ingnu.fr/?p=333</guid>
		<description><![CDATA[Fort de ma nouvelle autorité, je commencerai par montrer au peuple français mon réalisme. Il est impossible de s&#8217;imaginer les problèmes du peuple sans soi-même faire partie du peuple. Or, le peuple ne se vautre pas dans la luxure. Le salaire français moyen est légèrement supérieur à 1000€. Comment peut-on comprendre son peuple quand soi-même &#8230; </p><p><a class="more-link block-button" href="http://ingnu.fr/2012/02/07/si-jetais-president/">Lire la Suite &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>Fort de ma nouvelle autorité, je commencerai par montrer au peuple français mon réalisme. Il est impossible de s&#8217;imaginer les problèmes du peuple sans soi-même faire partie du peuple. Or, le peuple ne se vautre pas dans la luxure. Le salaire français moyen est légèrement supérieur à 1000€. Comment peut-on comprendre son peuple quand soi-même on gagne près de 20 fois plus ? Comment peut-on savoir si toutes les taxes qu&#8217;on impose à un pays peuvent être déboursées par ses citoyens ?</p>
<p>Ma première action consiste à réduire significativement mon salaire de &laquo;&nbsp;dirigeant&nbsp;&raquo; du peuple français. Un salaire de 20 000€ mensuels n&#8217;est qu&#8217;une apparence, un artifice. Cela ne sert qu&#8217;à montrer le pouvoir qu&#8217;on a sur son peuple. Je déciderai donc de porter mon salaire à 1000€ nets mensuels. Après tout, un &laquo;&nbsp;Président&nbsp;&raquo; de la république dispose manifestement de bon nombre d&#8217;autres avantages. Inutile de gagner plus.</p>
<p>Ma seconde action va être de changer la terminologie du chef du gouvernement. &laquo;&nbsp;Président&nbsp;&raquo; me semble être doté d&#8217;une connotation négative, inspirant la supériorité, l&#8217;assise d&#8217;un pouvoir sur le peuple. En tant que nouveau chef d&#8217;État, je me considère comme le guide du peuple français. Sans majuscule. Parce que si je suis à la tête des français aujourd&#8217;hui, c&#8217;est pour les guider vers des jours meilleurs.</p>
<p>Ma troisième action va consister à supprimer tous les élus, tous les représentants du peuple. Je supprime les maires, les députés, les sénateurs. Je veux redonner le pouvoir aux français. Je veux que les français participent à nouveau activement à la vie politique du pays. Je crois que si les bureaux de votes se vident, c&#8217;est d&#8217;une part à cause du nombre d&#8217;intermédiaires trop élevé, et d&#8217;autre part parce qu&#8217;ils ont le sentiment de ne pas être écoutés, que le gouvernement fait de toute manière ce qu&#8217;il a décidé, peu importe ce que dit le peuple.</p>
<p>Je veux instaurer une vraie démocratie. LA vraie démocratie. Je veux rendre impossible l&#8217;adoption d&#8217;une loi, d&#8217;un traité, ou d&#8217;un décret, sans le consentement du peuple français. Pour y parvenir, je mettrais en place une plateforme permettant à tout un chacun de consulter librement toute proposition qui sera faite, et d&#8217;y donner son avis. La proposition ne sera adoptée qu&#8217;en cas de majorité absolue. C&#8217;est ainsi, et seulement de cette manière, qu&#8217;un gouvernement peut être qualifié de démocratique. Pas en permettant à des intermédiaires de répondre du peuple, qui les ont choisi en fonction de campagnes coûteuses, et menées dans l&#8217;unique but de se vendre. Je suis persuadé que redonner son pouvoir à la voix des français sera une motivation suffisante pour que le vote redevienne un acte de pure volonté.</p>
<p>La réduction du salaire du chef de l&#8217;État, la suppression de ces intermédiaires, la récupération puis la revente des biens appartenant à l&#8217;État prêtés aux intermédiaires et jugés somptuaires, permettra de réaliser des économies substantielles. Et pour une fois, pas en saignant les français.</p>
<p>Ma quatrième action sera l&#8217;arrêt pur et simple de la coopération avec toute entreprise ou organisme dont les méthodes ou les convictions vont à l&#8217;encontre de la liberté de l&#8217;individu, qu&#8217;il soit français ou résident de pays étranger. Il est intolérable que notre ancien gouvernement ait pu tisser des liens avec des entreprises fournissant des solutions informatiques à des chefs d&#8217;États leur permettant d&#8217;espionner leur peuple.</p>
<p>Par extension, je supprime tout organisme étatique voué à la seule sécurité du gouvernement au mépris de son peuple. Je récupère une France scindée en deux : le peuple se sent aujourd&#8217;hui oppressé, menacé par ses dirigeants, alors que le rôle de tout gouvernement est de protéger son peuple, et il en a toujours été ainsi. Nous vivons des jours sombres, où les peuples n&#8217;ont plus aucune estime de leur chef d&#8217;État ; pire encore, ils le craignent. Tous ne s&#8217;avouent pas dictateur, et pourtant, tous sont manipulés par la possession et la richesse.</p>
<p>Je supprime donc la Hadopi, et tous ses employés. Je supprime tout lien avec la société Amesys, et avec toutes les autres entreprises avec lesquelles notre ancien gouvernement a pu être en relation, et dont les activités sont en désaccord avec les droits fondamentaux de l&#8217;Homme.</p>
<p>Je supprime également toutes les taxes injustifiées, illégales, immorales, et inutiles. Après tout, les économies réalisées sur la suppression des intermédiaires et la forte réduction de mon salaire et de mes avantages ne peuvent que conduire à une réduction du poids fiscal sur le peuple français. Comment notre ancien gouvernement a-t-il pu se rincer sur le dos de son peuple ? Comment peut-on faire preuve d&#8217;aussi peu de respect envers le peuple qui l&#8217;a choisi ?</p>
<p>Parmi les taxes dont je parle, j&#8217;évoque notamment les taxes sur les carburants, sur les produits de grande consommation, mais aussi la taxe sur la copie privée, absolument inutile et injustifiée. De quel droit l&#8217;État taxe-t-il  un produit sur lequel il n&#8217;a aucun pouvoir décisionnel ? Est-ce que le gouvernement participe à la fabrication du lait ? À celle de l&#8217;essence ? Pourquoi l&#8217;État devrait encore toucher presque 50% du prix de vente du pétrole, alors qu&#8217;il ne l&#8217;extrait pas, ni ne le raffine, ni ne le transporte ? De quel droit l&#8217;État s&#8217;arroge-t-il presque 50% du salaire de ses citoyens, répartis entre impôts, taxes, cotisations obligatoires, etc. ? Jusqu&#8217;aujourd&#8217;hui, qu&#8217;a exactement fait l&#8217;État pour mériter une telle somme ?</p>
<p>Je compte mettre en place une forme de méritocratie. Le rôle du gouvernement est de protéger son peuple. Pas seulement en cas de guerre, mais aussi quand d&#8217;autres gouvernements s&#8217;attaquent à son intégrité. Et par intégrité, j&#8217;entends liberté individuelle. La liberté de vivre, de s&#8217;exprimer, de s&#8217;indigner, d&#8217;être heureux, insouciant, concerné. La liberté d&#8217;écrire, de composer, de développer. La liberté d&#8217;accéder à toute forme de culture ou de science.</p>
<p>Car c&#8217;est en partageant culture et sciences que les civilisations, que LA civilisation humaine a pu se développer, grandir, survivre, jusqu&#8217;à conquérir les océans et les étoiles. Notre ancien gouvernement a tout tenté pour empêcher le partage libre de la culture et de la science. Notre ancien gouvernement estimait que certaines civilisations valaient mieux que d&#8217;autres. Je crois que c&#8217;est précisément ce manque de discernement qui a causé la chute des anciennes civilisations, et des plus grandes. Je crois que c&#8217;est la soif de pouvoir et de richesses qui a causé leur déclin. Et c&#8217;est précisément ce dans quoi tombent les dirigeants de notre époque.</p>
<p>Après tant d&#8217;oppression, tant de mal causé aux peuples, tant de viols de leur liberté et de leur intégrité, il ne peut y avoir qu&#8217;un avenir radieux, parce que désormais, il ne peut plus y avoir que des dirigeants bons avec leurs peuples. Et c&#8217;est ce à quoi je vais m&#8217;employer.</p>
<p>Pour y parvenir, je l&#8217;ai dis, le peuple français aura la parole sur toute décision politique ; les intermédiaires seront supprimés, tout comme les lois, les organismes et les entreprises allant à l&#8217;encontre des libertés ; la culture et la science seront libres d&#8217;accès à tous : tout le monde pourra contribuer au savoir et à la connaissance. Et je me ferai un devoir d&#8217;inciter les autres gouvernements à suivre la même voie, et d&#8217;insister jusqu&#8217;à leur faire entendre raison. Et si ces gouvernements restent intangibles, nous accueillerons ceux qui veulent vivre libres.</p>
<p>Peut-être suis-je utopiste. Peut-être que vous vous dites que jamais je n&#8217;y arriverai. Je pense que la liberté des Hommes vaut bien qu&#8217;on essaye. Nous avons longtemps critiqué les chefs d&#8217;État, sans vraiment proposer d&#8217;alternative, ou, quand on le faisait, elles étaient rejetées. Voulez-vous réellement sacrifier un espoir de retrouver notre liberté, simplement parce que la tâche parait trop ardue ? En ce qui me concerne, et en tant que guide, j&#8217;ai la force de tenter ma chance, parce que je crois encore en l&#8217;Homme, et je crois qu&#8217;il est encore capable de bonnes choses.</p>
]]></content:encoded>
			<wfw:commentRss>http://ingnu.fr/2012/02/07/si-jetais-president/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation d&#8217;un serveur HTTP/HTTPS</title>
		<link>http://ingnu.fr/2012/02/07/installation-dun-serveur-http-https/</link>
		<comments>http://ingnu.fr/2012/02/07/installation-dun-serveur-http-https/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 23:05:32 +0000</pubDate>
		<dc:creator>Jimmy</dc:creator>
				<category><![CDATA[Créer son propre cloud]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[phpmyadmin]]></category>
		<category><![CDATA[roundcube]]></category>

		<guid isPermaLink="false">http://ingnu.fr/?p=349</guid>
		<description><![CDATA[On continue notre nouvelle série d&#8217;articles. Après avoir créer un pare-feu de base que nous complèterons au fil des articles, après avoir mis en place une autorité de certification, puis un serveur DNS et un serveur mail, nous nous attaquons maintenant à l&#8217;installation du serveur apache. Apache devra pouvoir desservir des pages aussi bien en &#8230; </p><p><a class="more-link block-button" href="http://ingnu.fr/2012/02/07/installation-dun-serveur-http-https/">Lire la Suite &#187;</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://ingnu.fr/2012/02/07/installation-dun-serveur-http-https/apache_server_logo/" rel="attachment wp-att-368"><img class="alignleft size-full wp-image-368" title="apache_server_logo" src="http://ingnu.fr/wp-content/uploads/2012/02/apache_server_logo.png" alt="" width="261" height="285" /></a>On continue <a href="http://ingnu.fr/category/creer-son-propre-cloud/">notre nouvelle série d&#8217;articles</a>. Après avoir <a title="Créer son propre Cloud : Introduction" href="http://ingnu.fr/2012/02/05/creer-son-propre-cloud-introduction/">créer un pare-feu de base</a> que nous complèterons au fil des articles, après avoir <a title="Création de sa propre autorité de certification" href="http://ingnu.fr/2012/02/06/creation-de-sa-propre-autorite-de-certification/">mis en place une autorité de certification</a>, puis <a title="Installer et configurer un serveur DNS" href="http://ingnu.fr/2012/02/05/installer-et-configurer-un-serveur-dns/">un serveur DNS</a> et <a title="Installation de son propre serveur mail" href="http://ingnu.fr/2012/02/06/installation-de-son-propre-serveur-mail/">un serveur mail</a>, nous nous attaquons maintenant à l&#8217;installation du serveur <a href="http://httpd.apache.org">apache</a>.</p>
<p>Apache devra pouvoir desservir des pages aussi bien en HTTP qu&#8217;en HTTPS, permettre l&#8217;utilisation de langages comme <a href="http://fr.php.net/">PHP</a> et les scripts CGI, tout en assurant une bonne réactivité et un degrés certain de sécurité.</p>
<p>Un serveur HTTP(S) nous permettra de mettre en place une grande variété de services : dans un premier temps, un outil pour gérer notre base de données et un client mail, puis par la suite, un blog, un wiki, un lecteur de flux RSS, etc.</p>
<p>Il nous permettra également de mettre en place un proxy pour simplifier l&#8217;accès à des applications offrant une interface web, partager et accéder aux fichiers, et bien d&#8217;autres choses encore. Rappelons que l&#8217;objectif est de s&#8217;affranchir de tout outil du Cloud, proposé par de grandes entreprises telles que Google. Apache en sera un moyen d&#8217;y accéder facilement.</p>
<div class="important_block message-block"><p class="printonly"><strong>Important!</strong></p><p class="first-p">Je rappelle une nouvelle fois que je ne prétends pas que mes tutoriels sont mieux que les autres. Je souhaite simplement faire part à la communauté de mon expérience personnelle, en espérant qu&#8217;elle serve.</p>
</div>
<div class="important_block message-block"><p class="printonly"><strong>Important!</strong></p><p class="first-p">Petit rappel sur les noms de domaines : un nom de domaine est divisé en deux ou trois segments séparés par un point. Le segment le plus à droite est le TLD (<em>Top Level Domain</em>), le plus à gauche est un sous-domaine. Donc <em>mail.exemple.fr</em> est un sous-domaine de <em>exemple.fr</em>, dont le TLD est <em>.fr</em>.</p>
</div>
<p>Ce petit rappel effectué, on peut organiser les sites desservis par apache de la manière suivante :</p>
<pre>/var/www			Racine
/var/www/exemple.fr		Racine du domaine
/var/www/exemple.fr/mail	Racine du sous-domaine mail
/var/www/exemple.fr/mail/www	Racine du site hébergé
/var/www/exemple.fr/mail/log	Journaux
/var/www/exemple.fr/www		Racine du domaine principal
/var/www/exemple.fr/www/www	Racine du site hébergé
/var/www/exemple.fr/www/log	Journaux</pre>
<p>Une telle arborescence permet d&#8217;organiser correctement les différents sites qui pourront être desservis par Apache, tout en ayant rapidement à portée de la main les journaux pour chaque sous-domaine. Cela nous permettra également de confier ces journaux à une application telle que <a href="http://awstats.sourceforge.net/">awstats</a> pour une analyse plus efficace que si tous les journaux étaient regroupés dans le même fichier.</p>
<p>Avant toute chose, installons quelques paquets, stoppons apache, et supprimons les hôtes virtuels par défaut :</p>
<pre class="brush: bash">apt-get install apache2 libapache2-mod-php5 php5 php5-mysql php5-mcrypt php-mdb2 php-mdb2-driver-mysql
/etc/init.d/apache2 stop
a2dissite default &amp;&amp; rm /etc/apache2/sites-available/default
a2dissite default-ssl &amp;&amp; rm /etc/apache2/sites-available/default-ssl
cd /etc/apache2</pre>
<p>On désactive ensuite totalement la journalisation dans apache :</p>
<pre class="brush: bash">rm conf.d/other-vhosts-access-log
nano apache2.conf</pre>
<p>Commentez la ligne :</p>
<pre>ErrorLog ${APACHE_LOG_DIR}/error.log</pre>
<p>Comme on va également faire appel à SSL, on active le port 443 :</p>
<pre class="brush: bash">mv ports.conf ports.conf-orig
nano ports.conf</pre>
<pre>NameVirtualHost *:80
NameVirtualHost *:443
Listen 80
Listen 443</pre>
<p>On va continuer en créant quatre arborescences différentes, pour quatre sites différents.</p>
<p>Le premier pourrait être simplement qualifié de bonne pratique : afin d&#8217;accélérer le chargement des pages, il convient de confier certains éléments à un sous-domaine particulier, desservi par un hôte virtuel ne journalisant pas ses accès, et contenant des éléments statiques, tels que des images ou des scripts. On économise ainsi plusieurs cycles d&#8217;écriture à chaque chargement de page.</p>
<h2>Domaine static</h2>
<p>Créons la première arborescence :</p>
<pre class="brush: bash">mkdir -p /var/www/exemple.fr/static/www</pre>
<div class="important_block message-block"><p class="printonly"><strong>Important!</strong></p><p class="first-p">Pas besoin de créer un dossier log, puisque, comme dit, aucun journal ne sera conservé pour cet hôte virtuel.</p>
</div>
<p>On créé ensuite notre premier hôte virtuel :</p>
<pre class="brush: bash">cd /etc/apache2/sites-available
nano static.exemple.fr</pre>
<pre>&lt;VirtualHost *:80&gt;
	ServerName static.exemple.fr
	ServerAdmin contact@exemple.fr

	DocumentRoot /var/www/exemple.fr/static/www
&lt;/VirtualHost&gt;</pre>
<p>Rien de bien sorcier : on déclare un nouvel hôte virtuel écoutant sur toutes les interfaces configurées dans apache (*) sur le port 80. On déclare également le nom de domaine affecté à cet hôte virtuel, en indiquant éventuellement (ce n&#8217;est pas une obligation) l&#8217;adresse email du responsable. Enfin, la dernière directive défini la racine du site, là où se trouveront les fichiers. Pour le moment, il n&#8217;y en a aucun, mais au moins, on a un hôte virtuel destiné à stocker les fichiers statiques, c&#8217;est déjà ça.</p>
<h2>Domaine www</h2>
<p>Le domaine (sous-domaine plus exactement) <em>www</em> est un peu particulier dans la mesure où il est plus utilisé par habitude que réel besoin : on se passe très bien de la partie <em>www</em> dans <em>www.exemple.fr</em>. Cela nous donne toutefois deux bonnes occasions : conserver notre arborescence de base saine, et voir comment créer un alias de domaine.</p>
<p>Notre objectif sera de faire en sorte que, peu importe si on accède à notre site principal via <em>http://exemple.fr</em> ou <em>http://www.exemple.fr</em>, on devra tomber sur la même page. On aura recours, pour cela, à la directive <em>ServerAlias</em>.</p>
<p>On créé donc notre second hôte virtuel avec son arborescence :</p>
<pre class="brush: bash">mkdir -p /var/www/exemple.fr/www/{www,log}
nano www.exemple.fr</pre>
<pre>&lt;VirtualHost *:80&gt;
	ServerName exemple.fr
        ServerAlias www.exemple.fr
	ServerAdmin contact@exemple.fr

	DocumentRoot /var/www/exemple.fr/www/www

        CustomLog /var/www/exemple.fr/www/log/access_log
        ErrorLog /var/www/exemple.fr/www/log/error_log
&lt;/VirtualHost&gt;</pre>
<p>Par la même occasion, on en a profité pour spécifier le chemin vers le journal des accès et le journal des erreurs. Il faudra procéder de même pour tout hôte virtuel créé à l&#8217;avenir.</p>
<p>Pour le moment, nous n&#8217;utiliserons pas ce domaine : c&#8217;est vous qui déciderez ce que vous voulez en faire : blog, portail privé, etc.</p>
<h2>Domaine mysql</h2>
<p>Le nom de ce sous-domaine importe peu. J&#8217;ai choisi <em>mysql</em>, comme j&#8217;aurai pu choisir <em>pma</em>, <em>phpmyadmin</em>, <em>admin</em> ou tout autre. Cependant, en consultant régulièrement mes logs, j&#8217;ai constaté que certains s&#8217;amusent à scanner certains sous-domaines-clés, pour éventuellement tomber sur un script d&#8217;administration non-sécurisé. J&#8217;ai vu passer toutes sortes de sous-domaines, mais assez étonnamment, peu tentent <em>mysql.exemple.fr</em>.</p>
<p>Ce domaine servira à accéder justement à <a href="http://www.phpmyadmin.net">phpMyAdmin</a>, script php probablement le plus utilisé pour administrer graphiquement ses bases de données. Outre l&#8217;aspect pédagogique de sa présence dans cet article, puisque c&#8217;est un bon prétexte à l&#8217;introduction à SSL avec apache, ce sera également un outil très pratique pour la création de futures bases de données, mais aussi pour des tâches plus triviales comme la population de notre première base créée, <em>MailServer</em>.</p>
<p>Créons l&#8217;arborescence et l&#8217;hôte virtuel :</p>
<pre class="brush: bash">mkdir -p /var/www/exemple.fr/mysql/www</pre>
<div class="important_block message-block"><p class="printonly"><strong>Important!</strong></p><p class="first-p">Ici, nous ne créerons pas de journaux. Bien que cela pourrait être utile en cas de problème avec phpMyAdmin, a priori, il n&#8217;y aurait que vous pour se connecter à cette adresse, à moins que vous n&#8217;ouvriez un accès à quelqu&#8217;un d&#8217;autre. Dans ce cas, vous devriez pouvoir adapter la configuration pour ajouter la journalisation <img src='http://ingnu.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
</div>
<pre class="brush: bash">nano mysql.exemple.fr</pre>
<pre>&lt;VirtualHost *:80&gt;
	ServerName mysql.exemple.fr
	Redirect / https://mysql.exemple.fr/
&lt;/VirtualHost&gt;

&lt;VirtualHost *:443&gt;
	ServerName mysql.exemple.fr

	DocumentRoot /var/www/exemple.fr/mysql/www

	SSLEngine On
	SSLCertificateFile /scripts/certificate_authority/apache/mysql.exemple.fr.crt
	SSLCertificateKeyFile /scripts/certificate_authority/apache/mysql.exemple.fr.key
&lt;/VirtualHost&gt;</pre>
<p>Ici, nous créons un hôte virtuel écoutant sur le port 80, dont l&#8217;unique objectif sera de forcer la redirection vers le même hôte virtuel, mais écoutant sur le port 443 (le port HTTPS). La connexion à <em>mysql.exemple.fr</em> sera donc forcément chiffrée.</p>
<p>On va tout de suite créer le certificat et la clé qui vont bien :</p>
<pre class="brush: bash">/scripts/certificate_authority/make_request apache mysql.exemple.fr
/scripts/certificate_authority/sign_request apache mysql.exemple.fr
chown www-data:www-data /scripts/certificate_authority/apache/*</pre>
<div class="warning_block message-block"><p class="printonly"><strong>Warning!</strong></p><p class="first-p">Lorsque le <em>Common Name</em> vous sera demandé, indiquez le nom de domaine ! Et dans notre cas, acceptez la création d&#8217;une clé sans mot de passe !</p>
</div>
<p>On va ensuite télécharger et installer phpMyAdmin. À l&#8217;heure où j&#8217;écris ces lignes, la dernière version disponible est la 3.4.9.</p>
<div class="important_block message-block"><p class="printonly"><strong>Important!</strong></p><p class="first-p">Personnellement, j&#8217;ai pris l&#8217;habitude, lorsque je télécharge une application de ce genre, de me placer dans le répertoire /usr/src. Cela me permet de conserver une copie fraîche, non altérée, de l&#8217;application en question.</p>
</div>
<pre class="brush: bash">cd /usr/src
wget http://freefr.dl.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.4.9/phpMyAdmin-3.4.9-all-languages.tar.gz
tar zxf phpMyAdmin-3.4.9-all-languages.tar.gz
cp -Rv phpMyAdmin-3.4.9-all-languages/* /var/www/exemple.fr/mysql/www/
mkdir /var/www/exemple.fr/mysql/www/config/
chown -R www-data:www-data /var/www/exemple.fr/mysql/www</pre>
<p>Après avoir décompressé l&#8217;archive, on a copié les fichiers extraits dans le répertoire racine du sous-domaine <em>mysql</em>, puis on a créé le répertoire <em>config</em> qui va nous servir à paramétrer phpMyAdmin. Enfin, on a attribué les bons droits à l&#8217;ensemble de l&#8217;arborescence.</p>
<div class="notice_block message-block"><p class="printonly"><strong>Notice</strong></p><p class="first-p">Réflexe à acquérir : dès que vous créez un fichier ou un répertoire dans une arborescence appartenant à apache, pensez à lui attribuer les bons droits :</p>
<pre>chown -R www-data:www-data &lt;fichier ou répertoire&gt;</pre>
<p>
</div>
<p>Pour le moment, notre serveur n&#8217;est pas accessible depuis l&#8217;extérieur, nous nous occuperons donc de la configuration de phpMyAdmin plus tard. En attendant, créons notre dernier hôte virtuel.</p>
<h2>Domaine mail</h2>
<p>Revenons dans le répertoire de configuration des hôtes virtuels :</p>
<pre class="brush: bash">cd /etc/apache2/sites-available</pre>
<p>Et créons la nouvelle arborescence :</p>
<pre class="brush: bash">mkdir -p /var/www/exemple.fr/mail/{www,log}</pre>
<p>Nous allons combiner tout ce que nous avons vu jusqu&#8217;à présent pour créer le fichier de configuration de cet hôte virtuel :</p>
<pre class="brush: bash">nano mail.exemple.fr</pre>
<pre>&lt;VirtualHost *:80&gt;
	ServerName mail.exemple.fr
	Redirect / https://mail.exemple.fr/
&lt;/VirtualHost&gt;

&lt;VirtualHost *:443&gt;
	ServerName mail.exemple.fr

	DocumentRoot /var/www/exemple.fr/mail/www

	SSLEngine On
	SSLCertificateFile /scripts/certificate_authority/apache/mail.exemple.fr.crt
	SSLCertificateKeyFile /scripts/certificate_authority/apache/mail.exemple.fr.key

        CustomLog /var/www/exemple.fr/mail/log/access_log
        ErrorLog /var/www/exemple.fr/mail/log/error_log
&lt;/VirtualHost&gt;</pre>
<p>On créé notre couple clé/certificat :</p>
<pre class="brush: bash">/scripts/certificate_authority/make_request apache mail.exemple.fr
/scripts/certificate_authority/sign_request apache mail.exemple.fr
chown www-data:www-data /scripts/certificate_authority/apache/*</pre>
<div class="warning_block message-block"><p class="printonly"><strong>Warning!</strong></p><p class="first-p">Lorsque le <em>Common Name</em> vous sera demandé, indiquez le nom de domaine ! Et dans notre cas, acceptez la création d&#8217;une clé sans mot de passe ! (bis repetita)</p>
</div>
<p>Pour la consultation des mails, on va faire appel à l&#8217;excellent <a href="http://roundcube.net/">RoundCube</a>, actuellement en version 0.7.1.</p>
<pre class="brush: bash">cd /usr/src
wget http://freefr.dl.sourceforge.net/project/roundcubemail/roundcubemail/0.7.1/roundcubemail-0.7.1.tar.gz
tar zxf roundcubemail-0.7.1.tar.gz
cp -Rv roundcubemail-0.7.1/* /var/www/exemple.fr/mail/www/
cp roundcubemail-0.7.1/.htaccess /var/www/exemple.fr/mail/www/
chown -R www-data:www-data /var/www/exemple.fr/mail/www/</pre>
<p>La configuration de RoundCube peut se faire depuis Internet, mais encore une fois, notre serveur n&#8217;est pas encore accessible depuis l&#8217;extérieur. On va donc patienter encore un peu.</p>
<p>On active maintenant nos hôtes virtuels fraîchement créés :</p>
<pre class="brush: bash">ln -s /etc/apache2/sites-available/www.exemple.fr /etc/apache2/sites-available/default
a2ensite default
a2ensite www.exemple.fr
a2ensite static.exemple.fr
a2ensite mysql.exemple.fr
a2ensite mail.exemple.fr
/etc/init.d/apache2 start</pre>
<div class="important_block message-block"><p class="printonly"><strong>Important!</strong></p><p class="first-p">La commande ln nous permet de créer un lien symbolique <em>default</em> pointant vers le fichier <em>www.exemple.fr</em>. Cela nous permet de constituer une adresse &laquo;&nbsp;catchall&nbsp;&raquo;. Tout sous-domaine qui n&#8217;est pas explicitement défini pointera toujours sur <em>www.exemple.fr</em>.</p>
</div>
<p>Consultez les journaux des différents hôtes (en particulier les journaux d&#8217;erreurs) pour vous assurer que tout fonctionne bien du côté d&#8217;apache.</p>
<h2>DNS</h2>
<p>On édite le fichier de configuration de notre domaine :</p>
<pre class="brush: bash">nano /etc/bind/db.exemple.fr</pre>
<p>A la fin du fichier, rajoutez les lignes suivantes :</p>
<pre>www		IN	CNAME		ns
*		IN	CNAME		ns</pre>
<p>Ces deux lignes définissent un alias (<em>CNAME</em>) du domaine <em>www</em> et de tout autre sous-domaine vers l&#8217;adresse IP attribuée au sous-domaine <em>ns</em>. Dans notre cas, tous ces sous-domaines pointent vers l&#8217;adresse principale de notre serveur (1.1.1.1, pour réutiliser l&#8217;exemple de départ).</p>
<div class="warning_block message-block"><p class="printonly"><strong>Warning!</strong></p><p class="first-p">Avant d&#8217;enregistrer, n&#8217;oubliez pas de modifier l&#8217;identifiant du fichier de configuration !</p>
</div>
<p>On redémarre bind :</p>
<pre class="brush: bash">/etc/init.d/bind9 restart</pre>
<h2>Firewall</h2>
<pre class="brush: bash">nano /scripts/firewall</pre>
<p>Entre les lignes :</p>
<pre>##### Configuration personnalisée #####</pre>
<p>Et :</p>
<pre>##### Fin : Configuration personnalisée #####</pre>
<p>Rajoutez les lignes suivantes :</p>
<pre>${IPT} -A SERVICES -p tcp --dport 80 -j ACCEPT
${IPT} -A SERVICES -p tcp --dport 443 -j ACCEPT</pre>
<h2>Configuration de phpMyAdmin</h2>
<p>Rendez-vous à l&#8217;adresse <em>http://mysql.exemple.fr/setup/</em> et laissez-vous guider. Une fois que vous avez modifié votre configuration, déplacez le fichier à la racine :</p>
<pre>mv /var/www/exemple.fr/mysql/www/config/config.inc.php /var/www/exemple.fr/mysql/www/
chown www-data:www-data /var/www/exemple.fr/mysql/www/config.inc.php</pre>
<p>Je vous recommande la lecture de <a href="http://www.phpmyadmin.net/documentation/Documentation.html#config">cette page</a> qui va vous permettre de paramétrer phpMyAdmin beaucoup plus finement que ce que permet l&#8217;interface web.</p>
<div class="important_block message-block"><p class="printonly"><strong>Important!</strong></p><p class="first-p">Personnellement (une fois de plus), je préfère l&#8217;authentification HTTP, plutôt que par cookie. Cela force le navigateur à afficher une boîte de dialogue pour entrer le nom d&#8217;utilisateur et le mot de passe. C&#8217;est réellement une préférence personnelle.</p>
</div>
<p>Une fois terminé, supprimez le répertoire <em>config</em> :</p>
<pre>rm -r /var/www/exemple.fr/mysql/www/config/</pre>
<h2>Configuration de RoundCube</h2>
<p>Maintenant que phpMyAdmin est installé, il vous sera plus simple de créer l&#8217;utilisateur et la base de données pour RoundCube. Ouvrez donc phpMyAdmin (<em>http://mysql.exemple.fr</em>), et cliquez sur l&#8217;onglet &laquo;&nbsp;<em>Utilisateurs</em>&laquo;&nbsp;, puis sur le lien &laquo;&nbsp;<em>Ajouter un utilisateur</em>&nbsp;&raquo; en bas de page.</p>
<p style="text-align: center;"><a href="http://ingnu.fr/2012/02/07/installation-dun-serveur-http-https/pma-users/" rel="attachment wp-att-366"><img class="size-thumbnail wp-image-366" title="pma-users" src="http://ingnu.fr/wp-content/uploads/2012/02/pma-users-150x150.png" alt="" width="150" height="150" /></a> <a href="http://ingnu.fr/2012/02/07/installation-dun-serveur-http-https/pma-add-user/" rel="attachment wp-att-367"><img class="size-thumbnail wp-image-367" title="pma-add-user" src="http://ingnu.fr/wp-content/uploads/2012/02/pma-add-user-150x150.png" alt="" width="150" height="150" /></a></p>
<p>Donnez-lui le nom de <em>RoundCube</em>, pour le client <em>localhost</em>, et générez un mot de passe. Cochez également la case &laquo;&nbsp;<em>Créer une base de données portant son nom et donner à cet utilisateur tous les privilèges sur cette base</em>&laquo;&nbsp;.</p>
<p>Rendez-vous ensuite à l&#8217;adresse <em>https://mail.exemple.fr/installer/</em>. Sur la première page, vous verrez la liste des dépendances de RoundCube. S&#8217;il en manque l&#8217;une ou l&#8217;autre, installez-la (via <em>apt-get install &lt;paquet&gt;</em> ou <em>pear install &lt;paquet&gt;</em> si la première méthode ne donne rien) et redémarrez apache. Une fois que tout est bon, cliquez en bas sur <em>Next</em>.</p>
<p>Petit exercice : remplissez les différents champs en prenant en considération que :</p>
<ul>
<li>Le port SMTP est le 465 (via tls, pas ssl)</li>
<li>Le port IMAP est le 993 (via ssl, pas tls)</li>
<li>L&#8217;adresse du serveur est 127.0.0.1</li>
</ul>
<h2>Touches finales</h2>
<p>Une fois RoundCube correctement configuré, créez-vous votre propre adresse email via phpMyAdmin, dans la base de données <em>MailServer</em>, et dans la table <em>users</em>. Pensez à sélectionner le type <em>MD5</em> lorsque vous saisirez votre mot de passe.</p>
<p>Par la même occasion, allez dans la table <em>aliases</em>, et créez deux enregistrements, dont le champ <em>source</em> sera respectivement <em>root</em> et <em>postmaster</em>, et <em>destination</em> l&#8217;adresse email que vous venez de vous créer. Cela vous permettra de recevoir les mails administratifs envoyés automatiquement par les différents services de votre serveur.</p>
<p><a title="Installer et configurer un serveur DNS" href="http://ingnu.fr/2012/02/05/installer-et-configurer-un-serveur-dns/">Nous avions précédemment configuré une liste blanche d&#8217;expéditeurs</a>, toujours autorisés à vous envoyer des mails. Cette liste correspond à la table <em>access_sender</em> de la base de données <em>MailServer</em>. Nous allons nous servir de RoundCube pour peupler automatiquement cette table, dès que vous enverrez un message.</p>
<p>Éditez la configuration de RoundCube :</p>
<pre>nano /var/www/exemple.fr/mail/www/config/main.inc.php</pre>
<p>Cherchez le terme &laquo;&nbsp;<em>plugins</em>&nbsp;&raquo; (via la combinaison de touches Ctrl+w).</p>
<p>Complétez la liste présente, en rajoutant :</p>
<pre>"automatic_addressbook"</pre>
<p>Modifiez ensuite le plugin en question :</p>
<pre>nano /var/www/exemple.fr/mail/www/plugins/automatic_addressbook/automatic_addressbook.php</pre>
<p>Aux alentours de la ligne 110, cherchez le code suivant :</p>
<pre class="brush: php">foreach($all_recipients as $recipient) {
    // Bcc and Cc can be empty
    if ($recipient['mailto'] != '') {
        $contact = array(
            'email' =&gt; $recipient['mailto'],
            'name' =&gt; $recipient['name']
        );</pre>
<p>Rajoutez après :</p>
<pre class="brush: php">$con = mysql_connect("localhost", "MailServer", "MotDePasse");
mysql_select_db("MailServer");

mysql_query("insert into access_sender (`source`,`access`) values ('" . $contact["email"] . "','OK')");
mysql_close($con);</pre>
<p>Pensez à modifier le mot de passe (il s&#8217;agit de celui de l&#8217;utilisateur <em>MailServer</em>).</p>
<div class="notice_block message-block"><p class="printonly"><strong>Notice</strong></p><p class="first-p">Attention : vous perdrez cette modification à chaque mise à jour de RoundCube ! Vous devrez penser à modifier ce fichier à chaque mise à jour !</p>
</div>
<p>Enregistrez et fermez. Désormais, dès que vous écrirez à quelqu&#8217;un, son adresse sera automatiquement ajoutée à la liste blanche.</p>
<p>Si vous le souhaitez, vous pouvez également éditer directement cette liste, en modifiant le contenu de la table <em>access_sender</em>.</p>
<table>
<tbody>
<tr>
<th>source</th>
<td>Adresse email à mettre en liste blanche (toujours autorisée à nous contacter, même si son client mail ne respecte pas les standards</td>
</tr>
<tr>
<th>access</th>
<td>OK pour autoriser, NULL pour bloquer</td>
</tr>
<tr>
<th>active</th>
<td>1 pour activer, 0 pour désactiver</td>
</tr>
</tbody>
</table>
<p>Vous avez maintenant à votre disposition les fondements les plus importants pour la mise en place de votre cloud. Votre serveur est sécurisé via un script iptables restrictif, vous disposez d&#8217;un serveur de noms de domaine, d&#8217;un serveur de base de données, d&#8217;un serveur mail, et d&#8217;un serveur HTTP(S). Enfin, vous disposez d&#8217;une interface pour gérer facilement votre base de données, et d&#8217;un client mail agréable à utiliser.</p>
<p>Dans les prochains articles, nous verrons (dans le désordre) :</p>
<ul>
<li>Comment installer une alternative à facebook/twitter/Google+</li>
<li>Comment installer une alternative à twitpic</li>
<li>Comment installer une alternative à Google Calendar</li>
<li>Comment installer une alternative à flickr/Picasa</li>
<li>Comment stocker des fichiers sur votre serveur comme si celui-ci était sur votre réseau local</li>
<li>Comment partager des fichiers avec le monde entier</li>
<li>Comment sauvegarder et restaurer votre serveur</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ingnu.fr/2012/02/07/installation-dun-serveur-http-https/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation de son propre serveur mail</title>
		<link>http://ingnu.fr/2012/02/06/installation-de-son-propre-serveur-mail/</link>
		<comments>http://ingnu.fr/2012/02/06/installation-de-son-propre-serveur-mail/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 16:53:24 +0000</pubDate>
		<dc:creator>Jimmy</dc:creator>
				<category><![CDATA[Créer son propre cloud]]></category>
		<category><![CDATA[amavis]]></category>
		<category><![CDATA[clamav]]></category>
		<category><![CDATA[dovecot]]></category>
		<category><![CDATA[imap]]></category>
		<category><![CDATA[postfix]]></category>
		<category><![CDATA[smtp]]></category>

		<guid isPermaLink="false">http://ingnu.fr/?p=279</guid>
		<description><![CDATA[Le quatrième article de la nouvelle rubrique va donc traiter de l&#8217;installation de son propre serveur mail, élément indispensable de la chaîne de communication. Il existe déjà de nombreux tutoriels sur Internet, parfois très bien faits, parfois incomplets ou inadaptés. Je ne prétends pas que mon article sera mieux que les autres, j&#8217;espère seulement qu&#8217;il &#8230; </p><p><a class="more-link block-button" href="http://ingnu.fr/2012/02/06/installation-de-son-propre-serveur-mail/">Lire la Suite &#187;</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://ingnu.fr/2012/02/06/installation-de-son-propre-serveur-mail/dovecot-postfix/" rel="attachment wp-att-346"><img class="alignleft size-full wp-image-346" title="dovecot-postfix" src="http://ingnu.fr/wp-content/uploads/2012/02/dovecot-postfix.png" alt="" width="300" height="300" /></a>Le quatrième article de la <a href="http://ingnu.fr/category/creer-son-propre-cloud/">nouvelle rubrique</a> va donc traiter de l&#8217;installation de son propre serveur mail, élément indispensable de la chaîne de communication. Il existe déjà de nombreux tutoriels sur Internet, parfois très bien faits, parfois incomplets ou inadaptés. Je ne prétends pas que mon article sera mieux que les autres, j&#8217;espère seulement qu&#8217;il trouvera son public.</p>
<p>Notre serveur mail devra être sécurisé : nous ferons appel au chiffrement, ainsi qu&#8217;à diverses applications permettant de filtrer spam et virus, le plus efficacement possible, sans pour autant bloquer les correspondances légitimes (il m&#8217;est arrivé que certaines personnes utilisant un serveur SMTP wanadoo (sic) se retrouvent bloquées par mon serveur, à cause d&#8217;un non respect du protocole SMTP&#8230;).</p>
<p>Nous utiliserons le serveur SMTP <a href="http://www.postfix.org/">postfix</a>, aux côtés duquel tournera le serveur IMAP <a href="http://dovecot.org/">dovecot</a>. Le filtrage sera confié à <a href="http://spamassassin.apache.org/">Spamassassin</a>, <a href="http://www.amavis.org/">amavis</a> et <a href="http://www.clamav.net/lang/en/">clamav</a>. Nous aurons recourt à une base de données de type <a href="http://www.mysql.com/">MySQL</a>. Même si vous ne gérerez qu&#8217;un seul domaine, virtualiser les utilisateurs et les domaines n&#8217;est pas plus consommateur de ressources : MySQL (ou tout autre serveur de bases de données, j&#8217;aurai pu traiter de <a href="http://www.postgresql.org/">postgreSQL</a> s&#8217;il ne me manquait pas de l&#8217;expérience) sera installé tôt ou tard, autant l&#8217;utiliser tout de suite. Et si par la suite vous acquérez un autre domaine et que vous vouliez proposer un service mail pour ce domaine, vous n&#8217;aurez pas de migration fastidieuse à effectuer.</p>
<p>Lorsque debconf vous demandera un mot de passe pour MySQL (et par extension, chaque fois que vous devrez saisir un mot de passe dans les prochains articles), vous devriez considérer utiliser un <a href="http://randompassword.com/">générateur de mot de passe</a>. En utilisant un tel outil, vous pourrez générer des mots de passe complexes, de la longueur et de la complexité que vous voulez.</p>
<p>Sous debian donc, on installe les paquets suivants :</p>
<pre class="brush: bash">apt-get install amavisd-new arj bzip2 cabextract clamav clamav-freshclam clamav-daemon cpio dovecot-imapd gzip lha mysql-server p7zip pax postfix postfix-mysql postfix-pcre ripole rpm tar unrar-free unzip xz-utils zip zoo</pre>
<p>Outre postfix, dovecot, l&#8217;anti-virus et l&#8217;anti-spam, on installe également quelques utilitaires appelés par amavis/clamav pour analyser les pièces jointes aux futurs mails qui seront envoyés ou reçus par votre serveur. On passe ensuite à la configuration de MySQL.</p>
<h2>MySQL</h2>
<p>debconf vous a probablement demandé de choisir un mot de passe pour l&#8217;utilisateur root (celui de MySQL). Vous devez maintenant créer un nouvel utilisateur pour la première base de données que nous allons créer, et qui sera exploitée par notre serveur mail.</p>
<pre class="brush: bash">mysql -u root -pVotreMotDePasse</pre>
<div class="notice_block message-block"><p class="printonly"><strong>Notice</strong></p><p class="first-p">Vous noterez que votre mot de passe est accolé au paramètre <em>-p</em>.</p>
</div>
<p>Saisissez alors les commandes suivantes, en remplaçant <em>NouveauMotDePasse</em> par un nouveau mot de passe, différent de celui de root (là encore, pensez à utiliser le générateur de mots de passe) :</p>
<pre>CREATE USER 'MailServer'@'localhost' IDENTIFIED BY 'NouveauMotDePasse';
GRANT USAGE ON * . * TO 'MailUser'@'localhost' IDENTIFIED BY 'NouveauMotDePasse';
CREATE DATABASE IF NOT EXISTS `MailServer` ;
GRANT ALL PRIVILEGES ON `MailServer` . * TO 'MailServer'@'localhost';</pre>
<p>Nous avons créé un nouvel utilisateur nommé <em>MailServer</em>, et une base de données dans laquelle il a tout privilège. Créons ensuite la structure :</p>
<pre>USE MailServer;</pre>
<pre>CREATE TABLE `access_sender` (
 `source` varchar(128) CHARACTER SET utf8 NOT NULL DEFAULT '',
 `access` varchar(128) CHARACTER SET utf8 NOT NULL DEFAULT '',
 `created` datetime NOT NULL,
 `modified` datetime NOT NULL,
 `active` tinyint(1) NOT NULL DEFAULT '1',
 UNIQUE KEY `source` (`source`)
 ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Virtual Sender Restrictions';
CREATE TABLE `aliases` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `source` varchar(255) CHARACTER SET utf8 NOT NULL,
 `destination` varchar(255) CHARACTER SET utf8 NOT NULL,
 PRIMARY KEY (`id`)
 ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `domains` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(255) CHARACTER SET utf8 NOT NULL,
 PRIMARY KEY (`id`)
 ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `users` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `email` varchar(255) CHARACTER SET utf8 NOT NULL,
 `password` varchar(32) CHARACTER SET utf8 NOT NULL,
 PRIMARY KEY (`id`)
 ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
quit;</pre>
<p>Nous avons créé respectivement la table qui contiendra les adresses emails toujours autorisées à nous envoyer quelque chose, quelle que soit la politique de filtrage de notre postfix, la table contenant les futurs alias, celle contenant les domaines et enfin celle qui contiendra nos utilisateurs. La base de données est configurée, nous pouvons passer à la suite.</p>
<h2>Postfix</h2>
<p>Pour que Postfix utilise la base de données que l&#8217;on vient de créer, il faut créer quelques fichiers de configuration que nous allons placer dans le répertoire <em>/etc/postfix/mysql</em> :</p>
<pre class="brush: bash">/etc/init.d/postfix stop
mkdir /etc/postfix/mysql</pre>
<p>Créez ensuite les fichiers suivants (n&#8217;oubliez pas de renseigner à chaque fois la variable <em>password</em> avec le mot de passe que vous avez attribué à l&#8217;utilisateur <em>MailServer</em>) :</p>
<pre class="brush: bash">cd /etc/postfix/mysql
nano alias.cf</pre>
<pre>user = MailServer
password =
hosts = 127.0.0.1
dbname = MailServer
query = SELECT destination FROM aliases WHERE source='%s'</pre>
<pre class="brush: bash">nano domains.cf</pre>
<pre>user = MailServer
password =
hosts = 127.0.0.1
dbname = MailServer
query = SELECT 1 FROM domains WHERE name='%s'</pre>
<pre class="brush: bash">nano email2email.cf</pre>
<pre>user = MailServer
password =
hosts = 127.0.0.1
dbname = MailServer
query = SELECT email FROM users WHERE email='%s'</pre>
<pre class="brush: bash">nano maps.cf</pre>
<pre>user = MailServer
password =
hosts = 127.0.0.1
dbname = MailServer
query = SELECT 1 FROM users WHERE email='%s'</pre>
<pre class="brush: bash">nano senders_whitelist.cf</pre>
<pre>user = MailServer
password = B3v2sAD6A3mYeFDf
hosts = 127.0.0.1
dbname = MailServer
query = SELECT access FROM access_sender WHERE source='%s' AND active = '1'</pre>
<p>Nous venons simplement de créer les fichiers permettant de communiquer avec les tables créées précédemment. Modifions ensuite la configuration principale de postfix, à commencer par le fichier <em>main.cf</em>. Nous allons créer une nouvelle configuration en partant de rien, on va donc déplacer le fichier d&#8217;origine et en créer un nouveau :</p>
<pre class="brush: bash">cd ../
mv main.cf main.cf.orig
nano main.cf</pre>
<p>Copiez-y ensuite la configuration suivante :</p>
<pre>mynetworks = 127.0.0.0/8

# Dovecot settings
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

# MySQL settings
virtual_mailbox_domains = mysql:/etc/postfix/mysql/domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql/maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql/alias.cf,mysql:/etc/postfix/mysql/email2email.cf

# SASL
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

# TLS
smtp_tls_CAfile = /scripts/certificate_authority/ca.crt
smtpd_tls_CAfile = /scripts/certificate_authority/ca.crt
smtpd_tls_cert_file = /scripts/certificate_authority/exemple.fr.crt
smtpd_tls_key_file = /scripts/certificate_authority/exemple.fr.key
smtpd_tls_received_header = yes
tls_random_source = dev:/dev/urandom
smtp_tls_security_level = may
smtpd_tls_security_level = may
smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = no
#smtpd_tls_wrappermode = yes
smtpd_tls_loglevel = 1

# Filtering
content_filter = smtp-amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings

# Restrictions
unknown_address_reject_code = 554
unknown_hostname_reject_code = 554
unknown_client_reject_code = 550
unverified_sender_reject_code = 554
smtpd_helo_required = yes
strict_rfc821_envelopes = yes

smtpd_recipient_restrictions =
    reject_non_fqdn_sender,
    reject_unknown_sender_domain,
    reject_non_fqdn_recipient,
    reject_unknown_recipient_domain,
    permit_mynetworks,
    permit_sasl_authenticated,
    reject_unauth_destination,
    check_helo_access pcre:/etc/postfix/helo_checks.pcre,
    reject_invalid_helo_hostname,
    reject_non_fqdn_helo_hostname,
    check_sender_access mysql:/etc/postfix/mysql/senders_whitelist.cf,
    reject_rbl_client zen.spamhaus.org</pre>
<div class="important_block message-block"><p class="printonly"><strong>Important!</strong></p><p class="first-p">Théoriquement, vous n&#8217;avez rien à changer ici, à part le chemin vers les certificats et clés dans la section TLS. L&#8217;utilisation d&#8217;une base MySQL permet également de se passer d&#8217;une configuration spécifique dans le fichier <em>main.cf</em>, puisque les domaines gérés sont stockés en base de données. Vous devriez donc pouvoir utiliser ce fichier tel quel.</p>
</div>
<p>Il faut créer le fichier <em>helo_checks.pcre</em>. En utilisant les expressions rationnelles, cela permettra à postfix d&#8217;opérer un filtrage sur la commande <em>helo</em> du protocole SMTP.</p>
<pre class="brush: bash">nano helo_checks.pcre</pre>
<pre>/^localhost$/            550 Don’t use localhost
/^(base\.)?(exemple\.fr|exemple2\.fr)$/ 550 Don’t use my own domain/hostname
/^\[?88\.190\.15\.133\]?$/
   550 Spammer comes to me \
       Greets me with my own IP \
       His mail I shall not see.
/^[0-9.-]+$/
   550 Your software is not RFC 2821 compliant: \
       EHLO/HELO must be a domain or an \
       address-literal (IP enclosed in brackets)</pre>
<div class="notice_block message-block"><p class="printonly"><strong>Notice</strong></p><p class="first-p">N&#8217;oubliez pas ici de modifier votre nom de domaine.</p>
</div>
<p>On modifie ensuite le fichier <em>master.cf</em> :</p>
<pre>nano master.cf</pre>
<p>Dé-commentez la ligne (située en début du fichier) :</p>
<pre>smtps inet n - - - - smtpd</pre>
<p>Et rajoutez les lignes suivantes :</p>
<pre>dovecot unix - n n - - pipe
    flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}</pre>
<pre>smtp-amavis unix - - n - 2 smtp
    -o smtp_data_done_timeout=1200
    -o smtp_send_xforward_command=yes
    -o disable_dns_lookups=yes
    -o max_use=20</pre>
<pre>127.0.0.1:10025 inet n - n - - smtpd
    -o content_filter=
    -o smtpd_restriction_classes=
    -o smtpd_delay_reject=no
    -o smtpd_client_restrictions=permit_mynetworks,reject
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o smtpd_data_restrictions=reject_unauth_pipelining
    -o smtpd_end_of_data_restrictions=
    -o mynetworks=127.0.0.0/8
    -o smtpd_error_sleep_time=0
    -o smtpd_soft_error_limit=1001
    -o smtpd_hard_error_limit=1000
    -o smtpd_client_connection_count_limit=0
    -o smtpd_client_connection_rate_limit=0
    -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
    -o local_header_rewrite_clients=</pre>
<p>Ces lignes servent à interfacer dovecot et amavis avec postfix. Il nous reste encore à créer les certificats.</p>
<pre class="brush: bash">/scripts/certificate_authority/make_request postfix mail.exemple.fr</pre>
<div class="notice_block message-block"><p class="printonly"><strong>Notice</strong></p><p class="first-p">Demandez à créer une clé sans mot de passe.</p>
</div>
<div class="notice_block message-block"><p class="printonly"><strong>Notice</strong></p><p class="first-p">Lors de la création du certificat, on vous demandera de renseigner la variable <em>Common Name</em>. Cette variable doit absolument contenir un nom de machine valide (c&#8217;est-à-dire, un nom d&#8217;hôte et son domaine). En l&#8217;occurrence, il serait judicieux d&#8217;attribuer la valeur <em>mail.exemple.fr</em> à cette valeur. C&#8217;est ce même nom de domaine que nous indiquerons plus tard dans le serveur DNS. C&#8217;est aussi le nom qui sera utilisé par postfix pour communiquer avec les autres serveurs, mais n&#8217;a rien à voir avec les domaines de boîtes mails.</p>
</div>
<p>Signez ensuite le certificat :</p>
<pre class="brush: bash">/scripts/certificate_authority/sign_request postfix exemple.fr</pre>
<p>La configuration de postfix étant terminée, on s&#8217;occupe des filtres.</p>
<h2>Filtres</h2>
<pre class="brush: bash">/etc/init.d/amavis stop
/etc/init.d/clamav-daemon stop
/etc/init.d/clamav-freshclam stop
adduser clamav amavis
adduser amavis clamav</pre>
<div class="important_block message-block"><p class="printonly"><strong>Important!</strong></p><p class="first-p">Les utilisateurs <em>amavis</em> et <em>clamav</em> doivent appartenir respectivement aux groupes <em>clamav</em> et <em>amavis</em> pour pouvoir fonctionner.</p>
</div>
<p>On édite ensuite la configuration de amavis :</p>
<pre class="brush: bash">nano /etc/amavis/conf.d/15-content_filter_mode</pre>
<p>Dé-commentez les lignes dans ce fichier pour qu&#8217;il ressemble à ceci :</p>
<pre>use strict;

@bypass_virus_checks_maps = (
   \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);

@bypass_spam_checks_maps = (
   \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);

1;  # ensure a defined return</pre>
<p>Puis :</p>
<pre class="brush: bash">nano /etc/amavis/conf.d/20-debian_defaults</pre>
<p>Vers la ligne 68, assurez-vous d&#8217;avoir les directives de configuration suivantes :</p>
<pre>$final_virus_destiny      = D_DISCARD;  # (data not lost, see virus quarantine)
$final_banned_destiny     = D_BOUNCE;   # D_REJECT when front-end MTA
$final_spam_destiny       = D_BOUNCE;
$final_bad_header_destiny = D_PASS;     # False-positive prone (for spam)</pre>
<p>On bloque ainsi totalement les virus, mais on laisse passer le spam (qui sera tagué par la suite) pour éviter de supprimer du courrier légitime.</p>
<p>On continue :</p>
<pre class="brush: bash">nano /etc/amavis/conf.d/50-user</pre>
<pre>use strict;

#
# Place your configuration directives here.  They will override those in
# earlier files.
#
# See /usr/share/doc/amavisd-new/ for documentation and examples of
# the directives you can use in this file
#

$sa_spam_subject_tag = '***** SPAM ***** ';
$spam_quarantine_to  = undef;
$sa_tag_level_deflt  = undef;
$final_spam_destiny=D_PASS;

@lookup_sql_dsn = (
    ['DBI:mysql:database=MailServer;host=127.0.0.1;port=3306',
     'MailServer',
     'MotDePasse']);

$sql_select_policy = 'SELECT name FROM domains WHERE CONCAT("@",name) IN (%k)';

#------------ Do not modify anything below this line -------------
1;  # ensure a defined return</pre>
<div class="important_block message-block"><p class="printonly"><strong>Important!</strong></p><p class="first-p">Assurez-vous de modifier le mot de passe de la base de données.</p>
</div>
<p>On peut maintenant démarrer les services :</p>
<pre class="brush: bash">/etc/init.d/amavis start
/etc/init.d/clamav-daemon start
/etc/init.d/clamav-freshclam start</pre>
<h2>Dovecot</h2>
<pre class="brush: bash">/etc/init.d/dovecot stop
cd /etc/dovecot</pre>
<p>Configurons tout d&#8217;abord la connexion au serveur MySQL :</p>
<pre class="brush: bash">mv dovecot-sql.conf dovecot-sql.conf-orig
nano dovecot-sql.conf</pre>
<pre>driver = mysql
connect = host=127.0.0.1 dbname=MailServer user=MailServer password=MotDePasse
default_pass_scheme = PLAIN-MD5
password_query = SELECT email AS user, password FROM users WHERE email='%u'</pre>
<p>Comme d&#8217;habitude, pensez à changer le mot de passe, et mettez celui de l&#8217;utilisateur MySQL <em>MailServer</em>. Enregistrez puis fermez, avant de modifier la configuration principale :</p>
<pre class="brush: bash">mv dovecot.conf dovecot.conf-orig
nano dovecot.conf</pre>
<pre>base_dir = /var/run/dovecot
protocols = imaps managesieve

ssl = yes
ssl_cert_file = /scripts/certificate_authority/dovecot/mail.exemple.fr.crt
ssl_key_file = /scripts/certificate_authority/dovecot/mail.exemple.fr.key
ssl_key_password = MotDePasse

mail_location = maildir:/var/vmail/%d/%n/Maildir

mail_uid = vmail
mail_gid = vmail

mail_privileged_group = mail

protocol imap {
}

protocol managesieve {
    login_executable = /usr/lib/dovecot/managesieve-login
    mail_executable = /usr/lib/dovecot/managesieve
}

protocol lda {
    postmaster_address = postmaster@exemple.fr
    auth_socket_path = /var/run/dovecot/auth-master
    mail_plugins = sieve
}

auth_executable = /usr/lib/dovecot/dovecot-auth

auth default {
    mechanisms = plain login

    passdb sql {
        args = /etc/dovecot/dovecot-sql.conf
    }

    userdb static {
        args = uid=5000 vid=5000 home/var/vmail/%d/%n
    }

    user = root

    socket listen {
        master {
            path = /var/run/dovecot/auth-master
            mode = 0600

            user = vmail
            group = vmail
        }
        client {
            path = /var/spool/postfix/private/auth
            mode = 0660
            user = postfix
            group = postfix
        }
    }
}

plugin {
    sieve=/var/vmail/%d/%n/Maildir/sieve/.dovecot.sieve
    sieve_dir=/var/vmail/%d/%n/Maildir/sieve
    sieve_global_path = /etc/sieve/sieve.global
}</pre>
<p>Lorsque nous allons générer le certificat et la clé à utiliser avec dovecot, vous aurez la possibilité de créer une clé sans mot de passe. Si vous choisissez de créer une clé sans mot de passe, commentez la ligne <em>ssl_key_password = MotDePasse</em>. Dans le cas contraire, indiquez le mot de passe utilisé lors de la génération du certificat.</p>
<p>Quelques répertoires vont devoir être créés :</p>
<pre class="brush: bash">mkdir /etc/sieve
mkdir /var/vmail</pre>
<p>On génère les certificats :</p>
<pre class="brush: bash">/scripts/certificate_authority/make_request dovecot mail.exemple.fr
/scripts/certificate_authority/sign_request dovecot mail.exemple.fr</pre>
<p>On créé ensuite l&#8217;utilisateur <em>vmail</em> :</p>
<pre class="brush: bash">addgroup vmail --gid 5000
adduser --system --disabled-password --no-create-home --disabled-login --uid 5000 --gid 5000 vmail
chown -R vmail:vmail /var/vmail</pre>
<p>On peut désormais redémarrer dovecot :</p>
<pre class="brush: bash">/etc/init.d/dovecot restart</pre>
<p>Nous avons configuré dovecot pour utiliser le plugin <em>sieve/managesieve</em>. Cela nous permettra plus tard de mettre en place des filtres pour la messagerie.</p>
<p>Créons tout de même le fichier de configuration de base pour sieve, dont le rôle va être simplement de déplacer le spam dans le bon répertoire :</p>
<pre class="brush: bash">nano /etc/sieve/sieve.global</pre>
<pre>require ["fileinto"];
# rule:[Spam]
if header :contains "Subject" "***** SPAM *****"
{
    fileinto "Spam";
}</pre>
<h2>Quelques tests</h2>
<p>Installez le paquet <a href="http://packages.debian.org/fr/squeeze/telnet">telnet</a> si vous ne l&#8217;avez pas déjà :</p>
<pre class="brush: bash">apt-get install telnet
telnet localhost 25
ehlo exemple.fr
quit</pre>
<p>Vous devriez avoir une sortie console qui ressemble à ceci :</p>
<pre>Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 minerva.localdomain ESMTP Postfix
ehlo exemple.fr
250-minerva.localdomain
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN</pre>
<p>Procédez de même avec le port 465, la sortie doit être la même.</p>
<p>Pour tester le serveur IMAP, nous devons créer un premier domaine, puis un premier utilisateur du domaine :</p>
<pre class="brush: bash">mysql -u root -pMotDePasse</pre>
<pre>USE MailServer;
INSERT INTO domains (name) VALUES ('exemple.fr');
INSERT INTO users (email, password) VALUES ('test@exemple.fr', MD5('MotDePasse'));
quit;</pre>
<div class="important_block message-block"><p class="printonly"><strong>Important!</strong></p><p class="first-p">Notez que nous utilisons la fonction MySQL MD5 pour chiffrer le mot de passe.</p>
</div>
<p>On peut ensuite tester le serveur IMAP :</p>
<pre class="brush: bash">openssl s_client -connect localhost:993</pre>
<p>La dernière ligne affichée devrait ressembler à ceci :</p>
<pre>* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.</pre>
<p>Suite à quoi, écrivez :</p>
<pre>A LOGIN test@exemple.fr MotDePasse</pre>
<p>La fin de la ligne suivante devrait afficher &laquo;&nbsp;Logged in&nbsp;&raquo;. Concluez la session avec :</p>
<pre>a5 LOGOUT</pre>
<p>Nous testerons plus tard les anti-virus et anti-spam. Pour l&#8217;heure, nous avons une dernière chose à régler.</p>
<h2>Firewall</h2>
<pre class="brush: bash">nano /scripts/firewall</pre>
<p>Entre les lignes :</p>
<pre>##### Configuration personnalisée #####</pre>
<p>Et :</p>
<pre>##### Fin : Configuration personnalisée #####</pre>
<p>Rajoutez les lignes suivantes :</p>
<pre>${IPT} -A SERVICES -p tcp --dport 25 -j ACCEPT
${IPT} -A SERVICES -p tcp --dport 465 -j ACCEPT</pre>
<p>Ce sont les deux ports à ouvrir pour que votre serveur SMTP puisse communiquer avec l&#8217;extérieur (et vice-versa).<br />
<div class="important_block message-block"><p class="printonly"><strong>Important!</strong></p><p class="first-p">
Si vous souhaitez pouvoir accéder à votre serveur IMAP depuis l&#8217;extérieur (par exemple, depuis un téléphone portable ou une application du type Thunderbird), vous devrez également rajouter la ligne suivante :</p>
<pre>${IPT} -A SERVICES -p tcp --dport 993 -j ACCEPT</pre>
<p>Cette commande permet d&#8217;ouvrir le port 993, qui est le port attribué au serveur IMAP sécurisé. Nous n&#8217;utiliserons donc pas le port habituel, le 143.</p>
</div></p>
<h2>DNS</h2>
<p>Dernière étape de l&#8217;installation de notre serveur mail, la modification de la configuration de notre serveur DNS pour sa prise en compte. On édite donc le fichier de définition de notre zone :</p>
<pre class="brush: bash">nano /etc/bind/db.exemple.fr</pre>
<p>Et on rajoute à la fin (sans oublier de modifier l&#8217;identifiant de l&#8217;enregistrement !) :</p>
<pre>		IN	MX	10	mail.exemple.fr.
mail		IN	A		1.1.1.1</pre>
<p>Et on redémarre bind :</p>
<pre class="brush: bash">/etc/init.d/bind9 restart</pre>
<p>C&#8217;est aussi simple que ça !</p>
<p>La prochaine étape consistera à installer un serveur web sécurisé, et quelques applications utiles, dont un client de messagerie pour jouer avec le serveur mail que l&#8217;on vient d&#8217;installer.</p>
]]></content:encoded>
			<wfw:commentRss>http://ingnu.fr/2012/02/06/installation-de-son-propre-serveur-mail/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Création de sa propre autorité de certification</title>
		<link>http://ingnu.fr/2012/02/06/creation-de-sa-propre-autorite-de-certification/</link>
		<comments>http://ingnu.fr/2012/02/06/creation-de-sa-propre-autorite-de-certification/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 02:23:54 +0000</pubDate>
		<dc:creator>Jimmy</dc:creator>
				<category><![CDATA[Créer son propre cloud]]></category>
		<category><![CDATA[autorité]]></category>
		<category><![CDATA[certification]]></category>
		<category><![CDATA[certificats]]></category>
		<category><![CDATA[openssl]]></category>

		<guid isPermaLink="false">http://ingnu.fr/?p=316</guid>
		<description><![CDATA[J&#8217;avais initialement prévu d&#8217;aborder dans un troisième article la configuration d&#8217;un serveur mail, mais il fallait d&#8217;abord que j&#8217;explique comment mettre en place une autorité de certification, puisque nous allons nous en servir dans la configuration du serveur mail, mais aussi pour bien d&#8217;autres services que nous verrons ultérieurement. À l&#8217;issue de cet article, vous &#8230; </p><p><a class="more-link block-button" href="http://ingnu.fr/2012/02/06/creation-de-sa-propre-autorite-de-certification/">Lire la Suite &#187;</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://ingnu.fr/2012/02/06/creation-de-sa-propre-autorite-de-certification/secure1/" rel="attachment wp-att-321"><img class="alignleft size-full wp-image-321" title="secure1" src="http://ingnu.fr/wp-content/uploads/2012/02/secure1.jpg" alt="" width="240" height="240" /></a>J&#8217;avais <a title="Installer et configurer un serveur DNS" href="http://ingnu.fr/2012/02/05/installer-et-configurer-un-serveur-dns/">initialement</a> prévu d&#8217;aborder dans un troisième article la configuration d&#8217;un serveur mail, mais il fallait d&#8217;abord que j&#8217;explique comment mettre en place une autorité de certification, puisque nous allons nous en servir dans la configuration du serveur mail, mais aussi pour bien d&#8217;autres services que nous verrons ultérieurement.</p>
<p>À l&#8217;issue de cet article, vous aurez à disposition une série de scripts qui vous permettront de mettre rapidement et facilement en place des certificats pour tous types d&#8217;applications.</p>
<p>L&#8217;autorité de certification et les certificats vous permettront de chiffrer les données qui vont transiter sur votre cloud personnel. Ainsi, si une personne malintentionnée cherchait à espionner ce qui transite entre votre propre machine et votre serveur, elle ne pourrait pas exploiter les données qu&#8217;elle récolterait. C&#8217;est une solution fiable, même si tout chiffrement peut être &laquo;&nbsp;cassé&nbsp;&raquo;. Il faut simplement garder à l&#8217;esprit que vous n&#8217;êtes pas une banque, et que les données que vous allez stocker sur votre serveur n&#8217;ont de valeur que pour vous. Personne ne cherchera donc à passer des semaines ou des mois à casser le chiffrement de vos certificats&#8230;</p>
<div class="notice_block message-block"><p class="printonly"><strong>Notice</strong></p><p class="first-p">Ces certificats seront auto-signés : ils ne serviront à rien si votre objectif est de proposer des services &laquo;&nbsp;sécurisés&nbsp;&raquo; à des clients étrangers puisqu&#8217;on n&#8217;accorde aucune confiance à un site dont le certificat est auto-signé.</p>
<p>En revanche, ils seront bien utiles pour chiffrer les données qui transitent sur votre réseau.</p>
</div>
<div class="important_block message-block"><p class="printonly"><strong>Important!</strong></p><p class="first-p">Si vous souhaitez disposez d&#8217;un &laquo;&nbsp;vrai&nbsp;&raquo; certificat, validé par un organisme reconnu, c&#8217;est une solution payante proposée notamment par <a href="http://www.verisign.com/ssl/index.html?tid=gnps">VeriSign</a>.</p>
</div>
<p>Créons tout d&#8217;abord un répertoire dédié à nos scripts :</p>
<pre class="brush: bash">mkdir -p /scripts/certificate_authority</pre>
<p>Vérifions ensuite que nous disposons bien du paquet nécessaire :</p>
<pre class="brush: bash">apt-get install openssl</pre>
<p>Nous allons créer les premiers certificats, matérialisant l&#8217;autorité de certification. Les certificats spécifiques à certains services seront signés par cette autorité. Pour commencer, on va se créer un fichier de configuration personnalisé :</p>
<pre class="brush: bash">cp /etc/ssl/openssl.cnf /scripts/certificate_authority/</pre>
<p>On édite ce fichier pour y modifier les variables suivantes :</p>
<ul>
<li>Dans la catégorie <em>[ CA_default ]</em>, mettez les valeurs suivantes :</li>
</ul>
<pre>dir             = /scripts/certificate_authority
certs           = $dir/
crl_dir         = $dir/
database        = $dir/index.txt

new_certs_dir   = $dir/

certificate     = $dir/ca.crt
serial          = $dir/current_serial
crlnumber       = $dir/current_crl
crl             = $dir/crl.pem
private_key     = $dir/ca.key
RANDFILE        = $dir/.rand</pre>
<ul>
<li>Dans la catégorie <em>[ req_distinguished_name ]</em>, renseignez les valeurs suivantes :</li>
</ul>
<ul>
<li><em>countryName_default</em></li>
<li><em>stateOrProvinceName_default</em></li>
<li><em>localityName_default</em></li>
<li><em>0.organizationName_default</em></li>
<li><em>emailAddress_default</em></li>
</ul>
<p>Enregistrez puis fermez ce fichier. On va ensuite créer le fichier <em>create_ca</em>, qui aura pour but de créer l&#8217;autorité de certification. L&#8217;autorité de certification n&#8217;est à créer qu&#8217;une seule fois, mais le fait de créer un script pour le faire permettra, en cas de besoin, de retrouver les commandes nécessaires. À noter que nous allons créer un certificat dont la validité est de 10 ans (3650 jours).</p>
<pre class="brush: bash">nano create_ca</pre>
<pre>#!/bin/bash

base=`dirname $0`

echo "Étape 1 : Création de la clé"
openssl genrsa -des3 -out "$base/ca.key" 1024

echo "Étape 2 : Génération de la demande de certificat"
openssl req -config "$base/openssl.cnf" -new -key "$base/ca.key" -out "$base/ca.csr"

echo "Étape 3 : Génération du certificat"
openssl x509 -days 3650 -signkey "$base/ca.key" -in "$base/ca.csr" -req -out "$base/ca.crt"

chmod 0400 ca.key</pre>
<pre class="brush: bash">chmod 700 create_ca</pre>
<p>Cette dernière commande nous assure que personne à part <em>root</em> ne peut exécuter ce fichier. Ce que nous allons faire immédiatement :</p>
<pre class="brush: bash">./create_ca</pre>
<p>Après vous avoir demandé un mot de passe (qu&#8217;il est impératif de renseigner), quelques questions vont vous être posées. La plupart contient déjà les réponses pré-replies dans le fichier <em>openssl.cnf</em> que nous avons édité plus tôt. Seule la variable <em>Organizational Unit Name</em> est à spécifier (mettez ce que vous voulez, par exemple &laquo;&nbsp;<em>Certificate Authority</em>&laquo;&nbsp;), et la variable <em>Common Name</em>, qui devrait contenir votre nom de domaine principal.</p>
<p>Une fois la commande exécutée et les variables spécifiées, trois nouveaux fichiers ont été créés dans le répertoire de travail (<em>/scripts/certificate_authority</em>) : <em>ca.csr</em> (la demande de certificat), <em>ca.crt</em> (le certificat principal) et <em>ca.key</em> (la clé privée). On peut désormais créer de nouveaux certificats, à l&#8217;aide d&#8217;un nouveau script :</p>
<pre class="brush: bash">nano make_request</pre>
<pre>#!/bin/bash

app=$1
domain=$2
base=`dirname $0`

if [ "$app" == "" ]
then
        echo "Vous devez spécifier un nom d'application ou de service"
        exit
fi

if [ "$domain" == "" ]
then
        echo "Vous devez spécifier un nom de domaine"
        exit
fi

if [ ! -d "$base/$app" ]
then
        mkdir "$base/$app"
fi

echo "Étape 1 : Création de la clé"
openssl genrsa -des3 -out "$base/$app/$domain.key" 1024

echo "Étape 2 : Création de la demande de certificat"
openssl req -config "$base/openssl.cnf" -new -key "$base/$app/$domain.key" -out "$base/$app/$domain.csr"

echo "Souhaitez-vous créer une clé sans mot de passe ? (o/n) [n]"

read answer

if [ $answer = o -o $answer = O ]
then
        cp "$base/$app/$domain.key" "$base/$app/$domain.key-withpass"
        openssl rsa -in "$base/$app/$domain.key-withpass" -out "$base/$app/$domain.key"
        chmod 0440 "$base/$app/$domain.key-withpass"
fi

chmod 0440 "$base/$app/$domain.key"</pre>
<pre class="brush: bash">chmod +x ./make_request</pre>
<p>L&#8217;objectif de ce script va être de générer une demande de certificat pour une application donnée et un domaine donné. Cela nous permettra de générer des certificats différents selon les applications et les domaines, mais il est tout à fait possible (bien que déconseillé) de générer un seul certificat et de s&#8217;en servir dans toutes nos applications. Ce script s&#8217;utilisera de la manière suivante :</p>
<pre class="brush: bash">./make_request &lt;application&gt; &lt;domaine&gt;</pre>
<p>Ce script va également nous permettre de créer des clés sans mot de passe, ce qui sera utile avec apache.</p>
<div class="notice_block message-block"><p class="printonly"><strong>Notice</strong></p><p class="first-p">Ce script va vous poser le même genre de questions que lors de la création de l&#8217;autorité de certification. Vous devrez renseigner correctement la variable Common Name lorsqu&#8217;elle vous sera demandée : elle doit avoir pour valeur le nom de domaine sur lequel vous travaillerez.</p>
</div>
<p>Créons ensuite le script qui va nous permettre de demander la signature d&#8217;une demande précédente :</p>
<pre>nano sign_request</pre>
<pre>#!/bin/bash

app=$1
domain=$2
base=`dirname $0`
serial=0

if [ "$app" == "" ]
then
        echo "Vous devez spécifier un nom d'application ou de service"
        exit
fi

if [ "$domain" == "" ]
then
        echo "Vous devez spécifier un nom de domaine"
        exit
fi

if [ ! -d "$base/$app" ]
then
        echo "Aucun certificat n'a été généré pour l'application spécifiée"
        exit
fi

if [ ! -f "$base/$app/$domain.csr" ]
then
        echo "Aucun certificat n'a été généré pour le domaine spécifié"
        exit
fi

if [ -f "$base/current_serial" ]
then
        serial=`cat "$base/current_serial"`
fi

serial=$(($serial+1))

openssl x509 -req -days 3650 -in "$base/$app/$domain.csr" -CA "$base/ca.crt" -CAkey "$base/ca.key" -set_serial $serial -out "$base/$app/$domain.crt"

echo "$serial" &gt; "$base/current_serial"

echo "Souhaitez-vous supprimer la requête initiale ? ($domain.csr) (o/n) [o]"

read answer

if [ "$answer" != "n" -a "$ans" != "N" ]
then
        rm "$base/$app/$domain.csr"
fi</pre>
<pre class="brush: bash">chmod 700 sign_request</pre>
<p>La syntaxe est la même que précédemment :</p>
<pre class="brush: bash">./sign_request &lt;application&gt; &lt;domaine&gt;</pre>
<p>La signature du certificat va générer un fichier portant l&#8217;extension <em>.crt</em> : c&#8217;est celui-ci qui sera notamment utilisé à travers les applications.</p>
<p>La procédure pour créer un certificat valide est donc la suivante. Nous admettrons pour l&#8217;exemple que nous travaillons avec apache.</p>
<pre class="brush: bash">./make_request apache exemple.fr
./sign_request apache exemple.fr</pre>
<p>Cela aura pour conséquence de créer un répertoire apache dans le répertoire <em>/scripts/certificate_authority</em>, qui contiendra vos certificats, demandes, et clés spécifiques à apache.</p>
<p>Vous disposez désormais d&#8217;un ensemble complet d&#8217;outils pour générer facilement les certificats dont vous aurez besoin plus tard, et notamment lors de la mise en place du serveur mail, prochaine étape de la création de votre cloud personnel.</p>
]]></content:encoded>
			<wfw:commentRss>http://ingnu.fr/2012/02/06/creation-de-sa-propre-autorite-de-certification/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installer et configurer un serveur DNS</title>
		<link>http://ingnu.fr/2012/02/05/installer-et-configurer-un-serveur-dns/</link>
		<comments>http://ingnu.fr/2012/02/05/installer-et-configurer-un-serveur-dns/#comments</comments>
		<pubDate>Sun, 05 Feb 2012 16:56:46 +0000</pubDate>
		<dc:creator>Jimmy</dc:creator>
				<category><![CDATA[Créer son propre cloud]]></category>
		<category><![CDATA[bind]]></category>
		<category><![CDATA[dns]]></category>

		<guid isPermaLink="false">http://ingnu.fr/?p=281</guid>
		<description><![CDATA[Le deuxième article de cette nouvelle rubrique traite logiquement de la mise en place d&#8217;un serveur DNS. À moins que vous n&#8217;ayez recours à l&#8217;outil de gestion de vos DNS proposé par votre registrar et qu&#8217;il ne vous bride pas, vous devrez passer par l&#8217;étape du serveur DNS, d&#8217;autant qu&#8217;il nous permettra par la suite &#8230; </p><p><a class="more-link block-button" href="http://ingnu.fr/2012/02/05/installer-et-configurer-un-serveur-dns/">Lire la Suite &#187;</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://ingnu.fr/2012/02/05/installer-et-configurer-un-serveur-dns/bind9_debian/" rel="attachment wp-att-303"><img class="alignleft size-medium wp-image-303" title="bind9_debian" src="http://ingnu.fr/wp-content/uploads/2012/02/bind9_debian-300x249.jpg" alt="" width="300" height="249" /></a>Le deuxième article de <a href="http://ingnu.fr/category/creer-son-propre-cloud/">cette nouvelle rubrique</a> traite logiquement de la mise en place d&#8217;un serveur DNS. À moins que vous n&#8217;ayez recours à l&#8217;outil de gestion de vos DNS proposé par votre registrar et qu&#8217;il ne vous bride pas, vous devrez passer par l&#8217;étape du serveur DNS, d&#8217;autant qu&#8217;il nous permettra par la suite de faire bien d&#8217;autres choses que simplement faire pointer un domaine sur une IP&#8230;</p>
<p>Nous utiliserons le serveur <a href="http://www.isc.org/software/bind">bind</a>. Nous allons tout d&#8217;abord l&#8217;installer sur le serveur principal en tant que maître. Si vous disposez d&#8217;un second serveur, vous pourrez le configurer en tant qu&#8217;esclave pour assurer la continuité du service.</p>
<div class="important_block message-block"><p class="printonly"><strong>Important!</strong></p><p class="first-p">Pour la suite de notre article (et pour tous les articles à venir), nous considèrerons que vous êtes l&#8217;heureux possesseur du domaine <em>exemple.fr</em>, et que vous disposez de deux serveurs ayant les adresses IP 1.1.1.1 et 2.2.2.2. Si vous n&#8217;avez qu&#8217;un seul serveur à disposition, vous n&#8217;aurez besoin de faire que de petits ajustements qui n&#8217;empêcheront pas le système de fonctionner correctement. Vous pouvez également installer temporairement bind sur votre propre machine pour passer les tests de validation.</p>
</div>
<h2>Pare-feu</h2>
<p>Tout d&#8217;abord, reprenons le script de pare-feu que <a title="Créer son propre Cloud : Introduction" href="http://ingnu.fr/2012/02/05/creer-son-propre-cloud-introduction/">nous avons configuré précédemment</a>.</p>
<pre class="brush: bash">nano /scripts/firewall</pre>
<p>Entre les lignes :</p>
<pre>##### Configuration personnalisée #####</pre>
<p>Et :</p>
<pre>##### Fin : Configuration personnalisée #####</pre>
<p>Rajoutez les lignes suivantes :</p>
<pre>${IPT} -A SERVICES -p tcp --dport 53 -j ACCEPT
${IPT} -A SERVICES -p udp --dport 53 -j ACCEPT</pre>
<p>Nous ouvrons donc le port 53 en TCP et en UDP. Normalement, seul le protocole UDP est utilisé pour les requêtes, mais le protocole TCP est utilisé également pour les transferts de zones dont nous aurons besoin plus tard. Il est donc important d&#8217;ouvrir les connexions aux deux types de protocoles, à moins que vous ne configuriez pas un serveur esclave. Nous pourrions également spécifier directement l&#8217;adresse du serveur esclave afin d&#8217;éviter toute demande de transfert directement depuis iptables :</p>
<pre>${IPT} -A SERVICES -p tcp --dport 53 -s 2.2.2.2 -j ACCEPT
${IPT} -A SERVICES -p udp --dport 53 -j ACCEPT</pre>
<h2><strong>Serveur maître</strong></h2>
<p>Pour installer bind, rien de plus simple :</p>
<pre class="brush: bash">apt-get install bind9 dnsutils</pre>
<p>Le paquet <a href="http://packages.debian.org/squeeze/dnsutils">dnsutils</a> contient notamment les outils <em>nslookup</em> et <em>dig</em>, qui nous serviront par la suite à tester notre installation.</p>
<p>Rendez-vous dans le répertoire de configuration de bind :</p>
<pre class="brush: bash">cd /etc/bind
/etc/init.d/bind9 stop</pre>
<div class="important_block message-block"><p class="printonly"><strong>Important!</strong></p><p class="first-p">Réflexe à acquérir : toujours stopper un processus en cours d&#8217;exécution avant d&#8217;en modifier la configuration. Cela évite quelques surprises du genre configuration qui revient à son état précédent une fois le service relancé.</p>
</div>
<p>On créé le fichier le définition de notre domaine :</p>
<pre class="brush: bash">nano db.exemple.fr</pre>
<pre>$TTL	86400
@	IN	SOA	ns.exemple.fr. postmaster.exemple.fr. (
		     2012020501
			     2D		; Refresh
			    15M		; Retry
			     3W		; Expire
			  86400 )	; Negative Cache TTL

			IN	NS		ns.exemple.fr.
			IN	NS		ns2.exemple.fr.

			IN	A		1.1.1.1

ns			IN	A		1.1.1.1
ns2			IN	A		2.2.2.2</pre>
<div class="notice_block message-block"><p class="printonly"><strong>Notice</strong></p><p class="first-p">Les domaines se terminent par un &laquo;&nbsp;.&nbsp;&raquo; !</p>
</div>
<p>Quelques explications s&#8217;imposent. Dans la ligne relative au <em>SOA</em>, on déclare le serveur DNS autoritaire pour la zone (<em>ns.exemple.fr</em>) et l&#8217;adresse email du responsable (<em>postmaster.exemple.fr</em>, le &laquo;&nbsp;@&nbsp;&raquo; de l&#8217;adresse étant remplacé par un &laquo;&nbsp;.&nbsp;&raquo;). Ensuite, on attribue un numéro de série au fichier ; ce numéro ne s&#8217;invente pas : il s&#8217;agit de la date (au format <em>YYYYMMDD</em>) suivi d&#8217;un nombre compris entre 00 et 99. Pour plus de clarté, on va appeler ce nombre la &laquo;&nbsp;clé&nbsp;&raquo;. Si vous disposez de plusieurs domaines, vous pouvez utiliser le premier chiffre de la clé comme identifiant pour un domaine particulier (par exemple, <em>&laquo;&nbsp;j&#8217;attribuerai toujours un 1 au domaine exemple.fr, et un 2 au domaine exemple2.fr</em>&laquo;&nbsp;), tandis que le second chiffre de la clé vous servira à indenter les modifications survenues dans ce fichier pour le jour donné.</p>
<p>Par exemple, vous faites 4 modifications sur le fichier <em>db.exemple.fr</em>, et 7 sur le fichier <em>db.exemple2.fr</em>, en date d&#8217;aujourd&#8217;hui. Vous pouvez attribuer les numéros de série suivants à vos fichiers : <em>2012020514</em> et <em>2012020527</em>.</p>
<div class="notice_block message-block"><p class="printonly"><strong>Notice</strong></p><p class="first-p">N&#8217;oubliez jamais de modifier le numéro de série à chaque modification du fichier !</p>
</div>
<div class="important_block message-block"><p class="printonly"><strong>Important!</strong></p><p class="first-p">Si vous ne disposez que d&#8217;un seul serveur, vous pouvez omettre les lignes relatives au deuxième serveur DNS (ns2.exemple.fr et son adresse associée 2.2.2.2). Cependant, vous ne passerez pas les tests de validation si votre registrar a recours au <a href="http://www.afnic.fr/fr/produits-et-services/services/zonecheck/">ZoneCheck</a> de l&#8217;AFNIC, qui exige que vous ayez deux serveurs DNS configurés. Vous devriez installer temporairement un serveur bind sur votre propre machine en suivant le tutoriel relatif à la mise en place d&#8217;un serveur esclave.</p>
</div>
<p>Les valeurs suivantes (<em>refresh</em>, <em>retry</em>, etc.) devraient convenir à la majorité des situations.</p>
<p>Nous définissons ensuite les deux serveurs DNS associés au nom de domaine : <em>ns.exemple.fr.</em> et <em>ns2.exemple.fr.</em></p>
<p>Ensuite, nous indiquons que le serveur principal a pour adresse IP 1.1.1.1, puis nous associons les adresses 1.1.1.1 et 2.2.2.2 aux deux serveurs de noms. Une fois que vous avez adapté cet exemple à votre propre domaine, vous pouvez enregistrer et fermer.</p>
<p>Théoriquement, dans une installation de base de bind sur une debian stable, le fichier <em>named.conf</em> contient la ligne suivante :</p>
<pre>include "/etc/bind/named.conf.local";</pre>
<p>Si ce n&#8217;est pas le cas, rajoutez-là :</p>
<pre class="brush: bash">echo "include \"/etc/bind/named.conf.local\";" &gt;&gt; named.conf</pre>
<p>Et modifiez le fichier <em>named.conf.local</em> :</p>
<pre class="brush: bash">nano named.conf.local</pre>
<p>Ce fichier va contenir les directives de configuration pour un domaine particulier, en l&#8217;occurrence, exemple.fr (et/ou exemple2.fr). C&#8217;est une bonne pratique de configuration à laquelle passe la majorité des applications, cela permet de clarifier les choses, et de s&#8217;y retrouver facilement.</p>
<p>Mettez donc le contenu suivant dans ce fichier :</p>
<pre>zone "exemple.fr" {
    type master;
    file "/etc/bind/db.exemple.fr";
};</pre>
<p>On défini notre instance de bind comme étant maître pour ce domaine, et on lui indique le fichier de configuration correspondant. Enregistrez et fermez ce fichier une fois modifié.</p>
<p>Redémarrez ensuite bind, pour procéder à quelques tests :</p>
<pre class="brush: bash">/etc/init.d/bind9 restart
nslookup exemple.fr</pre>
<p>Vous devriez obtenir la sortie suivante :</p>
<pre>Server: 127.0.0.1
Address: 127.0.0.1#53
Name: exemple.fr
Address: 1.1.1.1</pre>
<p>Vous noterez qu&#8217;à cause de la propagation des DNS, votre domaine n&#8217;est peut être pas encore disponible depuis l&#8217;extérieur. N&#8217;hésitez pas à tester (en utilisant la même commande) régulièrement depuis une machine qui n&#8217;héberge pas le serveur bind.</p>
<p>Si la commande précédente vous retourne une sortie similaire, c&#8217;est que votre domaine est correctement configuré (du point de vue de bind en tout cas). En l&#8217;état actuel des choses, bind devrait donc être en mesure de répondre à des requêtes portant sur votre domaine, bien qu&#8217;encore aucun domaine &laquo;&nbsp;utile&nbsp;&raquo; ne soit créé.</p>
<h2><strong>Serveur esclave</strong></h2>
<p>Pour faire fonctionner deux instances de bind sur le modèle de maître/esclave, on commence par compléter un peu la configuration du serveur maître. On reste donc sur la même machine, pour créer une clé de transfert :</p>
<pre class="brush: bash">dnssec-keygen -a HMAC-MD5 -b 512 -n HOST &lt;localhost&gt;.exemple.fr.</pre>
<p><em>dnssec-keygen</em> est un outil livré avec bind. Grâce à la commande suivante, on génère une clé en utilisant l&#8217;algorithme HMAC-MD5, d&#8217;une longueur de 512 bits, pour un hôte particulier (-n HOST), en l&#8217;occurrence, celui indiqué à la fin. Remplacez <em>&lt;localhost&gt;</em> par le nom d&#8217;hôte du serveur. Par exemple, j&#8217;ai appelé mon serveur &laquo;&nbsp;minerva&nbsp;&raquo;, sur le domaine ingnu.fr. La commande qui s&#8217;applique à mon cas devient donc :</p>
<pre class="brush: bash">dnssec-keygen -a HMAC-MD5 -b 512 -n HOST minerva.ingnu.fr.</pre>
<div class="important_block message-block"><p class="printonly"><strong>Important!</strong></p><p class="first-p">Notez toujours le point à la fin du domaine.</p>
</div>
<p>On génère une clé pour un hôte donné, mais <em>dnssec-keygen</em> permet bien d&#8217;autres choses que nous n&#8217;utiliserons pas ici. Notamment, vous pouvez choisir un algorithme différent, ou créer une clé pour toute une zone. Pour l&#8217;heure, nous souhaitons avoir la possibilité de transférer de manière sécurisée les données de zones (dans notre exemple, le fichier <em>db.exemple.fr</em>) de notre serveur maître vers le serveur esclave que nous configurerons plus tard. Cette commande est donc suffisante pour le moment.</p>
<p>A l&#8217;issue de l&#8217;exécution de cette commande (qui peut durer une vingtaine de secondes), deux nouveaux fichiers ont été créés. Ils commencent par la lettre K majuscule, et portent respectivement l&#8217;extension <em>.key</em> et <em>.private</em>. Le premier fichier contient une ligne qu&#8217;il est possible de rajouter dans un fichier de zone, tandis que le second contient quelques détails sur la création de la clé. Nous n&#8217;utiliserons dans notre cas précis aucun des deux dans son état actuel. Cependant, il peut être utile de les conserver pour un usage ultérieur.</p>
<p>La seule chose qui nous intéresse est la clé en elle-même qui figure dans les deux fichiers. Utilisez la commande <em>cat</em> sur le fichier <em>.private</em>, et copiez la clé qui apparaîtra. Créez ensuite le fichier <em>transfer.conf</em> :</p>
<pre class="brush: bash">nano transfer.conf</pre>
<pre>key "TRANSFER" {
    algorithm hmac-md5;
    secret "la clé que vous avez copié";
};

server 2.2.2.2 {
    keys {
        TRANSFER;
    };
};</pre>
<p>Dans ce fichier, nous ajoutons une clé au &laquo;&nbsp;trousseau&nbsp;&raquo; de bind, qui ne sera destinée qu&#8217;au transfert des zones entre le maître et l&#8217;esclave. Si un cas se présente où nous devrons diffuser d&#8217;autres clés, nous en génèrerons de nouvelles, pour éviter toute interférence.</p>
<p>Ensuite, nous affectons cette clé au serveur esclave, 2.2.2.2.</p>
<p>Incluez ce fichier à votre configuration, puis modifiez le fichier <em>named.conf.local</em> :</p>
<pre class="brush: bash">echo "include \"/etc/bind/transfer.conf\" &gt;&gt; /etc/bind/named.conf
nano named.conf.local</pre>
<pre>zone "exemple.fr" {
    type master;
    file "/etc/bind/db.exemple.fr";
    allow-transfer { 2.2.2.2; };
};</pre>
<p>Nous avons rajouté la ligne <em>allow-transfer { 2.2.2.2; };</em> qui nous permet d&#8217;éviter que n&#8217;importe qui puisse transférer nos zones sur son serveur. Redémarrez bind :</p>
<pre class="brush: bash">/etc/init.d/bind9 restart</pre>
<p>Désormais, lorsque le serveur maître redémarrera, il notifiera automatiquement le(s) serveur(s) esclave(s) de tout changement, et initiera le transfert des zones de manière sécurisée.</p>
<p>Passons maintenant à la configuration du serveur esclave à proprement parlé. Sur la machine qui hébergera ce serveur, installez bind :</p>
<pre class="brush: bash">apt-get install bind9 dnsutils</pre>
<p>Nous avons créé le fichier <em>transfer.conf</em> sur le serveur maître. Le même fichier doit être créé sur la machine esclave, avec une petite nuance.</p>
<pre class="brush: bash">cd /etc/bind
/etc/init.d/bind9/stop
nano transfer.conf</pre>
<pre>key "TRANSFER" {
    algorithm hmac-md5;
    secret "la clé que vous avez copié";
};

server 1.1.1.1 {
    keys {
        TRANSFER;
    };
};</pre>
<p>Vous noterez qu&#8217;il s&#8217;agit exactement du même fichier, y compris la même clé, mais que l&#8217;adresse IP de la clause <em>server</em> change. Dans la configuration du serveur esclave, c&#8217;est l&#8217;adresse IP du serveur maître qu&#8217;il faut indiquer. Ensuite, comme pour la configuration du serveur maître, on ajouter ce fichier à la configuration de bind :</p>
<pre class="brush: bash">echo "include \"/etc/bind/transfer.conf\" &gt;&gt; /etc/bind/named.conf</pre>
<p>Modifions ensuite le fichier <em>named.conf.local</em> pour y ajouter la configuration de votre (vos) domaine(s) :</p>
<pre>zone "exemple.fr" {
    type slave;
    file "/var/cache/bind/db.exemple.fr";
    masters { 1.1.1.1; };
    allow-notify { 1.1.1.1; };
};</pre>
<p>Nous indiquons ici que le fichier de zone <em>db.exemple.fr</em>, une fois transféré, sera stocké dans le dossier <em>/var/cache/bind</em>, qui devrait déjà être créé. Si ce n&#8217;est pas le cas, il faut le créer, et donc tous les cas, lui attribuer les bons droits :</p>
<pre class="brush: bash">mkdir -p /var/cache/bind
chown -R bind:bind /var/cache/bind
chmod -r 644 /var/cache/bind</pre>
<p>Il suffit maintenant de redémarrer bind pour que les modifications soient prises en compte.</p>
<pre class="brush: bash">/etc/init.d/bind9 restart</pre>
<p>Consultez immédiatement les journaux utilisés par bind :</p>
<pre class="brush: bash">tail -100 /var/log/syslog</pre>
<p>Il se peut que vous y trouviez une erreur à propos de l&#8217;heure qui n&#8217;est pas synchronisée. Installez sur les deux serveurs le paquet <a href="http://packages.debian.org/squeeze/ntpdate">ntpdate</a>, puis synchronisez les horloges avant de redémarrer bind :</p>
<pre class="brush: bash">apt-get install ntpdate
ntpdate 0.fr.pool.ntp.org
/etc/init.d/bind9 restart</pre>
<p>Testez maintenant votre serveur :</p>
<pre>nslookup
&gt; server 127.0.0.1
Default server: 127.0.0.1
Address: 127.0.0.1#53
&gt; exemple.fr
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: exemple.fr
Address: 1.1.1.1</pre>
<p>Vous disposez désormais de l&#8217;une des pièces maîtresses de votre propre serveur. La configuration de base que nous avons mis en place aujourd&#8217;hui va être complétée et sécurisée au fil des articles à venir, pour qu&#8217;au final, vous disposiez d&#8217;une solution complète vous permettant de vous affranchir des services offerts par Google, Twitter, facebook et bien d&#8217;autres. Le serveur que nous allons monter avec ces articles va vous permettre de reprendre le contrôle de vos données. Alors à bientôt pour le prochain article, qui traitera de la deuxième pierre angulaire de votre Cloud personnel et Libre : le serveur mail.</p>
]]></content:encoded>
			<wfw:commentRss>http://ingnu.fr/2012/02/05/installer-et-configurer-un-serveur-dns/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Créer son propre Cloud : Introduction</title>
		<link>http://ingnu.fr/2012/02/05/creer-son-propre-cloud-introduction/</link>
		<comments>http://ingnu.fr/2012/02/05/creer-son-propre-cloud-introduction/#comments</comments>
		<pubDate>Sun, 05 Feb 2012 16:34:21 +0000</pubDate>
		<dc:creator>Jimmy</dc:creator>
				<category><![CDATA[Créer son propre cloud]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[iptables]]></category>

		<guid isPermaLink="false">http://ingnu.fr/?p=292</guid>
		<description><![CDATA[Je parle beaucoup sur ingnu du fait que Google c&#8217;est le mal, qu&#8217;il faut utiliser des alternatives libres, et que le Cloud, c&#8217;est de la merde. Pour être tout à fait cohérent, il me fallait proposer des articles traitant concrètement de la mise en place de ces alternatives, et c&#8217;est pour cela que j&#8217;ai créé &#8230; </p><p><a class="more-link block-button" href="http://ingnu.fr/2012/02/05/creer-son-propre-cloud-introduction/">Lire la Suite &#187;</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://ingnu.fr/2012/01/19/il-faut-arreter-avec-le-cloud/cumulus_cloud/" rel="attachment wp-att-182"><img class="alignleft size-medium wp-image-182" title="Cumulus_cloud" src="http://ingnu.fr/wp-content/uploads/2012/01/Cumulus_cloud-300x200.jpg" alt="" width="300" height="200" /></a>Je parle beaucoup sur ingnu du fait que <a href="http://ingnu.fr/2011/12/25/pourquoi-google-cest-le-mal/">Google c&#8217;est le mal</a>, qu&#8217;il faut utiliser des <a title="Quelles sont les alternatives à Google ?" href="http://ingnu.fr/2011/12/29/quelles-sont-les-alternatives-a-google/">alternatives libres</a>, et que <a title="Il faut arrêter avec le cloud !" href="http://ingnu.fr/2012/01/19/il-faut-arreter-avec-le-cloud/">le Cloud, c&#8217;est de la merde</a>. Pour être tout à fait cohérent, il me fallait proposer des articles traitant concrètement de la mise en place de ces alternatives, et c&#8217;est pour cela que j&#8217;ai créé la rubrique &laquo;&nbsp;<a href="http://ingnu.fr/category/creer-son-propre-cloud/">Créer son propre cloud</a>&laquo;&nbsp;, dont cet article constitue le premier maillon pour vous aider à construire votre serveur grâce aux Logiciels Libres.</p>
<p>Il y a quatre prérogatives : n&#8217;utiliser que des Logiciels Libres, assurer la confidentialité de vos données, assurer la sécurité de votre serveur, s&#8217;affranchir de tout service géré par une entreprise.</p>
<p>Nous considérerons que vous disposez déjà d&#8217;un système GNU/Linux, de préférence fraîchement installé, brut de décoffrage. Je me baserai sur un système <a href="http://www.debian.org/">Debian GNU/Linux</a> (que je maîtrise bien mieux que les autres), il faudra alors adapter certaines de mes notes à votre cas précis (notamment en ce qui concerne les commandes d&#8217;installation de paquets).</p>
<p>La toute première étape après l&#8217;installation du système d&#8217;exploitation est d&#8217;imposer une politique de sécurité stricte. Nous commençons donc par créer un script permettant la mise en place d&#8217;un pare-feu et qui s&#8217;exécutera à chaque démarrage de la machine.</p>
<pre class="brush: bash">mkdir /scripts
cd /scripts</pre>
<p>Le répertoire /scripts que nous venons de créer contiendra un certains nombre de fichiers, que nous créerons au fil des articles. Dans un premier temps, nous ne créons que le script du firewall :</p>
<pre class="brush: bash">nano firewall</pre>
<pre>#!/bin/sh

IPT=/sbin/iptables
IF_EXT=eth0
IP_SSH=xxx.xxx.xxx.xxx

${IPT} -t mangle -F
${IPT} -t nat -F
${IPT} -F
${IPT} -t mangle -X
${IPT} -t nat -X
${IPT} -X
${IPT} -Z

echo 1 &gt; /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

${IPT} -P INPUT DROP
${IPT} -P OUTPUT ACCEPT
${IPT} -P FORWARD ACCEPT

${IPT} -A FORWARD -i lo -o lo -j ACCEPT
${IPT} -A INPUT -i lo -j ACCEPT
${IPT} -A OUTPUT -o lo -j ACCEPT

${IPT} -A INPUT -p tcp ! --syn -m state --state NEW,INVALID -j REJECT

${IPT} -N SPOOFED
${IPT} -N SERVICES

${IPT} -A SPOOFED -s 127.0.0.0/8 -j DROP
${IPT} -A SPOOFED -s 169.254.0.0/12 -j DROP
${IPT} -A SPOOFED -s 172.16.0.0/12 -j DROP
${IPT} -A SPOOFED -s 192.168.0.0/16 -j DROP
${IPT} -A SPOOFED -s 10.0.0.0/8 -j DROP

${IPT} -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

${IPT} -A SERVICES -p tcp --dport 22 -s ${IP_SSH} -j ACCEPT

##### Configuration personnalisée #####

##### Fin : Configuration personnalisée #####

${IPT} -A OUTPUT -j ACCEPT
${IPT} -A INPUT -m state --state ESTABLISH,RELATED -j ACCEPT
${IPT} -A INPUT -j SPOOFED
${IPT} -A INPUT -i ${IF_EXT} -j SERVICES

#################################
# Anti spam                     #
#################################

FILE="/tmp/drop.lasso"
URL="http://www.spamhaus.org/drop/drop.lasso"

[ -f $FILE ] &amp;&amp; /bin/rm -f $FILE || :
cd /tmp
wget $URL
blocks=$(cat $FILE  | egrep -v '^;' | awk '{ print $1}')
${IPT} -N droplist

for ipblock in $blocks
do
        ${IPT} -A droplist -s $ipblock -j LOG --log-prefix "DROP List Block"
        ${IPT} -A droplist -s $ipblock -j DROP
done

${IPT} -I INPUT -j droplist
${IPT} -I OUTPUT -j droplist
${IPT} -I FORWARD -j droplist

/bin/rm -f $FILE</pre>
<p>Dans un premier temps, on défini quelques variables. La plus importante est IP_SSH, c&#8217;est votre adresse IP, l&#8217;adresse depuis laquelle vous allez vous connecter au serveur via ssh.</p>
<div class="notice_block message-block"><p class="printonly"><strong>Notice</strong></p><p class="first-p">Il est vital de s&#8217;assurer que cette variable est correctement renseignée, sans cela, vous serez incapable d&#8217;accéder au serveur une fois le script exécuté !</p>
</div>
<p>Ensuite, on purge les règles (pour pouvoir exécuter plusieurs fois le fichier sans que cela ne les alourdisse), on met en place une politique par défaut (rien ne doit pouvoir rentrer sans autorisation), on créé les chaînes SPOOFED et SERVICES qui vont nous permettre de séparer le trafic et de sécuriser les accès, on met en place des règles personnalisées (pour le moment, aucune), et on installe un blocage du SPAM en bonus.</p>
<p>Théoriquement, ce script est tout à fait utilisable tel quel. Au fil des articles, on ajoutera des directives spécifiques au niveau du commentaire &laquo;&nbsp;Configuration personnalisée&nbsp;&raquo;. On se servira de la chaîne SERVICES pour y affecter les services hébergés par notre machine.</p>
<div class="important_block message-block"><p class="printonly"><strong>Important!</strong></p><p class="first-p">Le &laquo;&nbsp;bonus block&nbsp;&raquo; relatif au spam va nous permettre, directement au niveau d&#8217;iptables, de dropper purement et simplement toute tentative de connexion depuis les adresses fournies par <a href="http://www.spamhaus.org/">spamhaus</a>.</p>
</div>
<p>Dans le cas extrême où vous vous retrouviez bloqué, incapable de vous connecter en ssh à votre serveur, essayez de voir si votre hébergeur vous offre la possibilité de passer par un KVM virtuel. Cela vous permettra de reprendre la main sur votre serveur le temps de configurer correctement le pare-feu. Et dans le cas où le KVM est indisponible, voyez si votre hébergeur vous propose de démarrer un système de secours. Pour information, les deux possibilités vous sont offertes chez <a href="http://www.online.net/">online</a>.</p>
<p>Il ne reste plus qu&#8217;à enregistrer, chmoder, exécuter, et patienter jusqu&#8217;au prochain article :</p>
<pre class="brush: bash">chmod +x firewall
./firewall</pre>
]]></content:encoded>
			<wfw:commentRss>http://ingnu.fr/2012/02/05/creer-son-propre-cloud-introduction/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Faire fonctionner XMPP avec status.net</title>
		<link>http://ingnu.fr/2012/02/04/faire-fonctionner-xmpp-avec-status-net/</link>
		<comments>http://ingnu.fr/2012/02/04/faire-fonctionner-xmpp-avec-status-net/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 00:59:10 +0000</pubDate>
		<dc:creator>Jimmy</dc:creator>
				<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[statusnet]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://ingnu.fr/?p=270</guid>
		<description><![CDATA[Cela fait maintenant quelques temps que j&#8217;enquiquine mes followers sur social.ingnu.fr à propos de XMPP qui déconne sévèrement avec la release 1.0.1 de status.net : déconnections intempestives, mauvaise gestion de la file d&#8217;attente, etc. La page de Jean-Baptiste Favre m&#8217;a permis de creuser un peu plus, bien que ne parlant pas de XMPP. Il aborde &#8230; </p><p><a class="more-link block-button" href="http://ingnu.fr/2012/02/04/faire-fonctionner-xmpp-avec-status-net/">Lire la Suite &#187;</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://ingnu.fr/2012/02/04/faire-fonctionner-xmpp-avec-status-net/selection_001/" rel="attachment wp-att-276"><img class="alignleft size-full wp-image-276" title="Sélection_001" src="http://ingnu.fr/wp-content/uploads/2012/02/Sélection_001.png" alt="" width="300" height="300" /></a>Cela fait maintenant quelques temps que j&#8217;enquiquine mes followers sur <a href="https://social.ingnu.fr/ingnu/all">social.ingnu.fr</a> à propos de XMPP qui déconne sévèrement avec la release 1.0.1 de <a href="http://status.net/">status.net</a> : déconnections intempestives, mauvaise gestion de la file d&#8217;attente, etc.</p>
<p>La <a href="http://publications.jbfavre.org/statusnet/optimize-statusnet-nginx-php-fpm-apc-memcache.fr">page</a> de <a href="http://www.jbfavre.org/">Jean-Baptiste Favre</a> m&#8217;a permis de creuser un peu plus, bien que ne parlant pas de XMPP. Il aborde tout de même quelques directives de configuration à propos des files d&#8217;attente qui m&#8217;ont échappé, directives que j&#8217;ai adapté pour mieux coller (selon moi) à une debian et à placer dans le fichier <em>config.php</em> :</p>
<pre class="brush:php">$config['daemon']['piddir'] = '/var/run/';
$config['daemon']['user'] = 'www-data';
$config['daemon']['group'] = 'www-data';</pre>
<div class="warning_block message-block"><p class="printonly"><strong>Warning!</strong></p><p class="first-p">Attention à adapter <em>user</em> et <em>group</em> si chez vous ils sont différents.</p>
</div>
<p>À cela, il faut rajouter les lignes relatives à XMPP :</p>
<pre class="brush:php">addPlugin('xmpp', array(
    'user'=&gt;'identifiant du robot',
    'server'=&gt;'nom de domaine',
    'password'=&gt;'mot de passe',
    'resource'=&gt;'ce que vous voulez',
    'encryption'=&gt;true,
));</pre>
<p>Maintenant, l&#8217;étape la plus &laquo;&nbsp;difficile&nbsp;&raquo;. En l&#8217;état, vous pouvez être à peu près certain que ça ne marchera pas. Un contributeur au projet propose un patch, <a href="http://status.net/sites/default/files/issues/statusnet-1.0.1-inox.txt">que vous pouvez télécharger ici</a>. Enregistrez-le à la racine de votre instance de status.net et nommez-le par exemple statusnet.patch, puis saisissez les commandes suivantes :</p>
<pre class="brush:bash">sed -i "s#statusnet-1\.0\.1#\./#" statusnet.patch
patch -p1 &lt; statusnet.patch</pre>
<p>Normalement, tout devrait fonctionner à merveille désormais.</p>
]]></content:encoded>
			<wfw:commentRss>http://ingnu.fr/2012/02/04/faire-fonctionner-xmpp-avec-status-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A propos de l&#8217;auto-hébergement</title>
		<link>http://ingnu.fr/2012/02/03/a-propos-de-lauto-hebergement/</link>
		<comments>http://ingnu.fr/2012/02/03/a-propos-de-lauto-hebergement/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 21:14:01 +0000</pubDate>
		<dc:creator>Jimmy</dc:creator>
				<category><![CDATA[Vie privée]]></category>
		<category><![CDATA[auto-hébergement]]></category>
		<category><![CDATA[cloud]]></category>

		<guid isPermaLink="false">http://ingnu.fr/?p=265</guid>
		<description><![CDATA[Le Cloud, c&#8217;est de la merde, c&#8217;est une chose de laquelle je ne démordrai pas. Qu&#8217;il soit utilisé par des particuliers ou des entreprises, le Cloud est dangereux. Confier ses données à une entreprise  est suicidaire. Par contre, créer son propre Cloud est une bonne chose. Mais il y a un problème de vocabulaire : &#8230; </p><p><a class="more-link block-button" href="http://ingnu.fr/2012/02/03/a-propos-de-lauto-hebergement/">Lire la Suite &#187;</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://ingnu.fr/2012/02/03/a-propos-de-lauto-hebergement/paris_servers_dsc00190/" rel="attachment wp-att-266"><img class="alignleft size-medium wp-image-266" title="Paris_servers_DSC00190" src="http://ingnu.fr/wp-content/uploads/2012/02/Paris_servers_DSC00190-300x225.jpg" alt="" width="300" height="225" /></a><a href="http://ingnu.fr/2012/01/19/il-faut-arreter-avec-le-cloud/">Le Cloud, c&#8217;est de la merde</a>, c&#8217;est une chose de laquelle je ne démordrai pas. Qu&#8217;il soit utilisé par des particuliers ou des entreprises, le Cloud est dangereux. Confier ses données à une entreprise  est suicidaire.</p>
<p>Par contre, créer son propre Cloud est une bonne chose. Mais il y a un problème de vocabulaire : rien ne distingue le Cloud de Google, d&#8217;Amazon ou de Microsoft, du Cloud auto-hébergé. Or cette distinction est capitale, parce que l&#8217;accessibilité des données hébergées est totalement différente.</p>
<p>Rappelons pour commencer que le Cloud est un terme utilisé pour désigner un ensemble d&#8217;applications et de services accessibles à travers Internet, avec une idée d&#8217;interopérabilité (généralement).</p>
<p>Ensuite se pose la question de la confidentialité de ces données : qui a le droit de les utiliser, qui y a accès. Officiellement bien sûr, les fournisseurs de Cloud disent ne pas y accéder, ni même pouvoir le faire. En réalité, impossible de savoir. L&#8217;auto-hébergement se montre alors comme une solution idéale, résolvant les problèmes de vie privée.</p>
<p>Cela consiste à installer et gérer soi-même son propre serveur. Par conséquent, cela demande de solides connaissances, pas tant pour installer les applications et les services que pour les sécuriser.</p>
<p><strong>Première question : comment s&#8217;auto-héberger ?</strong></p>
<p>Trois solutions se présentent : le serveur à la maison, le serveur mutualisé, le serveur dédié.</p>
<p>Le serveur à la maison présente l&#8217;intérêt majeur de ne pas vous coûter un rond, à l&#8217;exception bien sûr de l&#8217;achat initial du matériel, et de l&#8217;énergie consommée (qui est insignifiante, notamment quand on se paye une alimentation certifiée <a href="http://www.plugloadsolutions.com/80PlusPowerSupplies.aspx">80PLUS</a>&#8230;). Vous choisissez sa puissance, vous installez exactement le matériel qu&#8217;il vous faut, et vous pouvez installer les applications dont vous avez besoin et seulement celles dont vous avez besoin. En contrepartie, vous êtes limités par votre bande passante.</p>
<p>Le serveur dédié vous coûte plus cher, mais le nombre d&#8217;offres présentes sur le marché est suffisant pour que vous trouviez une solution qui allie performances et faibles coûts. À titre informatif, j&#8217;héberge tous mes sites, un serveur mail complet avec MySQL, antivirus et anti-spam, une partie de mes fichiers personnels, un environnement de bureau LXDE, des dépôts git, etc. sur un Intel Core i3 540 et 2x1To en RAID1 sur une machine qui me coûte moins de 50€ par mois chez <a href="http://www.online.net/">Online</a> (filiale d&#8217;Illiad/FREE). Cerise sur le gâteaux : trafic illimité et bande passante de 1Gb/s. Par ailleurs, les systèmes d&#8217;installation (en tout cas chez Online) vous proposent un choix intéressant de systèmes d&#8217;exploitation : du Windows (pour les imberbes) à GNU/Linux (pour les barbus), en passant par des systèmes de virtualisation pré-configurés. En plus, en tant que serveurs dédiés, vous avez les pleins pouvoirs sur la machine. C&#8217;est comme si vous aviez votre propre serveur à la maison, sauf que vous payez tous les mois, pour disposer en plus de la possibilité de remplacer gratuitement du matériel défectueux, et un taux de disponibilité élevé de votre machine grâce aux systèmes de gestion d&#8217;alimentation mis en oeuvre. C&#8217;est, à mon sens, la solution idéale pour s&#8217;auto-héberger.</p>
<p>Enfin, le serveur mutualisé est entre les deux. La différence, c&#8217;est que vous n&#8217;êtes pas le maître absolu à bord, vous êtes dépendant des ressources qui vous sont octroyées, y compris au niveau de la bande passante.</p>
<p><strong>Le nom de domaine </strong></p>
<p>Dans tous les cas de figure, pour un auto-hébergement décent, il vous faut un nom de domaine. Bien que je sois relativement ennuyé par la notion &laquo;&nbsp;d&#8217;achat&nbsp;&raquo; de nom de domaine (vous n&#8217;êtes que locataires du domaine), les moins de 10€ annuels que vous coûtera un domaine ne représente pas une dépense faramineuse. Il existe bien les solutions gratuites du type <a href="http://www.no-ip.com/">no-ip</a>, mais vous êtes dépendants du bon fonctionnement du service, et &#8211; j&#8217;ignore si la situation a beaucoup changé &#8211; la configuration est quelque peu contraignante, pour peu que vous n&#8217;ayez pas un système de gestion intégré à votre routeur, et particulièrement quand vous avez une IP dynamique (ça existe encore ?)</p>
<p>Une fois le domaine acquis, théoriquement, vous en faites ce que vous voulez, à moins que l&#8217;offre que vous avez choisi ne vous limite d&#8217;une façon ou d&#8217;une autre : si vous installez et configurez votre propre serveur de noms de domaines (au hasard, <a href="http://www.isc.org/software/bind">bind</a>), vous êtes libres de créer autant de sous-domaines que vous voulez. Faites attention cependant à certaines offres qui utilisent le <a href="http://www.afnic.fr/fr/produits-et-services/services/zonecheck/">service de validation de la configuration DNS</a> de l&#8217;AFNIC : pour que vous puissiez gérer vous-même votre domaine, il vous faut deux serveurs DNS (un maître et un esclave). C&#8217;est notamment le cas chez Online, ce qui fait qu&#8217;outre la dédibox qui dessert &#8211; entre autres &#8211; ingnu.fr, j&#8217;ai aussi un serveur à la maison qui fait office d&#8217;esclave pour assurer la continuité du service.</p>
<p><strong>Les applications</strong></p>
<p>Pour s&#8217;auto-héberger, il faut savoir ce qu&#8217;on veut héberger : données personnelles ? musiques, films, ISOs de jeux ? Services ? Selon ce que vous voulez, l&#8217;auto-hébergement peut ne pas être la solution idéale. Il y a aussi probablement une question de philosophie derrière : m&#8217;auto-héberger me permet de m&#8217;affranchir de toute contrainte ou presque. J&#8217;ai installé un serveur de messagerie pour ne pas laisser un hotmail ou un gmail fouiller dans mes messages pour m&#8217;afficher de la pub, j&#8217;ai installé un dépôt git pour ne pas être limité en possibilités par un github, etc. Si je veux une machine 100% &laquo;&nbsp;<a href="http://fr.wikipedia.org/wiki/Vrms">rms approved</a>&laquo;&nbsp;, je peux me la monter sans rendre de compte à personne. Si je veux chiffrer la totalité de mon disque, ou juste une partie, c&#8217;est selon mon bon vouloir. Si je veux passer mon RAID1 en RAID0 pour avoir 2To au lieu de 2x1To, pas de problème. Le choix des applications et services à auto-héberger est donc déterminant.</p>
<p><strong>Au final</strong></p>
<p>S&#8217;auto-héberger, bien que n&#8217;étant pas gratuit, permet tout à la fois de bénéficier de l&#8217;aspect pratique du Cloud, sans confier vos données à des organismes étrangers. Par ailleurs, vous regroupez vos données, applications et services au même endroit, ce qui, malgré la violation du principe geek de ne pas mettre tous ses oeufs dans le même panier (ce qui est excusable dans le cas où c&#8217;est vous-même qui construisez et utilisez le panier en question), simplifie grandement tout autant la sécurisation du système que sa sauvegarde.</p>
<p>Alors, qu&#8217;attendez-vous pour fermer vos comptes Google pour créer votre propre Cloud ?</p>
]]></content:encoded>
			<wfw:commentRss>http://ingnu.fr/2012/02/03/a-propos-de-lauto-hebergement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ça m&#8217;énerve&#8230;</title>
		<link>http://ingnu.fr/2012/02/02/ca-menerve/</link>
		<comments>http://ingnu.fr/2012/02/02/ca-menerve/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 21:12:27 +0000</pubDate>
		<dc:creator>Jimmy</dc:creator>
				<category><![CDATA[Ingnu]]></category>

		<guid isPermaLink="false">http://ingnu.fr/?p=259</guid>
		<description><![CDATA[Les faux geeks qui se prétendent geeks parce qu&#8217;ils jouent 11 heures par jour Les faux geeks qui se prétendent geeks parce qu&#8217;ils utilisent des mots comme &#171;&#160;cyber-marketing&#160;&#187;, &#171;&#160;veille&#160;&#187;, &#171;&#160;réseaux sociaux&#160;&#187;, et plus généralement, qui se disent geeks alors qu&#8217;ils voient Internet comme un marché financier Les gens qui traînent des pieds quand ils font &#8230; </p><p><a class="more-link block-button" href="http://ingnu.fr/2012/02/02/ca-menerve/">Lire la Suite &#187;</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://ingnu.fr/2012/02/02/ca-menerve/conan-the-barbarian-1/" rel="attachment wp-att-260"><img class="alignleft size-medium wp-image-260" title="conan-the-barbarian-1" src="http://ingnu.fr/wp-content/uploads/2012/02/conan-the-barbarian-1-300x256.jpg" alt="" width="300" height="256" /></a></p>
<ul>
<li>Les faux geeks qui se prétendent geeks parce qu&#8217;ils jouent 11 heures par jour</li>
<li>Les faux geeks qui se prétendent geeks parce qu&#8217;ils utilisent des mots comme &laquo;&nbsp;cyber-marketing&nbsp;&raquo;, &laquo;&nbsp;veille&nbsp;&raquo;, &laquo;&nbsp;réseaux sociaux&nbsp;&raquo;, et plus généralement, qui se disent geeks alors qu&#8217;ils voient Internet comme un marché financier</li>
<li>Les gens qui traînent des pieds quand ils font leurs courses</li>
<li>Les gens qui emmènent leurs gosses au supermarché (et les laissent crapahuter partout)</li>
<li>Les gens qui ouvrent les boîtes de macaron au supermarché pour en grailler un et qui se font même pas chier à refermer la boîte comme si de rien n&#8217;était</li>
<li>Les gens qui, toujours au supermarché, prennent un article dans un rayon, vont à la borne pour obtenir le prix juste à côté du rayon, et reposent l&#8217;article dans le panier sous la borne au lieu de le remettre en rayon</li>
<li>Les gens qui crachent</li>
<li>Les éditeurs de jeux vidéos commerciaux qui auraient les moyens de sortir de bons titres et qui sortent de la merde</li>
<li>Même remarque pour la musique</li>
<li>Même remarque pour les films</li>
<li><a href="http://www.presse-citron.net/2012-big-gueant-is-watching-you">Le gouvernement qui passe en douce des lois à la con</a></li>
<li>Le cloud et le fait que tout le monde en parle en bien (à part les vrais geeks)</li>
<li>Les conasses qui téléphonent au volant</li>
<li>Les ouvriers qui roulent comme des cons</li>
<li>Les serveurs de restaurant qui font la gueule</li>
<li>Les clients de restaurant qui disent ni &laquo;&nbsp;merci&nbsp;&raquo;, ni &laquo;&nbsp;s&#8217;il vous plait&nbsp;&raquo;, ni &laquo;&nbsp;bonjour&nbsp;&raquo;, ni &laquo;&nbsp;au revoir&nbsp;&raquo;</li>
<li>Les jeunes cons qui se baladent par -5° avec une jambe de pantalon remontée jusqu&#8217;au genou</li>
<li>Les gamins de moins de cinq ans qui me regardent comme si j&#8217;étais une tartine de Nutella géante</li>
<li><a href="http://www.toutabo.com/images/products/last/L4534H_12.jpg">Les magazines &laquo;&nbsp;Linux&nbsp;&raquo;, qui usent et abusent du terme &laquo;&nbsp;Linux&nbsp;&raquo; pour désigner un système d&#8217;exploitation sans jamais parler de GNU</a> (et qui, en plus, incendient la langue française, et ne traitent QUE d&#8217;applications graphiques sans pratiquement jamais mentionner les outils console)</li>
<li><a href="http://fr.wikipedia.org/wiki/Linux">Même remarque pour Wikipédia</a></li>
<li>Les &laquo;&nbsp;geeks&nbsp;&raquo; qui parlent d&#8217;Open Source au lieu de <a href="http://www.gnu.org/philosophy/free-sw.html">Free Software</a></li>
<li>Plus généralement, les &laquo;&nbsp;geeks&nbsp;&raquo; qui ne savent absolument rien sur <a href="http://www.gnu.org/">GNU</a> ou <a href="http://www.stallman.org/">Richard Stallman</a></li>
<li>Les mecs qui nous considèrent comme des nerds juste parce qu&#8217;eux se considèrent faussement geeks</li>
<li>La lingerie féminine léopard</li>
<li>Les rayons de &laquo;&nbsp;lingerie&nbsp;&raquo; pour filles de moins de 12 ans (ok il en faut peut-être, mais pas au milieu d&#8217;un grand magasin, avec une grande pancarte, comme si tout le monde en avait besoin alors que c&#8217;est juste une question d&#8217;apparence, et surtout pas présentée comme de la lingerie, &laquo;&nbsp;sous-vêtements&nbsp;&raquo; suffit)</li>
<li>L&#8217;État qui ne sait pas aligner trois phrases sans dire trois conneries*</li>
<li>Les pilotes Libres de cartes réseaux dont le Makefile est truffé de bugs et qui, du coup, compilent pas (remarque, ça permet de chercher et comprendre pourquoi ça déconne)</li>
<li><a href="http://www.linuxfromscratch.org/blfs/">BLFS</a>. Autant <a href="http://www.linuxfromscratch.org/lfs/">LFS</a> est écrit au poil de cul, autant BLFS c&#8217;est le bordel</li>
<li><a href="http://www.hellopro.fr/images/produit-2/8/3/1/-senseo-kit-chocobreak-1493138.jpg">Le chocolat chaud de Senseo qui requiert un support à dosettes spécial et qui est dégueulasse</a>, alors que <a href="http://proddb.kraft-hosting.net/prod_db/proddbimg/10745.png">Milka sait faire un chocolat excellent sans support spécial</a></li>
<li>Le mec de Scarlett Johansson et celui de Kaley Cuoco</li>
<li>Les briquets neufs qui tombent en rade au bout d&#8217;une semaine</li>
<li>Claude Guéant, Nicolas Sarkozy, et tous les politiciens qui vont se vanter de relancer l&#8217;économie avant les élections, pour mieux la détruire une fois élus</li>
<li>Les jeunes &laquo;&nbsp;geeks&nbsp;&raquo; (moins de 30 ans) qui trouvent le moyen d&#8217;être sur le devant de la scène (oui je suis jaloux et je vous emmerde)</li>
<li>La tendance naturelle de l&#8217;Homme à fermer la gueule de celui qui ne pense pas comme lui</li>
<li>Les &laquo;&nbsp;geeks&nbsp;&raquo; qui utilisent Google et des iMerdes</li>
</ul>
<p>Bref, je fais la gueule. Le premier qui me dit &laquo;&nbsp;Pète un coup ça ira mieux&nbsp;&raquo; je le flagelle en place publique avant de le cramer.</p>
<p>* Il faut que je développe un peu. Une <a href="http://smp.ingnu.fr/f.php?i=9">pancarte</a>, accrochée à la caisse du supermarché. Trois phrases pour dicter des recommandations anti-alcool, trois conneries, trois insultes à la langue française.</p>
<ol>
<li>Il est interdit de vendre de l&#8217;alcool à des mineurs de moins de 18 ans : Il existe des mineurs de plus de 18 ans ? Il existe des gens de moins de 18 ans qui ne sont pas mineurs ? Ce n&#8217;est pas un peu redondant comme phrase ?</li>
<li>Il est interdit de vendre à crédit des boissons alcooliques : Depuis quand les boissons sont alcooliques ? Alcoolisées je veux bien, mais alcooliques&#8230;</li>
<li>Il est interdit de se trouver en état d&#8217;ivresse manifeste sur la voie publique : Oui, faut se retenir d&#8217;être bourré mais seulement dans la rue quand on est bien élevé. Par contre, comment on fait si on simule l&#8217;ivresse juste pour le fun ? On se fait mettre en garde à vue pendant 72 heures ? Pour être certain ? Pour faire semblant de décuver ?</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://ingnu.fr/2012/02/02/ca-menerve/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Vers la fin  de l&#8217;occasion</title>
		<link>http://ingnu.fr/2012/01/31/vers-la-fin-de-loccasion/</link>
		<comments>http://ingnu.fr/2012/01/31/vers-la-fin-de-loccasion/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 22:36:22 +0000</pubDate>
		<dc:creator>Jimmy</dc:creator>
				<category><![CDATA[Non classé]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[dématérialisation]]></category>
		<category><![CDATA[occasion]]></category>

		<guid isPermaLink="false">http://ingnu.fr/?p=256</guid>
		<description><![CDATA[Je m&#8217;insurge depuis que ingnu a rouvert sur les lois liberticides qui affectent notamment Internet. Cependant, tant que ces lois ne concernent qu&#8217;Internet, à part les geeks, peu s&#8217;en émeuvent. L&#8217;inertie dont fait preuve le &#171;&#160;commun des mortels&#160;&#187; est à imputer probablement à trois causes : le manque d&#8217;intérêt, le manque de motivation pour délaisser &#8230; </p><p><a class="more-link block-button" href="http://ingnu.fr/2012/01/31/vers-la-fin-de-loccasion/">Lire la Suite &#187;</a>]]></description>
			<content:encoded><![CDATA[<p>Je m&#8217;insurge depuis que ingnu a rouvert sur les lois liberticides qui affectent notamment Internet. Cependant, tant que ces lois ne concernent qu&#8217;Internet, à part les geeks, peu s&#8217;en émeuvent. L&#8217;inertie dont fait preuve le &laquo;&nbsp;commun des mortels&nbsp;&raquo; est à imputer probablement à trois causes : le manque d&#8217;intérêt, le manque de motivation pour délaisser des plateformes &laquo;&nbsp;qui marchent&nbsp;&raquo; pour des plateformes Libres qu&#8217;ils ne connaissent pas, et parce que ça n&#8217;affecte pas &#8211; encore &#8211; leur vie de tous les jours.</p>
<p>Cependant, plusieurs organisations (entreprises et État) conspirent pour tuer une liberté qui affecte tout le monde : la liberté d&#8217;acheter (et vendre) de l&#8217;occasion. En effet, qui n&#8217;a jamais acheté d&#8217;occasion ? Moi-même qui suis généralement &#8211; et ça me coûte de le dire &#8211; un early-adopter, il m&#8217;est déjà arrivé d&#8217;acheter des jeux, des livres ou des films d&#8217;occasion.</p>
<p>Tout cela a &#8211; probablement &#8211; commencé avec l&#8217;avènement du Cloud.</p>
<p>Considéré à ses débuts comme un moyen pratique de se mettre à sa disposition ses données depuis n&#8217;importe où dans le monde, les entreprises ont commencé à y voir un moyen de contrôler ce que les gens font des données qui y sont stockées, et ce que les gens consomment comme services.</p>
<p>À travers le Cloud, et plus précisément les Software As Service (SaS), les entreprises ont habilement amené leurs clients à se passer de logiciel à installer sur leur propre machine (logiciel qui pouvait alors être piraté) pour opter pour une solution plus restrictive : leur proposer de payer pour utiliser un logiciel que cette entreprise elle-même héberge, sur un serveur chargé du traitement des données, tâche anciennement affectée à la machine sur laquelle ce logiciel était installé chez le client.</p>
<p>Exactement le même procédé que la VoD (Video on Demand) : on n&#8217;achète plus la vidéo, on paye pour la regarder pendant 24h. Si on veut la revoir, il faut repayer.</p>
<p>Exactement le même procédé que la première génération de consoles de jeux connectées, où il faut mettre la main au portefeuille pour acheter des correctifs, des extensions, bien que le support CD (ou équivalent) était toujours disponible.</p>
<p>Exactement le même procédé, porté à un niveau jamais atteint, par Sony avec sa PSP Go. Plus de média physique, et par conséquent, plus moyen de le revendre.</p>
<p>Malheureusement, d&#8217;autres entreprises suivent. Et l&#8217;exemple le plus récent est la volonté de l&#8217;État de tuer le marché du film d&#8217;occasion. Et rien n&#8217;empêcherait les éditeurs de faire pression pour étendre leur emprise sur le marché du livre d&#8217;occasion.</p>
<p>L&#8217;occasion est un marché parallèle, libre ou presque. Les majors et éditeurs ne peuvent pas ponctionner les clients une deuxième fois lorsqu&#8217;un produit est revendu. La fin de l&#8217;occasion signifierait que les éditeurs pourraient vendre leurs produits plus chers &#8211; les gens seraient obligés d&#8217;acheter au prix fort &#8211; sans pour autant augmenter la valeur de ces produits, tout en tuant tout un pan de l&#8217;économie : les boutiques d&#8217;occasion payent des impôts comme toute entreprise.</p>
<p>Aujourd&#8217;hui, quand vous payer plus de cent euros pour un coffret Blu-ray avec des figurines, des livres collectors, des CD avec la bande originale, etc., vous en avez pour votre argent. La fin de l&#8217;occasion signifie forcément la distribution dématérialisée, et donc, la fin des coffrets collectors, ou même, la fin pure et simple du matériel.</p>
<p>Les implications sont abyssales : d&#8217;un côté, la dématérialisation du contenu signifie le traitement centralisé des données, donc les ordinateurs personnels n&#8217;auront plus d&#8217;intérêt à être puissants. Les passionnés n&#8217;auront donc plus accès à des processeurs ultra-performants, des cartes graphiques surpuissantes. Les PC ne deviendront plus que de simples terminaux voués à l&#8217;affichage, un peu comme un téléviseur. Tuer l&#8217;occasion, c&#8217;est tuer l&#8217;informatique.</p>
<p>C&#8217;est aussi tuer la valeur ajoutée, celle pour laquelle on décide de dépenser des sommes plus importantes que pour un objet classique, rare, ancien, disponible uniquement sur le marché de l&#8217;occasion parce que plus vendu, et donc, impossible à obtenir par d&#8217;autres moyens.</p>
<p>C&#8217;est tuer la créativité, car c&#8217;est réserver à une élite ayant les moyens d&#8217;acquérir de puissants serveurs et une bande passante coûteuse la possibilité de produire et diffuser de la culture.</p>
<p>De manière plus pragmatique, empêcher les gens d&#8217;acheter d&#8217;occasion, c&#8217;est réduire de manière significative leur pouvoir d&#8217;achat.</p>
<p>Je vais extrapoler et même un peu dévier du sujet, mais concrètement, d&#8217;une manière ou d&#8217;une autre, l&#8217;argent appartient à l&#8217;État. Quand vous êtes employés, l&#8217;argent que votre entreprise vous donne ne vient de nulle part ailleurs que de l&#8217;État. Les aides dont bénéficient certaines entreprises et certaines familles pauvres proviennent de l&#8217;État. En achetant, vous n&#8217;enrichissez pas un vendeur, vous ne faites que rendre cet argent à l&#8217;État, parce que ce vendeur paye des impôts, des taxes, et des fournisseurs, qui eux-mêmes payent des impôts et des taxes. L&#8217;argent passe ainsi de main en main jusqu&#8217;à retourner aux sources : dans les caisses de l&#8217;État. Autrement dit, d&#8217;une l&#8217;argent ne vous appartient pas, même si vous pleurez que vous l&#8217;avez gagné à la sueur de votre front, et de deux, l&#8217;argent n&#8217;a aucune valeur, ce n&#8217;est qu&#8217;un outil d&#8217;échange. Bref.</p>
<p>Avec les lois liberticides, la suppression des plateformes de téléchargement &laquo;&nbsp;illégales&nbsp;&raquo; et la promotion de plateformes légales, la suppression du marché de l&#8217;occasion, l&#8217;État ne cherche qu&#8217;une seule chose : supprimer un maximum d&#8217;intermédiaires possible. Moins il y a d&#8217;intermédiaires, plus d&#8217;argent sera récupéré. Et comme les plus riches sont ceux qui consomment le plus, ce sont eux aussi qui ramènent le plus d&#8217;argent à l&#8217;État. C&#8217;est la logique des &laquo;&nbsp;flux&nbsp;&raquo; financiers.</p>
<p>Mais qu&#8217;on soit geek, ouvrier, passionné de musique, fan de films, féru de lecture, tout ce que le gouvernement met en place nous concerne tous. C&#8217;est la suppression de notre patrimoine. En dématérialisant, on supprime notre patrimoine. On n&#8217;achète plus un coffret ou un livre, on achète des données numériques. Or, l&#8217;information, sous sa forme informatisée, ne peut s&#8217;acheter parce qu&#8217;elle se duplique aisément. L&#8217;information numérique doit rester libre, parce qu&#8217;elle ne peut pas être soumise à restrictions de part sa nature même. Mais personne (à part les chinois peut-être&#8230;) ne peut copier un coffret avec une figurine en résine numérotée, ou un album collector avec des photos inédites. C&#8217;est du matériel, c&#8217;est donc du patrimoine.</p>
<p>Alors, il faut lutter pour la conservation de notre patrimoine, il faut s&#8217;élever contre ces lois qui nous dépouillent tous !</p>
]]></content:encoded>
			<wfw:commentRss>http://ingnu.fr/2012/01/31/vers-la-fin-de-loccasion/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

