<?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>Le Blog du grand loup Zeur &#187; serveur</title>
	<atom:link href="http://blog.gaetan-grigis.eu/tag/serveur/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.gaetan-grigis.eu</link>
	<description>Le blog qui vous fait connaitre ce que vous savez déjà</description>
	<lastBuildDate>Tue, 17 Jan 2012 08:43:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>monter un serveur PHP en une ligne de commande (ou presque)</title>
		<link>http://blog.gaetan-grigis.eu/systeme/monter-un-serveur-php-en-une-ligne-de-commande-ou-presque/</link>
		<comments>http://blog.gaetan-grigis.eu/systeme/monter-un-serveur-php-en-une-ligne-de-commande-ou-presque/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 09:45:22 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[cgi-bin]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[sh]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=795</guid>
		<description><![CDATA[Dans le genre &#171;&#160;news de webg33k&#160;&#187; en voici une &#8230; A la base, je cherchais à utiliser/écrire un serveur http en python (pas mal de classes existent dans le domaine) pour servir une page html bidon après un man in the middle avec redirection dnspoof sur le serveur http en question, au lieu de déployer [...]]]></description>
			<content:encoded><![CDATA[<p>Dans le genre &laquo;&nbsp;news de webg33k&nbsp;&raquo; en voici une &#8230;</p>
<p>A la base, je cherchais à utiliser/écrire un serveur http en python (pas mal de <a href="http://docs.python.org/library/basehttpserver.html">classes</a> existent dans le domaine) pour servir une page html bidon après un man in the middle avec redirection dnspoof sur le serveur http en question, au lieu de déployer l&#8217;artillerie lourde apache ou nginx.<br />
<span id="more-795"></span><br />
Après diverses recherche sur mon <a href="http://www.google.fr">ami</a>, je suis tombé sur : <a href="http://blog.rom1v.com/2009/12/creer-un-serveur-http-en-10-secondes/">créer un serveur http en 10 secondes</a> &#8230;</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> python -m SimpleHTTPServer <span class="nu0">80</span></div>
</li>
</ol>
</div>
<p>Créant ainsi un serveur http accessible sur : http://127.0.0.1/). Mais cette technique ne fournit que des fichiers statiques (ok c&#8217;est déjà pas mal &#8230; et c&#8217;est plus où moins ce que je cherchais).</p>
<p>Mais en lisant la doc, on peut trouver un &laquo;&nbsp;CGIHTTPServer&nbsp;&raquo;, c&#8217;est un serveur qui peut exécuter des scripts (python, perl, php, sh, &#8230;) et l&#8217;utilisation est similaire :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">python -m CGIHTTPServer <span class="nu0">8080</span></div>
</li>
</ol>
</div>
<p>qui créera un serveur HTTP sur le dossier courant avec la possibilité d&#8217;éxecuter des scripts (EN CLI = ligne de commande) sur le port 8080 (accessible sur http://127.0.0.1:8080/).</p>
<p>ATTENTION, il ne faut pas executer le serveur avec un sudo (pour utiliser le port 80), car sinon, les scripts seront executés en root, ainsi pour le script php suivant (à mettre dans un dossier nommé &laquo;&nbsp;cgi-bin&nbsp;&raquo; dans le dossier courant d&#8217;éxecution de la commande, et faire un chmod +x et <span style="color: #ff0000;">nécessite l&#8217;installation du paquet php-cli</span>) :</p>
<div class="geshi no php">
<ol>
<li class="li1">
<div class="de1"><span class="co2">#!/usr/bin/php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;&quot;</span><span class="sy0">;</span><span class="co1">//pour signaler la fin des headers</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="kw3">phpinfo</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</li>
</ol>
</div>
<p><a href="http://blog.gaetan-grigis.eu/wp-content/uploads/2010/04/python-server.png"><img class="aligncenter size-full wp-image-796" title="python-server" src="http://blog.gaetan-grigis.eu/wp-content/uploads/2010/04/python-server.png" alt="" width="769" height="325" /></a><br />
 <br />
On remarque bien que le script a les droits root &#8230; donc à EVITER.</p>
<p>Il faut donc l&#8217;executer sur le port un port supérieur à 1024 (pour ne pas utiliser les droits root : 8080 est le port le plus courant dans ce genre de cas), puis effectuer une redirection de port via iptables qui permettra ici d&#8217;accéder au port 8080 du serveur en faisant une requête sur le port 80 :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> iptables -t nat -A PREROUTING -p tcp &#8211;dport <span class="nu0">80</span> -j REDIRECT &#8211;to-ports <span class="nu0">8080</span></div>
</li>
</ol>
</div>
<p>(ne fonctionne pas pour l&#8217;adresse de loopback 127.0.0.1).</p>
<p>Si vous voulez exécuter d&#8217;autre type de script : sh, python, &#8230;, il suffit de les mettre dans le dossier cgi-bin et de faire un chmod +x dessus.</p>
<p>En python :</p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1"><span class="co1">#!/usr/bin/python</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">print</span> <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">print</span> <span class="st0">&quot;les kikoolols attaquent!!!&quot;</span></div>
</li>
</ol>
</div>
<p>En bash : </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="co0">#!/bin/bash</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;les kikoolols attaquent!!!&quot;</span></div>
</li>
</ol>
</div>
<p>Ne pas oublier le premier print &laquo;&nbsp;&nbsp;&raquo; ou echo &laquo;&nbsp;&nbsp;&raquo;, qui indique la fin des headers HTTP. </p>
<p>Voilà &#8230; c&#8217;était le post inutile mais indispensable de la semaine <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=795">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/systeme/se-monter-un-environnement-de-developpement-lamp-rapidement/" rel="bookmark" title="Permanent Link: Se monter un environnement de developpement LAMP rapidement">Se monter un environnement de developpement LAMP rapidement</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/tor-proxy-et-randomiser-le-choix-des-serveurs-de-sortie/" rel="bookmark" title="Permanent Link: Tor Proxy et randomiser le choix des serveurs de sorties">Tor Proxy et randomiser le choix des serveurs de sorties</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/sortie-de-metasploit-32/" rel="bookmark" title="Permanent Link: Sortie de Metasploit 3.2">Sortie de Metasploit 3.2</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/primary-domain-controller-sous-linux/" rel="bookmark" title="Permanent Link: Primary Domain Controller sous Linux &#8230;">Primary Domain Controller sous Linux &#8230;</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/telecharger-sur-mu-via-bash/" rel="bookmark" title="Permanent Link: Telecharger sur MU via bash">Telecharger sur MU via bash</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/systeme/monter-un-serveur-php-en-une-ligne-de-commande-ou-presque/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monter un cluster avec kerrighed sur son réseau</title>
		<link>http://blog.gaetan-grigis.eu/systeme/monter-un-cluster-avec-kerrighed-sur-son-reseau/</link>
		<comments>http://blog.gaetan-grigis.eu/systeme/monter-un-cluster-avec-kerrighed-sur-son-reseau/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 18:50:54 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[booter en réseau]]></category>
		<category><![CDATA[calcul parallel]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[grappe]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[kerrighed]]></category>
		<category><![CDATA[serveur]]></category>
		<category><![CDATA[tftpboot]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=637</guid>
		<description><![CDATA[Plopinou &#8230; encore un article de type &#171;&#160;retour d&#8217;expérience geek&#160;&#187; Temps : 2h (en compilant le tout avec un AMD 3000+) Niveau : Noob (faut quand même savoir jouer à WoW le temps de la compil&#8217; qui peut prendre 1 heures) Le but de cette technique était de recycler quelques PC sur mon réseau et gagner en [...]]]></description>
			<content:encoded><![CDATA[<p>Plopinou &#8230; encore un article de type &laquo;&nbsp;retour d&#8217;expérience geek&nbsp;&raquo;<br />
Temps : 2h (en compilant le tout avec un AMD 3000+)<br />
Niveau : Noob (faut quand même savoir jouer à WoW le temps de la compil&#8217; qui peut prendre 1 heures)</p>
<p>Le but de cette technique était de recycler quelques PC sur mon réseau et gagner en puissance de calcul avec de vieux AMD 3000+ avec 1Go de ram.<br />
<span id="more-637"></span><br />
<a href="http://fr.wikipedia.org/wiki/Kerrighed" target="_blank">Kerrighed</a> est un cluster de type &laquo;&nbsp;<a href="http://fr.wikipedia.org/wiki/Grappe_de_serveurs" target="_blank">Grappe de serveur</a>&nbsp;&raquo; qui permet un truc assez sympa, il suffit que l&#8217;ensemble des machines du réseau utilisent le kernel modifié (un 2.6.20 obligatoire &#8230;) pour que l&#8217;ensemble de ces machines puissent être emulées comme une seul machine <a href="http://fr.wikipedia.org/wiki/Symmetric_multiprocessing" target="_blank">SMP</a> partageant donc le CPU et la RAM des machines, assez sympa pour des logiciels qui bouffent de la ram et du cpu (genre firefox ?? xD).</p>
<p>Le gros intéret de ce type de réseaux face à des solutions comme les systèmes <a href="http://fr.wikipedia.org/wiki/Message_Passing_Interface" target="_blank">MPI</a> est qu&#8217;il n&#8217;y a pas besoin d&#8217;avoir des logiciels spécifique qui utilisent l&#8217;interface en question, ici la plupart des softs qui peuvent tourner sur du kernel SMP (qui devient assez commun sur les dernières machine multi-core pour partager les calculs entre les cores d&#8217;une même machine) peuvent être susceptible d&#8217;utiliser le CPU/RAM des autres ordi.</p>
<p>Alors bon &#8230; d&#8217;un côté ça parait super intéressant de pouvoir ajouter la puissance de nos anciens PC, d&#8217;un autre ont se dit &#8230; c&#8217;est naze, faut installer le kernel à la main sur chacune de ces machines, de quoi repousser n&#8217;importe qu&#8217;elle geek en puissance devant le travail à fournir &#8230;</p>
<p>C&#8217;est là qu&#8217;intervient un truc super sympa que l&#8217;iut de stras utilisait pour faire booter les terminaux X (et que d&#8217;autre utilisent surement). Utiliser une machine comme serveur dhcp,nfs,tftpd-hpa pour faire booter d&#8217;autres machines sur un réseau (en clair, on installe le système sur une machine, et toute les autres boot dessus, permettant même de d&#8217;utiliser des machines sans disque dur, comme ça on peut ce faire une machine qui prend tt les dd et les partager sur le réseau et pouvoir rajouter une nouvelle machine en la connectant simplement au réseau et en la bootant dessus).</p>
<p>Pour ça, j&#8217;ai suivi un superbe <a href="http://www.debianadmin.com/how-to-set-up-a-high-performance-cluster-hpc-using-debian-lenny-and-kerrighed.html" target="_blank">tuto</a> (en anglais, et pas trop vieux en plus) que je vais traduire et commenter avec mes superbes retour d&#8217;expériences ^^.</p>
<p><strong>L&#8217;architecture : </strong></p>
<p>J&#8217;ai ma machine HOST (serveur nfs,dhcp,tftpd, &#8230;) sur laquelle je fait toute mes manipulations, avec deux interfaces, la première connectée au net (histoire de pouvoir mettre à jour la machine), et la seconde connectée à mon réseau de cluster, qui a besoin d&#8217;un réseau à part, puisque j&#8217;utilise un serveur DHCP dédié à l&#8217;adressage de ces machines.</p>
<p>Donc voilà, pour les IPs : 192.168.0.1 est mon serveur principal, 192.168.0.10 et 192.168.0.11 sont mes deux nodes qui vont booter sur le réseaux.</p>
<p>L&#8217;ensemble des manipulations à suivre ce faisant depuis 192.168.0.1 (nommé HOST).</p>
<p>La première commande :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">apt-get <span class="kw2">install</span> dhcp3-server tftpd-hpa portmap syslinux nfs-kernel-server nfs-common debootstrap</div>
</li>
</ol>
</div>
<p>qui permettra d&#8217;installer l&#8217;ensemble des softs nécessaire à notre cluster.</p>
<p>Puis on modifie le fichier <strong>/etc/default/dhcp3-server</strong> et on spécifie l&#8217;interface sur laquelle est connecté notre cluster (eth0 étant ma connexion au net) :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="re2">INTERFACES=</span><span class="st0">&quot;eth1&quot;</span></div>
</li>
</ol>
</div>
<p>Puis le fichier /etc/dhcp3/dhcpd.conf</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="co0"># General options</span></div>
</li>
<li class="li1">
<div class="de1">option dhcp-max-message-<span class="kw2">size</span> <span class="nu0">2048</span>;</div>
</li>
<li class="li1">
<div class="de1">use-host-decl-names on;</div>
</li>
<li class="li1">
<div class="de1">deny unknown-clients;</div>
</li>
<li class="li1">
<div class="de1">deny bootp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">option domain-name <span class="st0">&quot;cluster.lan&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">option domain-name-servers <span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.1</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">subnet <span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.0</span> netmask <span class="nu0">255.255</span><span class="nu0">.255</span><span class="nu0">.0</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">option routers <span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.1</span>;</div>
</li>
<li class="li1">
<div class="de1">option broadcast-address <span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.255</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">group <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">filename <span class="st0">&quot;pxelinux.0&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">option root-path <span class="st0">&quot;192.168.0.11:/nfsroot/kerrighed&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">host node1 <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">fixed-address <span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.10</span>;</div>
</li>
<li class="li1">
<div class="de1">hardware ethernet <span class="nu0">11</span>:<span class="nu0">33</span>:<span class="nu0">22</span>:<span class="nu0">55</span>:<span class="nu0">44</span>:<span class="nu0">66</span>;<span class="co0">#à remplacer par l&#39;adresse mac de votre machine 1</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">host node2 <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">fixed-address <span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.11</span>;</div>
</li>
<li class="li1">
<div class="de1">hardware ethernet <span class="nu0">11</span>:<span class="nu0">22</span>:<span class="nu0">33</span>:<span class="nu0">44</span>:<span class="nu0">55</span>:<span class="nu0">66</span>;<span class="co0">#à remplacer par l&#39;adresse mac de votre machine 2</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">server-name <span class="st0">&quot;host&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">next-server <span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.1</span>; <span class="co0"># Server IP</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>On permet le lancement en daemon de tftp au démarrage de la machine en modifiant /etc/default/tftp-hpa</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="re2">RUN_DAEMON=</span><span class="st0">&quot;yes&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">OPTIONS=</span><span class="st0">&quot;-l -s /var/lib/tftpboot&quot;</span></div>
</li>
</ol>
</div>
<p>On copie notre loader pxe</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">cp</span> <span class="sy0">/</span>usr<span class="sy0">/</span>lib<span class="sy0">/</span>syslinux<span class="sy0">/</span>pxelinux<span class="nu0">.0</span> <span class="sy0">/</span>var<span class="sy0">/</span>lib<span class="sy0">/</span>tftpboot</div>
</li>
</ol>
</div>
<p>On créer notre dossier de conf :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">mkdir</span> -p <span class="sy0">/</span>var<span class="sy0">/</span>lib<span class="sy0">/</span>tftpboot<span class="sy0">/</span>pxelinux.cfg</div>
</li>
</ol>
</div>
<p>Et on edit notre fichier de boot réseau dans /var/lib/tftpboot/pxelinux.cfg/default : </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">LABEL linux</div>
</li>
<li class="li1">
<div class="de1">KERNEL vmlinuz<span class="nu0">-2.6</span><span class="nu0">.20</span>-krg</div>
</li>
<li class="li1">
<div class="de1">APPEND <span class="re2">console=</span>tty1 <span class="re2">root=</span><span class="sy0">/</span>dev<span class="sy0">/</span>nfs <span class="re2">nfsroot=</span><span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.1</span>:<span class="sy0">/</span>nfsroot<span class="sy0">/</span>kerrighed <span class="re2">ip=</span>dhcp rw <span class="re2">session_id=</span><span class="nu0">1</span></div>
</li>
</ol>
</div>
<p>Maintenant que notre boot est prêt, il faut créer le système sur lequel les autres machines vont booter :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">mkdir</span> -p <span class="sy0">/</span>nfsroot<span class="sy0">/</span>kerrighed</div>
</li>
</ol>
</div>
<p>On prépare l&#8217;import en éditant le fichier /etc/exports :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="sy0">/</span>nfsroot<span class="sy0">/</span>kerrighed <span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.1</span><span class="sy0">/</span><span class="nu0">255.255</span><span class="nu0">.255</span><span class="nu0">.0</span><span class="br0">&#40;</span>rw,no_subtree_check,async,no_root_squash<span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>Puis un coup de </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">exportfs -avr <span class="sy0">&amp;&amp;</span> debootstrap &#8211; -<span class="kw2">arch</span> i386 lenny <span class="sy0">/</span>nfsroot<span class="sy0">/</span>kerrighed http:<span class="sy0">//</span><span class="kw2">ftp</span>.fr.debian.org<span class="sy0">/</span>debian</div>
</li>
</ol>
</div>
<p>Qui peut prendre un bon bout de temps (z&#8217;avez le temps de faire un warsong voir même une instance de 30 minutes sur WoW ^^) &#8230; puis on fait un coup de </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">chroot</span> <span class="sy0">/</span>nfsroot<span class="sy0">/</span>kerrighed</div>
</li>
</ol>
</div>
<p>Pour changer les fichiers de config de notre &laquo;&nbsp;nouvelle machine&nbsp;&raquo; :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">mount</span> -t proc none <span class="sy0">/</span>proc <span class="sy0">&amp;&amp;</span> <span class="kw2">mkdir</span> <span class="sy0">/</span>config <span class="sy0">&amp;&amp;</span> <span class="kw2">mount</span> -t configfs none <span class="sy0">/</span>config <span class="sy0">&amp;&amp;</span> apt-get update <span class="sy0">&amp;&amp;</span> <span class="kw3">export</span> <span class="re2">LC_ALL=</span>C <span class="sy0">&amp;&amp;</span> apt-get <span class="kw2">install</span> dhcp3-common nfs-common nfsbooted openssh-server <span class="sy0">&amp;&amp;</span> <span class="kw2">ln</span> -sf <span class="sy0">/</span>etc<span class="sy0">/</span>network<span class="sy0">/</span>if-up.d<span class="sy0">/</span>mountnfs <span class="sy0">/</span>etc<span class="sy0">/</span>rcS.d<span class="sy0">/</span>S34mountnfs <span class="sy0">&amp;&amp;</span> &nbsp;apt-get <span class="kw2">install</span> <span class="kw2">automake</span> <span class="kw2">autoconf</span> libtool pkg-config <span class="kw2">gawk</span> rsync <span class="kw2">bzip2</span> libncurses5 libncurses5-dev <span class="kw2">wget</span> lsb-release xmlto patchutils xutils-dev build-essential subversion <span class="sy0">&amp;&amp;</span> svn checkout svn:<span class="sy0">//</span>scm.gforge.inria.fr<span class="sy0">/</span>svn<span class="sy0">/</span>kerrighed<span class="sy0">/</span>trunk <span class="sy0">/</span>usr<span class="sy0">/</span>src<span class="sy0">/</span>kerrighed -r <span class="nu0">5426</span></div>
</li>
</ol>
</div>
<p>Puis modification du /etc/fstab</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">proc <span class="sy0">/</span>proc proc defaults <span class="nu0">0</span> <span class="nu0">0</span></div>
</li>
<li class="li1">
<div class="de1"><span class="sy0">/</span>dev<span class="sy0">/</span>nfs <span class="sy0">/</span> nfs defaults <span class="nu0">0</span> <span class="nu0">0</span></div>
</li>
<li class="li1">
<div class="de1">configfs <span class="sy0">/</span>config configfs defaults <span class="nu0">0</span> <span class="nu0">0</span></div>
</li>
</ol>
</div>
<p>On passe par /etc/network/interfaces pour configurer notre réseau &#8230; pour moi :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">auto lo</div>
</li>
<li class="li1">
<div class="de1">iface lo inet loopback</div>
</li>
<li class="li1">
<div class="de1">iface eth0 inet dhcp</div>
</li>
</ol>
</div>
<p>Une fois que la plupart des configs sont faites, on peut passer par la compilation du kernel kerrighed.</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">wget</span> -O <span class="sy0">/</span>usr<span class="sy0">/</span>src<span class="sy0">/</span>linux<span class="nu0">-2.6</span><span class="nu0">.20</span>.<span class="kw2">tar</span>.bz2 http:<span class="sy0">//</span>www.kernel.org<span class="sy0">/</span>pub<span class="sy0">/</span>linux<span class="sy0">/</span>kernel<span class="sy0">/</span>v2<span class="nu0">.6</span><span class="sy0">/</span>linux<span class="nu0">-2.6</span><span class="nu0">.20</span>.<span class="kw2">tar</span>.bz2 <span class="sy0">&amp;&amp;</span> <span class="kw3">cd</span> <span class="sy0">/</span>usr<span class="sy0">/</span>src<span class="sy0">/</span>kerrighed <span class="sy0">&amp;&amp;</span> .<span class="sy0">/</span>autogen.<span class="kw2">sh</span> <span class="sy0">&amp;&amp;</span> .<span class="sy0">/</span>configure <span class="sy0">&amp;&amp;</span> <span class="kw3">cd</span> kernel <span class="sy0">&amp;&amp;</span> <span class="kw2">make</span> defconfig <span class="sy0">&amp;&amp;</span> <span class="kw2">make</span> menuconfig</div>
</li>
</ol>
</div>
<p>Dans le menu &#8216;super ecran bleu&#8217; :<br />
Allez dans &laquo;&nbsp;Device Drivers&nbsp;&raquo; puis &laquo;&nbsp;Network device support&nbsp;&raquo; et choisir sa carte réseau (sinon vous n&#8217;arriverez pas à monter le root une fois le kernel booté).<br />
Revenir au premier menu et choisir &laquo;&nbsp;File systems&nbsp;&raquo; puis &laquo;&nbsp;Network File Systems&nbsp;&raquo; et permettre le nfsV3.<br />
On quitte et on sauvegarde la configuration (en cliquant sur &laquo;&nbsp;exit&nbsp;&raquo;).</p>
<p>On reprend nos commandes (on peut faire un match sur HoN là, y&#8217;en a pour une heure) : </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> .. <span class="sy0">&amp;&amp;</span> <span class="kw2">make</span> kernel <span class="sy0">&amp;&amp;</span> <span class="kw2">make</span> <span class="sy0">&amp;&amp;</span> <span class="kw2">make</span> kernel-<span class="kw2">install</span> <span class="sy0">&amp;&amp;</span> <span class="kw2">make</span> <span class="kw2">install</span> <span class="sy0">&amp;&amp;</span> ldconfig</div>
</li>
</ol>
</div>
<p>On continue la configuration de notre systèmes en modifiant le fichier /etc/kerrighed_nodes</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="re2">session=</span><span class="nu0">1</span> <span class="co0">#entre 1 et 254</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">nbmin=</span><span class="nu0">1</span> <span class="co0">#nombre de node minimal pour kerrighed.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.10</span>;<span class="nu0">1</span>:eth0</div>
</li>
<li class="li1">
<div class="de1"><span class="nu0">192.168</span><span class="nu0">.0</span><span class="nu0">.11</span>:<span class="nu0">2</span>:eth0</div>
</li>
</ol>
</div>
<p>et on termine ici en modifiant /etc/default/kerrighed</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="re2">ENABLE=</span>true</div>
</li>
</ol>
</div>
<p>on quitte notre chroot par un superbe :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">exit</span></div>
</li>
</ol>
</div>
<p>On copie notre &laquo;&nbsp;booter&nbsp;&raquo; dans le boot et on redémarre tout nos soft :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">cp</span> <span class="sy0">/</span>nfsroot<span class="sy0">/</span>kerrighed<span class="sy0">/</span>boot<span class="sy0">/</span>vmlinuz<span class="nu0">-2.6</span><span class="nu0">.20</span>-krg <span class="sy0">/</span>var<span class="sy0">/</span>lib<span class="sy0">/</span>tftpboot<span class="sy0">/</span> <span class="sy0">&amp;&amp;</span> <span class="sy0">/</span>etc<span class="sy0">/</span>init.d<span class="sy0">/</span>tftpd-hpa start <span class="sy0">&amp;&amp;</span> <span class="sy0">/</span>etc<span class="sy0">/</span>init.d<span class="sy0">/</span>dhcp3-server start <span class="sy0">&amp;&amp;</span> <span class="sy0">/</span>etc<span class="sy0">/</span>init.d<span class="sy0">/</span>portmap start <span class="sy0">&amp;&amp;</span> <span class="sy0">/</span>etc<span class="sy0">/</span>init.d<span class="sy0">/</span>nfs-kernel-server restart</div>
</li>
</ol>
</div>
<p>A partir de maintenant, toute machine bootant en réseau sera capable d&#8217;utiliser le kernel compilé. (assez sympa en cyber café, ou &#8230; <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ).</p>
<p>Par contre une fois lancer, il ne faut pas oublier d&#8217;autoriser la migration des processus en se connectant sur l&#8217;une des nodes : </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">krgadm nodes <span class="sy0">&amp;&amp;</span> krgadm cluster start <span class="sy0">&amp;&amp;</span> <span class="sy0">/</span>usr<span class="sy0">/</span><span class="kw3">local</span><span class="sy0">/</span>bin<span class="sy0">/</span>krg_legacy_scheduler <span class="sy0">&amp;&amp;</span> krgcapset -d +CAN_MIGRATE <span class="sy0">&amp;&amp;</span> krgcapset -k <span class="re4">$$</span> -d +CAN_MIGRATE <span class="sy0">&amp;&amp;</span> krgcapset -d +USE_REMOTE_MEMORY <span class="sy0">&amp;&amp;</span> krgcapset -k <span class="re4">$$</span> –inheritable-effective +CAN_MIGRATE</div>
</li>
</ol>
</div>
<p>Et voilà &#8230; les geeks en puissance vont pouvoir faire revivre leurs premières machines ^^ (et les terminer dignement xD)</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=637">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/non-classe/mysql-failover-sur-red-hat-6-avec-drbd-et-rgmanager/" rel="bookmark" title="Permanent Link: Mysql failover sur Red Hat 6 avec DRBD et RGManager">Mysql failover sur Red Hat 6 avec DRBD et RGManager</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/annuaire-ldap-et-authentification-unixlinux/" rel="bookmark" title="Permanent Link: Annuaire LDAP et authentification UNiX/Linux">Annuaire LDAP et authentification UNiX/Linux</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/connecter-un-reseau-de-machines-virtuelles-sur-un-reseau-local/" rel="bookmark" title="Permanent Link: Connecter un réseau de machines virtuelles sur un réseau local">Connecter un réseau de machines virtuelles sur un réseau local</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/primary-domain-controller-sous-linux/" rel="bookmark" title="Permanent Link: Primary Domain Controller sous Linux &#8230;">Primary Domain Controller sous Linux &#8230;</a></li><li><a href="http://blog.gaetan-grigis.eu/ubuntu/wifi-ou-3g-tethering-sur-cyanogenmod-via-bluetooth-ou-usb/" rel="bookmark" title="Permanent Link: Wifi ou 3G tethering sur cyanogenmod via Bluetooth ou USB">Wifi ou 3G tethering sur cyanogenmod via Bluetooth ou USB</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/systeme/monter-un-cluster-avec-kerrighed-sur-son-reseau/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Administration de serveurs apache : modsecurity2</title>
		<link>http://blog.gaetan-grigis.eu/systeme/administration-de-serveurs-apache-modsecurity2/</link>
		<comments>http://blog.gaetan-grigis.eu/systeme/administration-de-serveurs-apache-modsecurity2/#comments</comments>
		<pubDate>Sat, 14 Feb 2009 13:22:36 +0000</pubDate>
		<dc:creator>Gaëtan</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Sécurité]]></category>
		<category><![CDATA[Système]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mod-security]]></category>
		<category><![CDATA[serveur]]></category>

		<guid isPermaLink="false">http://blog.gaetan-grigis.eu/?p=307</guid>
		<description><![CDATA[Bijour Bé voilà vé parler du modsecurity2 &#8230; pourquoi ?? Ben on trouve pas mal de tut&#8217;s sur le net, mais c&#8217;est que pour le mod_security (sans le 2 ^^), et la syntaxe à malheureusement changée depuis. Donc voilà &#8230; Il faut tout d&#8217;abord rajouter un dépôt (le mien ^^) au fichier /etc/apt/sources.list : deb [...]]]></description>
			<content:encoded><![CDATA[<p>Bijour</p>
<p>Bé voilà vé parler du modsecurity<em><strong>2</strong></em> &#8230; pourquoi ?? Ben on trouve pas mal de tut&#8217;s sur le net, mais c&#8217;est que pour le mod_security (sans le 2 ^^), et la syntaxe à <a href="http://www.modsecurity.org/documentation/ModSecurity-Migration-Matrix.pdf" target="_blank">malheureusement changée depuis</a>.</p>
<p>Donc voilà &#8230;</p>
<p>Il faut tout d&#8217;abord rajouter un dépôt (le mien ^^) au fichier /etc/apt/sources.list :</p>
<div class="geshi no config">
<ol>
<li class="li1">
<div class="de1">deb http://ppa.launchpad.net/cipher.16/ppa/ubuntu intrepid main</div>
</li>
</ol>
</div>
<p>et rajouter la clé associée au dépôt :</p>
<div class="geshi no config">
<ol>
<li class="li1">
<div class="de1">sudo apt-key adv &#8211;recv-keys &#8211;keyserver keyserver.ubuntu.com DA27D37831F6D1C0BC85566CDD2A2A8817FB9A87</div>
</li>
</ol>
</div>
<p>Ensuite faire un <strong>apt-get install modsecurity2 &amp;&amp; a2enmode mod-security2</strong>.</p>
<p><strong>Pourquoi préférer cette version à celle de inittab</strong> (proposé par la doc de modsecurity) <strong>??</strong> &#8230; parce que c&#8217;est la dernière version stable (2.5.7, qui permet des trucs sympa &#8230; cf. la fin de l&#8217;article <img src='http://blog.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )</p>
<p>Par défaut, tous les fichiers de configuration liés au modsecurity2 sont bazardés dans le dossier <strong>/usr/share/apache/mod_security2_rules</strong> (je suis pas assez doué pour faire du post-install dans mes paquets &#8230;), vous pouvez soit les déplacer dans le dossier  <strong>/etc/apache2/conf.d/</strong>, mais il faudra un peu les retoucher (surtout le modsecurity_crs_10_config.conf en modifiant les fichiers de logs, sinon des erreurs apparaitront lors du démarrage du serveur).</p>
<p><strong>Pour utiliser les fichiers de configuration fournit par le paquet :</strong></p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">cat</span> <span class="sy0">/</span>usr<span class="sy0">/</span>share<span class="sy0">/</span>apache2<span class="sy0">/</span>mod_security2_rules<span class="sy0">/*</span>.conf <span class="sy0">&gt;&gt;</span> <span class="sy0">/</span>etc<span class="sy0">/</span>apache2<span class="sy0">/</span>conf.d<span class="sy0">/</span>security</div>
</li>
</ol>
</div>
<p>et modifier toutes les lignes en rapport avec les logs, pour cela, remplacez :</p>
<p><strong>SecAuditLog logs/modsec_audit.log</strong> par SecAuditLog /var/log/apaches2/modsec_audit.log<br />
<strong>SecDebugLog logs/modsec_debug.log</strong> par SecDebugLog /var/log/apache2/modsec_debug.log</p>
<p>Ou bien, <strong>vous pouvez faire votre propre fichier de configuration</strong>, grâce à la <a href="http://www.modsecurity.org/documentation/modsecurity-apache/2.5.7/modsecurity2-apache-reference.html" target="_blank">superbe doc</a>.</p>
<p>Pour cela, allez dans le dossier <strong>/etc/apache2/conf.d/</strong> et modifiez le fichier <strong>security.conf</strong>, ou bien en créer un nommé &#8230; du nom que vous voulez.</p>
<p>Dans lequel il faudra mettre (au minimum, histoire de faire propre) :</p>
<div class="geshi no config">
<div class="head">&lt;IfModule mod_security2.c&gt;</div>
<ol>
<li class="li1">
<div class="de1">ServerTokens Full
</div>
</li>
<li class="li1">
<div class="de1">ServerSignature On
</div>
</li>
<li class="li1">
<div class="de1">TraceEnable Off
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">SecRuleEngine On
</div>
</li>
<li class="li1">
<div class="de1">SecRequestBodyAccess On
</div>
</li>
<li class="li1">
<div class="de1">SecResponseBodyAccess On
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">SecAuditLog /var/log/apache2/mod_secure.log
</div>
</li>
<li class="li1">
<div class="de1">## RESTE DE LA CONFIG A METTRE ICI
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">## NE PAS TOUCHER PLUS LOIN
</div>
</li>
<li class="li1">
<div class="de1">&lt;/IfModule&gt;</div>
</li>
</ol>
</div>
<h2>Et on met quoi dans cette configuration ???</h2>
<p>Plein de choses diverses et variées (on peut aussi rajouter quelque lignes des fichiers d&#8217;exemple dans /usr/share/apache2/mod_security2_rules, qui peuvent être très intéressante pour bloquer les injections, &#8230;).<br />
<strong>Pour induire en erreurs/bloquer certains scanners :</strong></p>
<p>Changement de la signature du serveur (un peu grossié ^^ mais ça peut induire en erreur les n00b &#8230; ça fait toujours ça de moins) :</p>
<div class="geshi no config">
<div class="head">SecServerSignature &laquo;&nbsp;Windows 2003 IIS/6.0&#8243;</div>
<ol>
<li class="li1">
<div class="de1">SecRule REQUEST_HEADERS:User-Agent &quot;.*perl.*&quot; &quot;t:none,msg:&#39;Perl based user agent identified&#39;&quot;
</div>
</li>
<li class="li1">
<div class="de1">SecRule REQUEST_HEADERS:User-Agent &quot;.*nikto.*&quot; &quot;t:none,msg:&#39;Nikto Scanners Identified&#39;&quot;
</div>
</li>
<li class="li1">
<div class="de1">SecRule REQUEST_HEADERS:User-Agent &quot;(?:\b(?:m(?:ozilla\/4\.0 \(compatible\)|etis)|webtrends security analyzer|pmafind)\b|n(?:-stealth|sauditor|essus|ikto)|b(?:lack ?widow|rutus|ilbo)|(?:jaascoi|paro)s|webinspect|\.nasl)&quot; \
</div>
</li>
<li class="li1">
<div class="de1">&quot;phase:2,t:none,t:lowercase,deny,log,auditlog,status:404,msg:&#39;Request Indicates a Security Scanner Scanned the Site&#39;,id:&#39;990002&#39;,tag:&#39;AUTOMATION/SECURITY_SCANNER&#39;,severity:&#39;2&#39;&quot;
</div>
</li>
<li class="li1">
<div class="de1">SecRule REQUEST_HEADERS_NAMES &quot;\bacunetix-product\b&quot; \
</div>
</li>
<li class="li1">
<div class="de1">&quot;phase:2,t:none,t:lowercase,deny,log,auditlog,status:404,msg:&#39;Request Indicates a Security Scanner Scanned the Site&#39;,id:&#39;990901&#39;,tag:&#39;AUTOMATION/SECURITY_SCANNER&#39;,severity:&#39;2&#39;&quot;
</div>
</li>
<li class="li1">
<div class="de1">SecRule REQUEST_FILENAME &quot;^/nessustest&quot; \
</div>
</li>
<li class="li1">
<div class="de1">&quot;phase:2,t:none,t:lowercase,deny,log,auditlog,status:404,msg:&#39;Request Indicates a Security Scanner Scanned the Site&#39;,id:&#39;990902&#39;,tag:&#39;AUTOMATION/SECURITY_SCANNER&#39;,severity:&#39;2&#39;&quot;</div>
</li>
</ol>
</div>
<p><strong>Bloquer les requêtes zarb :</strong></p>
<div class="geshi no config">
<div class="head">SecRule REQUEST_LINE &laquo;&nbsp;!(^((?:(?:pos|ge)t|head))|http/(0\.9|1\.0|1\.1)$)&nbsp;&raquo; \</div>
<ol>
<li class="li1">
<div class="de1">&quot;t:none,t:lowercase,msg:&#39;Un imbécile qui connait pas le http&#39;&quot;</div>
</li>
</ol>
</div>
<p><strong>Bloquer les accès direct à l&#8217;ip du serveur : </strong>(cas courant de scan)<strong><br />
</strong></p>
<div class="geshi no config">
<div class="head">SecRule REQUEST_HEADERS:Host &laquo;&nbsp;^[\d\.]+$&nbsp;&raquo; \</div>
<ol>
<li class="li1">
<div class="de1">&quot;log,deny,status:404,t:lowercase,msg:&#39;Connexion direct a l\&#39;ip du serveur&#39;&quot;</div>
</li>
</ol>
</div>
<p><strong>Protection contre des fuites lors  d&#8217;erreurs mysql :</strong> (qui pourrait permettre à des petits malin de connaître les tables utilisées, &#8230;)</p>
<div class="geshi no config">
<div class="head">SecRule RESPONSE_BODY &laquo;&nbsp;(?:\b(?:(?:s(?:elect list because it is not contained in (?:an aggregate function and there is no|either an aggregate function or the) GROUP BY clause|upplied argument is not a valid (?:(?:M(?:S |y)|Postgre)SQL|O(?:racle|DBC)))|S(?:yntax error converting the \w+ value .*? to a column of data type|QL Server does not exist or access denied)|Either BOF or EOF is True, or the current record has been deleted(?:; the operation|\. Requested)|The column prefix .{0,50}? does not match with a table name or alias name used in the query|Could not find server &#39;\w+&#39; in sysservers\. execute sp_addlinkedserver)\b|Un(?:closed quotation mark before the character string\b|able to connect to PostgreSQL server:)|(?:Microsoft OLE DB Provider for .{0,30} [eE]rror |error &#39;800a01b8)&#39;|(?:Warning: mysql_connect\(\)|PostgreSQL query failed):|You have an error in your SQL syntax(?: near &#39;|;)|cannot take a \w+ data type as an argument\.|incorrect syntax near (?:\&#39;|the\b|@@error\b)|microsoft jet database engine error &#39;8|ORA-\d{5}: )|\[Microsoft\]\[ODBC )&nbsp;&raquo; \</div>
<ol>
<li class="li1">
<div class="de1">&quot;phase:4,t:none,ctl:auditLogParts=+E,deny,log,auditlog,status:500,msg:&#39;SQL Information Leakage&#39;,id:&#39;970003&#39;,tag:&#39;LEAKAGE/ERRORS&#39;,severity:&#39;4&#39;&quot;</div>
</li>
</ol>
</div>
<p><strong>Protection contre des fuites concernant des erreurs php ou un affichage de code php </strong>(source code disclosure comme on dit :p)<strong> :</strong></p>
<div class="geshi no config">
<div class="head">SecRule RESPONSE_BODY &laquo;&nbsp;&lt;b&gt;Warning&lt;\/b&gt;.{0,100}?:.{0,1000}?\bon line\b&nbsp;&raquo; \</div>
<ol>
<li class="li1">
<div class="de1">&quot;phase:4,t:none,ctl:auditLogParts=+E,deny,log,auditlog,status:500,msg:&#39;PHP Information Leakage&#39;,id:&#39;970009&#39;,tag:&#39;LEAKAGE/ERRORS&#39;,severity:&#39;4&#39;&quot;
</div>
</li>
<li class="li1">
<div class="de1">SecRule RESPONSE_BODY &quot;(?:\b(?:f(?:tp_(?:nb_)?f?(?:ge|pu)t|get(?:s?s|c)|scanf|write|open|read)|gz(?:(?:encod|writ)e|compress|open|read)|s(?:ession_start|candir)|read(?:(?:gz)?file|dir)|move_uploaded_file|(?:proc_|bz)open)|\$_(?:(?:pos|ge)t|session))\b&quot; \
</div>
</li>
<li class="li1">
<div class="de1">&quot;phase:4,t:none,ctl:auditLogParts=+E,log,auditlog,msg:&#39;PHP source code leakage&#39;,id:&#39;970015&#39;,tag:&#39;LEAKAGE/SOURCE_CODE&#39;,severity:&#39;4&#39;&quot;
</div>
</li>
<li class="li1">
<div class="de1">SecRule RESPONSE_BODY &quot;&amp;lt;\?(?!xml)&quot; \
</div>
</li>
<li class="li1">
<div class="de1">&quot;phase:4,chain,t:none,ctl:auditLogParts=+E,log,auditlog,msg:&#39;PHP source code leakage&#39;,id:&#39;970902&#39;,tag:&#39;LEAKAGE/SOURCE_CODE&#39;,severity:&#39;4&#39;&quot;
</div>
</li>
<li class="li1">
<div class="de1">SecRule RESPONSE_BODY &quot;!(?:\b(?:(?:i(?:nterplay|hdr|d3)|m(?:ovi|thd)|(?:ex|jf)if|f(?:lv|ws)|varg|cws)\b|r(?:iff\b|ar!B)|gif)|B(?:%pdf|\.ra)\b)&quot; &quot;t:none&quot;</div>
</li>
</ol>
</div>
<p><strong>Protection contre les XSS :</strong></p>
<div class="geshi no config">
<div class="head">SecRule REQUEST_FILENAME|ARGS|ARGS_NAMES|REQUEST_HEADERS|XML:/*|!REQUEST_HEADERS:Referer &laquo;&nbsp;@pm jscript onsubmit copyparentfolder javascript meta onmove onkeydown onchange onkeyup activexobject expression onmouseup ecmascript onmouseover vbscript: &lt;![cdata[ http: settimeout onabort shell: .innerhtml onmousedown onkeypress asfunction: onclick .fromcharcode background-image: .cookie ondragdrop onblur x-javascript mocha: onfocus javascript: getparentfolder lowsrc onresize @import alert onselect script onmouseout onmousemove background application .execscript livescript: getspecialfolder vbscript iframe .addimport onunload createtextrange onload &lt;input&nbsp;&raquo; \</div>
<ol>
<li class="li1">
<div class="de1">&quot;phase:2,t:none,t:urlDecodeUni,t:htmlEntityDecode,t:compressWhiteSpace,t:lowercase,pass,nolog,skip:1&quot;
</div>
</li>
<li class="li1">
<div class="de1">SecAction phase:2,pass,nolog,skipAfter:959004
</div>
</li>
<li class="li1">
<div class="de1">SecRule REQUEST_FILENAME|ARGS|ARGS_NAMES &quot;(?:\b(?:(?:type\b\W*?\b(?:text\b\W*?\b(?:j(?:ava)?|ecma|vb)|application\b\W*?\bx-(?:java|vb))script|c(?:opyparentfolder|reatetextrange)|get(?:special|parent)folder|iframe\b.{0,100}?\bsrc)\b|on(?:(?:mo(?:use(?:o(?:ver|ut)|down|move|up)|ve)|key(?:press|down|up)|c(?:hange|lick)|s(?:elec|ubmi)t|(?:un)?load|dragdrop|resize|focus|blur)\b\W*?=|abort\b)|(?:l(?:owsrc\b\W*?\b(?:(?:java|vb)script|shell|http)|ivescript)|(?:href|url)\b\W*?\b(?:(?:java|vb)script|shell)|background-image|mocha):|s(?:(?:tyle\b\W*=.*\bexpression\b\W*|ettimeout\b\W*?)\(|rc\b\W*?\b(?:(?:java|vb)script|shell|http):)|a(?:ctivexobject\b|lert\b\W*?\(|sfunction:))|&amp;lt;(?:(?:body\b.*?\b(?:backgroun|onloa)d|input\b.*?\btype\b\W*?\bimage)\b| ?(?:(?:script|meta)\b|iframe)|!\[cdata\[)|(?:\.(?:(?:execscrip|addimpor)t|(?:fromcharcod|cooki)e|innerhtml)|\@import)\b)&quot; \
</div>
</li>
<li class="li1">
<div class="de1">&quot;phase:2,capture,t:none,t:htmlEntityDecode,t:compressWhiteSpace,t:lowercase,ctl:auditLogParts=+E,log,auditlog,msg:&#39;Cross-site Scripting (XSS) Attack&#39;,id:&#39;950004&#39;,tag:&#39;WEB_ATTACK/XSS&#39;,logdata:&#39;%{TX.0}&#39;,severity:&#39;2&#39;&quot;
</div>
</li>
<li class="li1">
<div class="de1">SecRule REQUEST_HEADERS|XML:/*|!REQUEST_HEADERS:Referer &quot;(?:\b(?:(?:type\b\W*?\b(?:text\b\W*?\b(?:j(?:ava)?|ecma|vb)|application\b\W*?\bx-(?:java|vb))script|c(?:opyparentfolder|reatetextrange)|get(?:special|parent)folder|iframe\b.{0,100}?\bsrc)\b|on(?:(?:mo(?:use(?:o(?:ver|ut)|down|move|up)|ve)|key(?:press|down|up)|c(?:hange|lick)|s(?:elec|ubmi)t|(?:un)?load|dragdrop|resize|focus|blur)\b\W*?=|abort\b)|(?:l(?:owsrc\b\W*?\b(?:(?:java|vb)script|shell|http)|ivescript)|(?:href|url)\b\W*?\b(?:(?:java|vb)script|shell)|background-image|mocha):|s(?:(?:tyle\b\W*=.*\bexpression\b\W*|ettimeout\b\W*?)\(|rc\b\W*?\b(?:(?:java|vb)script|shell|http):)|a(?:ctivexobject\b|lert\b\W*?\(|sfunction:))|&amp;lt;(?:(?:body\b.*?\b(?:backgroun|onloa)d|input\b.*?\btype\b\W*?\bimage)\b| ?(?:(?:script|meta)\b|iframe)|!\[cdata\[)|(?:\.(?:(?:execscrip|addimpor)t|(?:fromcharcod|cooki)e|innerhtml)|\@import)\b)&quot; \
</div>
</li>
<li class="li1">
<div class="de1">&quot;phase:2,capture,t:none,t:urlDecodeUni,t:htmlEntityDecode,t:compressWhiteSpace,t:lowercase,ctl:auditLogParts=+E,log,auditlog,msg:&#39;Cross-site Scripting (XSS) Attack&#39;,id:&#39;959004&#39;,tag:&#39;WEB_ATTACK/XSS&#39;,logdata:&#39;%{TX.0}&#39;,severity:&#39;2&#39;&quot;</div>
</li>
</ol>
</div>
<p><strong>Et les petits trucs que nous permettent de faire la version 2.5.7 :</strong><br />
(protection contre les bruteforces, il faudra bien sûr changer ARGS:login en fonction de vos champs d&#8217;authentification).</p>
<div class="geshi no config">
<div class="head">SecAction initcol:ip=%{REMOTE_ADDR},nolog</div>
<ol>
<li class="li1">
<div class="de1">SecRule ARGS:login &quot;!^$&quot; \
</div>
</li>
<li class="li1">
<div class="de1">nolog,phase:1,setvar:ip.auth_attempt=+1,deprecatevar:ip.auth_attempt=20/120
</div>
</li>
<li class="li1">
<div class="de1">SecRule IP:AUTH_ATTEMPT &quot;@gt 25&quot; \
</div>
</li>
<li class="li1">
<div class="de1">log,drop,phase:1,msg:&#39;Possible Brute Force Attack&quot;</div>
</li>
</ol>
</div>
<p>Une fois que vous avez terminé votre fichier de configuration, n&#8217;oubliez pas le <strong>/etc/init.d/apache2 restart</strong><br />
Sinon, comme dit, ce ne sont que des exemples, &#8230; la doc est très complète : http://www.modsecurity.org/documentation/</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=307">
                                    <span>Télécharger l'article au format PDF</span>
                                </a>
                            </div>
                        <hr /><h2>Articles similaires : </h2><ul><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/modsecurity-mise-en-place-de-restrictions-sur-les-regles-de-restrictions/" rel="bookmark" title="Permanent Link: ModSecurity mise en place de restrictions sur les règles de restrictions ^^">ModSecurity mise en place de restrictions sur les règles de restrictions ^^</a></li><li><a href="http://blog.gaetan-grigis.eu/mes-applicationsscripts/" rel="bookmark" title="Permanent Link: Mes Applications/Scripts">Mes Applications/Scripts</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/administration-de-serveurs-apache-virtualhost/" rel="bookmark" title="Permanent Link: Administration de serveurs apache : virtualhost">Administration de serveurs apache : virtualhost</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/configuration-de-processus-apache-au-poil/" rel="bookmark" title="Permanent Link: Configuration de processus apache au poil &#8230;">Configuration de processus apache au poil &#8230;</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/ameliorer-les-performances-dapache-avec-nginx/" rel="bookmark" title="Permanent Link: Améliorer les performances d&#8217;apache avec nginx">Améliorer les performances d&#8217;apache avec nginx</a></li></ul><hr /><small>Copyright &copy; 2008-2011 - Gaetan Grigis - <a href="http://blog.gaetan-grigis.eu">blog.gaetan-grigis.eu</a> </small>]]></content:encoded>
			<wfw:commentRss>http://blog.gaetan-grigis.eu/systeme/administration-de-serveurs-apache-modsecurity2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

