<?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>BuzutTechnique</title>
	<atom:link href="http://buzut.fr/category/developpement/feed/" rel="self" type="application/rss+xml" />
	<link>http://buzut.fr</link>
	<description>Keep Updated</description>
	<lastBuildDate>Fri, 14 Jun 2013 19:36:57 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Configuration d&rsquo;un serveur Linux – SSH</title>
		<link>http://buzut.fr/2013/06/14/configuration-dun-serveur-linux-ssh/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=configuration-dun-serveur-linux-ssh</link>
		<comments>http://buzut.fr/2013/06/14/configuration-dun-serveur-linux-ssh/#comments</comments>
		<pubDate>Fri, 14 Jun 2013 19:36:57 +0000</pubDate>
		<dc:creator>Buzut</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://buzut.fr/?p=1853</guid>
		<description><![CDATA[<p>Par définition, un serveur est accédé de manière distante. C&#8217;est à dire qu&#8217;on doit pouvoir l&#8217;administrer sans être physiquement devant. Alors qu&#8217;il soit dans un datacenter à l&#8217;autre bout du globe ou dans le grenier de la maison, SSH nous permettra de gérer tout ça depuis notre ordinateur de bureau (ou laptop). Si vous louez [...]</p><p>The post <a href="http://buzut.fr/2013/06/14/configuration-dun-serveur-linux-ssh/">Configuration d&rsquo;un serveur Linux – SSH</a> appeared first on <a href="http://buzut.fr">Buzut</a>.</p>]]></description>
				<content:encoded><![CDATA[ <div class="headerimg">
    <a href="http://buzut.fr/wp-content/uploads/2012/04/linux-angry-bird-wide.png"><img src="http://buzut.fr/wp-content/uploads/2012/04/linux-angry-bird-wide.png"  title="linux-angry-bird-wide" width="700" height="200" class="alignnone size-full wp-image-975" /></a>
</div>
<p>Par définition, un serveur est accédé de manière distante. C&rsquo;est à dire qu&rsquo;on doit pouvoir l&rsquo;administrer sans être physiquement devant. Alors qu&rsquo;il soit dans un datacenter à l&rsquo;autre bout du globe ou dans le grenier de la maison, SSH nous permettra de gérer tout ça depuis notre ordinateur de bureau (ou laptop). Si vous louez votre serveur chez un hébergeur, vous l&rsquo;avez sans doute-reçu avec ssh pré-installé. Cependant, si vous bidouillez au fond de votre garage, il va falloir l&rsquo;installer vous-même, et qui plus est, il n&rsquo;est pas inintéressant de peaufiner la config de SSH pour vos propres besoins !</p>
<p><span id="more-1853"></span></p>
<h3>Installer ssh</h3>
<p>Pour ce faire, c&rsquo;est très simple :</p>

<div class="wp_codebox"><table><tr id="p185311"><td class="code" id="p1853code11"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> <span style="color: #c20cb9; font-weight: bold;">ssh</span></pre></td></tr></table></div>

<p>Cette commande va installer open-ssh sur votre machine. C&rsquo;est d&rsquo;ailleurs la seule commande que vous aurez à exécuter sur cette dernière puisque après ça, vous pourrez laisser le serveur au garage tandis que vous le gérerez confortablement assis à votre bureau !</p>
<p>Pour vous connecter au serveur, il vous faudra connaitre son nom de domaine ou son ip. Celle-ci est certainement fixe si ce dernier est loué aupres d&rsquo;un hébergeur, en revanche, si vous êtes toujours dans votre garage, il va falloir vous occuper de ça. Sinon à chaque redémarrage de la box, vous ne saurez plus à quelle adresse le joindre. Je ne couvrirai pas cette technique dans le présent article, il existe cependant plusieurs manières de procéder, voir <a href="http://buzut.fr/2012/08/18/ip-fixe-ubuntu-12-04-lts/">mon article sur l&rsquo;ip fixe sur Ubuntu</a> (lisez les commentaires, ils apportent des pistes supplémentaires).</p>
<p>Pour voir votre adresse ip, il faut utiliser la commande <strong>ifconfig</strong> et chercher dans <strong>eth0</strong> (représente l&rsquo;interface ethernet) la ligne qui commence par &laquo;&nbsp;inet addr&nbsp;&raquo; :</p>

<div class="wp_codebox"><table><tr id="p185312"><td class="code" id="p1853code12"><pre class="bash" style="font-family:monospace;">buzut<span style="color: #000000; font-weight: bold;">@</span>jarjar:~$ <span style="color: #c20cb9; font-weight: bold;">ifconfig</span>
eth0      Link encap:Ethernet  HWaddr 00:<span style="color: #000000;">14</span>:0b:05:1f:cf  
          inet adr:192.168.0.13  Bcast:192.168.0.255  Masque:255.255.255.0
          adr inet6: fe80::<span style="color: #000000;">214</span>:bff:fe05:1fcf<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">64</span> Scope:Lien
          …</pre></td></tr></table></div>

<p>Ici, mon adresse ip est 192.168.0.13, c&rsquo;est donc une ip locale.</p>
<h3>Se connecter</h3>
<p>On va maintenant se connecter en ssh à notre serveur depuis une autre machine. Celle-ci doit disposer d&rsquo;un client ssh. Si vous êtes sous Linux ou Mac OS, je vous invite donc à ouvrir un terminal, si vous êtes sous Windows, regardez du côté de <a href="http://fr.wikipedia.org/wiki/PuTTY">putty</a>. Première connexion :</p>

<div class="wp_codebox"><table><tr id="p185313"><td class="code" id="p1853code13"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ssh</span> nom_de_votre_user<span style="color: #000000; font-weight: bold;">@</span>ip_du_serveur</pre></td></tr></table></div>

<p>C&rsquo;est tout. Dans mon cas, j&rsquo;ai créé un compte buzut sur le serveur ayant pour ip 192.168.0.13, je tape donc dans mon terminal <span class="codeline">ssh buzut@192.168.0.13</span>. Attention, cette adresse ip étant une adresse locale, vous ne pourrez accéder à ce serveur en utilisant cette ip, que lorsque l&rsquo;ordinateur à partir duquel vous vous connectez est sur le même réseau local que votre serveur (sur la même box ADSL par exemple).</p>
<p>Dans le cas où vous voudriez vous connecter à votre serveur depuis l&rsquo;extérieur, il faudra utiliser une IP publique. Aucun problème si vous avez votre serveur chez un hébergeur. En revanche, si vous auto-hébergez votre serveur, vous n&rsquo;avez qu&rsquo;une seule adresse IPv4 publique (cela n&rsquo;est pas valable pour l&rsquo;IPv6) pour une multitude d&rsquo;appareils connectés sur la box. Votre box/routeur fait donc du <a href="http://fr.wikipedia.org/wiki/Network_address_translation">NAT</a> et il va falloir procéder à de la redirection de ports pour que le serveur soit joignable depuis l&rsquo;extérieur.</p>
<h3>Configurer SSH</h3>
<p>Pour paramétrer SSH, rendez-vous dans son fichier de configuration :</p>

<div class="wp_codebox"><table><tr id="p185314"><td class="code" id="p1853code14"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">nano</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssh<span style="color: #000000; font-weight: bold;">/</span>sshd_config</pre></td></tr></table></div>

<p>ssh est à vrai dire assez fonctionnel de base. On va tout de même changer certains points de la configuration. En premier lieu, j&rsquo;ai pour habitude de changer le port d&rsquo;écoute – à 22 par défaut pour le protocole ssh. En effet, si vous voulez vous connecter en mobilité, il y a de grandes chances que sur certains réseaux, le port 22 soit bloqué, je le remplace donc par le port 443 – port du https – qui n&rsquo;a que très peu de chance d&rsquo;être bloqué.</p>

<div class="wp_codebox"><table><tr id="p185315"><td class="code" id="p1853code15"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># What ports, IPs and protocols we listen for</span>
Port <span style="color: #000000;">443</span></pre></td></tr></table></div>

<p>Vous pouvez aussi limiter les adresses IP qui auront le droit de se connecter au serveur, mais dans ce cas, il faudra vous connecter toujours du même endroit (ou alors passer par votre proxy ou VPN avec toujours la même IP). Remplacez pour cela &laquo;&nbsp;0.0.0.0&Prime; par l&rsquo;IP en question et décommenter la ligne en enlevant le dièse.</p>

<div class="wp_codebox"><table><tr id="p185316"><td class="code" id="p1853code16"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Use these options to restrict which interfaces/protocols sshd will bind to</span>
<span style="color: #666666; font-style: italic;">#ListenAddress ::</span>
<span style="color: #666666; font-style: italic;">#ListenAddress 0.0.0.0</span></pre></td></tr></table></div>

<p>Enfin, je vous conseille aussi de désactiver la possibilité de se connecter en tant que root (l&rsquo;utilisateur qui a tout les droits). Il est préférable de se connecter avec un utilisateur ayant des droits plus restreints et d&rsquo;utiliser &laquo;&nbsp;sudo&nbsp;&raquo; lorsque les opérations nécessitent d&rsquo;être root.</p>

<div class="wp_codebox"><table><tr id="p185317"><td class="code" id="p1853code17"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Authentication:</span>
LoginGraceTime <span style="color: #000000;">120</span>
PermitRootLogin no
StrictModes <span style="color: #c20cb9; font-weight: bold;">yes</span></pre></td></tr></table></div>

<p>LoginGraceTime concerne le temps pendant lequel le serveur ssh attend que l&rsquo;utilisateur s&rsquo;authentifie, au delà de ce laps de temps, il va clore la connexion. Vous pouvez spécifier le temps que vous voulez, sachant qu&rsquo;il est par défaut à 2 minutes (120 secondes).</p>
<p>Vous pouvez aussi spécifier les utilisateurs que vous autorisez à se connecter. Ainsi, tout autre utilisateur sera dans l&rsquo;impossibilité de se connecter via ssh. Pour se faire, il faut rajouter la directive AllowUsers suivie des noms d&rsquo;utilisateurs à qui vous souhaitez accorder l&rsquo;autorisation de se connecter en ssh :</p>

<div class="wp_codebox"><table><tr id="p185318"><td class="code" id="p1853code18"><pre class="bash" style="font-family:monospace;">AllowUsers <span style="color: #c20cb9; font-weight: bold;">login</span> login2 login3 etc</pre></td></tr></table></div>

<p>C&rsquo;est tout pour la configuration de ssh. Il va maintenant falloir redémarrer le serveur ssh pour que les modifications prennent effet.</p>

<div class="wp_codebox"><table><tr id="p185319"><td class="code" id="p1853code19"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> restart <span style="color: #c20cb9; font-weight: bold;">ssh</span></pre></td></tr></table></div>

<p>Enfin, pour vous connecter à votre serveur depuis un autre ordinateur, n&rsquo;oubliez pas de préciser le port que vous avez choisi si vous n&rsquo;avez pas laissé celui par défaut.</p>

<div class="wp_codebox"><table><tr id="p185320"><td class="code" id="p1853code20"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ssh</span> <span style="color: #c20cb9; font-weight: bold;">login</span><span style="color: #000000; font-weight: bold;">@</span>adresse-ip-du-serveur <span style="color: #660033;">-p</span> <span style="color: #000000;">443</span></pre></td></tr></table></div>

<h3>Se passer de mot de passe</h3>
<p>Avec les attaques par <a href="http://fr.wikipedia.org/wiki/Attaque_par_force_brute">bruteforce</a>, les mots de passe deviennent de plus en plus faibles, et pour palier à cela, il faut en retenir de plus en plus compliqués. On peut cependant interdire toute connexion par mot de passe ! Comment ? En substituant le mot de passe par un certificat. L&rsquo;ordinateur à partir duquel vous vous connectez (la machine cliente) génère un certificat, que l&rsquo;on enregistre sur le serveur. Dès lors, il n&rsquo;y aura plus de mot de passe à taper !</p>
<p>Pour mettre en place ce système, je vous invite à lire <a href="/2012/11/13/connexion-ssh-automatique/">mon article qui traite de la question</a>.</p>
<p>Voilà tout pour ssh ! Facile non ? Dans le prochain épisode, on verra comment installer un serveur web pour pouvoir héberger nos projets !</p>
<p>The post <a href="http://buzut.fr/2013/06/14/configuration-dun-serveur-linux-ssh/">Configuration d&rsquo;un serveur Linux – SSH</a> appeared first on <a href="http://buzut.fr">Buzut</a>.</p><div class='yarpp-related-rss'>
<p>Je vous recommande aussi les articles suivants :</p><ol>
<li><a href='http://buzut.fr/2012/11/13/connexion-ssh-automatique/' rel='bookmark' title='Connexion SSH automatique'>Connexion SSH automatique</a></li>
<li><a href='http://buzut.fr/2012/03/27/connexion-a-sfr-wifi-sans-mot-de-passe/' rel='bookmark' title='Dangereux Hotspots'>Dangereux Hotspots</a></li>
<li><a href='http://buzut.fr/2013/04/05/filtre-anti-ddos-generique/' rel='bookmark' title='Filtre anti-DDoS générique'>Filtre anti-DDoS générique</a></li>
</ol>
<p>La liste des entrées similaires est établie par le module d’extension <a href='http://yarpp.org'>YARPP</a>.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://buzut.fr/2013/06/14/configuration-dun-serveur-linux-ssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configuration d&rsquo;un serveur Linux – Le partitionnement</title>
		<link>http://buzut.fr/2013/05/08/configuration-dun-serveur-linux-le-partitionnement/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=configuration-dun-serveur-linux-le-partitionnement</link>
		<comments>http://buzut.fr/2013/05/08/configuration-dun-serveur-linux-le-partitionnement/#comments</comments>
		<pubDate>Wed, 08 May 2013 09:27:20 +0000</pubDate>
		<dc:creator>Buzut</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://buzut.fr/?p=2114</guid>
		<description><![CDATA[<p>Partager pour mieux régner ! Le partitionnement est tout simplement LA première étape dans l&#8217;installation d&#8217;un serveur puisqu&#8217;elle doit s&#8217;effectuer avant même l&#8217;installation du système à proprement parler. Je ne vais pas aborder ici le gestionnaire de partitionnement de Ubuntu ou de Debian – ils sonts assez intuitifs, et c&#8217;est encore différent si vous passez [...]</p><p>The post <a href="http://buzut.fr/2013/05/08/configuration-dun-serveur-linux-le-partitionnement/">Configuration d&rsquo;un serveur Linux – Le partitionnement</a> appeared first on <a href="http://buzut.fr">Buzut</a>.</p>]]></description>
				<content:encoded><![CDATA[ <div class="headerimg">
    <a href="/2013/05/08/configuration-dun-serveur-linux-le-partitionnement/"><img src="http://buzut.fr/wp-content/uploads/2012/02/hardware-wide.jpg" alt="linux configuration serveur" width="700" height="200" class="alignnone size-full wp-image-755" /></a>
</div>
<p>Partager pour mieux régner ! Le partitionnement est tout simplement LA première étape dans l&rsquo;installation d&rsquo;un serveur puisqu&rsquo;elle doit s&rsquo;effectuer avant même l&rsquo;installation du système à proprement parler. Je ne vais pas aborder ici le gestionnaire de partitionnement de Ubuntu ou de Debian – ils sonts assez intuitifs, et c&rsquo;est encore différent si vous passez par OVH par ex (n&rsquo;ayant pas d&rsquo;accès direct au serveur) – mais plutôt de l&rsquo;architecture logique des partitions.</p>
<p><span id="more-2114"></span></p>
<h3>Pourquoi partitionner ?</h3>
<p>Avant tout, pourquoi partitionner ? C&rsquo;est une très bonne question. On pourrait en effet très bien créer une partition &laquo;&nbsp;/&nbsp;&raquo; géante, qui prendrait tout l&rsquo;espace du disque dur, et tout se passerait pour le mieux, en toute simplicité. C&rsquo;est vrai, sauf que. Sauf que si &laquo;&nbsp;/&nbsp;&raquo;, la racine en d&rsquo;autres termes, venait à être pleine, il y aurait nécessairement quelques instabilités sur votre système.</p>
<p>Le principe qui repose derrière cette logique consiste à <strong>séparer les différentes activités du serveur</strong> pour que chacune impacte le moins possible les autres. Il est par exemple très facile pour un attaquant d&rsquo;écrire dans /tmp, qui contient tous les fichiers temporaires, reçoit par exemple les uploads via les formulaires http etc. Avec la commande <span class="codeline">cat /dev/zero > grosfichier</span> un attaquant pourrait rapidement remplir votre disque dur. Si /tmp est une partition à part entière, une fois pleine, elle n&rsquo;empêchera pas le bon fonctionnement du système.</p>
<p>De même <strong>un attaquant pourrait tenter de lancer des scripts depuis /tmp</strong>. On peut spécifier pour un répertoire donné qu&rsquo;il soit impossible d&rsquo;exécuter des programmes depuis celui-ci par exemple. Renseignez-vous sur les différentes options disponibles, notamment nodev, nosuid et noexec via la commande <span class="codeline">man mount</span>.</p>
<h3>Comment partitionner ?</h3>
<p>Voilà une question à laquelle je pourrai plus difficilement apporter une réponse. Tout ceci dépend en effet de la manière dont vous comptez utiliser votre serveur, de ce que vous allez installer dessus, et de l&rsquo;espace disque disponible bien entendu.</p>
<p>Bien qu&rsquo;avoir différentes partitions paraît inévitable, je ne suis pas pour autant adepte de la multiplicité de ces dernières. Aussi, voici ce que je préconise comme étant le strict minimum. Et c&rsquo;est aussi ce dont je me contente la plupart du temps.

<div class="wp_codebox"><table><tr id="p211423"><td class="code" id="p2114code23"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Mount Point       Min Size (MB)    </span>
<span style="color: #000000; font-weight: bold;">/</span>                   <span style="color: #000000;">4000</span>             
<span style="color: #000000; font-weight: bold;">/</span>home               <span style="color: #000000;">1000</span>             
<span style="color: #000000; font-weight: bold;">/</span>tmp                <span style="color: #000000;">1000</span>             
<span style="color: #000000; font-weight: bold;">/</span>var                <span style="color: #000000;">2000</span>             
swap                <span style="color: #000000;">1000</span></pre></td></tr></table></div>

<p>Là où cela devient compliqué, c&rsquo;est en ce qui concerne la taille de chacune de ces partitions. Si vous avez un serveur qui fait plusieurs TB, vous pouvez être généreux, ça ne coûte pas grand chose. Vous avez ici le minimum qui convient à la plupart des cas. Le swap par exemple, ne sera presque jamais utilisé si vous avez 16GB ou plus de RAM pour une utilisation serveur web. Et dans tous les cas, si un serveur web commence à swaper, il va vite falloir trouver un remède.</p>
<p>Toujours dans le cas d&rsquo;un serveur web, si par exemple, vous montez un petit dropbox et que vos fichiers sont stockés dans le dossier par défaut du serveur apache <strong>/var/www</strong>, il sera conseillé d&rsquo;avoir une partition conséquente pour /var, tandis que home ne sera pas d&rsquo;une grande utilité et quelques gigas feront donc l&rsquo;affaire. En ce qui me concerne, sur des serveurs récents, j&rsquo;attribue 10GB à &laquo;&nbsp;/&nbsp;&raquo;, 4GB de swap (on ne s&rsquo;en sert pas, mais 4GB, sur des disques modernes, qu&rsquo;est-ce que c&rsquo;est ?), et le reste entre /tmp, /home et /var, selon l&rsquo;utilisation.</p>
<p>Si vous permettez l&rsquo;upload de gros fichiers et que vous allez avoir beaucoup d&rsquo;utilisateurs en même temps, je vous conseille d&rsquo;attribuer pas mal d&rsquo;espace à /tmp, car c&rsquo;est là que les fichiers seront stockés en attendant leur upload complet et leur transfert à leur destination finale <strong>/var/www/uploads</strong> par exemple. Il faudra dans cet exemple-ci attribuer une taille encore plus importante à /var si les uploads sont destinés à y rester. Bref, vous l&rsquo;avez compris, comme aurait dit Horace – hacker de renom – &laquo;&nbsp;il faut de la mesure en toute chose&nbsp;&raquo;.</p>
<p>Enfin, histoire de voir un peu ce que contiennent les différents points de montage, je vous conseille de regarder le <span class="codeline">man hier</span>.</p>
<p>Je vous parlais tout à l&rsquo;heure de noexec, nodev et nosuid. On peut configurer ces options une fois le système installé via le fichier <strong>/etc/fstab</strong>. Je vous invite à jeter un œil à <span class="codeline">man fstab</span>.</p>

<div class="wp_codebox"><table><tr id="p211424"><td class="code" id="p2114code24"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># nous avons ici un système avec un raid logiciel</span>
<span style="color: #666666; font-style: italic;"># on peut voit que /tmp ne permet ni l'exécution, </span>
<span style="color: #666666; font-style: italic;"># n’interprète pas les caractères spéciaux,</span>
<span style="color: #666666; font-style: italic;"># et ne prend pas en compte les bits d'identification des fichiers</span>
<span style="color: #c20cb9; font-weight: bold;">cat</span> fstab
<span style="color: #666666; font-style: italic;"># &lt;file system&gt;	&lt;mount point&gt;	&lt;type&gt;	&lt;options&gt;	&lt;dump&gt;	&lt;pass&gt;</span>
<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md1	<span style="color: #000000; font-weight: bold;">/</span>	ext4	<span style="color: #007800;">errors</span>=remount-ro,relatime	<span style="color: #000000;">0</span>	<span style="color: #000000;">1</span>
<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md2	<span style="color: #000000; font-weight: bold;">/</span>var	ext4	defaults,relatime	<span style="color: #000000;">1</span>	<span style="color: #000000;">2</span>
<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md3	<span style="color: #000000; font-weight: bold;">/</span>tmp	ext4	defaults,relatime,noexec,nosuid,nodev	<span style="color: #000000;">1</span>	<span style="color: #000000;">2</span>
<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>md6	<span style="color: #000000; font-weight: bold;">/</span>home	ext4	defaults,relatime	<span style="color: #000000;">1</span>	<span style="color: #000000;">2</span>
<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda5	swap	swap	defaults	<span style="color: #000000;">0</span>	<span style="color: #000000;">0</span>
<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb5	swap	swap	defaults	<span style="color: #000000;">0</span>	<span style="color: #000000;">0</span>
proc		<span style="color: #000000; font-weight: bold;">/</span>proc	proc	defaults		<span style="color: #000000;">0</span>	<span style="color: #000000;">0</span>
sysfs		<span style="color: #000000; font-weight: bold;">/</span>sys	sysfs	defaults		<span style="color: #000000;">0</span>	<span style="color: #000000;">0</span>
dev		<span style="color: #000000; font-weight: bold;">/</span>dev	devtmpfs	rw	<span style="color: #000000;">0</span>	<span style="color: #000000;">0</span></pre></td></tr></table></div>

<p>Une grande partie de ce savoir vient d&rsquo;une Q&#038;A que j&rsquo;avais initié sur <a href="http://serverfault.com/questions/449395/unix-server-partitioning-filesystem-layout/449561">serverfault [en]</a>. N&rsquo;hésitez pas à y faire un saut. Par ailleurs, je vous invite à aller lire l&rsquo;article de mon ami MagiCrazy sur <a href="http://blog.edgepad.fr/2013/03/29/home-server-partie-2/">GPT et le partitionnement RAID5 en ligne de commande</a>. Et bon partitionnement !</p>
<p>The post <a href="http://buzut.fr/2013/05/08/configuration-dun-serveur-linux-le-partitionnement/">Configuration d&rsquo;un serveur Linux – Le partitionnement</a> appeared first on <a href="http://buzut.fr">Buzut</a>.</p><div class='yarpp-related-rss'>
<p>Je vous recommande aussi les articles suivants :</p><ol>
<li><a href='http://buzut.fr/2012/11/19/installer-et-parametrer-fail2ban/' rel='bookmark' title='Installer et paramétrer Fail2Ban'>Installer et paramétrer Fail2Ban</a></li>
<li><a href='http://buzut.fr/2013/04/05/filtre-anti-ddos-generique/' rel='bookmark' title='Filtre anti-DDoS générique'>Filtre anti-DDoS générique</a></li>
<li><a href='http://buzut.fr/2012/04/09/installer-ffmpeg-et-encoder-pour-html5/' rel='bookmark' title='Installer FFMPEG et encoder pour HTML5'>Installer FFMPEG et encoder pour HTML5</a></li>
</ol>
<p>La liste des entrées similaires est établie par le module d’extension <a href='http://yarpp.org'>YARPP</a>.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://buzut.fr/2013/05/08/configuration-dun-serveur-linux-le-partitionnement/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Filtre anti-DDoS générique</title>
		<link>http://buzut.fr/2013/04/05/filtre-anti-ddos-generique/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=filtre-anti-ddos-generique</link>
		<comments>http://buzut.fr/2013/04/05/filtre-anti-ddos-generique/#comments</comments>
		<pubDate>Fri, 05 Apr 2013 08:35:08 +0000</pubDate>
		<dc:creator>Buzut</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://buzut.fr/?p=2024</guid>
		<description><![CDATA[<p>On le sait tous, le DDoS c&#8217;est une plaie ! Il y a en même temps mille et aucune manière de s&#8217;en prémunir réellement, et finalement, de la même manière que la meilleur prévention contre le SIDA est l&#8217;abstinence, la meilleure prévention contre le DDoS, est de n&#8217;être pas connecté au réseau… facile à dire. [...]</p><p>The post <a href="http://buzut.fr/2013/04/05/filtre-anti-ddos-generique/">Filtre anti-DDoS générique</a> appeared first on <a href="http://buzut.fr">Buzut</a>.</p>]]></description>
				<content:encoded><![CDATA[ <div class="headerimg">
    <a href="/2013/04/05/filtre-anti-ddos-generique/"><img src="http://buzut.fr/wp-content/uploads/2012/01/vault-wide.jpg" alt="anti ddos" width="700" height="200" class="alignnone size-full wp-image-518" /></a>
</div>
<p>On le sait tous, le DDoS c&rsquo;est une plaie ! Il y a en même temps mille et aucune manière de s&rsquo;en prémunir réellement, et finalement, de la même manière que la meilleur prévention contre le SIDA est l&rsquo;abstinence, la meilleure prévention contre le DDoS, est de n&rsquo;être pas connecté au réseau… facile à dire.</p>
<p>On a déjà vu que <a href="/2012/11/19/installer-et-parametrer-fail2ban/">Fail2Ban apporte quelques solutions</a> contre ce type d&rsquo;attaque, mais ce n&rsquo;est pas forcément suffisant. Je vous propose donc ici une configuration de iptables qui tachera de filtrer et de bloquer les DDoS.</p>
<p><span id="more-2024"></span></p>

<div class="wp_codebox"><table><tr id="p202426"><td class="code" id="p2024code26"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#! /bin/bash</span>
&nbsp;
<span style="color: #007800;">MAXHIT</span>=<span style="color: #000000;">30</span>
<span style="color: #007800;">BURST</span>=<span style="color: #000000;">40</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># créé une nouvelle chaine iptables</span>
iptables <span style="color: #660033;">-N</span> seuil
&nbsp;
<span style="color: #666666; font-style: italic;"># definir les limites de trafic au delà desquelles on vire les paquets</span>
<span style="color: #666666; font-style: italic;"># vérifie que le paquet entre dans les limites et l'accepte</span>
<span style="color: #666666; font-style: italic;"># puis stocke l'ip dans une table de hash pendant 1mn pour comparaison ultérieure</span>
iptables <span style="color: #660033;">-A</span> seuilattaque <span style="color: #660033;">-m</span> hashlimit \
 <span style="color: #660033;">--hashlimit-name</span> seuil \
 <span style="color: #660033;">--hashlimit-upto</span> <span style="color: #007800;">$MAXHIT</span><span style="color: #000000; font-weight: bold;">/</span>minute \
 <span style="color: #660033;">--hashlimit-mode</span> srcip \
 <span style="color: #660033;">--hashlimit-burst</span> <span style="color: #007800;">$BURST</span> \
 <span style="color: #660033;">--hashlimit-htable-expire</span> <span style="color: #000000;">60000</span> \
<span style="color: #660033;">-j</span> ACCEPT
&nbsp;
<span style="color: #666666; font-style: italic;"># si le paquet est hors limite, il est dropé </span>
iptables <span style="color: #660033;">-A</span> seuil <span style="color: #660033;">-j</span> DROP
&nbsp;
<span style="color: #666666; font-style: italic;"># passer tout le trafic dans le chaine seuil</span>
iptables <span style="color: #660033;">-A</span> INPUT <span style="color: #660033;">-p</span> <span style="color: #660033;">-tcp</span> <span style="color: #660033;">--dport</span> <span style="color: #000000;">80</span> <span style="color: #660033;">-j</span> seuil</pre></td></tr></table></div>

<p>Il ne vous reste plus ensuite qu&rsquo;à lancer ce script au démarrage en renseignant son path dans /etc/rc.local. Et n&rsquo;oubliez pas de le rendre exécutable <img src='http://buzut.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>The post <a href="http://buzut.fr/2013/04/05/filtre-anti-ddos-generique/">Filtre anti-DDoS générique</a> appeared first on <a href="http://buzut.fr">Buzut</a>.</p><div class='yarpp-related-rss'>
<p>Je vous recommande aussi les articles suivants :</p><ol>
<li><a href='http://buzut.fr/2012/11/19/installer-et-parametrer-fail2ban/' rel='bookmark' title='Installer et paramétrer Fail2Ban'>Installer et paramétrer Fail2Ban</a></li>
<li><a href='http://buzut.fr/2011/10/25/wikileaks-fait-une-pause/' rel='bookmark' title='Wikileaks fait une pause'>Wikileaks fait une pause</a></li>
<li><a href='http://buzut.fr/2012/02/06/acta-et-la-pologne-la-vraie-democratie/' rel='bookmark' title='ACTA et la Pologne, la vraie démocratie'>ACTA et la Pologne, la vraie démocratie</a></li>
</ol>
<p>La liste des entrées similaires est établie par le module d’extension <a href='http://yarpp.org'>YARPP</a>.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://buzut.fr/2013/04/05/filtre-anti-ddos-generique/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Customiser le input file</title>
		<link>http://buzut.fr/2013/03/24/customisez-le-input-file/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=customisez-le-input-file</link>
		<comments>http://buzut.fr/2013/03/24/customisez-le-input-file/#comments</comments>
		<pubDate>Sun, 24 Mar 2013 21:20:09 +0000</pubDate>
		<dc:creator>Buzut</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://buzut.fr/?p=2068</guid>
		<description><![CDATA[<p>Chaque navigateur possède son propre champ de type file, ce dernier n&#8217;est pratiquement pas modifiable en CSS. C&#8217;est fort dommage car d&#8217;une part, chaque navigateur possède son propre &#171;&#160;design&#160;&#187; de ce type de input, ce qui ne permet pas d&#8217;avoir une homogénéité entre les navigateurs, et d&#8217;autre part, cette impossibilité de le modifier via CSS, [...]</p><p>The post <a href="http://buzut.fr/2013/03/24/customisez-le-input-file/">Customiser le input file</a> appeared first on <a href="http://buzut.fr">Buzut</a>.</p>]]></description>
				<content:encoded><![CDATA[ <div class="headerimg">
<a href="2013/03/24/customisez-le-input-file/"><img src="http://buzut.fr/wp-content/uploads/2012/04/Sans-titre-1.jpg" alt="html5 designer le input file" width="700" height="200"/></a>
</div>
<p>Chaque navigateur possède son propre champ de type file, ce dernier n&rsquo;est pratiquement pas modifiable en CSS. C&rsquo;est fort dommage car d&rsquo;une part, chaque navigateur possède son propre &laquo;&nbsp;design&nbsp;&raquo; de ce type de input, ce qui ne permet pas d&rsquo;avoir une homogénéité entre les navigateurs, et d&rsquo;autre part, cette <strong>impossibilité de le modifier via CSS</strong>, ne permet pas d&rsquo;adapter ce dernier au design de notre site. Notre objectif est donc de palier à cette lacune, nous aurons recourt à CSS (quand même) et à jQuery.</p>
<p><span id="more-2068"></span></p>
<p>Nous prendrons comme exemple <a href="http://buzeo.me/upload/">Buzeo</a>. Voici donc notre sélecteur avant opération :</p>
<p><img src="http://buzut.fr/wp-content/uploads/2013/03/input-file-uncustomed.jpg" alt="input-file-uncustomed" width="660" height="285"/></a></p>
<p>Et le voici après :</p>
<p><img src="http://buzut.fr/wp-content/uploads/2013/03/input-file-customed.jpg" alt="input-file-customed" width="660" height="291"/></p>
<p>Vous l&rsquo;aurez compris, l&rsquo;opération consiste donc à <strong>substituer cet hideux champ input file par un joli bouton, qui au clic, se chargera d&rsquo;ouvrir un navigateur de fichiers</strong>. Il n&rsquo;y a à ma connaissance pas d&rsquo;événement en JavaScript qui permette d&rsquo;ouvrir un tel navigateur.</p>
<h3>Une solution Full CSS</h3>
<p>Avant que nous nous lancions dans la solution que je vais présenter ici, sachez qu&rsquo;il existe une solution full CSS à ce petit problème. Cependant, il se trouve qu&rsquo;elle n&rsquo;est pas l&rsquo;élue de mon cœur car elle présente un inconvénient que vous allez vite comprendre. La solution full CSS, consiste à <strong>rendre le input transparent, et à placer un bouton sous lui</strong>. Simplissime !! En croyant cliquer sur le bouton, l&rsquo;internaute clique alors sur votre input et déclenche l&rsquo;ouverture du navigateur de fichiers. L&rsquo;inconvénient à cela ? Le input recouvrant le bouton, vous ne pourrez jamais avoir d&rsquo;effet CSS de type :hover, ou :focus, donc pas de retour visuel au survol de la souris. C&rsquo;est dommage, d&rsquo;autant plus si tout le reste de votre site présente cet effet. Ne cherche-t-on pas là justement à procurer une certaine homogénéité à notre site ?</p>
<h3>La solution jQuery</h3>
<p>Je le disais juste au dessus, il n&rsquo;existe pas d&rsquo;événement qui permette de déclencher l&rsquo;ouverture du navigateur de fichier, mais on peut toujours utiliser la méthode <a href="http://api.jquery.com/click/">clic()</a> de jQuery pour déclencher un événement. En l&rsquo;occurrence, nous voulons <strong>déclencher un clic sur le input file lorsqu&rsquo;on capte un clic sur notre bouton</strong>.</p>
<h4>Le code voulez-vous ?</h4>

<div class="wp_codebox"><table><tr id="p206830"><td class="code" id="p2068code30"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;upload&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;whiteGlass&quot;</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h1</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;browse&quot;</span>&gt;</span>Sélectionnez des vidéos à charger :<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;file&quot;</span> <span style="color: #000066;">name</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;film&quot;</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;file&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;browse&quot;</span> multiple&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">span</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;fileSelectButton&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;browse button black&quot;</span>&gt;</span>Sélectionnez des fichiers<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;browse&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">strong</span>&gt;</span>Taille maximale :<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">strong</span>&gt;</span> 2 GB.<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
    <span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;browse&quot;</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">strong</span>&gt;</span>Formats supportés :<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">strong</span>&gt;</span> avi, flv, mp4, m4v, mkv, mov, mpg, mpeg, ogg, ogv, wmv, 3gp, 3g2.<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre></td></tr></table></div>

<p>Nous avons donc notre input file au dessus de notre bouton (oui mes boutons sont ©FULLCSS aussi. Vous trouverez pleins d&rsquo;infos sur ce genre de petites merveilles à <a href="http://webdesignerwall.com/">cette adresse [en]</a>). Il va donc s&rsquo;agir dans un premier temps de faire &laquo;&nbsp;disparaître&nbsp;&raquo; ce input. Attention toutefois, si je mets disparaître entre guillemets, c&rsquo;est parce qu&rsquo;on ne peut pas se permettre de le mettre en <span class="codeline">display: none;</span>. En effet, pour des raisons de sécurité – la même raison d&rsquo;ailleurs qui fait qu&rsquo;on ne peut invoquer directement en JS explorateur de fichier du navigateur – <strong>il ne sera pas possible sur certains navigateurs de simuler un clic sur cet élément s&rsquo;il est en display none</strong>.</p>
<p>On le mettra donc en absolut, pour qu&rsquo;il sorte du flux, une taille ridicule, et un z-index négatif, le tout afin qu&rsquo;il soit caché derrière notre bouton. Voici mon petit bout de CSS :</p>

<div class="wp_codebox"><table><tr id="p206831"><td class="code" id="p2068code31"><pre class="css" style="font-family:monospace;"><span style="color: #cc00cc;">#upload</span> <span style="color: #6666ff;">.browse</span> input<span style="color: #00AA00;">&#91;</span>type<span style="color: #00AA00;">=</span><span style="color: #ff0000;">'file'</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">position</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">absolute</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">margin-top</span><span style="color: #00AA00;">:</span> <span style="color: #933;">3px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">margin-left</span><span style="color: #00AA00;">:</span> <span style="color: #933;">3px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">1px</span><span style="color: #00AA00;">;</span>
	<span style="color: #000000; font-weight: bold;">z-index</span><span style="color: #00AA00;">:</span> -<span style="color: #cc66cc;">5</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></td></tr></table></div>

<p>Enfin, en ce qui concerne l&rsquo;élément de jQuery, il n&rsquo;y a rien de sorcier. Il consiste juste à capturer le clic sur le span d&rsquo;id fileSelectButton et de déclencher un clic sur notre input. Le tout en quelques lignes grâce à jQuery :</p>

<div class="wp_codebox"><table><tr id="p206832"><td class="code" id="p2068code32"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#upload #fileSelectButton'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#upload input'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Je ne crois pas avoir besoin d&rsquo;expliquer ce code là, niveau programmation, c&rsquo;est pas trop ardu…</p>
<p>The post <a href="http://buzut.fr/2013/03/24/customisez-le-input-file/">Customiser le input file</a> appeared first on <a href="http://buzut.fr">Buzut</a>.</p><div class='yarpp-related-rss'>
<p>Je vous recommande aussi les articles suivants :</p><ol>
<li><a href='http://buzut.fr/2012/12/05/buzeo-private-streaming/' rel='bookmark' title='Buzeo, streaming entre amis'>Buzeo, streaming entre amis</a></li>
<li><a href='http://buzut.fr/2013/04/05/filtre-anti-ddos-generique/' rel='bookmark' title='Filtre anti-DDoS générique'>Filtre anti-DDoS générique</a></li>
<li><a href='http://buzut.fr/2012/09/21/html-coder-pour-le-mailing/' rel='bookmark' title='HTML coder pour l&rsquo;e-mailing'>HTML coder pour l&rsquo;e-mailing</a></li>
</ol>
<p>La liste des entrées similaires est établie par le module d’extension <a href='http://yarpp.org'>YARPP</a>.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://buzut.fr/2013/03/24/customisez-le-input-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anti-hotlinking pour vidéo avec NGINX</title>
		<link>http://buzut.fr/2013/01/29/anti-hotlinking-pour-video-avec-nginx/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=anti-hotlinking-pour-video-avec-nginx</link>
		<comments>http://buzut.fr/2013/01/29/anti-hotlinking-pour-video-avec-nginx/#comments</comments>
		<pubDate>Tue, 29 Jan 2013 00:19:38 +0000</pubDate>
		<dc:creator>Buzut</dc:creator>
				<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://buzut.fr/?p=2028</guid>
		<description><![CDATA[<p>En dehors de toute notion de copyright, de vol intellectuel etc, lorsqu&#8217;on possède un site ou un serveur, dès lors qu&#8217;un autre site inclut un de nos médias sur ses pages en ne l&#8217;hébergeant pas lui-même, mais en faisant un lien direct vers le média hébergé sur notre serveur, il nous vole de la bande [...]</p><p>The post <a href="http://buzut.fr/2013/01/29/anti-hotlinking-pour-video-avec-nginx/">Anti-hotlinking pour vidéo avec NGINX</a> appeared first on <a href="http://buzut.fr">Buzut</a>.</p>]]></description>
				<content:encoded><![CDATA[ <div class="headerimg">
    <a href="/2013/01/29/anti-hotlinking-pour-video-avec-nginx/"><img src="http://buzut.fr/wp-content/uploads/2013/01/servers-wide.jpg" alt="anti video hotlinking" width="700" height="200" class="alignnone size-full wp-image-2029" /></a>
</div>
<p>En dehors de toute notion de copyright, de vol intellectuel etc, lorsqu&rsquo;on possède un site ou un serveur, dès lors qu&rsquo;un autre site inclut un de nos médias sur ses pages en ne l&rsquo;hébergeant pas lui-même, mais en faisant un lien direct vers le média hébergé sur notre serveur, il nous vole de la bande passante ! Alors bien évidemment, cela ne porte pas à conséquence si c&rsquo;est un petit site perso avec très peu de trafic, mais dès que le site est un peu fréquenté, ça peut vite générer un fort trafic, et les coûts qui vont avec. Bien évidemment, plus le média est gros, plus c&rsquo;est onéreux… C&rsquo;est donc pour cela que nous allons aborder une technique pour <strong>se prémunir du hotlinking de vidéos</strong>.</p>
<p><span id="more-2028"></span></p>
<h3>À médias différents, traitements différents</h3>
<p>Avec le HTML5, insérer une vidéo dans ses pages est tout aussi simple que d&rsquo;insérer une image. Seulement, si un jpeg de quelques dizaines de Ko sauvagement hotlinké ne pèse pas bien lourd sur votre bande passante, il peut en être tout autrement d&rsquo;une vidéo de plusieurs centaines de Mo.</p>
<p>La technique pour se prémunir du hotlinking au niveau des images est très connue. Au niveau de NGINX — puisque c&rsquo;est sur ce serveur que nous allons travailler, bien que la technique s&rsquo;adapte facilement à Apache — il suffit de quelques lignes :</p>

<div class="wp_codebox"><table><tr id="p202835"><td class="code" id="p2028code35"><pre class="bash" style="font-family:monospace;">location ~<span style="color: #000000; font-weight: bold;">*</span> \.<span style="color: #7a0874; font-weight: bold;">&#40;</span>jpg<span style="color: #7a0874; font-weight: bold;">&#41;</span>$ <span style="color: #7a0874; font-weight: bold;">&#123;</span>
 valid_referers none blocked www.monsite.fr monsite.fr;
 <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$invalid_referer</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span> <span style="color: #7a0874; font-weight: bold;">return</span> <span style="color: #000000;">403</span>; <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>Puisque c&rsquo;est si simple, pourquoi ne pas reproduire exactement la même technique pour les vidéos ? Il suffirait d&rsquo;ajouter par exemple le mp4 aux extensions à prendre en compte : <span class="codeline">location&nbsp;~*&nbsp;\.(jpg|mp4)$</span>.</p>
<p>Je n&rsquo;en connais pas trop la raison, mais concernant les vidéos, <strong>le navigateur n&rsquo;envoie pas de referer dans l&rsquo;en-tête HTTP</strong>. Donc dans le cas de la règle ci-dessus, deux choix s&rsquo;offrent à nous :</p>
<ol>
<li>Conserver &laquo;&nbsp;none&nbsp;&raquo; en tant que referer valide et dans ce cas autoriser toutes les vidéos à être lues, peut importe la page source,</li>
<li>Considérer que &laquo;&nbsp;none&nbsp;&raquo; n&rsquo;est pas un referer valide et donc refuser de servir toutes les vidéos, même celles provenant de nos propres pages.</li>
</ol>
<p>Vous en conviendrez, aucune de ces solutions n&rsquo;est satisfaisante, puisque l&rsquo;une d&rsquo;elle est inutile et l&rsquo;autre tout à fait contre-productive. Il s&rsquo;agit donc de trouver une parade.</p>
<h3>Le cookie en remplacement du referer</h3>
<p>Nous n&rsquo;avons pas de referer qui puisse nous indiquer si l&rsquo;internaute requiert ce média à partir d&rsquo;une de nos pages, ou à partir d&rsquo;un site qui nous aurait &laquo;&nbsp;volé&nbsp;&raquo; notre contenu. Pour nous permettre de contrôler ceci, nous allons avoir recourt à un cookie !</p>
<p>Tout simplement, lors de la consultation de la page contenant la vidéo, il suffit de créer un cookie et de ne servir la vidéo qu&rsquo;à la seule condition que ce cookie existe. Le but n&rsquo;est pas ici d&rsquo;expliquer comment créer un cookie dans votre langage de programmation de prédilection, si vous avez un trou, pour le php, c&rsquo;est <a href="http://fr2.php.net/manual/fr/function.setcookie.php">par ici</a>. Je recommande cependant de mettre une durée de vie assez courte au cookie, de manière à ce qu&rsquo;un internaute ayant navigué sur votre site ne puisse pas accéder au contenu spolié sur le site d&rsquo;un concurrent 20mn plus tard par exemple…</p>
<p>Au niveau de NGINX, dans le fichier de conf de votre site, par exemple <strong>/etc/nginx/site-enabled/monsite</strong>, il va falloir intégrer cette directive :</p>

<div class="wp_codebox"><table><tr id="p202836"><td class="code" id="p2028code36"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># si le cookie &quot;monCookieDeVerif&quot; n'existe pas, on retourne une erreur 403</span>
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #007800;">$http_cookie</span> <span style="color: #000000; font-weight: bold;">!</span>~ <span style="color: #ff0000;">&quot;monCookieDeVerif&quot;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span> <span style="color: #7a0874; font-weight: bold;">return</span> <span style="color: #000000;">403</span>; <span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></td></tr></table></div>

<p>Et voilà, encore plus court que la directive concernant le hotlinking d&rsquo;images ! On pourrait cependant améliorer un petit peu la sécurité en se basant aussi sur le contenu du cookie. Par exemple en mettant dans le contenu le chemin du fichier vidéo à accéder, puis en comparant le contenu du cookie à la variable $uri. Ce n&rsquo;est qu&rsquo;une suggestion, et je reste ouvert à toute remarque. Cette sécurité n&rsquo;est pas imparable, mais elle permettra déjà d&rsquo;éviter la plupart des désagréments !</p>
<p>The post <a href="http://buzut.fr/2013/01/29/anti-hotlinking-pour-video-avec-nginx/">Anti-hotlinking pour vidéo avec NGINX</a> appeared first on <a href="http://buzut.fr">Buzut</a>.</p><div class='yarpp-related-rss'>
<p>Je vous recommande aussi les articles suivants :</p><ol>
<li><a href='http://buzut.fr/2012/03/27/connexion-a-sfr-wifi-sans-mot-de-passe/' rel='bookmark' title='Dangereux Hotspots'>Dangereux Hotspots</a></li>
<li><a href='http://buzut.fr/2012/03/18/travailler-sur-tablette-cest-possible/' rel='bookmark' title='Travailler sur tablette, c&rsquo;est possible'>Travailler sur tablette, c&rsquo;est possible</a></li>
<li><a href='http://buzut.fr/2012/11/19/installer-et-parametrer-fail2ban/' rel='bookmark' title='Installer et paramétrer Fail2Ban'>Installer et paramétrer Fail2Ban</a></li>
</ol>
<p>La liste des entrées similaires est établie par le module d’extension <a href='http://yarpp.org'>YARPP</a>.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://buzut.fr/2013/01/29/anti-hotlinking-pour-video-avec-nginx/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Webdesign pour écrans Retina</title>
		<link>http://buzut.fr/2012/11/28/webdesign-pour-ecrans-retina/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=webdesign-pour-ecrans-retina</link>
		<comments>http://buzut.fr/2012/11/28/webdesign-pour-ecrans-retina/#comments</comments>
		<pubDate>Wed, 28 Nov 2012 09:50:30 +0000</pubDate>
		<dc:creator>Buzut</dc:creator>
				<category><![CDATA[Actu]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://buzut.fr/?p=1970</guid>
		<description><![CDATA[<p>La &#171;&#160;technologie&#160;&#187; Retina, si on peut l&#8217;appeler ainsi, consiste en une densité de pixels assez élevé pour que l&#8217;œil (d&#8217;où le nom de retina) ne puisse discerner les pixels sur l&#8217;écran. Cependant, avec une telle densité de pixels, pour ne pas que tout paraisse minuscule sur ces écrans, Apple a décidé de tout simplement doubler [...]</p><p>The post <a href="http://buzut.fr/2012/11/28/webdesign-pour-ecrans-retina/">Webdesign pour écrans Retina</a> appeared first on <a href="http://buzut.fr">Buzut</a>.</p>]]></description>
				<content:encoded><![CDATA[ <p>La &laquo;&nbsp;technologie&nbsp;&raquo; Retina, si on peut l&rsquo;appeler ainsi, consiste en une densité de pixels assez élevé pour que l&rsquo;œil (d&rsquo;où le nom de retina) ne puisse discerner les pixels sur l&rsquo;écran. Cependant, avec une telle densité de pixels, pour ne pas que tout paraisse minuscule sur ces écrans, Apple a décidé de tout simplement doubler la valeur en pixel de chaque élément. Concrètement, cela signifie que dans votre feuille CSS, tout élément dont vous décidé par exemple width: 100px; fera en réalité 200px. Tout est multiplié par deux.</p>
<p>Les proportions sont conservées et dans l&rsquo;ensemble ça ne défigurera pas votre site, à l&rsquo;exception des images, qui risquent de paraître d&rsquo;une bien piètre qualité. Autant s&rsquo;adapter à cet usage, d&rsquo;autant plus que de plus en plus de devices (tablettes smartphones et ordinateur) vont adopter des écrans de hautes résolutions.</p>
<p>Voici donc un article (en anglais), qui explore les différente manière de <a href="http://www.inserthtml.com/2012/09/designing-retina-devices/">faire un design compatible Retina</a>, sans pour autant pénaliser les écrans &laquo;&nbsp;normaux&nbsp;&raquo;.</p>
<p>The post <a href="http://buzut.fr/2012/11/28/webdesign-pour-ecrans-retina/">Webdesign pour écrans Retina</a> appeared first on <a href="http://buzut.fr">Buzut</a>.</p><div class='yarpp-related-rss'>
<p>Je vous recommande aussi les articles suivants :</p><ol>
<li><a href='http://buzut.fr/2012/06/07/lumire-sur-les-fetch-modes-de-pdo/' rel='bookmark' title='Lumière sur les fetch modes de PDO'>Lumière sur les fetch modes de PDO</a></li>
<li><a href='http://buzut.fr/2012/04/23/comment-creer-un-crawler-web-en-php/' rel='bookmark' title='Comment créer un crawler web en php'>Comment créer un crawler web en php</a></li>
<li><a href='http://buzut.fr/2012/11/21/insight-sur-les-filtres-css3/' rel='bookmark' title='Insight sur les filtres CSS3'>Insight sur les filtres CSS3</a></li>
</ol>
<p>La liste des entrées similaires est établie par le module d’extension <a href='http://yarpp.org'>YARPP</a>.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://buzut.fr/2012/11/28/webdesign-pour-ecrans-retina/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Insight sur les filtres CSS3</title>
		<link>http://buzut.fr/2012/11/21/insight-sur-les-filtres-css3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=insight-sur-les-filtres-css3</link>
		<comments>http://buzut.fr/2012/11/21/insight-sur-les-filtres-css3/#comments</comments>
		<pubDate>Wed, 21 Nov 2012 08:06:17 +0000</pubDate>
		<dc:creator>Buzut</dc:creator>
				<category><![CDATA[Actu]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://buzut.fr/?p=1964</guid>
		<description><![CDATA[<p>Exposons un cas concret : vous avez un site dynamique, et vous avez besoin de deux versions de la même image, l&#8217;originale, et une version floutée, plus sombre… que vous appliquerez par exemple au survol de la souris. Premièrement, ceci est une affaire de client-side ! Et celà a de multiples avantages&#160;: Si les images [...]</p><p>The post <a href="http://buzut.fr/2012/11/21/insight-sur-les-filtres-css3/">Insight sur les filtres CSS3</a> appeared first on <a href="http://buzut.fr">Buzut</a>.</p>]]></description>
				<content:encoded><![CDATA[ <p>Exposons un cas concret : vous avez un site dynamique, et vous avez besoin de deux versions de la même image, l&rsquo;originale, et une version floutée, plus sombre… que vous appliquerez par exemple au survol de la souris. Premièrement, ceci est une affaire de client-side ! Et celà a de multiples avantages&nbsp;:</p>
<ul>
<li>Si les images sont ajoutées dynamiquement, on évite un traitement supplémentaire gourmand en ressource (flou, sépia…)</li>
<li>On évite de prendre plus de place sur le disque dur avec deux images alors qu&rsquo;une seule peut suffire</li>
<li>On évite aussi la consommation de plus de bande passante et un temps de chargement supplémentaire pour le client</li>
</ul>
<p>Enfin, vous comprenez qu&rsquo;il n&rsquo;y a que des avantages à déporter le traitement des images côté client. On pense évidemment à JavaScript pour faire ce boulot. Oui… pourquoi pas… Mais sachez que les filtres de CSS permettent d&rsquo;en faire autant, le tout dans une extrême simplicité. Pour vous mettre l&rsquo;eau à la bouche, voici les effets qu&rsquo;il est possible d&rsquo;appliquer :</p>
<ul>
<li>flou,</li>
<li>luminosité,</li>
<li>saturation,</li>
<li>contraste,</li>
<li>teinte,</li>
<li>inversion,</li>
<li>nuances de gris,</li>
<li>sépia</li>
</ul>
<p>Ça ouvre quand même pas mal de possibilités ! Pour en savoir plus, je vous invites à aller jetez un œil à la <a href="http://inserthtml.developpez.com/tutoriels/css/filtres-css3-html-images/">traduction de l&rsquo;article de Johnny Simpson</a> sur Développez.com.</p>
<p>The post <a href="http://buzut.fr/2012/11/21/insight-sur-les-filtres-css3/">Insight sur les filtres CSS3</a> appeared first on <a href="http://buzut.fr">Buzut</a>.</p><div class='yarpp-related-rss'>
<p>Je vous recommande aussi les articles suivants :</p><ol>
<li><a href='http://buzut.fr/2012/02/26/un-ssd-dans-mon-pc/' rel='bookmark' title='Un SSD dans mon PC ?'>Un SSD dans mon PC ?</a></li>
<li><a href='http://buzut.fr/2012/06/11/php-et-la-video-avec-ffmpeg-php/' rel='bookmark' title='php et la vidéo avec ffmpeg-php'>php et la vidéo avec ffmpeg-php</a></li>
<li><a href='http://buzut.fr/2012/02/03/voyage-a-la-decouverte-de-lirc/' rel='bookmark' title='Voyage à la découverte de l&rsquo;IRC'>Voyage à la découverte de l&rsquo;IRC</a></li>
</ol>
<p>La liste des entrées similaires est établie par le module d’extension <a href='http://yarpp.org'>YARPP</a>.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://buzut.fr/2012/11/21/insight-sur-les-filtres-css3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installer et paramétrer Fail2Ban</title>
		<link>http://buzut.fr/2012/11/19/installer-et-parametrer-fail2ban/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installer-et-parametrer-fail2ban</link>
		<comments>http://buzut.fr/2012/11/19/installer-et-parametrer-fail2ban/#comments</comments>
		<pubDate>Mon, 19 Nov 2012 21:45:36 +0000</pubDate>
		<dc:creator>Buzut</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://buzut.fr/?p=1973</guid>
		<description><![CDATA[<p>Fail2Ban, en deux mots, c&#8217;est un petit utilitaire qui permet de configurer le parefeu iptables de Linux à la volée. Vous lui donnez une liste de règles, lesquelles lui permettent de détecter si quelqu&#8217;un tente de brutefrcer votre SSH, de vous faire un DoS sur apache etc, et à la volée, Fail2Ban prend les mesures [...]</p><p>The post <a href="http://buzut.fr/2012/11/19/installer-et-parametrer-fail2ban/">Installer et paramétrer Fail2Ban</a> appeared first on <a href="http://buzut.fr">Buzut</a>.</p>]]></description>
				<content:encoded><![CDATA[ <div class="headerimg">
    <a href="/2012/11/19/installer-et-parametrer-fail2ban/"><img src="http://buzut.fr/wp-content/uploads/2012/01/vault-wide.jpg" alt="fail2ban" title="vault-wide" width="700" height="200" class="alignnone size-full wp-image-518" /></a>
</div>
<p>Fail2Ban, en deux mots, c&rsquo;est un petit utilitaire qui permet de configurer le parefeu iptables de Linux à la volée. Vous lui donnez une liste de règles, lesquelles lui permettent de détecter si quelqu&rsquo;un tente de brutefrcer votre SSH, de vous faire un DoS sur apache etc, et à la volée, Fail2Ban prend les mesures qui s&rsquo;imposent pour vous prémunir de ces attaques. Plutôt pratique !</p>
<p><span id="more-1973"></span></p>
<h3>Installation</h3>
<p>Pour l&rsquo;installer, c&rsquo;est très simple :</p>

<div class="wp_codebox"><table><tr id="p197350"><td class="code" id="p1973code50"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> fail2ban</pre></td></tr></table></div>

<p>Passons maintenant au plus important, la configuration de l&rsquo;engin ! Il y a trois endroits où vous allez devoir fouiller :</p>
<h3>Les réglages</h3>

<div class="wp_codebox"><table><tr id="p197351"><td class="code" id="p1973code51"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># le fichier de configuration général</span>
<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>fail2ban<span style="color: #000000; font-weight: bold;">/</span>fail2ban.conf
&nbsp;
<span style="color: #666666; font-style: italic;"># le fichier relatifs à vos prisons</span>
<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>fail2ban<span style="color: #000000; font-weight: bold;">/</span>jail.conf 
&nbsp;
<span style="color: #666666; font-style: italic;"># le dossier filer.d qui contient tous les filtres définis dans le jail.conf</span>
<span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>fail2ban<span style="color: #000000; font-weight: bold;">/</span>filter.d</pre></td></tr></table></div>

<p>Au niveau du fail2ban.conf, il n&rsquo;y a en réalité pas grand chose à faire. Vous pourrez paramétrer l&rsquo;endroit où fail2ban doit enregistrer ses logs, la verbosité de ces derniers et modifier les réglages du socket unix. En ce qui me concerne, je ne touche à rien.</p>
<h4>Activation des filtres par défaut</h4>
<p>Passons à plus intéressant, le jail.conf. Les paramètres que je modifie sont les suivants :</p>

<div class="wp_codebox"><table><tr id="p197352"><td class="code" id="p1973code52"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># mettez ici votre adresse ip histoire de ne pas vous blacklister tout seul</span>
<span style="color: #666666; font-style: italic;"># il est possible de mettre plusieurs adresses, il suffit pour cela de les séparer par un espace </span>
<span style="color: #666666; font-style: italic;"># pour le bantime, je met 900, il est à 600 par défaut</span>
ignoreip = 127.0.0.1<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">8</span>
bantime  = <span style="color: #000000;">900</span>
maxretry = <span style="color: #000000;">3</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span>ssh-ddos<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #666666; font-style: italic;"># j'active cette jail pour protéger mon ssh des Ddos</span>
enabled  = <span style="color: #c20cb9; font-weight: bold;">true</span>  
port     = <span style="color: #c20cb9; font-weight: bold;">ssh</span>
filter   = sshd-ddos
logpath  = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>auth.log
maxretry = <span style="color: #000000;">6</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># si on possède un serveur apache</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span>apache<span style="color: #7a0874; font-weight: bold;">&#93;</span>
enabled = <span style="color: #c20cb9; font-weight: bold;">true</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span>…<span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span>apache-noscript<span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
enabled  = <span style="color: #c20cb9; font-weight: bold;">true</span>  
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span>…<span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span>apache-overflows<span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
enabled  = <span style="color: #c20cb9; font-weight: bold;">true</span></pre></td></tr></table></div>

<p>Voilà pour les filtres pré-installés. Je n&rsquo;active rien d&rsquo;aute étant donné que je n&rsquo;ai pas de serveur dns, ni de serveur de mail, ni de ftp, mais vous saurez mettre &laquo;&nbsp;true&nbsp;&raquo; dans les jail qui correspondent à ce qui peuple votre serveur, j&rsquo;en suis certain !</p>
<h4>Ajouts de nouveaux filtres</h4>
<p>On va maintenant ajouter quelques jails pour parer des attaques supplémentaires. On va commencer par les dos, ajoutons donc une nouvelle jail dans notre jail.conf :</p>

<div class="wp_codebox"><table><tr id="p197353"><td class="code" id="p1973code53"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># pour apache</span>
<span style="color: #666666; font-style: italic;"># Protect against DOS attack</span>
<span style="color: #666666; font-style: italic;"># 360 requests in 2 min &gt; Ban for 10 minutes</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span>http-get-dos<span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
enabled = <span style="color: #c20cb9; font-weight: bold;">true</span>
port = http,https
filter = http-get-dos
logpath = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>access.log
maxretry = <span style="color: #000000;">360</span>
findtime = <span style="color: #000000;">120</span>
action = iptables<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #007800;">name</span>=HTTP, <span style="color: #007800;">port</span>=http, <span style="color: #007800;">protocol</span>=tcp<span style="color: #7a0874; font-weight: bold;">&#93;</span>
mail-whois-lines<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #007800;">name</span>=<span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>__name__<span style="color: #7a0874; font-weight: bold;">&#41;</span>s, <span style="color: #007800;">dest</span>=<span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>destemail<span style="color: #7a0874; font-weight: bold;">&#41;</span>s, <span style="color: #007800;">logpath</span>=<span style="color: #000000; font-weight: bold;">%</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>logpath<span style="color: #7a0874; font-weight: bold;">&#41;</span>s<span style="color: #7a0874; font-weight: bold;">&#93;</span>
bantime = <span style="color: #000000;">600</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># si vous utilisez nginx, il faut mettre le fichier de log adéquat</span>
logpath = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>varnish<span style="color: #000000; font-weight: bold;">/</span>access.log</pre></td></tr></table></div>

<p>On va maintenant devoir créer le filtre correspondant :</p>

<div class="wp_codebox"><table><tr id="p197354"><td class="code" id="p1973code54"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">nano</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>fail2ban<span style="color: #000000; font-weight: bold;">/</span>filter.d<span style="color: #000000; font-weight: bold;">/</span>http-get-dos.conf
&nbsp;
<span style="color: #666666; font-style: italic;"># Fail2Ban configuration file</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Author: http://www.go2linux.org</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#</span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span>Definition<span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Option: failregex</span>
<span style="color: #666666; font-style: italic;"># Note: This regex will match any GET entry in your logs, so basically all valid and not valid entries are a match.</span>
<span style="color: #666666; font-style: italic;"># You should set up in the jail.conf file, the maxretry and findtime carefully in order to avoid false positives.</span>
failregex = ^<span style="color: #000000; font-weight: bold;">&lt;</span>HOST<span style="color: #000000; font-weight: bold;">&gt;</span>.<span style="color: #000000; font-weight: bold;">*</span><span style="color: #ff0000;">&quot;GET
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
&nbsp;
ignoreregex =</span></pre></td></tr></table></div>

<p>Pour apache, on va aussi ajouter une règle anti w00tw00t (qui est un robot qui scan à la recherche de failles)</p>

<div class="wp_codebox"><table><tr id="p197355"><td class="code" id="p1973code55"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># dans le jail.conf </span>
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span>apache-w00tw00t<span style="color: #7a0874; font-weight: bold;">&#93;</span>
enabled = <span style="color: #c20cb9; font-weight: bold;">true</span>
filter = apache-w00tw00t
action = iptables<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #007800;">name</span>=Apache-w00tw00t,<span style="color: #007800;">port</span>=<span style="color: #000000;">80</span>,<span style="color: #007800;">protocol</span>=tcp<span style="color: #7a0874; font-weight: bold;">&#93;</span>
logpath = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>access<span style="color: #000000; font-weight: bold;">*</span>.log
maxretry = <span style="color: #000000;">1</span></pre></td></tr></table></div>

<p>Et bien entendu, la règle correspondante :</p>

<div class="wp_codebox"><table><tr id="p197356"><td class="code" id="p1973code56"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">nano</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>fail2ban<span style="color: #000000; font-weight: bold;">/</span>filter.d<span style="color: #000000; font-weight: bold;">/</span>apache-w00tw00t.conf
&nbsp;
<span style="color: #7a0874; font-weight: bold;">&#91;</span>Definition<span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
failregex = ^<span style="color: #000000; font-weight: bold;">&lt;</span>HOST<span style="color: #000000; font-weight: bold;">&gt;</span> -.<span style="color: #000000; font-weight: bold;">*</span><span style="color: #ff0000;">&quot;GET \/w00tw00t\.at\.ISC\.SANS\.DFind\:\).*&quot;</span>.<span style="color: #000000; font-weight: bold;">*</span>
&nbsp;
ignoreregex =</pre></td></tr></table></div>

<p>En ce qui concerne le filtre wootwoot, il semble qu&rsquo;on puisse directement renseigner le fichier de log de nginx à la place de celui d&rsquo;apache dans le cas d&rsquo;un serveur nginx. Les logs sont assez similaires pour que ça fonctionne sans problème.</p>
<p>Petite config spéciale NGINX :</p>

<div class="wp_codebox"><table><tr id="p197357"><td class="code" id="p1973code57"><pre class="bash" style="font-family:monospace;"> <span style="color: #7a0874; font-weight: bold;">&#91;</span>nginx-auth<span style="color: #7a0874; font-weight: bold;">&#93;</span>
 enabled = <span style="color: #c20cb9; font-weight: bold;">true</span>
 filter = nginx-auth
 action = iptables-multiport<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #007800;">name</span>=NoAuthFailures, <span style="color: #007800;">port</span>=<span style="color: #ff0000;">&quot;http,https&quot;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
 logpath = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">*/*</span>error<span style="color: #000000; font-weight: bold;">*</span>.log
 bantime = <span style="color: #000000;">600</span> <span style="color: #666666; font-style: italic;"># 10 minutes</span>
 maxretry = <span style="color: #000000;">6</span>
&nbsp;
 <span style="color: #7a0874; font-weight: bold;">&#91;</span>nginx-login<span style="color: #7a0874; font-weight: bold;">&#93;</span>
 enabled = <span style="color: #c20cb9; font-weight: bold;">true</span>
 filter = nginx-login
 action = iptables-multiport<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #007800;">name</span>=NoLoginFailures, <span style="color: #007800;">port</span>=<span style="color: #ff0000;">&quot;http,https&quot;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
 logpath = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">*/*</span>access<span style="color: #000000; font-weight: bold;">*</span>.log
 bantime = <span style="color: #000000;">600</span> <span style="color: #666666; font-style: italic;"># 10 minutes</span>
 maxretry = <span style="color: #000000;">6</span>
&nbsp;
 <span style="color: #7a0874; font-weight: bold;">&#91;</span>nginx-badbots<span style="color: #7a0874; font-weight: bold;">&#93;</span>
 enabled  = <span style="color: #c20cb9; font-weight: bold;">true</span>
 filter = apache-badbots
 action = iptables-multiport<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #007800;">name</span>=BadBots, <span style="color: #007800;">port</span>=<span style="color: #ff0000;">&quot;http,https&quot;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
 logpath = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">*/*</span>access<span style="color: #000000; font-weight: bold;">*</span>.log
 bantime = <span style="color: #000000;">86400</span> <span style="color: #666666; font-style: italic;"># 1 day</span>
 maxretry = <span style="color: #000000;">1</span>
&nbsp;
 <span style="color: #7a0874; font-weight: bold;">&#91;</span>nginx-noscript<span style="color: #7a0874; font-weight: bold;">&#93;</span>
 enabled = <span style="color: #c20cb9; font-weight: bold;">true</span>
 action = iptables-multiport<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #007800;">name</span>=NoScript, <span style="color: #007800;">port</span>=<span style="color: #ff0000;">&quot;http,https&quot;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
 filter = nginx-noscript
 logpath = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">*/*</span>access<span style="color: #000000; font-weight: bold;">*</span>.log
 maxretry = <span style="color: #000000;">6</span>
 bantime  = <span style="color: #000000;">86400</span> <span style="color: #666666; font-style: italic;"># 1 day</span></pre></td></tr></table></div>

<p>Puis créez les fichiers correspondants dans filter.d :</p>

<div class="wp_codebox"><table><tr id="p197358"><td class="code" id="p1973code58"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Noscript filter /etc/fail2ban/filter.d/nginx-noscript.conf:</span>
 <span style="color: #666666; font-style: italic;">#</span>
 <span style="color: #666666; font-style: italic;"># Block IPs trying to execute scripts such as .php, .pl, .exe and other funny scripts.</span>
 <span style="color: #666666; font-style: italic;">#</span>
 <span style="color: #666666; font-style: italic;"># Matches e.g.</span>
 <span style="color: #666666; font-style: italic;"># 192.168.1.1 - - &quot;GET /something.php</span>
 <span style="color: #666666; font-style: italic;">#</span>
 <span style="color: #7a0874; font-weight: bold;">&#91;</span>Definition<span style="color: #7a0874; font-weight: bold;">&#93;</span>
 failregex = ^<span style="color: #000000; font-weight: bold;">&lt;</span>HOST<span style="color: #000000; font-weight: bold;">&gt;</span> -.<span style="color: #000000; font-weight: bold;">*</span>GET.<span style="color: #000000; font-weight: bold;">*</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>\.php<span style="color: #000000; font-weight: bold;">|</span>\.asp<span style="color: #000000; font-weight: bold;">|</span>\.exe<span style="color: #000000; font-weight: bold;">|</span>\.pl<span style="color: #000000; font-weight: bold;">|</span>\.cgi<span style="color: #000000; font-weight: bold;">|</span>\scgi<span style="color: #7a0874; font-weight: bold;">&#41;</span>
 ignoreregex =
&nbsp;
 <span style="color: #666666; font-style: italic;">#</span>
 <span style="color: #666666; font-style: italic;"># Auth filter /etc/fail2ban/filter.d/nginx-auth.conf:</span>
 <span style="color: #666666; font-style: italic;">#</span>
 <span style="color: #666666; font-style: italic;"># Blocks IPs that fail to authenticate using basic authentication</span>
 <span style="color: #666666; font-style: italic;">#</span>
 <span style="color: #7a0874; font-weight: bold;">&#91;</span>Definition<span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
 failregex = no user<span style="color: #000000; font-weight: bold;">/</span>password was provided <span style="color: #000000; font-weight: bold;">for</span> basic authentication.<span style="color: #000000; font-weight: bold;">*</span>client: <span style="color: #000000; font-weight: bold;">&lt;</span>HOST<span style="color: #000000; font-weight: bold;">&gt;</span>
             user .<span style="color: #000000; font-weight: bold;">*</span> was not found in.<span style="color: #000000; font-weight: bold;">*</span>client: <span style="color: #000000; font-weight: bold;">&lt;</span>HOST<span style="color: #000000; font-weight: bold;">&gt;</span>
             user .<span style="color: #000000; font-weight: bold;">*</span> password mismatch.<span style="color: #000000; font-weight: bold;">*</span>client: <span style="color: #000000; font-weight: bold;">&lt;</span>HOST<span style="color: #000000; font-weight: bold;">&gt;</span>
&nbsp;
 ignoreregex =
&nbsp;
 <span style="color: #666666; font-style: italic;">#</span>
 <span style="color: #666666; font-style: italic;"># Login filter /etc/fail2ban/filter.d/nginx-login.conf:</span>
 <span style="color: #666666; font-style: italic;">#</span>
 <span style="color: #666666; font-style: italic;"># Blocks IPs that fail to authenticate using web application's log in page</span>
 <span style="color: #666666; font-style: italic;">#</span>
 <span style="color: #666666; font-style: italic;"># Scan access log for HTTP 200 + POST /sessions =&gt; failed log in</span>
 <span style="color: #7a0874; font-weight: bold;">&#91;</span>Definition<span style="color: #7a0874; font-weight: bold;">&#93;</span>
 failregex = ^<span style="color: #000000; font-weight: bold;">&lt;</span>HOST<span style="color: #000000; font-weight: bold;">&gt;</span> -.<span style="color: #000000; font-weight: bold;">*</span>POST <span style="color: #000000; font-weight: bold;">/</span>sessions HTTP<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1</span>\..<span style="color: #ff0000;">&quot; 200
 ignoreregex =</span></pre></td></tr></table></div>

<h3>Se protéger des DDoS de Loic</h3>
<p>Créer la jail :</p>

<div class="wp_codebox"><table><tr id="p197359"><td class="code" id="p1973code59"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>apache-loic<span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
enabled = <span style="color: #c20cb9; font-weight: bold;">true</span>
port = http
filter = apache-loic
action = iptables<span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #007800;">name</span>=Apache-loic, <span style="color: #007800;">port</span>=http, <span style="color: #007800;">protocol</span>=tcp<span style="color: #7a0874; font-weight: bold;">&#93;</span>
<span style="color: #666666; font-style: italic;"># à adapter en fonction de votre config</span>
<span style="color: #666666; font-style: italic;"># je n'ai pas testé avec nginx mais ça devrait marcher sans problème</span>
logpath = <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>log<span style="color: #000000; font-weight: bold;">/</span>apache2<span style="color: #000000; font-weight: bold;">/</span>access<span style="color: #000000; font-weight: bold;">*</span>.log
maxretry = <span style="color: #000000;">1</span>
bantime = <span style="color: #000000;">3600</span></pre></td></tr></table></div>

<p>Et au niveau du filte, voilà ce qu&rsquo;on va mettre :</p>

<div class="wp_codebox"><table><tr id="p197360"><td class="code" id="p1973code60"><pre class="bash" style="font-family:monospace;"> <span style="color: #666666; font-style: italic;">#</span>
 <span style="color: #666666; font-style: italic;"># Login filter /etc/fail2ban/filter.d/apache-loic.conf:</span>
 <span style="color: #666666; font-style: italic;">#</span>
 <span style="color: #666666; font-style: italic;"># Blocks request containing &quot;U dun goofed&quot; and doesn't contain the &quot;GET&quot; parameter</span>
 <span style="color: #666666; font-style: italic;">#</span>
 <span style="color: #7a0874; font-weight: bold;">&#91;</span>Definition<span style="color: #7a0874; font-weight: bold;">&#93;</span>
 failregex = <span style="color: #000000; font-weight: bold;">&lt;</span>HOST<span style="color: #000000; font-weight: bold;">&gt;</span>.<span style="color: #000000; font-weight: bold;">*</span><span style="color: #000000; font-weight: bold;">\&quot;</span><span style="color: #7a0874; font-weight: bold;">&#40;</span>U dun goofed<span style="color: #7a0874; font-weight: bold;">&#41;</span>
 ignoreregex =</pre></td></tr></table></div>

<h3>Erreurs au lancement</h3>
<p>Il se peut que vous ayez des erreurs au lancement de fail2ban dans le cas notamment de multiples jails activées. Vous vous en rendrez compte en jetant un œil à vos logs : <strong>/var/log/fail2ban.log</strong> :</p>

<div class="wp_codebox"><table><tr id="p197361"><td class="code" id="p1973code61"><pre class="bash" style="font-family:monospace;"><span style="color: #000000;">2012</span>-<span style="color: #000000;">11</span>-<span style="color: #000000;">18</span> 04:<span style="color: #000000;">37</span>:<span style="color: #000000;">35</span>,<span style="color: #000000;">774</span> fail2ban.actions.action: ERROR  iptables <span style="color: #660033;">-n</span> <span style="color: #660033;">-L</span> INPUT <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-q</span> fail2ban-ssh returned <span style="color: #000000;">100</span>
<span style="color: #000000;">2012</span>-<span style="color: #000000;">11</span>-<span style="color: #000000;">18</span> 04:<span style="color: #000000;">37</span>:<span style="color: #000000;">35</span>,<span style="color: #000000;">774</span> fail2ban.actions.action: ERROR  Invariant check failed. Trying to restore a sane environment
<span style="color: #000000;">2012</span>-<span style="color: #000000;">11</span>-<span style="color: #000000;">18</span> 04:<span style="color: #000000;">37</span>:<span style="color: #000000;">35</span>,<span style="color: #000000;">783</span> fail2ban.actions.action: ERROR  iptables <span style="color: #660033;">-D</span> INPUT <span style="color: #660033;">-p</span> tcp <span style="color: #660033;">-m</span> multiport <span style="color: #660033;">--dports</span> <span style="color: #c20cb9; font-weight: bold;">ssh</span> <span style="color: #660033;">-j</span> fail2ban-ssh</pre></td></tr></table></div>

<p>Pour palier à ce problème, il faut ajouter un petit délai entre le chargement des jails (c&rsquo;est aux alentours de la ligne 140) <strong>/usr/bin/fail2ban-client</strong> :</p>

<div class="wp_codebox"><table><tr id="p197362"><td class="code" id="p1973code62"><pre class="bash" style="font-family:monospace;">def __ping<span style="color: #7a0874; font-weight: bold;">&#40;</span>self<span style="color: #7a0874; font-weight: bold;">&#41;</span>:
                <span style="color: #7a0874; font-weight: bold;">return</span> self.__processCmd<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">&quot;ping&quot;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>, False<span style="color: #7a0874; font-weight: bold;">&#41;</span>
&nbsp;
        def __processCmd<span style="color: #7a0874; font-weight: bold;">&#40;</span>self, cmd, showRet = True<span style="color: #7a0874; font-weight: bold;">&#41;</span>:
                beautifier = Beautifier<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
                <span style="color: #000000; font-weight: bold;">for</span> c <span style="color: #000000; font-weight: bold;">in</span> cmd: 
<span style="color: #666666; font-style: italic;"># ajoutez la ligne ci-dessous </span>
                        time.sleep<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">0.1</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
                        beautifier.setInputCmd<span style="color: #7a0874; font-weight: bold;">&#40;</span>c<span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></td></tr></table></div>

<p>Redémarrez fail2ban <span class="codeline">service fail2ban restart</span>, retournez voir vos logs, l&rsquo;erreur ne devrait plus se manifester. Et voilà le travail ! Vos serveurs sont un peu plus en sécurité (ou un peu moins en danger) c&rsquo;est au choix.</p>
<p>The post <a href="http://buzut.fr/2012/11/19/installer-et-parametrer-fail2ban/">Installer et paramétrer Fail2Ban</a> appeared first on <a href="http://buzut.fr">Buzut</a>.</p><div class='yarpp-related-rss'>
<p>Je vous recommande aussi les articles suivants :</p><ol>
<li><a href='http://buzut.fr/2013/04/05/filtre-anti-ddos-generique/' rel='bookmark' title='Filtre anti-DDoS générique'>Filtre anti-DDoS générique</a></li>
<li><a href='http://buzut.fr/2013/01/29/anti-hotlinking-pour-video-avec-nginx/' rel='bookmark' title='Anti-hotlinking pour vidéo avec NGINX'>Anti-hotlinking pour vidéo avec NGINX</a></li>
<li><a href='http://buzut.fr/2012/07/04/les-petits-secrets-de-mamp/' rel='bookmark' title='Les petits secrets de MAMP'>Les petits secrets de MAMP</a></li>
</ol>
<p>La liste des entrées similaires est établie par le module d’extension <a href='http://yarpp.org'>YARPP</a>.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://buzut.fr/2012/11/19/installer-et-parametrer-fail2ban/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Connexion SSH automatique</title>
		<link>http://buzut.fr/2012/11/13/connexion-ssh-automatique/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=connexion-ssh-automatique</link>
		<comments>http://buzut.fr/2012/11/13/connexion-ssh-automatique/#comments</comments>
		<pubDate>Tue, 13 Nov 2012 09:44:48 +0000</pubDate>
		<dc:creator>Buzut</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://buzut.fr/?p=1954</guid>
		<description><![CDATA[<p>Vous en avez peut-être marre de sans arrêt devoir taper un mot de passe pour vous connecter à vos serveurs en ssh. Voir pire, ça vous inquiète de devoir passer en clair un mot de passe dans un script qui à besoin d&#8217;une connexion ssh. Mais saviez-vous les amis qu&#8217;il est tout à fait possible [...]</p><p>The post <a href="http://buzut.fr/2012/11/13/connexion-ssh-automatique/">Connexion SSH automatique</a> appeared first on <a href="http://buzut.fr">Buzut</a>.</p>]]></description>
				<content:encoded><![CDATA[ <div class="headerimg">
    <a href="2012/11/13/connexion-ssh-automatique/"><img src="http://buzut.fr/wp-content/uploads/2012/11/love-bin-bash-wide.jpg" alt="connexion ssh sans mot de passe" title="love-bin-bash-wide" width="700" height="200" class="alignnone size-full wp-image-1955" /></a>
</div>
<p>Vous en avez peut-être marre de sans arrêt devoir taper un mot de passe pour vous connecter à vos serveurs en ssh. Voir pire, ça vous inquiète de devoir passer en clair un mot de passe dans un script qui à besoin d&rsquo;une connexion ssh. Mais saviez-vous les amis qu&rsquo;<strong>il est tout à fait possible de se passer de ce mot de passe</strong> ? Il suffit pour cela de configurer une reconnaissance du client par clef ssh. C&rsquo;est à dire que la machine à partir de laquelle vous vous connectez publie une clef (sa signature), laquelle sera enregistrée sur le serveur ssh. Par la suite, le serveur ssh saura reconnaitre ce client, donc si la signature est identique, il ne demandera plus aucun mot de passe. Et tout ceci s&rsquo;effectue en à peine quelques minutes !</p>
<p><span id="more-1954"></span></p>
<h3>Côté serveur, modification du sshd</h3>
<p>La première chose à faire est d&rsquo;aller effectuer une petite modification dans le fichier de configuration de ssh, le sshd_config. En effet, l’option de connexion sans mot de passe par clef est désactivée par défaut :</p>

<div class="wp_codebox"><table><tr id="p195466"><td class="code" id="p1954code66"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">nano</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>ssh<span style="color: #000000; font-weight: bold;">/</span>sshd_config
&nbsp;
<span style="color: #666666; font-style: italic;"># décommenter la ligne ci-dessous</span>
AuthorizedKeysFile      <span style="color: #000000; font-weight: bold;">%</span>h<span style="color: #000000; font-weight: bold;">/</span>.ssh<span style="color: #000000; font-weight: bold;">/</span>authorized_keys</pre></td></tr></table></div>

<p>Une fois la ligne dé-commentée et le fichier enregistré, on redémarre le serveur ssh : <span class="codeline">sudo service ssh restart</span>. Et c&rsquo;est tout bon du côté de la config du serveur.</p>
<h3>Côté client, création et export des clefs ssh</h3>
<h4>Création de la clef</h4>
<p>Là encore, l&rsquo;opération est très simple et très rapide. On commence par créer une paire de clefs avec la commande ssh-keygen. On ne précisera pas de mot de passe pour protéger les clefs. Cette option est utile afin de vous permettre d&rsquo;avoir un seul mot de passe pour l&rsquo;ensemble de vos connexions ssh, au lieu d&rsquo;un différent par serveur. Néanmoins, ça complique les choses dans un script, et puis vous n&rsquo;avez cas garder un oeil sur votre laptop ou chiffrer l&rsquo;ensemble du disque (ça aide en cas de vol – ou de voyage en chine <img src='http://buzut.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) De même, je laisse l&rsquo;emplacement de sauvegarde par défaut (suffit donc d&rsquo;appuyer sur entrer).</p>

<div class="wp_codebox"><table><tr id="p195467"><td class="code" id="p1954code67"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">ssh-keygen</span>
Generating public<span style="color: #000000; font-weight: bold;">/</span>private rsa key pair.
Enter <span style="color: #c20cb9; font-weight: bold;">file</span> <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #c20cb9; font-weight: bold;">which</span> to save the key <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>buzut<span style="color: #000000; font-weight: bold;">/</span>.ssh<span style="color: #000000; font-weight: bold;">/</span>id_rsa<span style="color: #7a0874; font-weight: bold;">&#41;</span>: 
Enter passphrase <span style="color: #7a0874; font-weight: bold;">&#40;</span>empty <span style="color: #000000; font-weight: bold;">for</span> no passphrase<span style="color: #7a0874; font-weight: bold;">&#41;</span>: 
Enter same passphrase again: 
Your identification has been saved <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>buzut<span style="color: #000000; font-weight: bold;">/</span>.ssh<span style="color: #000000; font-weight: bold;">/</span>id_rsa.
Your public key has been saved <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>buzut<span style="color: #000000; font-weight: bold;">/</span>.ssh<span style="color: #000000; font-weight: bold;">/</span>id_rsa.pub.
The key fingerprint is:
<span style="color: #c20cb9; font-weight: bold;">ed</span>:08:<span style="color: #000000;">92</span>:af:<span style="color: #000000;">32</span>:<span style="color: #000000;">79</span>:<span style="color: #000000;">90</span>:00:<span style="color: #000000;">27</span>:<span style="color: #000000;">97</span>:b8:ca:e4:<span style="color: #000000;">99</span>:<span style="color: #000000;">91</span>:5e buzut<span style="color: #000000; font-weight: bold;">@</span>nibbler
The key<span style="color: #ff0000;">'s randomart image is:
+--[ RSA 2048]----+
| . .             |
|+ +              |
|.=.              |
|o+ E .   .       |
|*.=.o . S .      |
|.*o  o . o       |
|   o  . . .      |
|  + ..           |
|   +.            |
+-----------------+</span></pre></td></tr></table></div>

<h4>Export de la clef</h4>
<p>Voici l&rsquo;ultime et dernière étape avant de pouvoir se connecter sans entrer aucun mot de passe : exporter sur le serveur ssh, notre clef ssh nouvellement créée. Cette étape, triviale, s&rsquo;effectue avec la commande <span class="codeline">ssh-copy-id user@serverAdress</span>. Il va vous demander le mot de passe (pour la dernière fois). Une fois l&rsquo;opération effectuée, testez : <span class="codeline">ssh user@serverAddress</span>, hop vous devriez être connecté sans autre forme de procès, pratique !</p>
<h3>Interdire la connexion par mot de passe</h3>
<p>Maintenant que nous avons rendu notre système plus pratique, pourquoi ne pas aussi améliorer la sécurité en désactivant la connexion par mot de passe ? Ainsi, il vous sera impossible de vous connecter depuis tout ordinateur dont le certificat n&rsquo;a pas été enregistré sur le serveur !</p>
<p>Pour ce faire, c&rsquo;est très simple, décommenter et de mettre à no la directive suivante :</p>

<div class="wp_codebox"><table><tr id="p195468"><td class="code" id="p1954code68"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Change to no to disable tunnelled clear text passwords</span>
PasswordAuthentication no</pre></td></tr></table></div>

<p>The post <a href="http://buzut.fr/2012/11/13/connexion-ssh-automatique/">Connexion SSH automatique</a> appeared first on <a href="http://buzut.fr">Buzut</a>.</p><div class='yarpp-related-rss'>
<p>Je vous recommande aussi les articles suivants :</p><ol>
<li><a href='http://buzut.fr/2012/01/14/les-chmod-pour-lhebergement-internet/' rel='bookmark' title='Les CHMOD pour l&rsquo;hébergement internet'>Les CHMOD pour l&rsquo;hébergement internet</a></li>
<li><a href='http://buzut.fr/2012/11/19/installer-et-parametrer-fail2ban/' rel='bookmark' title='Installer et paramétrer Fail2Ban'>Installer et paramétrer Fail2Ban</a></li>
<li><a href='http://buzut.fr/2013/04/05/filtre-anti-ddos-generique/' rel='bookmark' title='Filtre anti-DDoS générique'>Filtre anti-DDoS générique</a></li>
</ol>
<p>La liste des entrées similaires est établie par le module d’extension <a href='http://yarpp.org'>YARPP</a>.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://buzut.fr/2012/11/13/connexion-ssh-automatique/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Alléger la BDD de WordPress</title>
		<link>http://buzut.fr/2012/10/25/alleger-la-bdd-de-wordpress/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=alleger-la-bdd-de-wordpress</link>
		<comments>http://buzut.fr/2012/10/25/alleger-la-bdd-de-wordpress/#comments</comments>
		<pubDate>Thu, 25 Oct 2012 20:39:35 +0000</pubDate>
		<dc:creator>Buzut</dc:creator>
				<category><![CDATA[Technique]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://buzut.fr/?p=1273</guid>
		<description><![CDATA[<p>Les bases de données de wordpress ont l&#8217;étonnante faculté de gonfler assez rapidement. Cela est dû notamment au fait que wordpress enregistre le différentes versions de vos articles. Vous pouvez le constater en scrollant en bas de la page d&#8217;édition d&#8217;un de vos articles, dans la section révisions. Certains y trouveront un intérêt, d&#8217;autres non. [...]</p><p>The post <a href="http://buzut.fr/2012/10/25/alleger-la-bdd-de-wordpress/">Alléger la BDD de WordPress</a> appeared first on <a href="http://buzut.fr">Buzut</a>.</p>]]></description>
				<content:encoded><![CDATA[ <div class="headerimg">
<img src="http://buzut.fr/wp-content/uploads/2012/01/wordpress-wide.jpg" alt="supprimer les revisions dans wp" width="700" height="200" />
</div>
<p>Les bases de données de wordpress ont l&rsquo;étonnante faculté de gonfler assez rapidement. Cela est dû notamment au fait que wordpress enregistre le différentes versions de vos articles. Vous pouvez le constater en scrollant en bas de la page d&rsquo;édition d&rsquo;un de vos articles, dans la section révisions.</p>
<p><span id="more-1273"></span></p>
<p>Certains y trouveront un intérêt, d&rsquo;autres non. En tout cas, si vous n&rsquo;y voyez aucun intérêt, autant faire subir une cure d&rsquo;amincissement à cette jolie BDD ! Pour cela, on va commencer par supprimer toutes les révisions déjà présentes dans la base. Rendez vous donc dans l&rsquo;interpréteur de commande MySQL ou dans phpMyAdmin et tapez la commande suivante :</p>

<div class="wp_codebox"><table><tr id="p127371"><td class="code" id="p1273code71"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">DELETE</span> <span style="color: #993333; font-weight: bold;">FROM</span> wp_posts <span style="color: #993333; font-weight: bold;">WHERE</span> post_type <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;revision&quot;</span>;</pre></td></tr></table></div>

<p>Hop, toutes vos révisions ont été effacées ! Dans mon cas, il y en avait plus d&rsquo;une centaine !</p>
<p>Enfin, pour ne pas que ça se reproduise, on va ajouter une ligne dans le fichier functions.php de wordpress (il se trouve dans le dossier de votre thème : wp-content/themes/votre-theme) pour dire à wordpress :</p>
<ul>
<li>soit qu&rsquo;on ne veut plus du tout des révisions</li>
<li>soit qu&rsquo;on en veut qu&rsquo;un nombre limité</li>
</ul>

<div class="wp_codebox"><table><tr id="p127372"><td class="code" id="p1273code72"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #666666; font-style: italic;">//enlève les révisions des articles, permet d'alléger la base de données</span>
<span style="color: #666666; font-style: italic;">//il est possible de mettre un nombre à la place de false pour limiter le nb de revisions</span>
<span style="color: #990000;">define</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'WP_POST_REVISIONS'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Et voilà le travail ! En prime, vous aurez peut-être gagné un peu en rapidité pour l&rsquo;affichage de votre blog <img src='http://buzut.fr/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>The post <a href="http://buzut.fr/2012/10/25/alleger-la-bdd-de-wordpress/">Alléger la BDD de WordPress</a> appeared first on <a href="http://buzut.fr">Buzut</a>.</p><div class='yarpp-related-rss'>
<p>Je vous recommande aussi les articles suivants :</p><ol>
<li><a href='http://buzut.fr/2012/05/13/ajouter-un-contenu-par-defaut-dans-lediteur-de-texte-de-wordpress/' rel='bookmark' title='Ajouter un contenu par défaut dans l&rsquo;éditeur de texte de wordpress'>Ajouter un contenu par défaut dans l&rsquo;éditeur de texte de wordpress</a></li>
<li><a href='http://buzut.fr/2012/04/12/optimiser-le-temps-de-chargement-de-son-theme-wor/' rel='bookmark' title='Optimiser le temps de chargement de son thème wordpress'>Optimiser le temps de chargement de son thème wordpress</a></li>
<li><a href='http://buzut.fr/2012/09/28/personnaliser-les-erreurs-sql-de-wordpress/' rel='bookmark' title='Personnaliser les erreurs SQL de wordpress'>Personnaliser les erreurs SQL de wordpress</a></li>
</ol>
<p>La liste des entrées similaires est établie par le module d’extension <a href='http://yarpp.org'>YARPP</a>.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://buzut.fr/2012/10/25/alleger-la-bdd-de-wordpress/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

 Served from: buzut.fr @ 2013-06-20 08:48:14 by W3 Total Cache -->