<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://lea-linux.org/docs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Streetpc</id>
	<title>Lea Linux - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://lea-linux.org/docs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Streetpc"/>
	<link rel="alternate" type="text/html" href="https://lea-linux.org/documentations/Sp%C3%A9cial:Contributions/Streetpc"/>
	<updated>2026-04-27T09:27:01Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Discussion:Iptables&amp;diff=15196</id>
		<title>Discussion:Iptables</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Discussion:Iptables&amp;diff=15196"/>
		<updated>2008-02-26T22:12:09Z</updated>

		<summary type="html">&lt;p&gt;Streetpc : /* Modif : ascii art */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Commentaires de : StreetPC=&lt;br /&gt;
posté le 2005-09-04 17:57:37&lt;br /&gt;
&lt;br /&gt;
2-3 choses à rajouter parce que je les ai cherchées un peu longtemps :&lt;br /&gt;
  - l&#039;option ##-m## permet de charger un module au niveau du programme utilisé par iptables netfilter&lt;br /&gt;
  - l&#039;option ##-j## permet elle de spécifier la cible (target)=Commentaires de : EnnaeL=&lt;br /&gt;
posté le 2005-04-09 16:52:09&lt;br /&gt;
&lt;br /&gt;
N&#039;y a-t-il pas une erreur dans les scripts de &#039;démonstration&#039; ?&lt;br /&gt;
A savoir que :&lt;br /&gt;
1) dans le script flush_iptables.sh , il faut rajouter tous les modprobe effectués au début de firewall.sh ... puisque sinon, lorsqu&#039;on fait un &#039;restart&#039;, beaucoup de modules ne sont pas chargés :)&lt;br /&gt;
2) Dans le script firewall :&lt;br /&gt;
remplacer :&lt;br /&gt;
case &amp;quot;&amp;quot; in :&lt;br /&gt;
  start )&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
par&lt;br /&gt;
case $1 in :&lt;br /&gt;
  start )&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ensuite, tous les :&lt;br /&gt;
[ -eq 0 ] &amp;amp;&amp;amp; ...&lt;br /&gt;
&lt;br /&gt;
par&lt;br /&gt;
&lt;br /&gt;
[ $RETVAL -eq 0 ] &amp;amp;&amp;amp; ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enfin, les :&lt;br /&gt;
RETVAL=?&lt;br /&gt;
&lt;br /&gt;
par :&lt;br /&gt;
RETVAL=0&lt;br /&gt;
(je suppose...)&lt;br /&gt;
&lt;br /&gt;
En tout cas, un super exemple pour les débutants comme moi ! :)&lt;br /&gt;
&lt;br /&gt;
Anne : corrigé merci !&lt;br /&gt;
------------&lt;br /&gt;
&lt;br /&gt;
Salut,&lt;br /&gt;
&lt;br /&gt;
Tout d&#039;abord felicitation pour ce guide, il me sert de reference pour ma comprehension et l utilisation de l&#039;outil iptables.&lt;br /&gt;
Serait&#039;il possible que l auteur prenne contact avec moi car j aimerai ecrire un guide basee en majeur partie sur celui-ci et j aimerai avoir son accord.&lt;br /&gt;
&lt;br /&gt;
Encore merci.&lt;br /&gt;
&lt;br /&gt;
frodon&lt;br /&gt;
&lt;br /&gt;
== Adresse ip flotante ==&lt;br /&gt;
&lt;br /&gt;
Comment faire pour établir cette regle : &lt;br /&gt;
iptables -t nat -A PREROUTING -d 42.42.42.42 \&lt;br /&gt;
-p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80&lt;br /&gt;
lorsque l&#039;on est en ip flotante ?&lt;br /&gt;
Merci&lt;br /&gt;
&lt;br /&gt;
== ASCII Art ==&lt;br /&gt;
Le Ascii art ne passe pas du tout. La tentative de schéma est horrible !&lt;br /&gt;
Effectivement, pouquoi ne pas faire un shéma avec inscape ?&lt;br /&gt;
&lt;br /&gt;
== le script init.d ==&lt;br /&gt;
&lt;br /&gt;
¿ Je ne trouve pas /etc/init.d/functions sur l&#039;installation dont je dispose de Debian Etch.&lt;br /&gt;
A quoi cela sert-il? Est-ce indispensable? Doit-on le créer, ou s&#039;installe-t-il?&lt;br /&gt;
&lt;br /&gt;
En tout cas merci pour l&#039;aide que m&#039;a apporté ce tuto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bon, finalement, je l&#039;ai trouvé. Dans Debian Etch, c&#039;est /lib/lsb/init-functions.&lt;br /&gt;
non?&lt;br /&gt;
&lt;br /&gt;
== script firewall.sh ==&lt;br /&gt;
&lt;br /&gt;
ne devrait-on pas flusher aussi les règles de nat ?&lt;br /&gt;
&lt;br /&gt;
== Modif : ascii art ==&lt;br /&gt;
&lt;br /&gt;
J&#039;ai modifié l&#039;ascii art en virant les balises.&lt;br /&gt;
A noter que la balise tt ne fait pas son travail sur mon Firefox/mac, j&#039;ai donc mis un &amp;amp;lt;pre&amp;amp;gt; et enlevé les caractères gras.&lt;br /&gt;
&lt;br /&gt;
Je ne sais pas non plus à quoi correspondait le 3128 qui traînait sous &amp;quot;eth1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Si quelqu&#039;un peut prendre le temps de faire un ascii art, je suis pour ;-)&lt;/div&gt;</summary>
		<author><name>Streetpc</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Discussion:Iptables&amp;diff=15195</id>
		<title>Discussion:Iptables</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Discussion:Iptables&amp;diff=15195"/>
		<updated>2008-02-26T22:11:53Z</updated>

		<summary type="html">&lt;p&gt;Streetpc : Modif : ascii art&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Commentaires de : StreetPC=&lt;br /&gt;
posté le 2005-09-04 17:57:37&lt;br /&gt;
&lt;br /&gt;
2-3 choses à rajouter parce que je les ai cherchées un peu longtemps :&lt;br /&gt;
  - l&#039;option ##-m## permet de charger un module au niveau du programme utilisé par iptables netfilter&lt;br /&gt;
  - l&#039;option ##-j## permet elle de spécifier la cible (target)=Commentaires de : EnnaeL=&lt;br /&gt;
posté le 2005-04-09 16:52:09&lt;br /&gt;
&lt;br /&gt;
N&#039;y a-t-il pas une erreur dans les scripts de &#039;démonstration&#039; ?&lt;br /&gt;
A savoir que :&lt;br /&gt;
1) dans le script flush_iptables.sh , il faut rajouter tous les modprobe effectués au début de firewall.sh ... puisque sinon, lorsqu&#039;on fait un &#039;restart&#039;, beaucoup de modules ne sont pas chargés :)&lt;br /&gt;
2) Dans le script firewall :&lt;br /&gt;
remplacer :&lt;br /&gt;
case &amp;quot;&amp;quot; in :&lt;br /&gt;
  start )&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
par&lt;br /&gt;
case $1 in :&lt;br /&gt;
  start )&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ensuite, tous les :&lt;br /&gt;
[ -eq 0 ] &amp;amp;&amp;amp; ...&lt;br /&gt;
&lt;br /&gt;
par&lt;br /&gt;
&lt;br /&gt;
[ $RETVAL -eq 0 ] &amp;amp;&amp;amp; ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Enfin, les :&lt;br /&gt;
RETVAL=?&lt;br /&gt;
&lt;br /&gt;
par :&lt;br /&gt;
RETVAL=0&lt;br /&gt;
(je suppose...)&lt;br /&gt;
&lt;br /&gt;
En tout cas, un super exemple pour les débutants comme moi ! :)&lt;br /&gt;
&lt;br /&gt;
Anne : corrigé merci !&lt;br /&gt;
------------&lt;br /&gt;
&lt;br /&gt;
Salut,&lt;br /&gt;
&lt;br /&gt;
Tout d&#039;abord felicitation pour ce guide, il me sert de reference pour ma comprehension et l utilisation de l&#039;outil iptables.&lt;br /&gt;
Serait&#039;il possible que l auteur prenne contact avec moi car j aimerai ecrire un guide basee en majeur partie sur celui-ci et j aimerai avoir son accord.&lt;br /&gt;
&lt;br /&gt;
Encore merci.&lt;br /&gt;
&lt;br /&gt;
frodon&lt;br /&gt;
&lt;br /&gt;
== Adresse ip flotante ==&lt;br /&gt;
&lt;br /&gt;
Comment faire pour établir cette regle : &lt;br /&gt;
iptables -t nat -A PREROUTING -d 42.42.42.42 \&lt;br /&gt;
-p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80&lt;br /&gt;
lorsque l&#039;on est en ip flotante ?&lt;br /&gt;
Merci&lt;br /&gt;
&lt;br /&gt;
== ASCII Art ==&lt;br /&gt;
Le Ascii art ne passe pas du tout. La tentative de schéma est horrible !&lt;br /&gt;
Effectivement, pouquoi ne pas faire un shéma avec inscape ?&lt;br /&gt;
&lt;br /&gt;
== le script init.d ==&lt;br /&gt;
&lt;br /&gt;
¿ Je ne trouve pas /etc/init.d/functions sur l&#039;installation dont je dispose de Debian Etch.&lt;br /&gt;
A quoi cela sert-il? Est-ce indispensable? Doit-on le créer, ou s&#039;installe-t-il?&lt;br /&gt;
&lt;br /&gt;
En tout cas merci pour l&#039;aide que m&#039;a apporté ce tuto.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bon, finalement, je l&#039;ai trouvé. Dans Debian Etch, c&#039;est /lib/lsb/init-functions.&lt;br /&gt;
non?&lt;br /&gt;
&lt;br /&gt;
== script firewall.sh ==&lt;br /&gt;
&lt;br /&gt;
ne devrait-on pas flusher aussi les règles de nat ?&lt;br /&gt;
&lt;br /&gt;
== Modif : ascii art ==&lt;br /&gt;
&lt;br /&gt;
J&#039;ai modifié l&#039;ascii art en virant les balises.&lt;br /&gt;
A noter que la balise tt ne fait pas son travail sur mon Firefox/mac, j&#039;ai donc mis un &amp;amp;lt;pre&amp;amp;gt; et enlevé les caractères gras.&lt;br /&gt;
&lt;br /&gt;
Je ne sais pas non plus à quoi correspondait le 3128 qui traînait sous &amp;quot;eth1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Si quelqu&#039;un peut prendre le temps de faire un ascii art, je suis pour ;)&lt;/div&gt;</summary>
		<author><name>Streetpc</name></author>
	</entry>
	<entry>
		<id>https://lea-linux.org/docs/index.php?title=Iptables&amp;diff=15194</id>
		<title>Iptables</title>
		<link rel="alternate" type="text/html" href="https://lea-linux.org/docs/index.php?title=Iptables&amp;diff=15194"/>
		<updated>2008-02-26T22:09:26Z</updated>

		<summary type="html">&lt;p&gt;Streetpc : /* 3/ Application par l&amp;#039;exemple */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Sécurité]]&lt;br /&gt;
= IpTables par l&#039;exemple =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;leatitre&amp;quot;&amp;gt;IpTables par l&#039;exemple&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leapar&amp;quot;&amp;gt;Arnaud de Bermingham&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;leadesc&amp;quot;&amp;gt;IpTables par l&#039;exemple&amp;lt;/div&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Contact : [mailto:duracell chez apinc point org  duracell chez apinc point org]&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;révision par Jice &amp;lt;[mailto:jice chez lea-linux point org jice chez lea-linux point org]&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;révision par Fred &amp;lt;[mailto:fred chez lea-linux point org fred chez lea-linux point org]&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&#039;&#039;révision par Jiel &amp;lt;[mailto:jiel chez lea-linux point org jiel chez lea-linux point org]&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Cet article présente de façon pratique la mise en place d&#039;un firewall / proxy sur une machine GNU/Linux tournant avec un noyau 2.4 (au moins). &amp;lt;br /&amp;gt;Pour des informations plus théoriques sur les firewall/proxies, vous pouvez lire [[Reseau-secu-firewall|l&#039;article firewall]].&lt;br /&gt;
&lt;br /&gt;
=== Présentation d&#039;IpTables ===&lt;br /&gt;
&lt;br /&gt;
IpTables est une solution complète de firewall (noyau 2.4) remplaçant &#039;&#039;ipchains&#039;&#039; (noyau 2.2) tournant sous le système GNU/Linux. IpTables permet de faire du firewalling &#039;&#039;stateful&#039;&#039; (à états), de la translation de port et d&#039;adresse, du filtrage au niveau 2 et beaucoup d&#039;autres choses que nous n&#039;allons pas aborder comme le &amp;quot;Mangle&amp;quot; ou modification des paquets à la volée (atchoum).&lt;br /&gt;
&lt;br /&gt;
IpTables est fiable et dispose de très nombreuses options qui permettent de faire du filtrage très fin.&lt;br /&gt;
&lt;br /&gt;
Une précision: on parle souvent de « iptables » par abus de langage, alors que le nom du logiciel est « Netfilter ». Netfilter est le module qui fournit à GNU/Linux les fonctions de pare-feu, de partage de connexions internet (NAT) et d&#039;historisation du trafic réseau. iptables est en fait juste l&#039;outil qui permet à un administrateur de configurer Netfilter en mode utilisateur. iptables-restore et iptables-save sont deux commandes associées qui permettent de sauvegarder/restaurer la configuration Netfilter.&lt;br /&gt;
&lt;br /&gt;
=== Licence de NetFilter ===&lt;br /&gt;
&lt;br /&gt;
NetFilter est sous licence libre [[:Catégorie:GPL|GPL]],&lt;br /&gt;
&lt;br /&gt;
== 1/ Installation ==&lt;br /&gt;
&lt;br /&gt;
=== 1.1/ Prérequis ===&lt;br /&gt;
&lt;br /&gt;
IpTables est installé en standard sur de nombreuses distributions GNU/Linux récentes (kernel 2.4.x. ou supérieur).&lt;br /&gt;
&lt;br /&gt;
IpTables a besoin au minimum d&#039;un noyau 2.4 compilé avec des options spéciales. Ceci ne pose pas de problèmes avec les noyaux 2.4 génériques des principales distributions.&lt;br /&gt;
&lt;br /&gt;
=== 1.2/ Options de compilation du kernel ===&lt;br /&gt;
&lt;br /&gt;
Si vous désirez re-compiler votre kernel, il faut spécifier les options nécessaires au fonctionnement d&#039;iptables.&lt;br /&gt;
&lt;br /&gt;
Les options suivantes doivent êtres activées en module (&amp;lt;tt&amp;gt;M&amp;lt;/tt&amp;gt;) ou dans le kernel (&amp;lt;tt&amp;gt;Y&amp;lt;/tt&amp;gt;) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;CONFIG_PACKET&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;CONFIG_NETFILTER&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;CONFIG_IP_NF_CONNTRACK&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;CONFIG_IP_NF_FTP&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;CONFIG_IP_NF_IRC&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;CONFIG_IP_NF_IPTABLES&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;CONFIG_IP_NF_FILTER&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;CONFIG_IP_NF_NAT&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;CONFIG_IP_NF_MATCH_STATE&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;CONFIG_IP_NF_TARGET_LOG&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;CONFIG_IP_NF_MATCH_LIMIT&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;CONFIG_IP_NF_TARGET_MASQUERADE&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
et éventuellement :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;CONFIG_IP_NF_COMPAT_IPCHAINS&amp;lt;/tt&amp;gt; pour garder la compatibilité avec &amp;lt;u&amp;gt;ipchains&amp;lt;/u&amp;gt;. &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;CONFIG_IP_NF_COMPAT_IPFWADM&amp;lt;/tt&amp;gt; pour garder la compatibilité avec &amp;lt;u&amp;gt;ipfwadm&amp;lt;/u&amp;gt;. &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;CONFIG_IP_NF_TARGET_REDIRECT&amp;lt;/tt&amp;gt; indispensable, pour les proxies transparents par exemple. &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;CONFIG_IP_NF_MATCH_MAC&amp;lt;/tt&amp;gt; permet de matcher avec les adresses MAC.&lt;br /&gt;
&lt;br /&gt;
Ne pas oublier le support réseau et TCP/IP et compiler le kernel comme d&#039;habitude : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;make dep &amp;amp;&amp;amp; make clean &amp;amp;&amp;amp; make bzImage &amp;amp;&amp;amp; make modules &amp;amp;&amp;amp; make modules_install&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 1.3/ Installation ===&lt;br /&gt;
&lt;br /&gt;
Récupérer le package &amp;lt;tt&amp;gt;netfilter&amp;lt;/tt&amp;gt; et l&#039;installer comme d&#039;habitude avec apt-get, urpmi, emerge... &amp;lt;br /&amp;gt;Notons que sur les versions inférieures a Red Hat 7.1, il faut compiler un kernel 2.4 car iptables ne supporte pas les kernels 2.2.x. La compilation de iptables est complexe. Le mieux est de lire le fichier INSTALL du package des sources.&lt;br /&gt;
&lt;br /&gt;
=== 1.4/ Chargement des modules ===&lt;br /&gt;
&lt;br /&gt;
Dans le cas ou les options iptables du kernel ont été compilées en modules, il est nécessaire de charger ces modules avant de pouvoir utiliser iptables :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# modprobe ip_tables&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
selon les besoins, on peut éventuellement charger les modules suivants :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# modprobe ip_nat_ftp&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# modprobe ip_nat_irc&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# modprobe iptable_filter&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# modprobe iptable_mangle&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# modprobe iptable_nat&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si on a besoin de pouvoir rediriger (forward) les paquets IP arrivant sur un interface réseau (connectée par exemple à Internet) vers une autre interface réseau (connectée par exemple au réseau local), il sera nécessaire, dans la plupart des cas, d&#039;exécuter cette commande :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
afin de l&#039;indiquer au noyau.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nota Bene :&#039;&#039;&#039; tous les modprobe semblent inutiles car le kernel les chargent automatiquement si l&#039;on se sert de l&#039;une des fonctionnalités d&#039;iptables.&lt;br /&gt;
&lt;br /&gt;
== 2/ Présentation ==&lt;br /&gt;
&lt;br /&gt;
=== 2.1/ Les tables ===&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Table NAT&#039;&#039;&#039; (Network Address Translation) : Table utilisée pour la translation d&#039;adresse ou la translation de port. &amp;lt;br /&amp;gt;Il a 2 types de chaînes&amp;lt;sup&amp;gt;&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;lt;/sup&amp;gt; : &#039;&#039;PREROUTING&#039;&#039; qui permet de spécifier &amp;quot;à l&#039;arrivée du firewall&amp;quot; et la chaîne &#039;&#039;POSTROUTING&#039;&#039; qui permet de spécifier &amp;quot;à la sortie du firewall&amp;quot;. Il existe 3 targets (ou cibles) : &#039;&#039;DNAT&amp;lt;sup&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/sup&amp;gt;, SNAT&amp;lt;sup&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/sup&amp;gt;&#039;&#039; et &#039;&#039;MASQUERADE&amp;lt;sup&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/sup&amp;gt;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Table FILTER&#039;&#039;&#039; : C&#039;est la table par défaut lorsque l&#039;on en spécifie pas. &amp;lt;br /&amp;gt;Cette table contient toutes les règles de filtrage, il existe 3 types de chaînes : &#039;&#039;FORWARD&#039;&#039; pour les paquets passant par le firewall, &#039;&#039;INPUT&#039;&#039; pour les paquets entrant et &#039;&#039;OUTPUT&#039;&#039; pour les paquets sortants. Les cibles disponibles sont : &#039;&#039;ACCEPT, DENY, DROP, REJECT °&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Table Mangle&#039;&#039;&#039; : C&#039;est la table qui contient les règles pour la modification de paquets. &amp;lt;br /&amp;gt;Elle est peu utilisée et ne sera pas décrite dans cet article.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;A noter&amp;lt;/u&amp;gt; : Les règles sont évaluées dans l&#039;ordre, par défaut la table &#039;&#039;FILTER&#039;&#039; est vide et donc accepte tout. Aucune règle de translation d&#039;adresse n&#039;est présente par défaut.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;sup&amp;gt;&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;lt;/sup&amp;gt; &amp;lt;u&amp;gt;chaîne&amp;lt;/u&amp;gt;&lt;br /&gt;
: une chaîne est une suite de règles, qui sont prises dans l&#039;ordre ; dès qu&#039;une règle s&#039;applique à un paquet, elle est déclenchée, et la suite de la chaîne est ignorée.&lt;br /&gt;
; * &amp;lt;u&amp;gt;SNAT&amp;lt;/u&amp;gt;&lt;br /&gt;
: permet de modifier l&#039;adresse source du paquet.&lt;br /&gt;
; * &amp;lt;u&amp;gt;DNAT&amp;lt;/u&amp;gt;&lt;br /&gt;
: permet de modifier l&#039;adresse destination du paquet.&lt;br /&gt;
; * &amp;lt;u&amp;gt;MASQUERADE&amp;lt;/u&amp;gt;&lt;br /&gt;
: Une passerelle (gateway) transforme les paquets sortants passant par elle pour donner l&#039;illusion qu&#039;ils sortent de la passerelle elle-même par un port alloué dynamiquement ; lorsque la passerelle recoit une réponse sur ce port, elle utilise une table de correspondance entre le port et les machines du réseau privé qu&#039;elle gère pour lui faire suivre le paquet.&lt;br /&gt;
; ° &amp;lt;u&amp;gt;policy ACCEPT&amp;lt;/u&amp;gt;&lt;br /&gt;
: permet d&#039;accepter un paquet grâce à la règle vérifiée.&lt;br /&gt;
; ° &amp;lt;u&amp;gt;policy DROP&amp;lt;/u&amp;gt;&lt;br /&gt;
: Rejet d&#039;un paquet sans message d&#039;erreur si la règle est vérifiée (&amp;quot;non ! j&#039;en veux pas mais je dis rien à l&#039;expediteur&amp;quot;).&lt;br /&gt;
; ° &amp;lt;u&amp;gt;policy REJECT&amp;lt;/u&amp;gt;&lt;br /&gt;
: Rejet avec un retour de paquet d&#039;erreur à l&#039;expediteur si la règle est verifiée (&amp;quot;un paquet recommandé de La Poste refusé par son destinataire&amp;quot;).&lt;br /&gt;
; ° &amp;lt;u&amp;gt;policy LOG&amp;lt;/u&amp;gt;&lt;br /&gt;
: Affiche le resultat vers la sortie standard &lt;br /&gt;
: peut etre associe a un préfixe pour une meilleure lisibilité (un préfixe pour les paquets rejetes,un autre pour les paquets forwardés etc...) &lt;br /&gt;
:Exemple : -j LOG --log-prefix &#039;[IPTABLES DROP] : &#039;&lt;br /&gt;
&lt;br /&gt;
=== 2.2/ Les commandes ===&lt;br /&gt;
&lt;br /&gt;
IpTables n&#039;est pas livré avec une interface graphique ; les commandes et les règles sont passées en ligne de commande. Le mieux est d&#039;écrire des scripts (à rajouter dans &amp;lt;tt&amp;gt;/etc/rc.d/init.d&amp;lt;/tt&amp;gt;) qui permettent d&#039;appliquer toutes les règles d&#039;un seul coup, dès le démarrage du GNU/Linux.&lt;br /&gt;
&lt;br /&gt;
==== 2.2.1/ Commandes principales ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-A --append&amp;lt;/tt&amp;gt; : Ajoute la règle à la fin de la chaîne spécifiée &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemple :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A INPUT ...&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-D --delete&amp;lt;/tt&amp;gt; : Permet de supprimer une chaîne. On peut l&#039;utiliser de 2 manières, soit en spécifiant le numéros de la chaîne a supprimer, soit en spécifiant la règle à retirer. &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemples :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -D INPUT --dport 80 -j DROP&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -D INPUT 1&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-R --replace&amp;lt;/tt&amp;gt; : Permet de remplacer la chaîne spécifiée. &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemple :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -R INPUT 1 -s 192.168.0.1 -j DROP&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-I --insert&amp;lt;/tt&amp;gt; : Permet d&#039;ajouter une chaîne dans un endroit spécifié de la chaîne. &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&lt;br /&gt;
Exemple :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -I INPUT 1 --dport 80 -j ACCEPT&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&#039;&#039;&lt;br /&gt;
Si aucun chiffre n&#039;est spécifié à la suite (#iptables  -I INPUT --dport 80 -j ACCEPT), la règle est ajoutée au début de la chaîne spécifiée&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-L --list&amp;lt;/tt&amp;gt; : Permet d&#039;afficher les règles. &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemples :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -L        &amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;nowiki&amp;gt;# Affiche toutes les règles des chaînes de FILTER&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -L INPUT  &amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# Affiche toutes les règles de INPUT (FILTER)&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-F --flush&amp;lt;/tt&amp;gt; : Permet de vider toutes les règles d&#039;une chaîne. &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemple :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -F INPUT&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-N --new-chain&amp;lt;/tt&amp;gt; : Permet de créer une nouvelle chaîne. &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemple :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -N LOG_DROP&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-X --delete-chain&amp;lt;/tt&amp;gt; : Permet d&#039;effacer une chaîne. &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemple :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -X LOG_DROP&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-P --policy&amp;lt;/tt&amp;gt; : Permet de spécifier au noyau la politique par défaut d&#039;une chaîne DENY, ACCEPT, REJECT, DROP ... &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemple :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -P INPUT DROP&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.2.2/ Commandes pour matcher ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Remarques&amp;lt;/u&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
Le &amp;quot;!&amp;quot; peut être utilisé pour certaines commandes afin de spécifier le contraire (on peut le traduire par &amp;quot;sauf&amp;quot;). Par exemple une commande qui doit refuser tout trafic TCP sauf ce qui provient de l&#039;adresse IP 10.42.42.42 sera traduite par la commande suivante : &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemple :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A INPUT -p tcp --source ! 10.42.42.42 -j DROP&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les adresses IP peuvent optionnellement être spécifiées avec le masque associé sous la forme [adresse ip]/[masque].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-j (jump)&amp;lt;/tt&amp;gt; : Défini l&#039;action à prendre si un paquet répond aux critères de cette règle: &amp;lt;tt&amp;gt;ACCEPT&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;LOG&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;DROP&amp;lt;/tt&amp;gt;... &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemple :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A INPUT -p icmp -j DROP&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-p --protocol&amp;lt;/tt&amp;gt; : Spécifier un protocole : &amp;lt;tt&amp;gt;tcp&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;udp&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;icmp&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;all&amp;lt;/tt&amp;gt; (tous) &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemple :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A INPUT -p icmp -j DROP&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-s --source&amp;lt;/tt&amp;gt; : Spécifier une adresse source à matcher &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemple :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A INPUT -p tcp -s 192.168.42.42 -j ACCEPT&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-d --destination&amp;lt;/tt&amp;gt; : Spécifier une adresse destination &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemple :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A FORWARD -p tcp -d 10.1.0.1 -j ACCEPT&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-i --in-interface&amp;lt;/tt&amp;gt; : Spécifier une interface d&#039;entrée &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemple :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A INPUT -p icmp -i eth0 -j DROP&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-o --out-interface&amp;lt;/tt&amp;gt; : Spécifier une interface de sortie &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemple :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A OUTPUT -p icmp -o eth0 -j DROP&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;-f --fragment&amp;lt;/tt&amp;gt; : Paquet fragmenté &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemple :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A INPUT -p icmp -f -j DROP&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;--sport --source-port&amp;lt;/tt&amp;gt; : Spécifier le port source ou une plage de ports, fonctionne aussi en udp, &amp;lt;tt&amp;gt;-m multiport&amp;lt;/tt&amp;gt; permet de &amp;lt;br /&amp;gt;spécifier plusieurs ports à matcher. &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemples :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A INPUT -p tcp --sport 80 -j ACCEPT&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A INPUT -p udp --sport 80 -j DROP&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A OUTPUT -p tcp -m multiport --sport 3128,21,1000 -j DROP&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A OUTPUT -p tcp --sport 1024:2042 -j ACCEPT&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;--dport --destination-port&amp;lt;/tt&amp;gt; : Spécifier le port destination ou une plage de ports, fonctionne aussi en udp, &amp;lt;tt&amp;gt;-m multiport&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;permet de spécifier plusieurs ports a matcher. &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemples :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A INPUT -p tcp --dport 110 -j DROP&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A INPUT -p udp --dport 110 -j DROP&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A INPUT -p tcp -m multiport --dport 110,4242,119 -j DROP&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A INPUT -p tcp --sport 4925:4633 -j ACCEPT&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;--tcp-flags&amp;lt;/tt&amp;gt; : Spécifier un flag tcp à matcher : &amp;lt;tt&amp;gt;SYN ACK FIN RST URG PSH ALL NONE&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemple :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A INPUT -p tcp --dport 42 --tcp-flags SYN,ACK -j ACCEPT&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;--icmp-type&amp;lt;/tt&amp;gt; : Spécifier un type de paquet icmp à matcher &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemple :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A INPUT -p icmp --icmp-type 8 -j DROP&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;--mac-source&amp;lt;/tt&amp;gt; : Spécifier l&#039;adresse MAC à matcher &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemple :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A INPUT --mac-source 42.42.AA.42.42.AA -j DROP&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;En cas d&#039;erreur, il peut-être nécessaire de spécifier le module mac, exemple :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A INPUT -m mac --mac-source 42.42.AA.42.42.AA -j DROP&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;--state&amp;lt;/tt&amp;gt; : Permet de spécifier l&#039;état du paquet à matcher parmi les états suivants : &amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt; ESTABLISHED &amp;lt;/tt&amp;gt;&amp;lt;nowiki&amp;gt;: paquet associé à une connexion déjà établie &amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt; NEW         &amp;lt;/tt&amp;gt;&amp;lt;nowiki&amp;gt;: paquet demandant une nouvelle connexion &amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt; INVALID     &amp;lt;/tt&amp;gt;&amp;lt;nowiki&amp;gt;: paquet associé à une connexion inconnue &amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt; RELATED     &amp;lt;/tt&amp;gt;&amp;lt;nowiki&amp;gt;: Nouvelle connexion mais liée, idéal pour les connexions FTP &amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemples :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Spécificités NAT&amp;lt;/u&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;--to-destination&amp;lt;/tt&amp;gt; : Utilisé en target pour le DNAT, permet de spécifier l&#039;adresse de destination de la translation, on peut également spécifier un port s&#039;il est différent du port source. &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemples :&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -t nat -A PREROUTING -d 42.12.42.12 -p tcp --dport 110 -j DNAT --to-destination 192.168.1.2:6110&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# iptables -t nat -A PREROUTING -d ! 42.12.42.12 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.1:3128&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;--to-source&amp;lt;/tt&amp;gt; : Utilisé pour en target pour le SNAT, permet de spécifier l&#039;adresse source de la translation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;Spécificités pour les LOGS&amp;lt;/u&amp;gt; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;--log-level&amp;lt;/tt&amp;gt; : Level, niveau de log &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemple : Cf. chapitre 3&amp;lt;/font&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;--log-prefix&amp;lt;/tt&amp;gt; : Permet de spécifier un préfixe pour les logs. &amp;lt;br /&amp;gt;&#039;&#039;&amp;lt;font color=&amp;quot;#770000&amp;quot;&amp;gt;Exemple : Cf. chapitre 3&amp;lt;/font&amp;gt;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 2.2.3/ Quelques exemples : ====&lt;br /&gt;
&lt;br /&gt;
Les exemples qui suivent supposent que vous êtes reliés à internet par modem via l&#039;interface ppp0 (mais en remplaçant ppp0 par eth0 - par exemple, on peut adapter les exemples pour d&#039;autres type de liaisons) et que votre réseau local est 192.168.1.0/24 (classe C).&lt;br /&gt;
&lt;br /&gt;
* Pour fixer les &#039;&#039;&#039;politiques par défaut&#039;&#039;&#039; (cad: ce qui se passe quand aucune règle ne correspond - ne matche pas), ici, on refuse tout (normal, on fait un firewall, oui ou non ?) : &amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt; iptables -P INPUT DROP&amp;lt;br /&amp;gt; iptables -P OUTPUT DROP&amp;lt;br /&amp;gt; iptables -P FORWARD DROP&amp;lt;/tt&amp;gt;&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
* Pour &#039;&#039;&#039;logguer&#039;&#039;&#039; tout ce qu&#039;on jette : &amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt; iptables -N LOG_DROP&amp;lt;br /&amp;gt; iptables -A LOG_DROP -j LOG --log-prefix &#039;[IPTABLES DROP] : &#039;&amp;lt;br /&amp;gt; iptables -A LOG_DROP -j DROP&amp;lt;/tt&amp;gt;&amp;lt;/blockquote&amp;gt;  &lt;br /&gt;
Les trois dernières règles doivent être : &amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt; iptables -A FORWARD -j LOG_DROP&amp;lt;br /&amp;gt; iptables -A INPUT -j LOG_DROP&amp;lt;br /&amp;gt; iptables -A OUTPUT -j LOG_DROP &amp;lt;/tt&amp;gt;&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
Enfin (pour loguer le trafic autorisé), recommencer en remplaçant  &amp;lt;tt&amp;gt;-j DROP&amp;lt;/tt&amp;gt;, par &amp;lt;tt&amp;gt;-j ACCEPT&amp;lt;/tt&amp;gt;  et a la place de &amp;lt;tt&amp;gt;-j LOG_DROP&amp;lt;/tt&amp;gt; il faut mettre &amp;lt;tt&amp;gt;-j LOG_ACCEPT&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Pour &#039;&#039;&#039;accepter&#039;&#039;&#039; tout ce qui se passe sur l&#039;interface &amp;lt;tt&amp;gt;lo&amp;lt;/tt&amp;gt; (sinon ce n&#039;est pas la peine d&#039;activer le réseau !) : &amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt; iptables -A INPUT -i lo -j ACCEPT&amp;lt;br /&amp;gt; iptables -A OUTPUT -o lo -j ACCEPT &amp;lt;/tt&amp;gt;&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
* Pour &#039;&#039;&#039;accepter&#039;&#039;&#039; tout ce qui se passe sur le &#039;&#039;&#039;réseau local&#039;&#039;&#039; &amp;lt;tt&amp;gt;192.168.1.0&amp;lt;/tt&amp;gt; : &amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt; iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT&amp;lt;br /&amp;gt; iptables -A OUTPUT -d 192.168.1.0/24 -j ACCEPT&amp;lt;br /&amp;gt; iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT &amp;lt;/tt&amp;gt;&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
* Pour accepter les résolutions de nom (ie: le &#039;&#039;&#039;dns&#039;&#039;&#039;) : &amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt; iptables -A INPUT -i ppp0 --protocol udp --source-port 53 -j ACCEPT&amp;lt;br /&amp;gt; iptables -A OUTPUT -o ppp0 --protocol udp --destination-port 53 -j ACCEPT&amp;lt;br /&amp;gt; iptables -A INPUT -i ppp0 --protocol tcp --source-port 53 -j ACCEPT&amp;lt;br /&amp;gt; iptables -A OUTPUT -o ppp0 --protocol tcp --destination-port 53 -j ACCEPT &amp;lt;/tt&amp;gt;&amp;lt;/blockquote&amp;gt; &lt;br /&gt;
* Pour accepter le traffic &#039;&#039;&#039;web&#039;&#039;&#039; (on veut surfer!) : &amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt; iptables -A INPUT -i ppp0 --protocol tcp --source-port 80 -m state --state ESTABLISHED -j LOG_ACCEPT&amp;lt;br /&amp;gt; iptables -A OUTPUT -o ppp0 --protocol tcp --destination-port 80 -m state --state NEW,ESTABLISHED -j LOG_ACCEPT&amp;lt;/tt&amp;gt;&amp;lt;/blockquote&amp;gt; La première ligne pour accepter ce qui entre sur notre interface ppp0 sur le port 80 (le port http) si c&#039;est une connexion déjà établie, la seconde pour accepter ce qui sort sur ppp0 sur le port 80 si c&#039;est une nouvelle connexion ou si c&#039;est une connexion déjà établie. &lt;br /&gt;
Pour autoriser le &#039;&#039;&#039;ssh&#039;&#039;&#039;, il faut préciser le port 22; pour autoriser l&#039;&#039;&#039;&#039;irc&#039;&#039;&#039;, le port 6667 (ou celui que vous utilisez pour vous connecter à votre serveur); pour le &#039;&#039;&#039;smtp&#039;&#039;&#039; (envoi d&#039;emails), le port 25; pour le &#039;&#039;&#039;pop3&#039;&#039;&#039; (réception d&#039;emails), le port 110; pour le &#039;&#039;&#039;imap&#039;&#039;&#039; (réception d&#039;emails), les ports 143 et 220 (&#039;&#039;&#039;imap3&#039;&#039;&#039;) ; pour le &#039;&#039;&#039;cvs&#039;&#039;&#039;, le port 2401 ; pour le &#039;&#039;&#039;https&#039;&#039;&#039;, le port 443. De manière générale, le numéros de port se trouvent dans /etc/services.&lt;br /&gt;
* Pour le &#039;&#039;&#039;ftp&#039;&#039;&#039; c&#039;est un peu plus complexe. D&#039;abord, il faut charger le module : &amp;lt;tt&amp;gt;ip_conntrack_ftp&amp;lt;/tt&amp;gt; (c&#039;est lui qui suit - track en anglais - les connexions ftp) et, si vous &#039;&#039;nat&#039;&#039;ez (en utilisant le masquerading par exemple) vos connexions ftp vers d&#039;autres postes le module : &amp;lt;tt&amp;gt;ip_nat_ftp&amp;lt;/tt&amp;gt; : &amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt; modprobe ip_conntrack_ftp&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt; # éventuellement : &amp;lt;tt&amp;gt; modprobe ip_nat_ftp&amp;lt;/tt&amp;gt; &amp;lt;/blockquote&amp;gt; Ensuite, il faut taper les commandes suivantes : &amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt; iptables -A INPUT -i ppp0 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT&amp;lt;br /&amp;gt; iptables -A OUTPUT -o ppp0 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT &amp;lt;/tt&amp;gt;&amp;lt;/blockquote&amp;gt; Cela pour que la connexion puisse s&#039;établir. Ensuite (et c&#039;est la qu&#039;on a besoin de &amp;lt;tt&amp;gt;ip_conntrack_ftp&amp;lt;/tt&amp;gt;) : &amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt; iptables -A INPUT -i ppp0 -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT&amp;lt;br /&amp;gt; iptables -A OUTPUT -o ppp0 -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT &amp;lt;/tt&amp;gt;&amp;lt;/blockquote&amp;gt; Pour que serveur puisse établir la connexion pour les données (en mode actif). Et enfin : &amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt; iptables -A INPUT -i ppp0 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT&amp;lt;br /&amp;gt; iptables -A OUTPUT -o ppp0 -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j ACCEPT &amp;lt;/tt&amp;gt;&amp;lt;/blockquote&amp;gt; Pour que le serveur puisse établir la connexion pour les données (en mode passif). Ici aussi &amp;lt;tt&amp;gt;ip_conntrack_ftp&amp;lt;/tt&amp;gt; est nécessaire. &lt;br /&gt;
* Pour &#039;&#039;&#039;partager une connexion&#039;&#039;&#039;, il faut que le forwarding soit activé dans le noyau (&amp;lt;tt&amp;gt;echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&amp;lt;/tt&amp;gt;), puis il faut autoriser iptable à faire le forwarding : &amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt; iptables -F FORWARD&amp;lt;br /&amp;gt; iptables -A FORWARD -j ACCEPT &amp;lt;/tt&amp;gt;&amp;lt;/blockquote&amp;gt; et enfin, cacher les machines forward-ées par le firewall : &amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt; iptables -A POSTROUTING -t nat -o ppp0 -j MASQUERADE &amp;lt;/tt&amp;gt;&amp;lt;/blockquote&amp;gt; Sur chaque machine devant être cachée par le firewall (ou devant partager la connexion avec la machine qui est connectée à internet), il faut ajouter une route par defaut : &amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt; route add default gw 192.168.1.1 &amp;lt;/tt&amp;gt;&amp;lt;/blockquote&amp;gt; Si la machine connectée à internet a comme ip : 192.168.1.1. Il suffit avec une redhat/mandrake d&#039;éditer : &amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt;/etc/sysconfig/network&amp;lt;/tt&amp;gt;&amp;lt;/blockquote&amp;gt; et d&#039;ajouter dedans : &amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt;GATEWAY=192.168.1.1&amp;lt;/tt&amp;gt;&amp;lt;/blockquote&amp;gt; puis de redémarer le réseau :&amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt;/etc/rc.d/init.d/network restart&amp;lt;/tt&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3/ Application par l&#039;exemple ==&lt;br /&gt;
&lt;br /&gt;
Nous allons mettre en place un firewall / proxy.&lt;br /&gt;
&lt;br /&gt;
Pour cet exemple, le firewall aura la connexion à Internet (interface eth2) et disposera de 2 pattes sur des réseaux privés (eth0 et eth1) :&lt;br /&gt;
&lt;br /&gt;
* il fait office de proxy sur le port 3128 pour un réseau qui aura ainsi un accès internet&lt;br /&gt;
* et une DMZ&amp;lt;sup&amp;gt;&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;&amp;lt;/sup&amp;gt; (&amp;quot;zone démilitarisée&amp;quot;) sur laquelle il y a un ensemble de serveurs disponibles de l&#039;extérieur dont un serveur web qui a pour adresse 192.168.1.2 écoutant sur le port 80 en TCP.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;pre&amp;gt;   _____                eth1 .-&amp;gt; ---+------+------+---&lt;br /&gt;
 _/     \_         ____     /     [PC1]  [PC2]  [PC3] &lt;br /&gt;
(          ) eth2 |    |&amp;lt;--&#039;   réseau local 198.168.2.0&lt;br /&gt;
( INTERNET )&amp;lt;----&amp;gt;|Fire|&lt;br /&gt;
(_        _) ppp0 |wall|&lt;br /&gt;
  \______/        |____|&amp;lt;--.   DMZ serveurs 198.168.1.0&lt;br /&gt;
                       eth0\     [WEB]  [NEWS] [FTP]&lt;br /&gt;
                            &#039;-&amp;gt; ---+------+------+---&lt;br /&gt;
ASCIIArt (c) Jice&amp;lt;/pre&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La classe d&#039;adresse IP 192.168.2.0 correspond au réseau interne sur l&#039;interface &amp;lt;tt&amp;gt;eth1&amp;lt;/tt&amp;gt;. &amp;lt;br /&amp;gt;La classe d&#039;adresse IP 192.168.1.0 correspond a la DMZ sur l&#039;interface &amp;lt;tt&amp;gt;eth0&amp;lt;/tt&amp;gt;. &amp;lt;br /&amp;gt;L&#039;interface de la connexion Internet est ppp0 sur l&#039;interface &amp;lt;tt&amp;gt;eth2&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;sup&amp;gt;&amp;lt;nowiki&amp;gt;* &amp;lt;/nowiki&amp;gt;&amp;lt;/sup&amp;gt;&amp;lt;u&amp;gt;DMZ, ou zone démilitarisée&amp;lt;/u&amp;gt;&lt;br /&gt;
: Sous-réseau dans lequel des serveurs accessibles depuis internet sont en adressage privé (classe d&#039;adresse IP réservée comme 192.168.x.x) derrière un firewall.&lt;br /&gt;
&lt;br /&gt;
=== 3.1/ Le script init.d ===&lt;br /&gt;
&lt;br /&gt;
Nous allons écrire un script qui permettra de charger automatiquement au démarrage de la machine ou sur demande les règles du firewall qui seront stockées dans le fichier &amp;lt;tt&amp;gt;/etc/firewall.sh&amp;lt;/tt&amp;gt;. &amp;lt;br /&amp;gt;Le script de démarrage sera nommé &amp;lt;tt&amp;gt;/etc/init.d/firewall&amp;lt;/tt&amp;gt;. Bien sûr, on n&#039;oubliera pas d&#039;exécuter un &amp;lt;tt&amp;gt;chmod +x&amp;lt;/tt&amp;gt; sur les 2 scripts que nous allons créer au long de ce chapitre.&lt;br /&gt;
&lt;br /&gt;
Go ! &amp;lt;br /&amp;gt;Fichier de chargement &amp;lt;tt&amp;gt;/etc/init.d/firewall&amp;lt;/tt&amp;gt; : &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;90%&amp;quot; bgcolor=&amp;quot;#FFFFCC&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;#!/bin/bash&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Lancement du script de Firewall&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Arnaud de Bermingham&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;. /etc/init.d/functions&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;RETVAL=0&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Fonction pour le lancement du firewall&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;start() {&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  echo -n &amp;quot;Application des règles IpTables: &amp;quot;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  /etc/firewall.sh&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  RETVAL=0&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; touch /var/lock/subsys/firewall&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  echo&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Fonction pour arrêter le firewall (on flush)&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;stop() {&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  echo -n &amp;quot;Flush des règles IpTables: &amp;quot;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  /etc/flush_iptables.sh&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  RETVAL=0&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  [ $RETVAL -eq 0 ] &amp;amp;&amp;amp; rm -f /var/lock/subsys/firewall&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  echo&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;case $1 in&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  start)&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;    start&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;    ;;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  stop)&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;    stop&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;    ;;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  restart)&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;    stop&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;    start&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;    ;;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  status)&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;    /sbin/iptables -L&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;    /sbin/iptables -t nat -L&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;    RETVAL=0&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;    ;;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  *)&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;    echo &amp;quot;Usage: firewall {start|stop|restart|status}&amp;quot;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;    RETVAL=1&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;esac&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;exit&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
C&#039;est tout simple non ?&lt;br /&gt;
&lt;br /&gt;
=== 3.2/ Le script pour vider (flusher) les règles ===&lt;br /&gt;
&lt;br /&gt;
Et maintenant : &amp;lt;tt&amp;gt;/etc/flush_iptables.sh&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;90%&amp;quot; bgcolor=&amp;quot;#FFFFCC&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;#!/bin/sh&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# &amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Script pour vider les règles iptables&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Arnaud de Bermingham&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# duracell@apinc.org&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# On remet la police par défaut à ACCEPT&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -P INPUT ACCEPT&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -P FORWARD ACCEPT&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -P OUTPUT ACCEPT&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# On remet les polices par défaut pour la table NAT&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -t nat -P PREROUTING ACCEPT&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -t nat -P POSTROUTING ACCEPT&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -t nat -P OUTPUT ACCEPT&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# On vide (flush) toutes les règles existantes&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -F&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -t nat -F&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Et enfin, on efface toutes les chaînes qui ne&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# sont pas à defaut dans la table filter et nat&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;iptables -X&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -t nat -X&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Message de fin&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;echo &amp;quot; [termine]&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bon, on va enfin commencer les choses sérieuses : le script du firewall :)&lt;br /&gt;
&lt;br /&gt;
=== 3.3/ Les prérequis pour le script du firewall et création des tables pour les logs ===&lt;br /&gt;
&lt;br /&gt;
Le script sera commenté au fur et à mesure, afin de décrire chaque étape. &amp;lt;br /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;90%&amp;quot; bgcolor=&amp;quot;#FFFFCC&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;#!/bin/sh&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# script &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;/etc/firewall.sh&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Firewall d&#039;exemple a but pédagogique&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Arnaud de Bermingham&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# duracell@apinc.org&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;Activation du forwarding&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# C&#039;est pas pour faire joli, on aura des règles&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# de forward et il faut bien que les paquets&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;# traversent la machine, donc on met ce fichier à 1&amp;lt;/nowiki&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Alors la, on va appliquer quelques astuces&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# pour empêcher les attaques de type &amp;lt;/nowiki&amp;gt;&#039;&#039;spoofing&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# et bloquer les réponses ICMP du firewall,&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# comme ça c&#039;est très propre. Attention, le&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# fait de bloquer le trafic ICMP sur&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# le firewall bloque les pings.&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Je veux &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;pas de spoofing&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;then&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  for filtre in /proc/sys/net/ipv4/conf/*/rp_filter&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  do&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;    echo 1 &amp;gt; $filtre&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  done&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;fi&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;pas de icmp&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;echo 1 &amp;gt; /proc/sys/net/ipv4/icmp_echo_ignore_all&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;echo 1 &amp;gt; /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# On va utiliser iptables. Si on l&#039;a compilé en module&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# dans le kernel, il faut &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;charger le module ip_tables&#039;&#039;&#039;.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;modprobe ip_tables&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# on va charger quelques &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;modules supplémentaires&#039;&#039;&#039; pour&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# gérer la &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;translation&#039;&#039;&#039; d&#039;adresse, l&#039;&#039;&#039;&#039;IRC&#039;&#039;&#039; et le &#039;&#039;&#039;FTP&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Tu me fait 4 pompes. Chef oui chef !&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;modprobe ip_nat_ftp&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;modprobe ip_nat_irc&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;modprobe iptable_filter&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;modprobe iptable_nat&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Pour faire bien, on va &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;vider toutes les règles&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# avant d&#039;appliquer les nouvelles règles de firewall&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;iptables -F&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -X&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# On va rajouter 2 nouvelles &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;chaînes&#039;&#039;&#039;.&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Ceci permettra d&#039;ajouter des nouvelles cibles qui&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# auront la possibilité de loguer ce qui se passe.&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# La on logue et on refuse le paquet,&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# on rajoute un préfixe pour pouvoir&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# s&#039;y retrouver dans les logs&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -N LOG_DROP&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -A LOG_DROP -j LOG \&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  --log-prefix &#039;[IPTABLES DROP] : &#039;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -A LOG_DROP -j DROP&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# ici, on logue et on accepte le paquet,&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# on rajoute un préfixe pour pouvoir&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# s&#039;y retrouver dans les logs&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -N LOG_ACCEPT&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -A LOG_ACCEPT -j LOG \&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  --log-prefix &#039;[IPTABLES ACCEPT] : &#039;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -A LOG_ACCEPT -j ACCEPT&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# On veut faire un firewall efficace,&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# donc la politique a appliquer est de tout&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# refuser par défaut et rajouter une a une&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# les règles que l&#039;on autorise.&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Bien sur, on a RTFM un peu et on a vu que&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# l&#039;option -P permet de définir&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;la cible par défaut&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;iptables -P INPUT DROP&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -P OUTPUT DROP&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -P FORWARD DROP&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Pour éviter les problèmes, on va &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;tout accepter sur&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;la machine en local&#039;&#039;&#039; (interface lo).&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Je déconseille de retirer cette règle car&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# ça pose pas mal de problèmes et ça peut&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# faire perdre la main sur la machine&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;iptables -A INPUT  -i lo -j ACCEPT&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -A OUTPUT -o lo -j ACCEPT&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Bon, la partie initialisation et préparation est&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# terminée, passons aux choses sérieuses&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Comme on l&#039;a dit dans la présentation de&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# l&#039;architecture réseau, le firewall fait&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# également office de proxy grâce par exemple&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# à un squid installé dessus. On va donc&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# accepter que le &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;proxy&#039;&#039;&#039; ait une &#039;&#039;&#039;connexion&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;internet directe&#039;&#039;&#039;. Tant qu&#039;à faire, on va&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# mettre des états pour que ça soit bien sécurisé&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;iptables -A OUTPUT -o ppp0 -m state \&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  --state NEW,ESTABLISHED -p tcp --dport 80 -j ACCEPT&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -A INPUT  -i ppp0 -m state \&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  --state ESTABLISHED     -p tcp --sport 80 -j ACCEPT&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Maintenant, on va faire en sorte que le&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;proxy soit totalement transparent pour le LAN&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# bénéficiant de la connexion internet.&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# L&#039;astuce consiste a rediriger toutes les&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# requêtes ayant un port de destination 80&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# vers le port 3128 du proxy, ici c&#039;est le&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# firewall (qui est sur le firewall et qui&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# a l&#039;adresse IP 192.168.2.1 ).&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Une règle de NAT suffira largement pour faire ça.&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;iptables -t nat -A PREROUTING -i eth1 -p tcp \&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  --dport 80 -j DNAT --to-destination 192.168.2.1:3128&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Bon, c&#039;est pas trop compliqué ! Maintenant&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# on sait que l&#039;on a un &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;serveur web sur la DMZ&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# (la machine d&#039;adresse IP 192.168.1.2) sur&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# le port 80. On souhaite que toutes les requêtes&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# provenant d&#039;internet arrivant sur l&#039;adresse IP&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# publique du serveur ( ici 42.42.42.42 ) soit&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# redirigées sur le serveur web de la DMZ.&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Rien de bien compliqué. Dans l&#039;exemple,&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# on peut retirer le :80 de la target&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# --to-destination&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;iptables -t nat -A PREROUTING -d 42.42.42.42 \&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# C&#039;est bien tout ça ! mais le problème c&#039;est&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# que les chaînes de la table FILTER sont toutes&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# à DENY, donc tout ceci ne fait rien du tout.&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# On va donc passer a la &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;configuration du&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;firewall&#039;&#039;&#039; proprement dit.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# On va quand même &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;accepter les connexions ssh&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# (port 22) provenant d&#039;une machine (la votre en&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# l&#039;occurrence, on va dire 192.168.2.42) vers le&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# firewall pour pouvoir modifier les règles&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# facilement pour bien surveiller, on vas quand&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# même loguer les connexions provenant de mon IP&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# et à destination du ssh du firewall&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;iptables -A INPUT -i eth1 -s 192.168.2.42 -m state \&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  --state NEW,ESTABLISHED -p tcp --dport 22 -j LOG_ACCEPT&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -A OUTPUT -o eth1 -d 192.168.2.42 -m state \&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  --state ESTABLISHED     -p tcp --sport 22 -j LOG_ACCEPT&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# On veut que le &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;LAN&#039;&#039;&#039; connecté à l&#039;interface&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# eth1 ait un accès complet à &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;internet&#039;&#039;&#039;.&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# La règle de NAT qui permettait d&#039;avoir&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# un &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;proxy transparent&#039;&#039;&#039; sera automatiquement&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# appliqué. L&#039;interface correspondant&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# à la connexion internet est ici ppp0&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;iptables -A FORWARD -i eth1 -o ppp0 -j ACCEPT&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -A FORWARD -o eth1 -i ppp0 -j ACCEPT&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Maintenant on donne le droit au &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;LAN&#039;&#039;&#039; de&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;consulter les pages web du serveur de la DMZ&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;iptables -A FORWARD -i eth1 -o eth0 -p tcp \&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -A FORWARD -i eth0 -o eth1 -p tcp \&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  --sport 80 -m state --state ESTABLISHED -j ACCEPT&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Maintenant il n&#039;y a plus qu&#039;à dire au firewall&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# d&#039;autoriser à transmettre des paquets TCP à&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# destination du port 80 provenant de l&#039;adresse&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# IP publique (i.e. d&#039;&amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;internet&#039;&#039;&#039;) &#039;&#039;&#039;vers le serveur&#039;&#039;&#039;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# &amp;lt;/nowiki&amp;gt;&#039;&#039;&#039;web de la DMZ&#039;&#039;&#039; que nous avons naté précédemment.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;iptables -A FORWARD -i ppp0 -o eth0 -p tcp \&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  --destination-port 80 -m state --state NEW,ESTABLISHED -j ACCEPT&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -A FORWARD -o ppp0 -i eth0 -p tcp \&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  --source-port 80      -m state --state ESTABLISHED     -j ACCEPT&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Maintenant il ne reste plus grand chose à faire !&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Il faut permettre à l&#039;ensemble du LAN de dialoguer&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# sur internet avec la même adresse IP sinon, bien&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# évidemment ça ne marchera pas (à moins que vous&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# ayez 30 adresses ip !).&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Une petite règle de NAT avec un -j MASQUERADE&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# suffira (masquerade = dialoguer avec l&#039;adresse&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# IP publique sur firewall)&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;iptables -t nat -A POSTROUTING \&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  -s 192.168.2.0/24 -j MASQUERADE&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Il faut également que le serveur web de la DMZ&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# soit masqueradé sinon, le serveur&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# dialoguera sur internet avec son IP privée&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;iptables -t nat -A POSTROUTING \&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;  -s 192.168.1.0/24 -j MASQUERADE&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Toutes les règles qui n&#039;ont pas passé les&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# règles du firewall seront refusées et loguées...&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# facile :&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;iptables -A FORWARD -j LOG_DROP&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -A INPUT -j LOG_DROP&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;iptables -A OUTPUT -j LOG_DROP&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# Pour faire zoli&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;tt&amp;gt;echo &amp;quot; [Termine]&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;# c&#039;est enfin fini&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Et voilà ! le firewall de compèt&#039; est prêt et fonctionnel.&lt;br /&gt;
&lt;br /&gt;
Ceci était bien évidemment un exemple, vous pouvez dès à présent préparer votre propre firewall personnalisé ! &amp;lt;br /&amp;gt;Vous pouvez l&#039;adapter à vos besoins, votre connexion vers internet (par ADSL par exemple), etc.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;merci&amp;quot;&amp;gt;Cette page est issue de la documentation &#039;pré-wiki&#039; de Léa a été convertie avec HTML::WikiConverter. Elle fut créée par Arnaud de Bermingham le 12/11/2001.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Copy|12/11/2001|Arnaud de Bermingham|DP}}&lt;br /&gt;
&lt;br /&gt;
=Autres ressources=&lt;br /&gt;
Le [http://lea-linux.org/trucs/index.php3?aff_item=272 partage de connexion] facile.&lt;br /&gt;
&lt;br /&gt;
Tester votre firewall [http://grc.com/default.htm là].&lt;br /&gt;
&lt;br /&gt;
Cliquez sur &#039;ShieldsUP!&#039;, puis sur l&#039;un des boutons : &#039;Test My Shields !&amp;quot; et &amp;quot;Probe My Ports !&amp;quot;. Ça vaut pas un bon &amp;lt;tt&amp;gt;nmap&amp;lt;/tt&amp;gt; fait par un ami, mais ça permet de voir ou on en est.&lt;/div&gt;</summary>
		<author><name>Streetpc</name></author>
	</entry>
</feed>