<?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>Sos-dedie.com</title>
	<atom:link href="http://www.sos-dedie.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sos-dedie.com</link>
	<description>L'aide pour votre serveur dédié</description>
	<lastBuildDate>Tue, 04 Oct 2011 09:43:04 +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>Apache 2, pour aller plus loin, partie 1</title>
		<link>http://www.sos-dedie.com/2011/10/04/apache-2-pour-aller-plus-loin-partie-1/</link>
		<comments>http://www.sos-dedie.com/2011/10/04/apache-2-pour-aller-plus-loin-partie-1/#comments</comments>
		<pubDate>Tue, 04 Oct 2011 09:37:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Apache]]></category>

		<guid isPermaLink="false">http://www.sos-dedie.com/?p=82</guid>
		<description><![CDATA[Nous allons voir dans cet article quelques notions pour pousser Apache plus loin, utilisation de l&#8217;url rewriting, commande spéciale, modules divers et variés. C&#8217;est tout ce que j&#8217;ai appris ces dernières années et qui pourraient vous servir (enfin ce que j&#8217;ai noté&#8230;). Pour cette première partie, nous allons voir le module EXPIRES et quelques commandes [...]]]></description>
			<content:encoded><![CDATA[<p>Nous allons voir dans cet article quelques notions pour pousser Apache plus loin, utilisation de l&#8217;url rewriting, commande spéciale, modules divers et variés. C&#8217;est tout ce que j&#8217;ai appris ces dernières années et qui pourraient vous servir (enfin ce que j&#8217;ai noté&#8230;). Pour cette première partie, nous allons voir le module EXPIRES et quelques commandes Apache 2<br />
<span id="more-82"></span><br />
<strong>Les modules</strong></p>
<p>Comme vous le savez, vous pouvez rajouter des modules à Apache, c&#8217;est à dire des fonctions spéciales, vous pouvez les activer et les désactiver à votre guise. Je vais vous parler ici de quelques modules qui me semblent cruciaux pour alléger la charge de votre serveur et servir les requêtes le plus rapidement possible. Nous allons commencer par un module primordial : <em>expires</em></p>
<p>Dans <em>/etc/apache2</em> vous trouvez deux dossiers : <em>mods-available</em> et <em>mods-enabled</em>. Le premier contient la liste des modules disponibles (installés) et le deuxième la liste des modules activés. En effet vous pouvez très bien installer un module sans l&#8217;utiliser (sans l&#8217;activer). Pour enclencher un module, vous pouvez soit faire un lien symbolique (ln -s) dans le mods-enabled vers mods-available ou utiliser une commande spéciale : a2enmod nomdumodule</p>
<p>Par exemple :</p>
<p><code><br />
a2enmod expires<br />
a2dismod expires<br />
</code></p>
<p>La première commande active le module, la deuxième le désactive.</p>
<p>Que fait ce module ? Il permet de dire à votre navigateur qu&#8217;il n&#8217;a pas besoin de recharger un objet (image, html, swf etc&#8230;) suivant un temps imparti. Le résultat est énorme car non seulement il accélère le téléchargement coté client mais soulage aussi la bande passante, ainsi que la charge de votre serveur. Voici quelques commandes à rajouter dans votre VirtualHost par exemple</p>
<p><code><br />
        ExpiresActive On<br />
	ExpiresByType video/mp4 "access plus 1 month"<br />
        ExpiresByType video/x-flv "access plus 1 month"<br />
	ExpiresByType text/css A604800<br />
        ExpiresByType image/gif A604800<br />
        ExpiresByType image/jpeg A604800<br />
        ExpiresByType image/png A604800<br />
        ExpiresByType application/x-shockwave-flash A604800<br />
	ExpiresByType video/x-flv A604800<br />
</code></p>
<p>Dans la première ligne, nous activons la fonction expires avec On (Off pour désactiver). ExpiresByType permet de définir un temps d&#8217;accès par mime-type. Donc par exemple pour les vidéos mp4 (le mime est video/mp4) on définit le temps imparti comme étant le dernier accès plus un mois. C&#8217;est à dire que le client va charger cette vidéo la première fois mais pendant 1 mois, le navigateur ne la rechargera plus s&#8217;il a dans le cache !</p>
<p>Un autre modèle d&#8217;écriture plus compact est par exemple A604800. Donc A pour Access suivi d&#8217;un nombre de seconde (604800 = 7 jours car chaque jour contient 86400 secondes). Vous pouvez aussi utiliser une directive universelle <em>ExpiresDefault</em> qui donnera par défaut un temps imparti pour tous les mime-types</p>
<p>Attention : car si vous modifiez la vidéo en gardant le même nom, les clients auront encore l&#8217;ancienne version en cache. Pour rendre le changement effectif, vous devez changer le nom de la video sur le serveur et donc sur toutes les urls qui contient ce lien&#8230;</p>
<p><strong>Quelques trucs avec Apache 2</strong></p>
<p>Quelques commandes utiles avec Apache 2. Pour savoir par exemple quels sont les modules effectivement en marche dans Apache 2, voici une commande listant les modules en marchent :</p>
<p><code>apache2ctl -M</code></p>
<p>Une commande qui permet aussi de savoir comment sont occupés les &#8220;slot&#8221; Apache que vous avez défini par ServerStart (s&#8217;il n&#8217;est pas dépassé). Très utile lorsque votre serveur est surchargé et que vous ne comprenez pas pourquoi, regardez d&#8217;abord avec cette commande :</p>
<p><code>apache2ctl status</code></p>
<p>Si la commande retourne une erreur, regardez si le module status est installé (a2enmod status), si c&#8217;est le cas consultez le paramètre du module dans /etc/apache2/mods-enabled/status.conf</p>
<p>Vous devez avoir une ligne : <em>Allow from 127.0.0.1</em> pour permettre l&#8217;accès depuis l&#8217;ordinateur local. (vous avez surement mis <em>HostnameLookups</em> dans apache2.conf à OFF ce qui est plutôt logique&#8230;)</p>
<p>Cette commande retourne donc un tableau de caractères :</p>
<p>. indique un slot Apache libre<br />
_ indique un slot en attente de connexion (donc un processus Apache en attente)<br />
K indique que le slot est en Keepalive, c&#8217;est le paramètre que vous avez défini dans apache2.conf<br />
C indique un slot en cours de fermeture de connexion</p>
<p>Si votre tableau est totalement rempli cela peut être mauvais signe, trop de processus sont ouverts, soit votre paramètre n&#8217;est pas bon (ServerLimit, ServerStart&#8230;)</p>
<p>Une petite astuce bien pratique, pour voir en temps réel toutes les secondes par exemple :</p>
<p><code>watch -n 1 apache2ctl status</code></p>
<p>permet de voir toute les 1 seconde la commande apache2ctl status&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sos-dedie.com/2011/10/04/apache-2-pour-aller-plus-loin-partie-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sécuriser (un peu) son serveur</title>
		<link>http://www.sos-dedie.com/2011/10/03/securiser-un-peu-son-serveur/</link>
		<comments>http://www.sos-dedie.com/2011/10/03/securiser-un-peu-son-serveur/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 15:51:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[Ajouter un tag]]></category>
		<category><![CDATA[mod_evasive]]></category>
		<category><![CDATA[mod_security]]></category>
		<category><![CDATA[sécurité]]></category>

		<guid isPermaLink="false">http://www.sos-dedie.com/?p=74</guid>
		<description><![CDATA[Voici quelques solutions pour sécuriser son serveur, tout du moins pour les attaques basiques, malheureusement un pirate expérimenté fera presque ce qu&#8217;il veut de votre serveur mais à quelle fin ? Aucune normalement (à moins que votre serveur n&#8217;héberge quelques &#8220;saletés&#8221; qui ne plaisent pas au pirate). Mod_evasive Ce module Apache permet plusieurs choses et [...]]]></description>
			<content:encoded><![CDATA[<p>Voici quelques solutions pour sécuriser son serveur, tout du moins pour les attaques basiques, malheureusement un pirate expérimenté fera presque ce qu&#8217;il veut de votre serveur mais à quelle fin ? Aucune normalement (à moins que votre serveur n&#8217;héberge quelques &#8220;saletés&#8221; qui ne plaisent pas au  pirate).<span id="more-74"></span></p>
<p><strong>Mod_evasive</strong></p>
<p>Ce module Apache permet plusieurs choses et notamment de stopper les attaques brutes. Il est par contre difficile à régler et inadéquat pour certain site web (à mon avis). En fait il consiste à compter les requêtes d&#8217;une adresse IP arrivant par URL ou par site et à bloquer temporairement cette IP si elle dépasse les limites fixées. Pour installer ce module Apache il suffit de taper le code :</p>
<p><code>apt-get install libapache2-mod-evasive</code></p>
<p>Ensuite configurer apache pour y intégrer les paramètres du modules, cela peut se faire dans apache2.conf ou dans le dossier conf.d<br />
<code><br />
&lt;IfModule mod_evasive20.c&gt;<br />
DOSHashTableSize 3097<br />
DOSPageCount 5<br />
DOSSiteCount 50<br />
DOSPageInterval 2<br />
DOSSiteInterval 2<br />
DOSBlockingPeriod 300<br />
DOSEmailNotify "contact@monsite.com"<br />
DOSLogDir "/home/log/mod_evasive/"<br />
#DOSSystemCommand "/sbin/iptables -I INPUT -s %s -j DROP"<br />
#DOSSystemCommand "/bin/echo %s &gt;&gt; /home/log/mod_evasive/dos_evasive.log &amp;&amp; /bin/date &gt;&gt; /home/log/mod_evasive/dos_evasive.log"<br />
#DOSWhiteList 127.0.0.1<br />
&lt;/IfModule&gt;</code></p>
<p>Des logs seront écrits comme indiqué dans le dossier suivant qu&#8217;il faut donc créer :</p>
<p><code>mkdir /home/log/mod_evasive/<br />
chown -R www-data /home/log/mod_evasive/</code></p>
<p>Voici la signification des paramètres :</p>
<p><em>DOSPageCount</em> : Nombre de requêtes IP sur la même URL permis dans l&#8217;intervalle de temps défini avec <em>DOSPageInterval</em> (en seconde)</p>
<p><em>DOSSiteCount</em> : Nombre de requêtes IP sur le site permis dans l&#8217;intervalle de temps défini avec <em>DOSSiteInterval</em> (en seconde)</p>
<p><em>DOSBlockingPeriod</em> : Durée pendant laquelle l&#8217;IP est bloqué en seconde (erreur 403)</p>
<p><em>DOSEmailNotify</em> : Email d&#8217;avertissement</p>
<p><em>DOSSystemCommand</em> : Commande système, les exemples permettent par exemple d&#8217;inscrire dans iptables l&#8217;ip à bannir (donc bannissement définitif de cette ip) ou encore d&#8217;écrire un fichier log avec date etc&#8230;</p>
<p><em>DOSWhiteList</em> : IP qui ne sera jamais banni</p>
<p>On voit avec les paramètres que si vous mettez un chiffre trop bas dans les count ou trop haut dans les intervalles alors vos visiteurs pourraient être bloqué par exemple s&#8217;ils demandent le même objet (par exemple une image répétitive dans un forum), il faut donc bien régler selon son serveur et son site web.</p>
<p><strong>mod_security</strong></p>
<p>Ce module est plus puissant mais aussi bien plus complexe, <a href="http://www.amazon.fr/s/ref=nb_sb_noss?__mk_fr_FR=%C5M%C5Z%D5%D1&amp;url=search-alias%3Daps&amp;field-keywords=mod_security&amp;x=0&amp;y=0#/ref=nb_sb_noss?__mk_fr_FR=%C3%85M%C3%85Z%C3%95%C3%91&amp;url=search-alias%3Daps&amp;field-keywords=modsecurity&amp;rh=i%3Aaps%2Ck%3Amodsecurity">quelques livres</a> sont disponibles à son sujet. Ce module analyse les requêtes HTTP d&#8217; Apache, il permet ensuite de prendre des actions, il est très puissant car aussi bien l&#8217;entête que le corps des requêtes peuvent être analysées.</p>
<p>Pour installer ce module, rien de plus simple&#8230;</p>
<p><code>apt-get install libapache2-mod-security2</code></p>
<p>Par défaut, le module ne protège pas grand chose, il faut l&#8217;alimenter en règle. Chaque règle permet de détecter les intrusions, trojans ou autres scanners. Etant donné que tout cela est vaste, je vous conseille de consulter le site <a href="https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project#tab=Download">OWASP</a> par exemple. Vous y trouverez de quoi alimenter le module en règle avec toute les explications sur l&#8217;installation.</p>
<p>Le module est livré avec quelques règles de base, faites un <em>locate modsecurity</em> pour trouver les règles en question plus la configuration minimale.</p>
<p>Si je passe peu de temps sur ce module, c&#8217;est pour vous exposer ma méthode personnelle&#8230;</p>
<p><strong>Blocage depuis Apache</strong></p>
<p>En effet Apache possède tout ce qu&#8217;il faut pour bloquer certaines requêtes HTTP et notamment celles des scans. C&#8217;est les plus dangereuse car il suffit d&#8217;appuyer sur un bouton pour déclencher un scanner qui va chercher toutes les failles possibles de votre site WEB. Hors que fait un scanner ? Il scanne toute les pages possible même celle qui n&#8217;existe pas&#8230;Lorsqu&#8217;un serveur est en production et stable, il n&#8217;a normalement aucune url qui retourne une erreur 404 (page inexistante)</p>
<p>L&#8217;idée consiste alors à bannir définitivement toute IP qui scanne votre site et tombe sur une url inexistante. Une autre idée consiste à connaitre le scanner, à trouver des mots clefs et à bannir les IP qui cherche des URL contenant ces mots clefs.</p>
<p>Par exemple le scanner Acunetix cherche des URL contenant son propre nom, voici une règle pouvant être mise en place dans Apache (mod_rewrite doit être activé)</p>
<p><code><br />
RewriteCond %{REQUEST_URI} ^(.*acunetix.*)$<br />
RewriteRule ^(.*)$ /acutix.php [L]<br />
</code></p>
<p>Cette règle détecte donc une URL contenant le mot cunetix et exécute (et renvoi) l&#8217;url acutix.php (il est important que le nom final de l&#8217;url ne contienne pas le nom recherché&#8230;). Dans cette page PHP, vous pouvez écrire un log et surtout appeler une fonction système pour bannir l&#8217;IP en question, voici par exemple le programme PHP</p>
<p><code><br />
	$path_bin = "/home/www/monsiteweb/acutix";<br />
	$parm=" ".ip();<br />
	$parm = escapeshellcmd($parm);<br />
	$result=passthru("$path_bin $parm",$error);<br />
</code></p>
<p>Ce code PHP appelle le script acutix avec comme paramètre l&#8217;adresse IP (retourné par la fonction ip() à écrire). Voici par exemple, un code possible pour acutix</p>
<p><code><br />
#!/bin/bash</p>
<p>res=$(sudo /sbin/iptables -A INPUT -s $1 -j DROP)<br />
</code></p>
<p>Ce petit script rajoutera dans iptables l&#8217;adresse IP à exclure, toute connexion entrante avec cette IP sur le serveur sera ignorée&#8230;</p>
<p>Vous allez toutefois vous heurter à un problème. iptables ne pourra pas être exécuté si vous n&#8217;êtes pas root et normalement vous avez configuré Apache pour une exécution sous l&#8217;utilisateur www-data qui n&#8217;est pas root. Il faut donc donner les droits d&#8217;exécution à www-data. Pour cela il suffit d&#8217;éditer le fichier <em>sudoers</em>. Utilisez la commande <em>visudo</em> (si elle n&#8217;est pas disponible, faites un apt-get install sudo) et rajoutez ces lignes</p>
<p><code>www-data ALL=NOPASSWD:/sbin/iptables</code></p>
<p>Qui indique que l&#8217;utilisateur www-data sur toute les adresses (ALL) n&#8217;a pas besoin de mot de passe (NOPASSWD) pour exécuter la commande /sbin/iptables avec la commande sudo</p>
<p>Il suffit donc de rajouter la commande sudo devant la commande iptables (comme dans le script) pour exécuter cette commande en mode root.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sos-dedie.com/2011/10/03/securiser-un-peu-son-serveur/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installer un cache op-code pour PHP</title>
		<link>http://www.sos-dedie.com/2011/10/01/installer-un-cache-op-code-pour-php/</link>
		<comments>http://www.sos-dedie.com/2011/10/01/installer-un-cache-op-code-pour-php/#comments</comments>
		<pubDate>Sat, 01 Oct 2011 09:52:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[apc]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[x-cache]]></category>

		<guid isPermaLink="false">http://www.sos-dedie.com/?p=72</guid>
		<description><![CDATA[Nous allons voir dans ce tutoriel des solutions pour optimiser la vitesse d&#8217;exécution de PHP, notamment à travers ce qu&#8217;on appelle un cache &#8220;op-code&#8221;. Il faut savoir en effet que PHP transforme votre script (programme) PHP en langage intermédiaire plus facilement assimilable pour l&#8217;exécution. Installation de X-CACHE On part toujours ici pour l&#8217;installation sur Debian [...]]]></description>
			<content:encoded><![CDATA[<p>Nous allons voir dans ce tutoriel des solutions pour optimiser la vitesse d&#8217;exécution de PHP, notamment à travers ce qu&#8217;on appelle un cache &#8220;op-code&#8221;. Il faut savoir en effet que PHP transforme votre script (programme) PHP en langage intermédiaire plus facilement assimilable pour l&#8217;exécution.</p>
<p><span id="more-72"></span><strong>Installation de X-CACHE</strong></p>
<p>On part toujours ici pour l&#8217;installation sur Debian mais l&#8217;installation sur les autres versions linux n&#8217;est guère différente et souvent aussi pratique. L&#8217;installation sur Debian est encore une fois fort simple, puisqu&#8217;il suffit d&#8217;exécuter la commande suivante :</p>
<p><code>apt-get install php5-xcache</code></p>
<p>Une fois fait, tout est déjà prêt puisque le fichier de configuration (xcache.ini) est normalement dans /etc/php5/conf.d/, si ce n&#8217;est pas le cas, tapez la commande :</p>
<p><code>locate xcache.ini</code></p>
<p>Copiez le fichier au bon endroit, vous pouvez ensuite éditer le fichier avec pico ou vi pour modifier quelques paramètres. Notamment la taille du cache à la ligne (xcache.size =), n&#8217;hésitez pas à mettre de l&#8217;espace si comme moi vous avez plusieurs Go de mémoire vive. Les autres paramètres sont aussi bien expliqués dans le fichier de configuration, de la sorte vous n&#8217;aurez pas trop de mal à paramètrer pour votre serveur mais par défaut tout fonctionne aussi très bien.</p>
<p>Reste à configurer l&#8217;accès à la page de contrôle, page WEB qui permet de voir un peu ce que fait le cache. Dans la partie <em>[xcache.admin]</em>, en haut du fichier, vous trouverez des paramètres comme le nom d&#8217;accès et le mot de passe pour accéder à la page. Une astuce pour créer le mot de passe qui doit être indiqué en md5 :</p>
<p><code>echo -n motdepasse | md5sum</code></p>
<p>où <em>motdepasse</em> est votre mot de passe personnel. Copier le résultat à la ligne <em>xcache.admin.pass =</em> et entre guillemets.</p>
<p>Une fois cela fait, il ne reste plus qu&#8217;à dire à Apache l&#8217;url d&#8217;accès à la page de contrôle en créant un Alias :</p>
<p><code>Alias /xcache-admin/ /usr/share/xcache/admin/</p>
<p>Options Indexes MultiViews<br />
Deny from All<br />
Allow from <em>monIP</em><br />
</code></p>
<p>Attention car suivant la version, la page admin ne sera pas au même endroit (donc exécutez un <em>locate xcache</em> pour mieux savoir où se trouve cette page). Vous pouvez remplacer <em>monIP</em> par votre adresse IP si elle est fixe, sinon supprimez la ligne <em>Deny from All</em> et mettez <em>Allow from All</em></p>
<p>Maintenant si vous tapez l&#8217;adresse de votre site www.monsite.com/xcache-admin vous aurez accès à la page avec toute les infos. Si vous pensez que Xcache ne fonctionne pas, vérifiez avec la commande php -v si Xcache est bien installé :</p>
<p><code>php -v<br />
PHP 5.2.6-1+lenny13 with Suhosin-Patch 0.9.6.2 (cli) (built: Jul  1 2011 16:01:01)<br />
Copyright (c) 1997-2008 The PHP Group<br />
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies<br />
with XCache v1.2.2, Copyright (c) 2005-2007, by mOo</code></p>
<p><strong>Installation de APC</strong></p>
<p>Ce deuxième choix de cache n&#8217;est pas à installer en même temps que Xcache, c&#8217;est l&#8217;un ou l&#8217;autre. Il existe deux méthodes pour installer APC, je vais prendre la plus simple, il semblerait d&#8217;ailleurs qu&#8217;APC sera intégré dans une prochaine version de PHP.</p>
<p><code>apt-get install php-apc</code></p>
<p>Il suffit ensuite d&#8217;éditer le fichier /etc/php5/conf.d/apc.ini qui normalement se trouve donc à cette place. Fixez la taille du cache et divers paramètres mais le défaut fonctionne aussi sans problème.</p>
<p>Vous pouvez facilement accéder à la page de contrôle de APC via un fichier apc.php que vous pouvez placer où bon vous semble. Tapez <em>locate apc.php</em> pour trouver le fameux fichier, s&#8217;il est compressé alors décompressez le.</p>
<p>Personnellement je préfère Xcache qui me semble plus stable qu&#8217;APC. C&#8217;est à votre goût !</p>
<p>Vous constaterez normalement si votre serveur est chargé en temps processeur et en requête une belle diminution de charge (% processeur). C&#8217;est toujours bon à prendre de moins consommer d&#8217;énergie !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sos-dedie.com/2011/10/01/installer-un-cache-op-code-pour-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache 2 Worker et PHP FastCGI</title>
		<link>http://www.sos-dedie.com/2009/01/15/apache-2-worker-et-php-fastcgi/</link>
		<comments>http://www.sos-dedie.com/2009/01/15/apache-2-worker-et-php-fastcgi/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 04:58:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[php5]]></category>

		<guid isPermaLink="false">http://www.sos-dedie.com/?p=58</guid>
		<description><![CDATA[Il existe plusieurs manières de faire tourner Apache et PHP sur son serveur et notamment une manière peu courante mais pourtant exploitant aux mieux les capacités des processeurs multi-cores et du multi-threading et nous allons voir laquelle. La nécessité Vous avez beaucoup de processus Apache qui se lance et autant de PHP ? Vous manquez [...]]]></description>
			<content:encoded><![CDATA[<p>Il existe plusieurs manières de faire tourner Apache et PHP sur son serveur et notamment une manière peu courante mais pourtant exploitant aux mieux les capacités des processeurs multi-cores et du multi-threading et nous allons voir laquelle.</p>
<p><span id="more-58"></span></p>
<p><strong>La nécessité</strong></p>
<p>Vous avez beaucoup de processus Apache qui se lance et autant de PHP ? Vous manquez de mémoire et voulez gagner encore en performance ? Alors essayez Worker et Fastcgi ! Avec apache en mode Worker et PHP géré en Fastcgi votre système passera beaucoup moins de temps à ouvrir et fermer des processus car un seul processus gérera enfin toutes les requêtes !</p>
<p><strong>L&#8217;installation</strong></p>
<p>L&#8217;installation est assez simple pourvu que l&#8217;on fasse attention à quelques détails. Je ne vais pas reprendre ici en détail toute la configuration d&#8217;Apache et de PHP. Personnellement j&#8217;ai fait mes tests sur une version d&#8217;apache-php-mysql déjà installé. Donc vous pouvez le faire par dessus votre Apache prefork (ce qui est l&#8217;installation standard). Commençons par Apache.</p>
<p><code><br />
apt-get install apache2-mpm-worker libapache2-mod-fcgid<br />
</code></p>
<p>Si l&#8217;installation s&#8217;est bien déroulée, vous devriez avoir message final : Module fcgid installed. Si ce n&#8217;est pas le cas, activez le module avec la commande suivante.</p>
<p><code><br />
a2enmod fcgid<br />
</code></p>
<p>Pour vérifier il suffit aussi d&#8217;aller voir dans /etc/apache2/mods-enabled pour voir si le module fcgid.load est bien pressé (par lien symbolique ou physiquement)</p>
<p>Pendant l&#8217;installation vous aurez peut être peur en voyant que le système veut vous enlever le module php5. C&#8217;est normal, en effet celui-ci ne fonctionne pas avec Apache Thread (worker), c&#8217;est d&#8217;ailleurs pour cette raison que nous installerons  le php5 en mode cgi.</p>
<p><strong>PHP 5 en mode CGI</strong></p>
<p>Comme expliqué ci-dessus, le module PHP ne marchera pas avec le mode Worker d&#8217;Apache. Par conséquent nous devons installé le PHP en mode CGI qui sera utilisé ici à travers FASTCGI.</p>
<p><code><br />
apt-get install php5-cgi<br />
</code></p>
<p>Dans /etc/php5 vous trouverez par la suite un répertoire cgi le quel contient le php.ini, le fichier de configuration de php. Vous pouvez donc dans ce fichier faire vos réglages PHP classique.</p>
<p>Maintenant il faut expliquer à Apache que les page php que vous voulez vont être exécutée avec FASTCGI. Pour cela quelques commandes suffisent, elles sont à mettre dans la configuration de votre Virtual Host dans Apache</p>
<p>Par exemple si votre site Web est dans le dossier www de /home<br />
<code><br />
NameVirtualHost *<br />
&lt;VirtualHost *&gt;</code></p>
<p style="padding-left: 30px;">ServerAdmin webmaster@localhost<br />
DocumentRoot /home/www/</p>
<p>&lt;Directory /&gt;<br />
Options FollowSymLinks<br />
AllowOverride None<br />
&lt;/Directory&gt;</p>
<p>&lt;Directory /home/www/&gt;</p>
<p style="padding-left: 30px;">AddHandler fcgid-script .php<br />
AddHandler fcgid-script .php3<br />
FCGIWrapper /usr/lib/cgi-bin/php5 .php<br />
FCGIWrapper /usr/lib/cgi-bin/php5 .php3<br />
Options ExecCGI Indexes FollowSymLinks MultiViews<br />
AllowOverride None<br />
Order allow,deny<br />
allow from all</p>
<p>&lt;/Directory&gt;<br />
&#8230;.</p>
<p></code></p>
<p>La ligne AddHandler permet donc de spécifier quelle extension de fichier est a exécuter via FCGI. Il suffit ensuite d'indiquer où se trouve l'application concernant cette extension. Cela se fait avec FCGIWrapper. Pour finir, n'oubliez pas l'option ExecCGI sans quoi vos CGI ne s'exécuteront jamais...</p>
<p>Normalement après avoir tout redémarrer (apache2ctl restart), vous devriez vous retrouver avec seulement quelques processus d'apache et de php5 mais surtout un nombre défini et fixe qui ne changera peu.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sos-dedie.com/2009/01/15/apache-2-worker-et-php-fastcgi/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Optimiser Mysql</title>
		<link>http://www.sos-dedie.com/2008/10/30/optimiser-mysql/</link>
		<comments>http://www.sos-dedie.com/2008/10/30/optimiser-mysql/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 17:05:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Mysql]]></category>

		<guid isPermaLink="false">http://www.sos-dedie.com/wordpress/?p=53</guid>
		<description><![CDATA[L&#8217;optimisation de Mysql n&#8217;est pas une chose à prendre à la légère. Certaines optimisations peuvent parfois accélérer par 100 voir 1000 certaines requêtes ! Et vous allez me dire : et après ? Les ordinateurs sont tellement puissants ! Oui sauf que cela a un coût financier et écologique. Non seulement vous allez avoir besoin [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;optimisation de Mysql n&#8217;est pas une chose à prendre à la légère. Certaines optimisations peuvent parfois accélérer par 100 voir 1000 certaines requêtes ! Et vous allez me dire : et après ? Les ordinateurs sont tellement puissants ! Oui sauf que cela a un coût financier et écologique. Non seulement vous allez avoir besoin d&#8217;un serveur plus puissant pour faire tourner vos requêtes non optimisés (donc plus cher) mais ce serveur consommera aussi plus d&#8217;énergie !</p>
<p><span id="more-53"></span></p>
<p><strong>La nécessité</strong></p>
<p>L&#8217;optimisation Mysql peut devenir une réelle nécessité que vous soyez en hébergement mutualisé ou en dédié. Votre site répondra beaucoup plus rapidement et donc attirera plus de visiteurs avec des requêtes optimisés. Sans compter l&#8217;économie d&#8217;un serveur dédié moins puissant !</p>
<p>Nous allons voir donc quelques principes de bases sans entrer dans le cœur de Mysql.</p>
<p><strong>Detecter les requêtes non optimisés</strong></p>
<p>Le premier but va être de détecter vos requêtes non optimisées. Pour cela vous avez déjà un moyen visuel trés simple. Vous cliquez sur une rubrique de votre site et le chargement est extrêmement long ? La page d&#8217;entrée du site se charge par étape ? Demandez-vous ce qui peut causer ces soucis, cela peut être une page trop lourde à charger, des images trop volumineuses ou des requêtes SQL non optimisés !</p>
<p>Un autre moyen consiste à utiliser aussi le calcul du temps pris par les requêtes Mysql avec PHP, <a href="http://www.webdesign-tutoriaux.com/tutoriel-732.html">voir par exemple ce tutoriel</a>. Cela consiste à utiliser une fonction temps de PHP qui donnera des indications trés précises sur le temps utilisé. Vous mettez cette fonction avant et après la requête et vous affichez le résultat !</p>
<p><code><br />
function utime_temps()<br />
{<br />
$t=microtime();<br />
$t=((double)strstr($t, ' ')+(double)substr($t,0,strpos($t,' ')));<br />
return $t;<br />
}<br />
</code></p>
<p>Pour ceux qui sont en dédiés ou qui ont accès au fichier my.cnf dans /etc/mysql, vous pouvez rajouter ces lignes</p>
<p><code>log-slow-queries = /var/log/mysql/mysql-slow.log<br />
long_query_time = 1<br />
</code></p>
<p>dans le fichier my.cnf (et faire un restart de Mysql par exemple avec /etc/init.d/mysql restart). Avec ces paramètres les requêtes Mysql trop longue d&#8217;une seconde (paramètre long_query_time) seront indiquées dans le fichier mysql-slow.log. Ainsi la consultation de ce fichier vous permet simplement de cibler précisément vos optimisations.</p>
<p>Une autre fonction Mysql est aussi pratique : la fonction EXPLAIN. Il suffit par exemple dans PhpMyAdmin de positionner EXPLAIN devant la requête SQL que vous voulez analyser. Celle-ci retourne un résultat expliquant exactement ce que fait Mysql concernant cette requête. Et notamment la colonne rows indique le nombre de ligne parcouru (celui-ci doit être le plus petit possible) et la colonne key indique les clefs utilisées (ci c&#8217;est NULL alors aucune clef est utilisée pour cette requête)</p>
<p><strong>Clef et index !</strong></p>
<p>Une erreur classique consiste à négliger les clefs et les index. Dans une requête Mysql, lorsque vous utilisez la condition WHERE, celle-ci pourra être extrêmement améliorée par l&#8217;utilisation d&#8217;un index dans la condition WHERE. Par exemple :<br />
<code>SELECT * FROM tutoriaux WHERE categorie=1</code></p>
<p>Dans cette requête ci-dessous, si la table tutoriaux contient 100 000 enregistrements, Mysql va passer les 100 000 enregistrements pour chercher les tutoriaux de catégorie 1 !! C&#8217;est du temps perdu. Il suffit de mettre catégorie en index pour que de 100 000 enregistrements examinés on passe à &#8230;1 !</p>
<p>Vous allez me dire, dans ce cas là, pourquoi ne pas mettre des index partout ? Il y a plusieurs raisons à cela : d&#8217;abord un index prend de la place mémoire dans la table Mysql et si vous avez trop d&#8217;index, cette place mémoire peut être plus importante que la place que prend les données. Ensuite lorsque vous faites une insertion dans la table, Mysql est obligé de mettre à jour tous les index, ce qui prend du temps aussi !</p>
<p>Vous devez donc calculer ce qui est le plus intéressant pour vous. Si la requête est exécutée très souvent, il sera intéressant de mettre des index sur les conditions WHERE MAIS si vous faites beaucoup d&#8217;insertions dans la table, il faudra limiter les index au strict necessaire et calculer au plus juste avec EXPLAIN le gain réalisé en mettant un index.</p>
<p><strong>Jointures et inclusions</strong></p>
<p>Il faut faire attention à ne pas utiliser des requêtes trop complexe. Et surtout faire attention aux jointures et aux inclusions. Voici un exemple de requête :</p>
<p><code>SELECT * FROM tutoriaux WHERE id_cat IN<br />
(SELECT id_cat FROM tutoriaux_categorie WHERE id_cat_mere=2)</code></p>
<p>Dans cette requête, nous recherchons des tutoriaux dont la catégorie appartient à la catégorie &#8220;mère&#8221; 2. Cette requête est très belle mais peut rapidement poser d&#8217;énormes problèmes de temps si elle n&#8217;est pas optimisée. Déjà, oublier un index sur id_cat par exemple ou encore oublier un index sur id_cat_mere surtout que cette dernière table sera plutôt fixe (nous ne rajoutons pas des catégories tous les jours) avec une table assez conséquente de plusieurs milliers d&#8217;enregistrements conduira à une requête s&#8217;exécutant très lentement&#8230;pouvant prendre plusieurs secondes !</p>
<p>Toutefois on peut faire une chose pour optimiser tout cela. Pourquoi ne pas mettre l&#8217;information id_cat_mere dans la table tutoriaux ? D&#8217;accord, c&#8217;est moins joli, c&#8217;est moins conceptuel et on devra faire plus de mise à jour si on change la table tutoriaux_categorie MAIS ALORS que de temps de gagner ! Puisqu&#8217;au final on arrive à ça</p>
<p><code>SELECT * FROM tutoriaux WHERE id_cat_mere=2</code></p>
<p>Avec un index sur id_cat_mere, la requête est exécutée immédiatement !</p>
<p>Concernant les jointures, c&#8217;est la même chose&#8230;Par exemple :</p>
<p><code>SELECT *,count(c.nb_com) as nb FROM tutoriaux t LEFT JOIN tutoriaux_commentaire c WHERE t.id=c.id_tutoriaux GROUP BY t.id</code></p>
<p>Ici cette requête recherche les tutoriaux avec une information supplémentaire : le nombre de commentaire sur chaque tutoriel. Comme les commentaires sont dans une autre table Mysql, une jointure est effectué permettant de récupérer le nombre d&#8217;enregistrements (donc de commentaires) concernant le tutorial. Si vous avez 10 000 tutoriaux et des centaines de milliers de commentaires, cette requête est totalement explosive (pour le serveur !)</p>
<p>Hors nous pouvons faire une chose très simple. Inclure dans la table tutoriaux un champ nb_commentaire. Alors bien sur chaque fois qu&#8217;un commentaire est ajouté, il faudra incrémenter le champ nb_commentaire mais au final que de temps gagné car la requête devient :</p>
<p><code>SELECT * FROM tutoriaux</code></p>
<p>Ce n&#8217;est pas plus simple ?</p>
<p><strong>C&#8217;est fini</strong></p>
<p>Voilà j&#8217;aurais encore beaucoup de choses à dire sur le sujet mais j&#8217;espère que pour mon premier tutorial sur le site j&#8217;aurais éveillé la curiosité de certains concernant l&#8217;organisation des données dans la base de données et l&#8217;optimisation des requêtes Mysql !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sos-dedie.com/2008/10/30/optimiser-mysql/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Postfix + courier avec Mysql</title>
		<link>http://www.sos-dedie.com/2008/10/30/postfix-courier-avec-mysql/</link>
		<comments>http://www.sos-dedie.com/2008/10/30/postfix-courier-avec-mysql/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 17:00:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[courier]]></category>
		<category><![CDATA[Mysql]]></category>
		<category><![CDATA[postfix]]></category>

		<guid isPermaLink="false">http://www.sos-dedie.com/wordpress/?p=50</guid>
		<description><![CDATA[Installer et configurer Postfix et courrier avec l&#8217;authentification Mysql Dans ce tutorial, nous allons procéder à l’installation de postfix et courier en utilisant des bases de données mysql pour les paramètres. Cette configuration n’est pas la meilleure pour la sécurité (au niveau mysql) mais elle est très souple pour l’ajout d’utilisateur ou d’adresse email. Postfix [...]]]></description>
			<content:encoded><![CDATA[<p>Installer et configurer Postfix et courrier avec l&#8217;authentification Mysql</p>
<p>Dans ce tutorial, nous allons procéder à l’installation de postfix et courier en utilisant des bases de données mysql pour les paramètres. Cette configuration n’est pas la meilleure pour la sécurité (au niveau mysql) mais elle est très souple pour l’ajout d’utilisateur ou d’adresse email.<span id="more-50"></span></p>
<p>Postfix est un MTA, il permet en autre de récupérer le courrier envoyé à votre serveur (par exemple contact@votredomaine.com). Nous allons donc procéder ici à la configuration de Postfix afin qu&#8217;il gère le courrier reçu par le serveur. Courier est un client POP. Nous allons installer ce logiciel afin de lire notre courrier présent sur le serveur par un logiciel de type Outlook express, Eudora, &#8230;Les deux logiciels utiliseront des tables Mysql pour leur paramétres.</p>
<p>Nous allons travailler sur une debian woody mais à part l’installation, le reste ne change pas sur les autres systèmes.</p>
<h3><strong>Postfix</strong></h3>
<p>Pour installer Postfix, avec une debian :</p>
<pre>apt-get install postfix postfix-mysql</pre>
<p>La version installé de postfix :</p>
<pre>postconf mail_version</pre>
<p>Quelques différences existent entre la version 1 et 2 de Postfix alors regardez quelle version vous avez ou installez une version spécifique avec apt-get.</p>
<p>Si Postfix vous demande pour quelle utilisation vous voulez vous en servir, choisissez Internet site. Faites Entrée pour tout le reste.</p>
<p>Nous allons créer des boites aux lettres virtuelles. Il faut savoir que par défaut, postfix envoi le courrier sur les comptes unix. Etant donné que nous comptons héberger plusieurs domaines sur un serveur, il devient fastidieux et dangereux de créer de nouveaux utilisateurs unix.</p>
<p>Nous allons donc utiliser la fonction boite virtuelle de Postfix qui va créé automatiquement des répertoires contenant le courrier et divers paramètres. Il suffit juste de lui indiquer ou placer le courrier et aussi quelle boite aux lettres il doit gérer.</p>
<p>Après avoir installer Postfix, créer un compte unix vmail qui servira de base pour la réception de tous les courriers.</p>
<pre>groupadd -g 5000 vmail 

useradd -g vmail -u 5000 vmail -d /home/vmail –m</pre>
<h4>Les tables Mysql</h4>
<p>Nous allons créer des tables Mysql qui contiendront tous les paramétrages de Postfix et Courier concernant les boites aux lettres virtuelles.</p>
<p>Tout d’abord, nous pouvons créer une base de donnée « courrier ».</p>
<p>Ensuite seulement trois tables.</p>
<pre>CREATE TABLE `domaines` (
 `domaine` varchar(100) NOT NULL default '',
 UNIQUE KEY `domaine` (`domaine`)
) TYPE=MyISAM;</pre>
<p>Dans la table domaines, entrez vos domaines qui recevront du courrier, par exemple sos-dedie.com (pas de sous domaine)</p>
<pre>CREATE TABLE `forward` (
 `source` varchar(255) NOT NULL default '',
 `destination` varchar(255) NOT NULL default '',
 PRIMARY KEY  (`source`)
) TYPE=MyISAM;</pre>
<p>Dans forward, entrez tout vos forwards, par ex contact@sos-dedie.com vers webmaster@sos-dedie.om</p>
<pre>CREATE TABLE `compte` (
 `login` varchar(255) NOT NULL default '',
 `motdepasse` varchar(255) NOT NULL default '',
 `emplacement` varchar(255) NOT NULL default '',
 PRIMARY KEY  (`login`)
) TYPE=MyISAM;</pre>
<p>Enfin cette dernière table définie vos comptes. Le login est de la forme d&#8217;un email (par ex contact@sos-dedie.com), ensuite emplacement contient un chemin relatif au répertoire de base (normalement /home/vmail/) de type contact/ pour un format de boite aux lettres maildir</p>
<h4>Initialisation de Postfix &amp; mysql</h4>
<p>Allez dans le répertoire /etc/postfix/ editer le fichier main.cf qui contient la configuration de postfix.</p>
<pre>cd /etc/postfix/
pico main.cf</pre>
<p>Voici un exemple de fichier main.cf épuré de tout commentaire (Postfix 2)</p>
<pre>myhostname = votreserveur.com

myorigin = votredomaine.com

mydestination = $myhostname, localhost.$mydomain, localhost

mynetworks = 127.0.0.0/8

best_mx_transport=virtual

virtual_mailbox_domains = mysql:/etc/postfix/virtual_domaine.cf

virtual_maps = mysql:/etc/postfix/virtual_adresse.cf mysql:/etc/postfix/virtual_forward.cf

virtual_mailbox_base = /home/vmail

virtual_mailbox_maps = mysql:/etc/postfix/virtual_emplacement.cf

virtual_uid_maps = static:5000

virtual_gid_maps = static:5000</pre>
<p>Nous allons étudier ce fichier. Toute modification de ce fichier doit être confirmé en relançant postfix par la commande</p>
<pre>/etc/init.d/postfix reload</pre>
<h4>Paramètres généraux de Postfix</h4>
<p>Nous allons d&#8217;abord configurer les paramètres généraux :</p>
<p><ins>myhostname</ins> : Contient le nom de votre machine ou à défaut votre nom de domaine, à l&#8217;installation postfix a normalement configuré ce champ</p>
<p><ins>myorigin</ins> : Ce paramètre contient le nom de domaine qui apparaîtra dans tout courrier sortant de votre serveur. Dans le fichier d&#8217;exemple, ce paramètre contient la valeur $myhostname ce qui signifie que myorigin contiendra la valeur défini dans myhostname.</p>
<p><ins>mydestination</ins> : Définit le domaine par défaut de destination (qui reçoit donc le courrier). Normalement ce paramètre est à localhost (le courrier est reçu à la machine elle-même)</p>
<p><ins>best_mx_transport</ins> : Indique à Postfix de s’occuper d’abord du transport virtuel (gestion des boites aux lettres virtuelles)</p>
<h4>Problème du Chroot de Postfix</h4>
<p>Postfix s’execute en Chroot et pose un problème d’accès à la socket Mysql (qu’il cherche dans /etc/postfix). Pour contourner ce problème, on doit d’abord dire à Postfix de se connecter via l’adresse IP de notre serveur et non pas en local. Mais pour cela, nous devons encore dire à Mysql qu’il accepte les requêtes venant de l’extérieur. Voici une faille de sécurité.</p>
<pre>pico /etc/mysql/my.cnf</pre>
<p>Commentez la ligne skip-networking ou cherchez la ligne Bind_adress et permettez l’accès à votre serveur.</p>
<p>Redémarrez mysql.</p>
<pre>/etc/init.d/mysql restart</pre>
<p>Pour palier au problème de sécurité et dans le cas où le fichier de configuration de Mysql (my.cnf) ne contiennent pas la ligne Bind_adress, on doit simplement limiter par un firewall l’accès à Mysql à notre seule adresse de serveur.</p>
<h4>Paramètre pour les boites aux lettres virtuelles</h4>
<p><ins>virtual_mailbox_base</ins> : Répertoire de base où sont stockés les boites aux lettres et leur courrier.</p>
<p><ins>virtual_maps</ins> : Ce paramètre permet de définir toutes les adresses emails acceptés. Par exemple si vous voulez une adresse du genre contact@votredomaine.com il faut l&#8217;indiquer dans virtual_maps sinon celle-ci sera éjectée. De plus, vous pouvez faire du forwarding avec ce paramètre. Par exemple : webmaster@votredomaine.com vers contact@votredomaine.com. Pour indiquer toutes les adresses, nous allons utiliser la table user et forward.</p>
<p>Tout d&#8217;abord, nous devons créer des fichiers de configuration virtual_adresse.cf et virtual_forward.cf contenant la configuration pour l’accès de Postfix à mysql.</p>
<p><strong>ATTENTION !</strong> <em>Pour la version 1 de Postfix, pas besoin de virtual_maps mais de transport_maps dans lequel vous indiquez un fichier contenant la liste des domaines virtuels suivi de virtual. De plus rajoutez le paramètre relay_domains = mysql:/etc/postfix/virtual_domaine.cf</em></p>
<pre>pico virtual_adresse.cf</pre>
<p>Entrez les champs suivant par ligne</p>
<pre>user = login mysql

password = mot de passe mysql

dbname = courrier

table = compte

select_field = ‘virtual’

where_field = login

hosts = adresse IP de votre serveur</pre>
<p>Ce fichier sert donc à établir une connexion à mysql à la base de donnée dbname et à la table table. Voici la requête mysql que Postfix crée :</p>
<pre>select ‘virtual’ from compte where login = '$lookup'</pre>
<p>La variable $lookup contient l’adresse de destination qu’a reçu Postfix ou dans le cas général la valeur que veut vérifier postfix (nom de domaine, forward, …) Ici le champ de selection est ‘virtual’ car il s’agit simplement de vérifier si l’adresse email existe. Pour le fichier de forwarding (redirection d’une adresse vers une autre) voici le contenu du fichier virtual_forward.cf</p>
<pre>pico virtual_forward.cf</pre>
<p>Entrez les champs suivant par ligne</p>
<pre>user = login mysql

password = mot de passe mysql

dbname = courrier

table = forward

select_field = destination

where_field = source

hosts = adresse IP de votre serveur</pre>
<p>Maintenant que l&#8217;on a définit les adresses hébergées sur ce site, il faut tout de même dire où Postfix va stocker le courrier de chaque adresse. C&#8217;est le rôle de virtual_mailbox_maps. Ce paramètre contient le chemin d&#8217;un fichier nommée virtual_emplacement.cf. Ce fichier contient une liste composée des adresses email suivi d&#8217;un chemin (relatif à virtual_mailbox_base).</p>
<pre>pico virtual_emplacement.cf</pre>
<pre>user = login mysql

password = mot de passe mysql

dbname = courrier

table = compte

select_field = emplacement

where_field = login

hosts = adresse IP de votre serveur</pre>
<p>Nous organisons nos boites de cette façon. Un dossier &#8220;nom de domaine&#8221; contenant des sous-dossiers &#8220;boite aux lettres&#8221;. Attention au / à la fin du chemin qui indique que le format de la boite au lettre sera Maildir au lieu de Mailbox.</p>
<p>Enfin les derniers paramétres</p>
<pre>virtual_uid_maps = static:5000

virtual_gid_maps = static:5000</pre>
<p>Ces dernières valeurs permettent de spécifier sous quel compte postfix va écrire les messages. Nous avons créé exprès un compte vmail (5000). Donc nous indiquons cette valeur qui est valable pour toutes les adresses (d’où le prefixe static <img class="smiley" src="../../themes/default/smilies/smile.png" alt=":)" /></p>
<h4>Vérification</h4>
<p>Sauvegardez votre main.cf et faite un</p>
<pre>/etc/init.d/postfix reload</pre>
<p>Si aucun message d’erreur n’apparaît, vous pouvez faire un petit contrôle avec un telnet.</p>
<p>Par exemple : telnet localhost 25 ou depuis l&#8217;extérieur telnet www.votredomaine.com 25</p>
<p>Si vous n&#8217;arrivez pas à vous connecter, regardez le fichier <code>tail /var/log/syslog</code></p>
<pre>telnet www.votredomaine.com 25</pre>
<p>220 myserver ESMTP Postfix (Debian/GNU)</p>
<pre>ehlo coucou.com</pre>
<p>250-mailtest 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250 XVERP 250 8BITMIME</p>
<pre>mail from:&lt;test@coucou.com&gt;</pre>
<p>250 Ok</p>
<pre>rcpt to:&lt;contact@votredomaine.com&gt;</pre>
<p>250 Ok</p>
<pre>data</pre>
<p>354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;&lt;/LF&gt;&lt;/CR&gt;&lt;/LF&gt;&lt;/CR&gt;</p>
<pre>blablabla...
.</pre>
<p>250 Ok: queued as ABC1D1C123</p>
<pre>quit</pre>
<p>221 BYE</p>
<h4>Les erreurs possibles</h4>
<p>Une erreur peut se produire après la commande rcpt to: Le problème peut être souvent du à plusieurs facteurs :</p>
<ol>
<li>l&#8217;adresse email du destinataire n&#8217;est pas reconnue, dans ce cas un problème peut se situer dans virtual_adresse</li>
<li>Postfix ne trouve pas le répertoire de destination, cette fois-ci c&#8217;est virtual_emplacement qui peut avoir un problème</li>
</ol>
<p>Pour en savoir plus, n&#8217;hésitez pas à consulter /etc/var/mail.log ou /etc/var/syslog</p>
<h3><strong>Courier</strong></h3>
<p>L&#8217;installation de courier est assez simple, la partie la plus difficile se situe dans la connexion et l&#8217;indentification de votre logiciel de messagerie (outlook par exemple) à votre serveur.</p>
<pre>apt-get install courier-pop courier-authdaemon  courier-authmysql courier-debug</pre>
<p>Nous allons faire l&#8217;identification des clients se connectant au serveur de courrier pour relever leur email. Nous avons déjà les tables Mysql, il reste à indiquer à Courier qu’il doit se servir de ces tables.</p>
<h4>Configuration de base</h4>
<pre>cd /etc/courier</pre>
<p>Editer le fichier pop3d, décommenter la ligne</p>
<pre>pico pop3d</pre>
<pre>POP3AUTH="LOGIN CRAM-MD5 CRAM-SHA1"</pre>
<p>Commentez la ligne</p>
<pre>#POP3AUTH=""</pre>
<p>Editer ensuite le fichier authdaemonrc</p>
<pre>pico authdaemonrc</pre>
<p>Mettez le paramètre</p>
<pre>authmodulelist="authmysql"</pre>
<p>Ce dernier permet de dire à Courier que l&#8217;authentification des utilisateurs se fait avec Mysql. Nous allons maintenant indiquer à Courier comment se connecter à Mysql et quelle base utiliser.</p>
<pre>pico authmysqlrc</pre>
<pre>MYSQL_SERVER            localhost
MYSQL_USERNAME          login mysql
MYSQL_PASSWORD          mot de passe mysql
MYSQL_DATABASE          courrier
MYSQL_USER_TABLE        compte</pre>
<p>Commentez la ligne</p>
<pre>MYSQL_CRYPT_PWFIELD    crypt</pre>
<p>Et décommentez</p>
<pre>MYSQL_CLEAR_PWFIELD     motdepasse</pre>
<p>Ensuite entrez les valeurs</p>
<pre>MYSQL_UID_FIELD         5000

MYSQL_GID_FIELD         5000

MYSQL_LOGIN_FIELD       login

MYSQL_HOME_FIELD        "/home/vmail/"</pre>
<p>Décommentez la ligne suivante (ou ajoutez là si elle est absente)</p>
<pre>MYSQL_MAILDIR_FIELD     emplacement</pre>
<p>Commentez la ligne</p>
<pre>MYSQL_NAME_FIELD		name</pre>
<p>Redémarrez les démons</p>
<pre>/etc/init.d/courier-pop restart
/etc/init.d/courier-authdaemon restart</pre>
<h4>Vérification</h4>
<p>Pour vérifier le fonctionnement de l&#8217;authentification, on utilise l&#8217;outil courierauthtest</p>
<pre>courierauthtest contact@votredomaine.com motdepasse</pre>
<p>Réponse du prompt</p>
<pre>Authenticated: module authdaemon

Home directory: /home/vmail

UID/GID: 5000/5000

Maildir: votredomaine.com/contact/

AUTHADDR=contact@votredomaine.com

AUTHFULLNAME=&lt;none&gt;</pre>
<p>Maintenant vérifions la connexion pop au serveur</p>
<pre>telnet www.votredomaine.com 110</pre>
<p>+OK Hello there.</p>
<pre>USER contact@votredomaine.com</pre>
<p>+OK Password required.</p>
<pre>PASS motdepasse</pre>
<p>+OK logged in.</p>
<pre>STAT</pre>
<p>+OK 4 14434</p>
<pre>TOP 1 5</pre>
<p>+OK headers follow.</p>
<pre>Return-Path: &lt;test@coucou.com&gt;

Delivered-To: contact@votredomaine.com

....

.

QUIT</pre>
<p>+OK Bye-bye.</p>
<h4>Les erreurs possibles</h4>
<p>Le plus souvent les erreurs se situe dans l&#8217;authentification (le paramétrage de courier est simple). Il faut donc faire marcher l&#8217;authentification mysql en testant avec courierauthtest. Les problèmes sont dû généralement à de mauvaise indication de champ dans le fichier de connection Mysql. Vérifiez bien que vous avez décommenté les lignes ou commentez celles indiquées.</p>
<p>Ensuite vérifier dans les logs ce qu&#8217;il se passe s&#8217;il y a des problèmes avec le telnet. Une erreur de type</p>
<pre>-ERR Maildir: No such file or directory</pre>
<p>est classique d&#8217;une mauvaise authentification ou d&#8217;un mauvais paramétrage dans l&#8217;authentification (mauvais chemin ,etc&#8230;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sos-dedie.com/2008/10/30/postfix-courier-avec-mysql/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Serveur de courrier Postfix + Courier Authentification userdb</title>
		<link>http://www.sos-dedie.com/2008/10/30/serveur-de-courrier-postfix-courier-authentification-userdb/</link>
		<comments>http://www.sos-dedie.com/2008/10/30/serveur-de-courrier-postfix-courier-authentification-userdb/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 16:57:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[courier]]></category>
		<category><![CDATA[postfix]]></category>

		<guid isPermaLink="false">http://www.sos-dedie.com/wordpress/?p=48</guid>
		<description><![CDATA[Installer et configurer Postifx et Courier (pop) pour son serveur avec authentification simple Postfix est un MTA, il permet en autre de récupérer le courrier envoyé à votre serveur (par exemple contact@votredomaine.com). Nous allons donc procéder ici à la configuration de Postfix afin qu&#8217;il gère le courrier reçu par le serveur. Courier est un client [...]]]></description>
			<content:encoded><![CDATA[<p>Installer et configurer Postifx et Courier (pop) pour son serveur avec authentification simple</p>
<p>Postfix est un MTA, il permet en autre de récupérer le courrier envoyé à votre serveur (par exemple contact@votredomaine.com). Nous allons donc procéder ici à la configuration de Postfix afin qu&#8217;il gère le courrier reçu par le serveur. Courier est un client POP. Nous allons installer ce logiciel afin de lire notre courrier présent sur le serveur par un logiciel de type Outlook express, Eudora, &#8230;<span id="more-48"></span></p>
<p>Ce tutorial a pour but de faire les choses simplement ! Nous allons travailler sur une debian woody. Nous nous passerons donc de toute complication parceque c&#8217;est déjà assez complexe&#8230;</p>
<h3><strong>Postfix</strong></h3>
<p>Pour installer Postfix, avec une debian :</p>
<pre>apt-get install postfix</pre>
<p>La version installé de postfix :</p>
<pre>postconf mail_version</pre>
<p>Quelques différences existent entre la version 1 et 2 de Postfix alors regardez quelle version vous avez ou installez une version spécifique avec apt-get.</p>
<p>Si Postfix vous demande pour quelle utilisation vous voulez vous en servir, choisissez Internet site. Faites Entrée pour tout le reste.</p>
<p>Nous allons créer des boites aux lettres virtuelles. Il faut savoir que par défaut, postfix envoi le courrier sur les comptes unix. Etant donné que nous comptons héberger plusieurs domaines sur un serveur, il devient fastidieux et dangereux de créer de nouveaux utilisateurs unix.</p>
<p>Nous allons donc utiliser la fonction boite virtuelle de Postfix qui va créé automatiquement des répertoires contenant le courrier et divers paramètres. Il suffit juste de lui indiquer ou placer le courrier et aussi quelle boite aux lettres il doit gérer.</p>
<p>Après avoir installer Postfix, créer un compte unix vmail qui servira de base pour la réception de tous les courriers.</p>
<pre>groupadd -g 5000 vmail 

useradd -g vmail -u 5000 vmail -d /home/vmail -m</pre>
<p>Allez dans le répertoire /etc/postfix/ editer le fichier main.cf qui contient la configuration de postfix.</p>
<pre>cd /etc/postfix/

pico main.cf</pre>
<p>Voici un exemple de fichier main.cf épuré de tout commentaire (Postfix 2)</p>
<pre>myhostname = votreserveur.com

myorigin = votredomaine.com

mydestination = $myhostname, localhost.$mydomain, localhost

mynetworks = 127.0.0.0/8

virtual_mailbox_domains = votredomaine1.com votredomaine2.com

virtual_maps = hash:/etc/postfix/virtual_adresse

virtual_mailbox_base = /home/vmail

virtual_mailbox_maps = hash:/etc/postfix/virtual_emplacement

virtual_uid_maps = static:5000

virtual_gid_maps = static:5000</pre>
<p>Nous allons étudier ce fichier. Toute modification de ce fichier doit être confirmé en relançant postfix par la commande</p>
<pre>/etc/init.d/postfix reload</pre>
<h4>Paramétre généraux</h4>
<p>Nous allons d&#8217;abord configurer les paramètres généraux :</p>
<p><ins>myhostname</ins> : Contient le nom de votre machine ou à défaut votre nom de domaine, à l&#8217;installation postfix a normalement configuré ce champ</p>
<p><ins>myorigin</ins> : Ce paramètre contient le nom de domaine qui apparaîtra dans tout courrier sortant de votre serveur. Dans le fichier d&#8217;exemple, ce paramètre contient la valeur $myhostname ce qui signifie que myorigin contiendra la valeur défini dans myhostname.</p>
<p><ins>mydestination</ins> : Définit le domaine par défaut de destination (qui reçoit donc le courrier). Normalement ce paramètre est à localhost (le courrier est reçu à la machine elle-même)</p>
<h4>Paramètre pour les boites aux lettres virtuelles</h4>
<p><ins>virtual_mailbox_base</ins> : Répertoire de base où sont stockés les boites aux lettres et leur courrier.</p>
<p><ins>virtual_maps</ins> : Ce paramètre permet de définir toutes les adresses emails acceptés. Par exemple si vous voulez une adresse du genre contact@votredomaine.com il faut l&#8217;indiquer dans virtual_maps sinon celle-ci sera éjecté. De plus, vous pouvez faire du forwarding avec ce paramètre. Par exemple : webmaster@votredomaine.com vers contact@votredomaine.com. Comme la liste peut être grande, postfix utilise un fichier sous forme de base de donnée. Tout d&#8217;abord, vous devez ecrire un fichier texte nommée virtual_adresse</p>
<p><strong>ATTENTION !</strong> <em>Pour la version 1 de Postfix, pas besoin de virtual_maps mais de transport_maps dans lequel vous indiquez un fichier contenant la liste des domaines virtuels suivi de virtual. De plus rajoutez le paramétres relay_domains = votredomaine.com votredomaine2.com</em></p>
<pre>pico virtual_adresse</pre>
<p>Entrez vos adresses de boites virtuelles et/ou forwarding</p>
<pre>contact@votredomaine.com contact@votredomaine.com

contact@votredomaine2.com contact@votredomaine2.com

webmaster@votredomaine.com contact@votredomaine.com</pre>
<p>Une fois enregistré, vous devez transformer ce fichier en base de donnée en faisant</p>
<pre>postmap virtual_adresse</pre>
<p>Cela vous créé un nouveau fichier qui sera utilisé par Postfix. La commande hash: indique à Postfix le format du fichier à lire.</p>
<p>Maintenant que l&#8217;on a définit les adresses hébergées sur ce site, il faut tout de même dire où Postfix va stocker le courrier de chaque adresse. C&#8217;est le rôle de virtual_mailbox_maps. Ce paramètre contient le chemin d&#8217;un fichier nommée virtual_emplacement. Ce fichier contient une liste composée des adresses email suivi d&#8217;un chemin (relatif à virtual_mailbox_base).</p>
<pre>pico virtual_emplacement</pre>
<pre>contact@votredomaine.com votredomaine.com/contact/

contact@votredomaine2.com votredomaine2.com/contact/</pre>
<pre>postmap virtual_emplacement</pre>
<p>Nous organisons nos boites de cette façon. Un dossier &#8220;nom de domaine&#8221; contenant des sous-dossiers &#8220;boite aux lettres&#8221;. Attention au / à la fin du chemin qui indique que le format de la boite au lettre sera Maildir au lieu de Mailbox.</p>
<p>N&#8217;oubliez pas de faire postmap virtual_emplacement</p>
<p>Enfin les derniers paramétres</p>
<pre>virtual_uid_maps = static:5000

virtual_gid_maps = static:5000</pre>
<p>Ces dernières valeurs permettent de spécifier sous quel compte postfix va écrire les messages. Nous avons créé exprès un compte vmail (5000). Donc nous indiquons cette valeur qui est valable pour toute les adresses (d&#8217;où le prefixe static:)</p>
<h4>Vérification</h4>
<p>Sauvegardez votre main.cf et faite un</p>
<pre>/etc/init.d/postfix reload</pre>
<p>Si aucun message d&#8217;erreur apparaît, vous pouvez faire un petit contrôle avec un telnet.</p>
<p>Par exemple : telnet localhost 25 ou depuis l&#8217;extérieur telnet www.votredomaine.com 25</p>
<p>Si vous n&#8217;arrivez pas à vous connecter, regardez le fichier <code>tail /var/log/syslog</code></p>
<pre>telnet www.votredomaine.com 25</pre>
<p>220 myserver ESMTP Postfix (Debian/GNU)</p>
<pre>ehlo coucou.com</pre>
<p>250-mailtest 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250 XVERP 250 8BITMIME</p>
<pre>mail from:&lt;test@coucou.com&gt;</pre>
<p>250 Ok</p>
<pre>rcpt to:&lt;contact@votredomaine.com&gt;</pre>
<p>250 Ok</p>
<pre>data</pre>
<p>354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;&lt;/LF&gt;&lt;/CR&gt;&lt;/LF&gt;&lt;/CR&gt;</p>
<pre>blablabla...
.</pre>
<p>250 Ok: queued as ABC1D1C123</p>
<pre>quit</pre>
<p>221 BYE</p>
<h4>Les erreurs possibles</h4>
<p>Une erreur peut se produire après la commande rcpt to: Le problème peut être souvent du à plusieurs facteurs :</p>
<ol>
<li>l&#8217;adresse email du destinataire n&#8217;est pas reconnue, dans ce cas un problème peut se situer dans virtual_adresse</li>
<li>Postfix ne trouve pas le répertoire de destination, cette fois-ci c&#8217;est virtual_emplacement qui peut avoir un problème</li>
</ol>
<p>Pour en savoir plus, n&#8217;hésitez pas à consulter /etc/var/mail.log ou /etc/var/syslog</p>
<h3><strong>Courier</strong></h3>
<p>L&#8217;installation de courier est assez simple, la partie la plus difficile se situe dans la connexion et l&#8217;indentification de votre logiciel de messagerie (outlook par exemple) à votre serveur.</p>
<pre>apt-get install courier-pop courier-authdaemon courier-debug</pre>
<p>Nous allons faire l&#8217;identification des clients se connectant au serveur de courrier pour relever leur email par l&#8217;authentification userdb mais d&#8217;abord configurons un peu courier</p>
<h4>Configuration de base</h4>
<pre>cd /etc/courier</pre>
<p>Editer le fichier pop3d, décommenter la ligne</p>
<pre>vi pop3d</pre>
<pre>POP3AUTH="LOGIN CRAM-MD5 CRAM-SHA1"</pre>
<p>Commentez la ligne</p>
<pre>#POP3AUTH=""</pre>
<p>Editer ensuite le fichier authdaemonrc</p>
<pre>vi authdaemonrc</pre>
<p>Mettez le paramètre</p>
<pre>authmodulelist="authuserdb"</pre>
<p>Ce dernier permet de dire à Courier que l&#8217;authentification des utilisateurs se fait avec userdb. Normalement il n&#8217;y a rien d&#8217;autre à faire.</p>
<p>Redémarrez les démons</p>
<pre>/etc/init.d/courier-pop restart

/etc/init.d/courier-authdaemon restart</pre>
<h4>Créez une liste d&#8217;utilisateur</h4>
<p>Vous n&#8217;allez pas autoriser tout le monde à relever le courrier sur votre serveur. Pour cela vous devez indiquer une liste d&#8217;utilisateur avec leur mot de passe. Nous allons utiliser userdb qui est livré en standard et laisse moins de faille de sécurité que mysql par exemple.</p>
<p>Allez dans /etc/courier</p>
<pre>cd /etc/courier</pre>
<p>Créez le répertoire userdb, pour une raison de sécurité faite un chmod 0 userdb (empeche quelqu&#8217;un de lire le contenu)</p>
<pre>mkdir userdb

chmod 0 userdb</pre>
<p>Nous allons construire maintenant notre liste d&#8217;utilisateur. Nous allons créer dans le répertoire userdb autant de fichier que de domaine hébergé sur le serveur. Ces fichiers vont contenir les informations nécessaires.</p>
<p>La commande userdb permet la création de ces fichiers facilement. Disons que vous voulez créer l&#8217;utilisateur contact@votredomaine.com, voici la commande à entrer</p>
<pre>userdb votredomaine.com/contact@votredomaine.com
set mail=/home/vmail/votredomaine.com/contact
home=/home/vmail/votredomaine.com/contact
uid=5000 gid=5000</pre>
<p>Explication de la commande, on créer l&#8217;entrée contact@votredomaine.com dans le fichier votredomaine.com avec les paramètres mail et home qui contiennent l&#8217;adresse du courrier de cet utilisateur (voir postfix) et le repertoire de base de cet utilisateur. Ensuite pour cette entrée nous créons un mot de passe cryptée en md5. (le mot de passe est cryptée car nous avons défini dans pop3d d&#8217;authentifier une connexion avec un mot de passe cryptée)</p>
<pre>userdbpw -md5 | userdb votredomaine.com/contact@votredomaine.com set systempw</pre>
<p>Le prompt vous demande un mot de passe et une confirmation</p>
<p>Si tout c&#8217;est bien passé, un fichier votredomaine.com a été créé dans userdb contenant toute les informations nécessaires.</p>
<p>Si vous avez fini, transformez les fichiers textes en base de donnée par</p>
<pre>makeuserdb</pre>
<p>Maintenant nous allons tester le fonctionnement du pop</p>
<h4>Vérification</h4>
<p>Pour vérifier le fonctionnement de l&#8217;authentification, on utilise l&#8217;outil courierauthtest</p>
<pre>courierauthtest contact@votredomaine.com motdepasse</pre>
<p>Réponse du prompt</p>
<pre>Authenticated: module authdaemon

Home directory: /home/vmail/votredomaine.com/contact

UID/GID: 5000/5000

Maildir: /home/vmail/votredomaine.com/contact

AUTHADDR=contact@votredomaine.com

AUTHFULLNAME=&lt;none&gt;</pre>
<p>Maintenant vérifions la connexion pop au serveur</p>
<pre>telnet www.votredomaine.com 110</pre>
<p>+OK Hello there.</p>
<pre>USER contact@votredomaine.com</pre>
<p>+OK Password required.</p>
<pre>PASS motdepasse</pre>
<p>+OK logged in.</p>
<pre>STAT</pre>
<p>+OK 4 14434</p>
<pre>TOP 1 5</pre>
<p>+OK headers follow.</p>
<pre>Return-Path: &lt;test@coucou.com&gt;
Delivered-To: contact@votredomaine.com
....
QUIT</pre>
<p>+OK Bye-bye.</p>
<h4>Les erreurs possibles</h4>
<p>Le plus souvent les erreurs se situe dans l&#8217;authentification (le paramétrage de courier est simple). Il faut donc faire marcher l&#8217;authentification userdb en testant avec courierauthtest. Ensuite vérifier dans les logs ce qu&#8217;il se passe s&#8217;il y a des problèmes avec le telnet. Une erreur de type</p>
<pre>-ERR Maildir: No such file or directory</pre>
<p>est classique d&#8217;une mauvaise authentification ou d&#8217;un mauvais paramétrage dans l&#8217;authentification (mauvais chemin ,etc&#8230;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sos-dedie.com/2008/10/30/serveur-de-courrier-postfix-courier-authentification-userdb/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Sécuriser une connection SSH</title>
		<link>http://www.sos-dedie.com/2008/10/30/securiser-une-connection-ssh/</link>
		<comments>http://www.sos-dedie.com/2008/10/30/securiser-une-connection-ssh/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 16:52:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Gestion]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://www.sos-dedie.com/wordpress/?p=44</guid>
		<description><![CDATA[Apprendre à sécuriser un peu plus son système. Notre but ici est de sécuriser un peu plus la connexion SSH. Par défaut, généralement l&#8217;authentification avec une connexion SSH est la méthode simple d’identification unix avec un simple mot de passe (authentification PAM), ce qui fait qu’une attaque massive par mot de passe nous laisse sans [...]]]></description>
			<content:encoded><![CDATA[<p>Apprendre à sécuriser un peu plus son système.</p>
<p>Notre but ici est de sécuriser un peu plus la connexion SSH. Par défaut, généralement l&#8217;authentification avec une connexion SSH est la méthode simple d’identification unix avec un simple mot de passe (authentification PAM), ce qui fait qu’une attaque massive par mot de passe nous laisse sans défense. Nous allons accentuer la sécurité pour que nous seul puissions accéder à notre serveur par SSH.<span id="more-44"></span></p>
<h3>Configuration</h3>
<p>Allez sur la page WEB de putty pour y télécharger puttygen</p>
<pre>http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html</pre>
<p>Nous allons créer des clefs cryptées, une de ces clefs va se trouver sur votre ordinateur local et l’autre sur le serveur. Les clefs fonctionnent toujours par paire (donc une seule est inutile)</p>
<p>Lancez Puttygen et sélectionnez en bas SSH 2 RSA, cliquez sur le bouton GENERATE et bougez la souris pour générer la clef (cela permet un plus grand hasard), une fois la clef générée, entrez un mot de passe pour Key passphrase et confirmé ce mot de passe. Vous pouvez même entrer une phrase entière qui vous servira de mot de passe.</p>
<p>Pour finir cliquez sur Save private key pour sauvegarder votre clef sur votre ordinateur local.</p>
<p>On va positionner la clef publique sur le serveur</p>
<p>Connectez-vous avec SSH sur votre serveur. Normalement vous êtes logué sous votre compte (généralement root). Créez un répertoire .ssh</p>
<pre>mkdir .ssh
cd .ssh</pre>
<p>Ensuite copier la clef publique depuis puttygen et retournez sur votre connections ssh et entrez la commande suivi de la clef publique</p>
<pre>echo &gt;&gt;authorized_keys ici collez votre clef publique</pre>
<p>Appuyez ensuite sur Entrée ou Control + D</p>
<p>Voilà, le fichier que nous avons créé est lu par défaut par le démon SSH. Celui-ci regarde dans le répertoire de l’utilisateur (ici root) s’il existe un dossier .ssh et ensuite un fichier authorized_keys.</p>
<p><img style="margin: 0pt auto; display: block;" longdesc="Puttygen permet de générer des clefs privés et publiques" src="http://www.sos-dedie.com/im/puttygen.png" alt="Puttygen" /></p>
<h3>Connexion avec Putty</h3>
<p>Maintenant il faut dire à Putty que nous allons utiliser un protocole d’identification par clef. Pour cela rien de plus simple, Il suffit de changer dans l’onglet Connection, SSH et Auth le champ private key file for Authentication. Là on indique le fichier que nous avons sauvegardé par avance.</p>
<p>Maintenant si vous ouvrez la connexion, Putty s’identifie avec la clef, étant donné que vous avez la clef privée qui correspond à la clef publique sur le serveur, le serveur va alors vous demander la Passphrase (montrant que personne n’a volé votre clef privée). Une fois la passphrase saisie vous êtes connecté.</p>
<h3>Restreindre les accès</h3>
<p>Nous avons bien configuré un accès par clef mais pour autant, nous n’avons pas encore interdit l’accès par l’authentification classique. Pour cela, nous devons éditer le fichier de configuration de ssh</p>
<pre>cd /etc/ssh

vi sshd_config</pre>
<p>Dans ce fichier se trouvent plusieurs paramètres qui nous intéressent.</p>
<pre>RSAAuthentication yes</pre>
<p>Cette ligne indique que nous pouvons faire une authentification par la méthode RSA.</p>
<pre>PubkeyAuthentication yes</pre>
<p>Celui-ci est le protocole qui nous intéresse, il doit donc être à yes pour que l’authentification par clef fonctionne.</p>
<pre>PasswordAuthentication no</pre>
<p>Indique si on utilise l’authentification par mot de passe pour l’utilisateur qui se connecte (mot de passe unix), pour nous cela sera non.</p>
<pre>UsePAM no</pre>
<p>Ici on indique si l’on doit utiliser le module PAM unix pour se connecter. Nous allons le désactiver car ils nous intéressent plus</p>
<p>On redemarre le tout par une commande</p>
<pre>/etc/init.d/ssh start</pre>
<p>Ou</p>
<pre>sshd</pre>
<p>Voilà j’espère que ce tutorial vous aura aidé un peu. N’oubliez pas pendant ces manœuvres de garder une connexion ouverte sinon vous ne pourriez plus accéder à votre serveur si c’est votre seul moyen !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sos-dedie.com/2008/10/30/securiser-une-connection-ssh/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Serveur dédié, le deuxième pas.</title>
		<link>http://www.sos-dedie.com/2008/10/30/serveur-dedie-le-deuxieme-pas/</link>
		<comments>http://www.sos-dedie.com/2008/10/30/serveur-dedie-le-deuxieme-pas/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 16:45:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Gestion]]></category>
		<category><![CDATA[Système]]></category>

		<guid isPermaLink="false">http://www.sos-dedie.com/wordpress/?p=40</guid>
		<description><![CDATA[Apprendre la base pour utiliser son serveur dédié sur Linux Ce tutorial vient compléter son confrère « Serveur dédié les premiers pas « . Il reste en effet encore quelques commandes essentielles à découvrir sur votre système Linux. Ces commandes sont identiques quelque soit les versions que vous avez installer (Fedora, debian, mandrake,…) Linux et les tâches. [...]]]></description>
			<content:encoded><![CDATA[<p>Apprendre la base pour utiliser son serveur dédié sur Linux</p>
<p>Ce tutorial vient compléter son confrère « Serveur dédié les premiers pas « . Il reste en effet encore quelques commandes essentielles à découvrir sur votre système Linux. Ces commandes sont identiques quelque soit les versions que vous avez installer (Fedora, debian, mandrake,…)<span id="more-40"></span></p>
<h3>Linux et les tâches.</h3>
<p>Linux est multi tâches et doit sa réputation à cette fonctionnalité. En effet, le vrai multi tâche sur son concurrent Windows est arrivé bien tard. Même si cette fonctionnalité n’est pas nécessaire pour lancer des daemons sur Linux (Service sur Windows), il s’avère que la base de Linux, soit Unix est conçu de telle manière que le multi processus coule de source sur ce système.</p>
<p>Lorsque vous accédez à votre serveur dédié, une multitude de tâches fonctionnent en arrière plan. Pour savoir exactement ce qu’il se passe sur votre serveur vous pouvez utiliser la commande suivante</p>
<pre>top</pre>
<p>A ce moment là, une liste de processus s’affiche sur votre écran. Cette liste est mise à jour régulièrement (toutes les 10 secondes normalement). Chaque processus est identifié par un numéro (PID) qui est le premier champ de la liste ainsi que la commande qui l’a lancée (le dernier champ de la liste).</p>
<p>En haut de la liste s’affiche aussi des informations importantes, comme le temps depuis lequel l’ordinateur fonctionne (après la mention up), le nombre d’utilisateur,…Mais surtout des informations essentielles comme la mémoire physique totale (mention Mem) suivi du montant utilisé et du montant libre. Ne vous inquiétez pas si le montant libre est très petit, le système se sert d’un cache qui occupe de la place en mémoire physique. Le cache est indiqué avant la mention cached.</p>
<p>Vous devez regarder plutôt le Swap qui indique la taille totale du fichier Swap (une partition normalement sur linux), la partie used et free indique respectivement la taille utilisé et libre. Le Swap est un bon indicateur de grandeur de la mémoire demandé par le système.</p>
<p>La commande top vous indique aussi le pourcentage du CPU utilisé, toutes ces informations regroupées vous donne une bonne idée de la charge de votre serveur dédié.</p>
<p>Vous pouvez tuer un processus avec la commande</p>
<pre>kill pid</pre>
<p>Où pid est le numéro de processus. Si ce processus est parent d’autres processus, ses fils seront tués. Par exemple, Apache lance plusieurs processus fils pour répondre à la demande des visiteurs. Pour tuer Apache, vous devez éliminer le processus père. Une commande permet de connaître tous les processus fils et père</p>
<pre>pstree –p</pre>
<h3>Editeur de texte Vi</h3>
<p><span style="color: #993300;">On préferera en 2008 utiliser l&#8217;éditeur de texte PICO</span></p>
<p>L’éditeur de texte vi est présent sur tous les systèmes linux et unix. C’est un éditeur de base qui vous conviendra pour des petites modifications sur les fichiers textes. Toutefois cet éditeur plutôt barbare ne conviendra pas pour éditer des textes long et fastidieux.</p>
<p>On ouvre ou on créé un fichier dans le répertoire local avec la commande</p>
<pre>vi nomdefichier</pre>
<p>Une fois entré dans l’éditeur vous êtes dans le mode de commande. Vous avez deux modes principaux, le mode insertion et le mode de commande. En mode de commande, le clavier est utilisé pour entrer des commandes. En mode insertion, le clavier est utilisé pour insérer du texte.</p>
<p>Tapez i pour entrer en mode insertion et ESC pour sortir du mode insertion et revenir en mode de commande.</p>
<p>Utilisez la touche DEL pour effacer des caractères.</p>
<p>Voici quelques commandes utiles avec vi.</p>
<pre>:wq</pre>
<p>Sauve le fichier courant et sort de vi</p>
<pre>:q!</pre>
<p>Sort de vi sans sauvegarder le fichier courant.</p>
<pre>dd</pre>
<p>Efface une ligne.</p>
<pre>ny</pre>
<p>Où n est un nombre, copie n lignes dans le buffer</p>
<pre>pp</pre>
<p>Colle le buffer à partir de la position actuelle</p>
<h3>Quelques mots sur Apache</h3>
<p>Enfin vous serez amené à relancer Apache parfois. Pour relancer Apache de manière plus transparente pour vos visiteurs, vous pouvez utiliser la commande suivante :</p>
<pre>apachectl graceful</pre>
<p>Cette commande a l’avantage de relancer Apache sans tuer tous les processus ce qui provoquerait une jolie erreur pour vos visiteurs. Au contraire elle attend que les processus soient finis pour les relancer avec les nouveaux paramètres (fichier httpd.conf)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sos-dedie.com/2008/10/30/serveur-dedie-le-deuxieme-pas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Serveur dédié, les premiers pas.</title>
		<link>http://www.sos-dedie.com/2008/10/30/serveur-dedie-les-premiers-pas/</link>
		<comments>http://www.sos-dedie.com/2008/10/30/serveur-dedie-les-premiers-pas/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 16:41:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Gestion]]></category>
		<category><![CDATA[Système]]></category>

		<guid isPermaLink="false">http://www.sos-dedie.com/wordpress/?p=37</guid>
		<description><![CDATA[Apprendre la base pour utiliser son serveur dédié sur Linux Vous avez acheté un serveur dédié et vous êtes un peu déboussolé. D’abord le système ne vous est pas familier (il s’agit de linux le plus souvent) mais de plus vous n’avez plus l’âge (ou l’avez jamais eu) de jouer avec des lignes de commandes ! [...]]]></description>
			<content:encoded><![CDATA[<p>Apprendre la base pour utiliser son serveur dédié sur Linux</p>
<p>Vous avez acheté un serveur dédié et vous êtes un peu déboussolé. D’abord le système ne vous est pas familier (il s’agit de linux le plus souvent) mais de plus vous n’avez plus l’âge (ou l’avez jamais eu) de jouer avec des lignes de commandes ! Et bien pourtant…Si vous voulez vous passer de Webmin ou autre logiciel de gestion en ligne, il faudra passer par ce bon vieux clavier, exit la souris.<span id="more-37"></span></p>
<h3>Configurer votre accès SSH</h3>
<p>Pour accéder à votre serveur, on vous a fourni généralement des identifiants SSH. Sur Windows on pourra utiliser PUTTY qui est extrêmement simple. En effet, il suffit de lancer ce petit logiciel. D’y rentrer son IP dans le champ Host Name, de choisir le protocole SSH et de cliquer sur Open. Là s’ouvre une fenêtre de connexion vous demandant votre login et votre mot de passe.</p>
<p>Généralement et à partir de là vous êtes connecté à votre serveur dans le répertoire root.</p>
<h3>Le système Linux.</h3>
<p>Linux est un système multitâche ayant acquis sa popularité auprès des entreprises et des étudiants mais aussi en tant que serveur à cause de sa légendaire stabilité. Comme tout système, Linux a ses nombreuses failles mais issu d’un environnement Unix, il s’agit du plus simple et robuste système que l’on peut avoir pour un serveur hormis quelques autres systèmes particuliers mais peu répandu.</p>
<p>Il existe plusieurs distributions de Linux, Personnellement j’ai choisi la Debian Woody. Le système Débian est parfait pour le débutant car l’installation des logiciels par paquet est moins déroutante que le fameux makefile (compilation) des autres distributions (même s’il existe des paquetages, celui de Débian est le plus abouti).</p>
<h3>Quelques notions sur le système</h3>
<p>Il y a quelques fondamentaux à savoir sur Linux. Tout d’abord comme tout système Unix, celui-ci comporte un utilisateur « maître » et plusieurs autres utilisateurs. Chaque utilisateur a son répertoire personnel et des droits quant à l’utilisation des fichiers présents sur le système. Les droits existent sur tout fichier du système (et dans ce système tout est fichier). Un utilisateur peut par exemple ne pas avoir le droit de voir tout le système, il peut voir par exemple que son répertoire. Toutefois il peut avoir accès à l’utilisation à d’autres fichiers.</p>
<p>Les droits sont divisés à trois catégories, les droits pour l’utilisateur, pour le groupe et pour les autres. A chaque fichier est associé un utilisateur (généralement le créateur du fichier) et un groupe qu’on peut indiquer avec la commande chown</p>
<pre>chown utilisateur.groupe fichier</pre>
<p>Permet de spécifier que fichier est à utilisateur et au groupe groupe. Si le groupe n’est pas indiqué (paramètre sans .) alors on ne change que l’utilisateur.</p>
<p>Pour chaque catégorie, on peut spécifier un droit de lecture, d’écriture et d’utilisation (execution). Ceci se fait avec la commande chmod</p>
<pre>chmod o+rx fichier</pre>
<p>Permet par exemple d’ajouter les droits de lecture (read), execution (x) à la catégorie other sur fichier.</p>
<pre>chmod g–w fichier</pre>
<p>Permet d’enlever les droits d’écriture du groupe sur le fichier. On peut utiliser la mention « a » pour indiquer à la fois le groupe, l’utilisateur et other.</p>
<p>Nous allons voir maintenant quelques commandes de bases sur les fichiers</p>
<h3>Commande sur les fichiers.</h3>
<p>Tout d’abord la première commande à voir est help</p>
<pre>help</pre>
<p>Permet de lister les commandes du shell.</p>
<p>Ensuite les commandes de répertoire. Par exemple, une des plus utiles :</p>
<pre>ls –l</pre>
<p>Permet de lister le répertoire courant avec les droits sur les fichiers et le nom des utilisateurs et groupe.</p>
<pre>cd dossier</pre>
<p>Permet de faire que le répertoire courant soit dossier. Pour indiquer un chemin de puis la racine il suffit d’indiquer « / » au début du chemin indiqué à cd.</p>
<pre>cd ..</pre>
<p>Revient en arrière, les deux points qui se suivent sont du à l’architecture même des fichiers sur le disque dur, c’est vieux système d’organisation.</p>
<p>Pour savoir où vous êtes</p>
<pre>pwd</pre>
<p>Indique le chemin complet du répertoire courant depuis la racine.</p>
<pre>rm fichier</pre>
<p>Permet d’effacer le fichier. On peut composer avec * et ?. * remplace tout un ensemble de caractère et ? un seul caractère. Par exemple, pour effacer les fichiers commençant par image</p>
<pre>rm image*</pre>
<p>On peut utiliser le paramètre –r pour indiquer de descendre dans les sous répertoires. Attention à cette commande elle est très dangereuse.</p>
<pre>cp source destination</pre>
<p>Cette commande copie le fichier ou répertoire source vers destination.</p>
<p>Attention pour renommer un fichier, il suffit d’utiliser la commande mv (move) qui fonctionne comme cp excepté la possibilité de renommer un fichier et la suppression du fichier source.</p>
<h3>Installation de logiciel</h3>
<p>Sur Debian pour installer vos logiciels, vous pouvez utiliser les paquets et en plus les mettre à jour très facilement. Tout cela se fait avec la commande</p>
<pre>apt-get</pre>
<p>Cette commande en ligne prend plusieurs paramètres. Le premier paramètre est une commande (install, remove, updrage, update) et le deuxième une liste de logiciel.</p>
<p>Par exemple, pour installer apache</p>
<pre>apt-get install apache</pre>
<p>Cette commande installera apache en positionnant une configuration par défaut. Mais on peut aussi installer tout un ensemble de logiciels en une seule ligne !</p>
<pre>apt-get install apache php4 mysql php4-mysql</pre>
<p>Installera Apache, mysql et php4</p>
<p>Une chose bien pratique est la mise à jour des logiciels par la commande upgrade et update. En effet, le logiciel apt-get peut être connecté à une source de paquets et aller chercher par lui-même les bons paquets à changer, voir les nouveaux, les nouvelles versions etc…Attention la commande update n’installe rien, elle met juste à jour la liste des logiciels et leur version. Tandis que la commande upgrade elle met à jour tous les logiciels.</p>
<p>Pour désinstaller des logiciels :</p>
<pre>apt-get remove listedelogiciel</pre>
<p>Attention à cette manœuvre, regardez bien ce que cette commande vous désinstalle. En effet à cause des liaisons entre bibliothèques, apt-get peut estimer nécessaire de désinstaller d’autres logiciels. Regardez donc la liste des paquets qui seront effacé et choisissez de confirmer ou non.</p>
<p>Voilà pour les bases, nous en verrons un peu plus dans une deuxième partie.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sos-dedie.com/2008/10/30/serveur-dedie-les-premiers-pas/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

