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

<channel>
	<title>Linux Attitude&#187; Firewall</title>
	<atom:link href="http://linux-attitude.fr/tag/firewall/feed" rel="self" type="application/rss+xml" />
	<link>http://linux-attitude.fr</link>
	<description>Le libre est un état d&#039;esprit</description>
	<lastBuildDate>Fri, 03 Feb 2012 17:45:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Prenez le contrôle des communications</title>
		<link>http://linux-attitude.fr/post/prenez-le-controle-des-communications?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=prenez-le-controle-des-communications</link>
		<comments>http://linux-attitude.fr/post/prenez-le-controle-des-communications#comments</comments>
		<pubDate>Mon, 18 Jul 2011 07:00:28 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Firewall]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=1396</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: iptables android Maintenant nous savons tout ce qui passe par la tête d'un android. Mais on a découvert des choses qui ne nous plaisent pas. Couper des communications Donc vous voulez interdire certaines communications, par exemple la connexion au serveur de votre ennemi héréditaire (on ne sait jamais, la paranoïa peut mener [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: iptables android</p>


<p>Maintenant nous savons  <a href="http://linux-attitude.fr/post/espionner-son-android">tout ce qui passe</a> par la tête d'un android. Mais on a découvert des choses qui ne nous plaisent pas.</p>


<h3>Couper des communications</h3>


<p>Donc vous voulez interdire certaines communications, par exemple la connexion au serveur de votre ennemi héréditaire (on ne sait jamais, la paranoïa peut mener loin).</p>


<p>C'est simple linux a un firewall, profitez-en et utilisez iptables pour couper la communication&nbsp;:</p>
<pre>
# toujours sur le téléphone
$ chroot $ROOT
$ iptables -A OUTPUT -d 10.0.0.1 -j DROP
</pre>


<p>Au fait vous savez comment s'affichent les pubs&nbsp;? ;-)</p>


<h3>Proxy transparent</h3>

<p>Vous pouvez même filtrer un peu mieux tout simplement en, redirigeant le traffic vers un service adapté.</p>


<p>C'est simplement la technique du portail captif, mais cette fois à votre avantage. Par exemple pour rediriger le DNS vers votre serveur local&nbsp;:</p>
<pre>
$ iptables -A OUTPUT -p udp --port 53 -j REDIRECT
$ iptables -A OUTPUT -p tcp --port 53 -j REDIRECT
/// 

Bien sûr il faut mettre un serveur dns local que vous maitrisez.

Et bien sûr vous pouvez faire pareil avec un proxy http qui prendra la décision au niveau du dessus.
</pre>

<p>$ iptables -A OUTPUT -p tcp --port 80 -j REDIRECT
///</p>


<p>Et pour ceux qu'android n'intéresse pas, n'oubliez pas que ça marche aussi sur votre passerelle à l'entrée de votre réseau ou n'importe quel PC ...</p>
	Tags:<a href="http://linux-attitude.fr/tag/firewall" title="Firewall" rel="tag">Firewall</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/prenez-le-controle-des-communications/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Limitation de connexions avec iptables</title>
		<link>http://linux-attitude.fr/post/limitation-de-connexions-avec-iptables?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=limitation-de-connexions-avec-iptables</link>
		<comments>http://linux-attitude.fr/post/limitation-de-connexions-avec-iptables#comments</comments>
		<pubDate>Mon, 11 Oct 2010 17:16:47 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=1065</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: iptables -m hashlimit Aujourd'hui un ami me dit "hey j'ai un truc pour toi" et il me file sa configuration iptables pour limiter les barbares qui viennent lui détruire son serveur et sa connectivité à coup de robots farceurs. De coup je me suis penché sur son script et je vous le [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: iptables -m hashlimit</p>


<p>Aujourd'hui un ami me dit "hey j'ai un truc pour toi" et il me file sa configuration iptables pour limiter les barbares qui viennent lui détruire son serveur et sa connectivité à coup de robots farceurs.</p>


<p>De coup je me suis penché sur son script et je vous le livre avec son accord (toujours accorder un complément d'objet webesque comme dirait <a href="http://www.retourneaucm1.com/" hreflang="fr">la métraisse</a>).</p>


<h3>Le script</h3>


<p>Il est court mais bref&nbsp;:</p>
<pre>
IPT=/sbin/iptables
WEBMAXPERMIN=&quot;260&quot;
WEBBURST=&quot;40&quot;

$IPT -N throttle

# hashlimit-htable-expire en millisecondes 
$IPT -A throttle -m hashlimit \
 --hashlimit-name webthrottle \
 --hashlimit-upto $WEBMAXPERMIN/minute \
 --hashlimit-mode srcip \
 --hashlimit-burst $WEBBURST \
 --hashlimit-htable-expire 300000 \
-j ACCEPT
$IPT -A throttle -j LOG --log-prefix &quot;FREIN &quot; --log-level 1
$IPT -A throttle -j REJECT

#puis dans  le INPUT
$IPT -A INPUT -d $ETH00 -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -j throttle

</pre>

<p><span id="more-1065"></span></p>


<h3>L'explication</h3>

<p>Et il est aussi simple lorsqu'on connait hashlimit.</p>


<p>Tout d'abord on créé une règle nommée throttle qui utilisera hashlimit pour éjecter des paquets en fonction de leur nombre.</p>

<ul>
<li>On met en mode srcip&nbsp;: filtrage en fonction de la source seulement, donc même si le port change, on prend la même entrée dans la table</li>
<li>On choisit une limite à 260 paquets par minute (pourquoi pas)</li>
<li>On choisit un burst de 40 et une expiration de 300s et là il faut un peu plus d'explication.</li>
</ul>

<p>Le burst c'est la possibilité de dépasser la limite autorisée pendant un temps donné. Ce burst se mesure par rapport à la limite du nombre de paquet par seconde. Par exemple un burst de 10 avec un maximum de 5 paquet par seconde donne un burst de 50 paquets. Ici ca nous donne 260/60*40=173 paquets. Pourquoi ce calcul&nbsp;? Je ne sais pas mais c'est ce que j'ai constaté dans les sources.</p>


<p>Attention le burst est un nombre de paquets mais pas par seconde. C'est un nombre qui lorsqu'il est atteint provoque l'application de la règle. Par exemple, si quelqu'un passe 174 fois dans cette règle en 1s il se fera couper de même s'il passe 179 fois en 2s.</p>


<p>La première limite à cela est l'expiration de l'entrée. Si le bourrin ne fait rien pendant la période d'expiration, il a le droit de revenir après (ici 300s).</p>


<p>S'il ne dépasse pas son burst, il a aussi le droit de revenir mais cette fois à la vitesse maximale autorisée (ici de 4.3 paquets/s).</p>


<p>Et enfin, on fait passer les paquets en entrée sur le port 80 (on protège le serveur web) dans cette règle. On veut limiter les connexions, donc on y fait passer les paquets connus pour passer en début et en fin de connexion. Ici deux d'entre eux sont inutiles car on ne considère que les connexions entrantes. Comme on matche le début et la fin des connexions, la limite en nombre de connexion correspond aux toutes les limites évoquées précédemment  divisées par 2.</p>


<h3>Twitter</h3>

<p>Rien à voir avec le schmilblick, mais je vais maintenant publier des astuces de moins de 140 caractères sur twitter une fois par jour.</p>


<p>Pour les suivre, rendez-vous sur <a href="http://twitter.com/#!/Peckpeck">http://twitter.com/#!/Peckpeck</a>.</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/couper-des-connexions' rel='bookmark' title='Permanent Link: Couper des connexions'>Couper des connexions</a></li>
<li><a href='http://linux-attitude.fr/post/un-tien-vaut-mieux-que-deux-connexions' rel='bookmark' title='Permanent Link: Un tien vaut mieux que deux connexions'>Un tien vaut mieux que deux connexions</a></li>
<li><a href='http://linux-attitude.fr/post/traque-sur-internet' rel='bookmark' title='Permanent Link: Traque sur internet'>Traque sur internet</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/firewall" title="Firewall" rel="tag">Firewall</a>, <a href="http://linux-attitude.fr/tag/planet-libre" title="planet-libre" rel="tag">planet-libre</a>, <a href="http://linux-attitude.fr/tag/reseau" title="Réseau" rel="tag">Réseau</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/limitation-de-connexions-avec-iptables/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Firewall en 2 temps 3 mouvements</title>
		<link>http://linux-attitude.fr/post/firewall-en-2-temps-3-mouvements?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=firewall-en-2-temps-3-mouvements</link>
		<comments>http://linux-attitude.fr/post/firewall-en-2-temps-3-mouvements#comments</comments>
		<pubDate>Wed, 23 Jun 2010 16:44:15 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[planet-libre]]></category>
		<category><![CDATA[Système]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/?p=908</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: ferm Ferm Vous battez-vous toujours avec vos scripts shell pour configurer les firewall de vos serveurs&#160;? Ne ramez plus, j'ai la solution&#160;: Ferm. Pourquoi ferm&#160;? Ben pourquoi pas&#160;? Je l'ai choisi car il ne fait qu'une chose (et le fait bien), il remplace vos scripts shell de lancement de firewall. Et c'est [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: ferm</p>


<h3>Ferm</h3>

<p>Vous battez-vous toujours avec vos scripts shell pour configurer les firewall de vos serveurs&nbsp;?
Ne ramez plus, j'ai la solution&nbsp;: <a href="http://ferm.foo-projects.org/" hreflang="en">Ferm</a>.</p>


<p>Pourquoi ferm&nbsp;? Ben pourquoi pas&nbsp;?</p>


<p>Je l'ai choisi car il ne fait qu'une chose (et le fait bien), il remplace vos scripts shell de lancement de firewall. Et c'est tout&nbsp;! Pas d'interface graphique, pas d'assistance à création de règle, pas de gestion de votre serveur DHCP ...</p>


<p>Donc si votre machine de bureau sert de passerelle vers internet, ou si vous ne connaissez pas bien iptables, ce n'est probablement pas le meilleur outil. Par contre si vous avez l'habitude d'écrire des scripts shell pour gérer votre firewall, ferm est là pour vous simplifier la vie.</p>


<h3>Configuration</h3>

<p>Ferm génère des règles iptables à partir de son fichier de configuration. Il n'invente rien, il ne fait qu'écrire sous forme hiérarchique les règles iptables et vous permet d'utiliser des variable et des listes. Il faut donc les connaître un peu.</p>


<p>Petit exemple pour vous montrer comment gagner du temps (il se comprend tout seul)&nbsp;:
<span id="more-908"></span></p>

<pre>
@def $SERVERS = (10.0.0.2 10.0.0.3);
table filter {
    chain FORWARD {
        policy DROP;
        proto tcp dport (80 443) daddr $SERVERS ACCEPT;
    }
}
</pre>


<p>On demande à ferm de générer les règles iptables mais sans les mettre dans le firewall (pas fou)&nbsp;:</p>
<pre>
$ ferm -n --lines firewall.conf
</pre>


<p>Et on obtient directement nos 4 règles auxquelles on s'attendait&nbsp;:</p>
<pre>
*filter
:FORWARD DROP [0:0]
-A FORWARD --protocol tcp --dport 80 --destination 10.0.0.2 --jump ACCEPT
-A FORWARD --protocol tcp --dport 80 --destination 10.0.0.3 --jump ACCEPT
-A FORWARD --protocol tcp --dport 443 --destination 10.0.0.2 --jump ACCEPT
-A FORWARD --protocol tcp --dport 443 --destination 10.0.0.3 --jump ACCEPT
COMMIT
</pre>


<p>On comprend bien qu'on va gagner du temps en scripting. Il faudra toujours écrire ses propres règles, mais elles seront "standardisées" et factorisées. Donc le <strong>transfert de compétence</strong> d'une personne à l'autre sera facilité. Le transfert de script aussi puisque ferm sait générer des scripts qui devront être poussés et lancés sur d'autres machines. Pratique pour ceux qui veulent une gestion centralisée des firewall de leurs serveurs/routeurs.</p>


<h3>Mieux</h3>

<p>Vous aurez remarqué que ferm génère des règles de type "sauvegarde iptables". Ce que je suis sur que vous ne faites pas dans vos script. Et pourtant c'est un gain de performance et de sécurité car l'ensemble des règles sera chargé en mémoire d'un coup.</p>


<p>De plus ferm gère lui-même le lancement du firewall au boot de la machine.</p>


<h3>La cerise</h3>

<p>Et si vous comptez passer à l'ipv6&nbsp;! Hé bien surtout ne faites rien&nbsp;! Réutilisez le même firewall, entourez vos règles de</p>
<pre>
domain (ip ip6) {
 ....
}
</pre>


<p>Et voila votre firewall dualstack est prêt.</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/tout-est-ephemere' rel='bookmark' title='Permanent Link: Tout est éphémère'>Tout est éphémère</a></li>
<li><a href='http://linux-attitude.fr/post/en-vrac-19' rel='bookmark' title='Permanent Link: En vrac (19)'>En vrac (19)</a></li>
<li><a href='http://linux-attitude.fr/post/a-larrache' rel='bookmark' title='Permanent Link: À l&#8217;arraché'>À l&#8217;arraché</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/firewall" title="Firewall" rel="tag">Firewall</a>, <a href="http://linux-attitude.fr/tag/planet-libre" title="planet-libre" rel="tag">planet-libre</a>, <a href="http://linux-attitude.fr/tag/systeme" title="Système" rel="tag">Système</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/firewall-en-2-temps-3-mouvements/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Traque sur internet</title>
		<link>http://linux-attitude.fr/post/traque-sur-internet?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=traque-sur-internet</link>
		<comments>http://linux-attitude.fr/post/traque-sur-internet#comments</comments>
		<pubDate>Wed, 06 May 2009 23:36:00 +0000</pubDate>
		<dc:creator>peck</dc:creator>
				<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[planet-libre]]></category>

		<guid isPermaLink="false">http://linux-attitude.fr/post/traque-sur-internet</guid>
		<description><![CDATA[Niveau&#160;: &#160;&#160;&#160;&#160;&#160; Résumé&#160;: conntrack I'm back ! Désolé de vous avoir fait attendre, j'étais en quelque sorte en vacances. Firewall Cette fois nous allons parler de firewall. Comme vous le savez, netfilter, le firewall intégré à linux, est statefull par défaut. Ce qui veut dire que si on ne lui dit pas de ne pas [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Niveau</strong>&nbsp;: <span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="s">&nbsp;</span><span class="e">&nbsp;</span><span class="e">&nbsp;</span><br />
<strong>Résumé</strong>&nbsp;: conntrack</p>


<p>I'm back !<br />
Désolé de vous avoir fait attendre, j'étais en quelque sorte en vacances.</p>


<h3>Firewall</h3>

<p>Cette fois nous allons parler de firewall. Comme vous le savez, netfilter, le firewall intégré à linux, est statefull par défaut. Ce qui veut dire que si on ne lui dit pas de ne pas le faire, il trace l'état de toutes les connexions qui le traversent. C'est grâce à cela qu'il sait filtrer les connexions avec des règles "simples" ou qu'il est capable de filtrer proprement le ftp.</p>


<p>Pour cela il garde en mémoire une table des connexions établies, qu'il peut communiquer au reste du monde, autrement appelé espace utilisateur. Il expose ces infos dans /proc/net/ip_conntrack* (entre autre, mais n'hésitez pas à regarder le contenu de ce répertoire pour plein de choses intéressantes).</p>


<p>La commande conntrack, du paquet éponyme sert à manipuler la table en question. Toute machine ayant un firewall, ou presque, on peut s'amuser à l'utiliser sur son PC. Mais c'est bien plus rigolo de faire ça sur un routeur ;-&gt;</p>


<p>D'ailleurs, si vous avez un serveur qui ne fait pas firewall et qui gère beaucoup de connexions (un serveur de twitter par exemple), vous pouvez désactiver le "connection tracking" pour soulager le noyau de cette tâche. Mais il faut entièrement désactiver le module, ce qui n'est pas des plus simple.</p>


<h3>Conntrack</h3>


<p>D'abord, commençons par lister les connexions connues&nbsp;:</p>
<pre>
$ conntrack -L
</pre>


<p>Pour une machine qui ne fait pas routeur, la liste est similaire à celle obtenue par netstat -atu.
Notez les informations intéressantes&nbsp;: état de la connexion, détail de la connexion (remarquez la répétition nécessaire pour le NAT), et surtout nombre de paquets et d'octets passés par cette connexion. Ce compteur peut être réinitialisé avec l'option -z de conntrack&nbsp;:</p>
<pre>
$ conntrack -L -z
</pre>


<p>Pratique quand on veut détecter les changements.</p>


<p>Vous pouvez aussi regarder ce qui se passe en direct sur votre routeur&nbsp;:</p>
<pre>
$ conntrack -E
</pre>


<p>Mais lisez bien le manuel, pour limiter la sortie, car sur un vrai routeur, il faut filtrer. Man conntrack contient toutes les explications.</p>


<p>Et le plus rigolo sur un routeur partagé, on enlève l'entrée&nbsp;:</p>
<pre>
# Attention, il faut tout spécifier pour être sûr qu'on parle de la bonne connexion
$ conntrack -D -s 1.2.3.4 -d 4.3.2.1 -p tcp --orig-port-src 5678 --orig-port-dst 22
</pre>


<p>Cela devrait couper la connexion si le firewall est bien configuré (et probablement aussi s'il est mal configuré).
C'est tout de même moins artisanal que <a href="http://linux-attitude.fr/post/Coupe-au-bol">l'ancienne technique</a>.</p>

<p></p><p>Si vous avez aimé, il y a aussi : </p><ol><li><a href='http://linux-attitude.fr/post/couper-des-connexions' rel='bookmark' title='Permanent Link: Couper des connexions'>Couper des connexions</a></li>
<li><a href='http://linux-attitude.fr/post/interface-de-loopback' rel='bookmark' title='Permanent Link: Interface de loopback'>Interface de loopback</a></li>
<li><a href='http://linux-attitude.fr/post/internet-pour-les-amis' rel='bookmark' title='Permanent Link: Internet pour les amis'>Internet pour les amis</a></li>
</ol>
	Tags:<a href="http://linux-attitude.fr/tag/firewall" title="Firewall" rel="tag">Firewall</a>, <a href="http://linux-attitude.fr/tag/planet-libre" title="planet-libre" rel="tag">planet-libre</a>, <a href="http://linux-attitude.fr/tag/reseau" title="Réseau" rel="tag">Réseau</a><br />
]]></content:encoded>
			<wfw:commentRss>http://linux-attitude.fr/post/traque-sur-internet/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
OK
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced) (User agent is rejected)
Database Caching 14/49 queries in 0.058 seconds using apc
Object Caching 1103/1132 objects using apc
Content Delivery Network via N/A

Served from: linux-attitude.fr @ 2012-02-04 19:25:08 -->
