# Digression Installation parefeu (iptables & ip6tables) "pour les nuls"

**URL:** <https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771>\
**Category:** Support Debian\
**Created:** [Février 19, 2016, 12:17 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771 "2016-02-19T00:17:08Z")\
**Posts on this page:** 20\
**Page:** 5

<div class="post-metadata">

**Author:** ![dimm](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/e9bcb4/32.png) [@dimm](https://www.debian-fr.org/u/dimm)\
**Post date:** [Février 20, 2016, 5:09 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/81 "2016-02-20T17:09:21Z")

</div>

J’ai appliqué le tuto de ricardo mais comme thialme le faisait remarquer, le ping ne fonctionne pas. En effet, impossible de pinger par exemple [google.fr](http://google.fr).

J’ai adapté le script pour que le ping fonctionne:

`iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -N RELATED_ICMP
iptables -A RELATED_ICMP -p icmp --icmp-type destination-unreachable -j ACCEPT
iptables -A RELATED_ICMP -p icmp --icmp-type time-exceeded -j ACCEPT
iptables -A RELATED_ICMP -p icmp --icmp-type parameter-problem -j ACCEPT
iptables -A RELATED_ICMP -j DROP
iptables -A INPUT -p icmp --fragment -j DROP
iptables -A OUTPUT -p icmp --fragment -j DROP
iptables -A INPUT -p icmp -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p icmp -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp -m state --state RELATED -j RELATED_ICMP
iptables -A OUTPUT -p icmp -m state --state RELATED -j RELATED_ICMP
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp -j DROP
iptables -A OUTPUT -p -icmp -j DROP
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT #(ftp)
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT #(ftp)
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT #(ssh)
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT #(web)
iptables -A INPUT -p tcp -m tcp --dport 631 -j ACCEPT #(imprimante)
`  
Je me suis fortement inspiré de ce firewall pour paranoïaque:  
[http://www.hermann-uwe.de/files/fw\_laptop](http://www.hermann-uwe.de/files/fw_laptop)

Une doc qui décrit le filtrage de paquet icmp:  
[http://www.daemon.be/maarten/icmpfilter.html](http://www.daemon.be/maarten/icmpfilter.html)

Qu’est ce que vous en pensez ?

---

<div class="post-metadata">

**Author:** ![dimm](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/e9bcb4/32.png) [@dimm](https://www.debian-fr.org/u/dimm)\
**Post date:** [Février 20, 2016, 5:09 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/82 "2016-02-20T17:09:32Z")

</div>

Pas d’avis ?

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 20, 2016, 5:09 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/83 "2016-02-20T17:09:33Z")

</div>

Ben, si je comprends bien, j’obtiens le m^ rslt que toi en supprimant tt simplement la ligne :  
iptables -A INPUT -p icmp -j DROP  
puisqu’elle fait dble emploi avec  
iptables -t filter -p INPUT DROP  
mais j’ai tjrs pu obtenir :

[code]ricardo@sid-hda8:~$ ping 217.12.6.29  
PING 217.12.6.29 (217.12.6.29) 56(84) bytes of data.  
64 bytes from 217.12.6.29: icmp\_seq=1 ttl=248 time=66.0 ms  
64 bytes from 217.12.6.29: icmp\_seq=2 ttl=248 time=67.5 ms  
64 bytes from 217.12.6.29: icmp\_seq=3 ttl=248 time=64.5 ms  
64 bytes from 217.12.6.29: icmp\_seq=4 ttl=248 time=67.0 ms  
64 bytes from 217.12.6.29: icmp\_seq=5 ttl=248 time=67.9 ms

— 217.12.6.29 ping statistics —  
5 packets transmitted, 5 received, 0% packet loss, time 4001ms  
rtt min/avg/max/mdev = 64.500/66.605/67.965/1.243 ms  
ricardo@sid-hda8:~$[/code]

---

<div class="post-metadata">

**Author:** ![dimm](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/e9bcb4/32.png) [@dimm](https://www.debian-fr.org/u/dimm)\
**Post date:** [Février 20, 2016, 5:09 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/84 "2016-02-20T17:09:34Z")

</div>

[quote=“ricardo”]Ben, si je comprends bien, j’obtiens le m^ rslt que toi en supprimant tt simplement la ligne :  
iptables -A INPUT -p icmp -j DROP  
[/quote]  
Le problème c’est que tu autorises tout le trafic icmp en enlevant cette ligne.

---

<div class="post-metadata">

**Author:** ![thialme](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/50afbb/32.png) [@thialme](https://www.debian-fr.org/u/thialme)\
**Post date:** [Février 20, 2016, 5:09 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/85 "2016-02-20T17:09:36Z")

</div>

> [@](#):
>
> […]  
> Qu’est ce que vous en pensez ?

Il y a plusieurs choses à revoir :p!

Mais si tu ne veux qu’autoriser le ping je pencherais plutôt pour quelque chose comme cela :

```auto
# Politique par défaut
iptables -P INPUT DROP
iptables -P OUTPUT DROP

# Chaîne utilisateur en sortie
iptables -N wan_out_new
iptables -A OUTPUT -m conntrack --ctstate NEW -j wan_out_new

# Chaîne utilisateur en entrée
iptables -N wan_in_established
iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j wan_in_established

# Autorisation du ping vers l'extérieur et de sa réponse vers l'intérieur
iptables -A wan_out_new -p icmp --icmp-type echo-request -j ACCEPT
iptables -A wan_in_established -p icmp --icmp-type echo-reply -j ACCEPT
```

Soit en sortie un paquet d’état NEW pour le echo-request et dans l’état ESTABLISHED pour sa réponse echo-reply.

Ces règles peuvent être plus amplement modifiées mais cela reste un exemple simple et incomplet utilisant les chaînes utilisateurs (à ne pas copier/coller tout seul)

J’espère que je n’ai pas fait de fautes …

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 20, 2016, 5:09 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/86 "2016-02-20T17:09:37Z")

</div>

[quote=“dimm”][quote=“ricardo”]Ben, si je comprends bien, j’obtiens le m^ rslt que toi en supprimant tt simplement la ligne :  
iptables -A INPUT -p icmp -j DROP  
[/quote]  
Le problème c’est que tu autorises tout le trafic icmp en enlevant cette ligne.[/quote]  
Non, j’enlève ça :  
iptables -A INPUT -p icmp -j DROP  
mais au début, j’ai ça  
iptables -t filter -p INPUT DROP  
qui filtre ts les INPUT  
C’est pour ça qu’on m’avait dit (fran.b ?, je ne me souviens plus qui) qu’il y avait double effet.

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 20, 2016, 5:09 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/87 "2016-02-20T17:09:37Z")

</div>

[quote=“thialme”]

# Politique par défaut

iptables -P INPUT DROP  
iptables -P OUTPUT DROP[/quote]  
Est-ce bien utile de supprimer ce qui sort de ton clavier ?  
à moins que tu aies des doutes sur toi-m^ ? :smt002

---

<div class="post-metadata">

**Author:** ![mattotop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mattotop/32/3942_2.png) [@mattotop](https://www.debian-fr.org/u/mattotop)\
**Post date:** [Février 20, 2016, 5:09 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/88 "2016-02-20T17:09:39Z")

</div>

[quote=“ricardo”][quote=“thialme”]

# Politique par défaut

iptables -P INPUT DROP  
iptables -P OUTPUT DROP[/quote]  
Est-ce bien utile de supprimer ce qui sort de ton clavier ?  
à moins que tu aies des doutes sur toi-m^ ? :smt002[/quote]Je suis personnellement assez d’accord que c’est superflu, mais ça peut servir si tu veux bloquer ce qu’envoie une machine compromise.

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 20, 2016, 5:09 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/89 "2016-02-20T17:09:44Z")

</div>

Moi, Monsieur, ma machine, elle n’est pas compromise, elle est honnête, elle. 😆

---

<div class="post-metadata">

**Author:** ![mattotop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mattotop/32/3942_2.png) [@mattotop](https://www.debian-fr.org/u/mattotop)\
**Post date:** [Février 20, 2016, 5:09 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/90 "2016-02-20T17:09:44Z")

</div>

D’ailleurs, j’ai fais une faute de genre à con promis (=chose dûe).

---

<div class="post-metadata">

**Author:** ![thialme](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/50afbb/32.png) [@thialme](https://www.debian-fr.org/u/thialme)\
**Post date:** [Février 20, 2016, 5:09 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/91 "2016-02-20T17:09:51Z")

</div>

> [@](#):
>
> Je suis personnellement assez d’accord que c’est superflu, mais ça peut servir si tu veux bloquer ce qu’envoie une machine compromise.

Il faut analyser un peu.  
En supposant que mon serveur puisse effectuer des connexions FTP vers l’extérieur, et qu’il soit compromis. Si ensuite une attaque brute-force par exemple est lancée depuis le serveur sur un service FTP extérieur, ce n’est pas une règle standard (iptables -P OUTPUT DROP) qui va empêcher quoi que ce soit.  
Par contre, cela empêchera sûrement les connexions sur des ports non privilégiés

Pour ma part, j’autorise seulement le traffic que je considère légitime, d’où la politique par défaut en DROP pour la chaîne OUTPUT. Le point de vue est “Pourquoi autoriser un traffic non voulu ?” que l’on peut bien évidemment retourner dans l’autre sens : “Pourquoi rejeter le traffic sortant d’une machine de confiance ?”. Moi je suis dans le camp _je ne fais pas confiance_ :p!

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 20, 2016, 5:09 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/92 "2016-02-20T17:09:56Z")

</div>

parano 😈

---

<div class="post-metadata">

**Author:** ![fran.b](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/d78d45/32.png) [@fran.b](https://www.debian-fr.org/u/fran.b)\
**Post date:** [Février 20, 2016, 5:09 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/93 "2016-02-20T17:09:58Z")

</div>

> [@](#):
>
> Pour ma part, j’autorise seulement le traffic que je considère légitime, d’où la politique par défaut en DROP pour la chaîne OUTPUT. Le point de vue est “Pourquoi autoriser un traffic non voulu ?” que l’on peut bien évidemment retourner dans l’autre sens : “Pourquoi rejeter le traffic sortant d’une machine de confiance ?”. Moi je suis dans le camp _je ne fais pas confiance_ :p!

En ce qui me concerne, je suis plutôt du type «Je fais confiance mais je surveille…», ça m’a permis de déterrer quelques malins qui faisaient du P2P et surtout d’isoler des machines W vérolées et avertissant les utilisateurs.

---

<div class="post-metadata">

**Author:** ![thialme](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/50afbb/32.png) [@thialme](https://www.debian-fr.org/u/thialme)\
**Post date:** [Février 20, 2016, 5:11 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/94 "2016-02-20T17:11:44Z")

</div>

Pour la surveillance active je ne suis pas au point pour l’instant, mais j’espère bien me faire quelque chose aux petits oignons. J’ai quelques idées mais pas le temps pour les étudier. J’ai l’intention de décharger mon script firewall des correspondances recent pour laisser le soin a un programme tiers de scruter les connexions et de charger dynamiquement les règles dans les chaînes utilisateur, puis de grapher tout cela afin de pouvoir analyser le traffic.

Actuellement je me fais avoir contre les attaques force-brute sur mon serveur ftp. J’utilise le protocole SSL, et pas l’attaquant. Normalement seules 9 tentatives sont autorisées avant bannissement (3 tentatives \* 3 nouvelles connexions). Le problème est que l’attaquant se voit répondre à chaque demande d’authentification, “Utiliser SSL pour vos authentifier”, et de ce fait la connexion courante n’est jamais terminée.

Je me demandais à qui devais être dédiée la tâche d’interdire le traffic, mais après réflexion ce n’est pas celle du serveur FTP, et pour le script firewall ce n’est pas son travail non plus. Le programme tiers devrait être plus intelligent (et permettre d’éviter certains dénis de services, j’espère) Plein de choses à creuser en tout cas :p!

---

<div class="post-metadata">

**Author:** ![Mick54](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/d78d45/32.png) [@Mick54](https://www.debian-fr.org/u/Mick54)\
**Post date:** [Février 20, 2016, 5:12 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/95 "2016-02-20T17:12:12Z")

</div>

Bonjour et merci pour ce tuto,  
Je voulais savoir comment désactiver temporairement toutes les règles.  
Parce que actuellement je suis obligé de faire clean et ensuite de retaper toutes les règles ce qui n’est pas très pratique…

---

<div class="post-metadata">

**Author:** ![mattotop](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mattotop/32/3942_2.png) [@mattotop](https://www.debian-fr.org/u/mattotop)\
**Post date:** [Février 20, 2016, 5:12 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/96 "2016-02-20T17:12:12Z")

</div>

OK. Je viens de relire le script. Aprés avoir fait un clean, juste, tu ne fais surtout pas de stop (ça sauve le parefeu comme il est à ce moment là, càd vierge), tu fais juste un start, pour revenir à l’état qui existe dans /etc/config\_parefeu. Tu peux d’ailleurs modifier ce fichier directement pour faire tes modifs, et les appliquer en faisant juste un start.

---

<div class="post-metadata">

**Author:** ![Mick54](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/d78d45/32.png) [@Mick54](https://www.debian-fr.org/u/Mick54)\
**Post date:** [Février 20, 2016, 5:12 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/97 "2016-02-20T17:12:13Z")

</div>

ok merci pour les infos, j’ai essayé avec clean suivi de start est c’est bon sa marche. Merci encore.

---

<div class="post-metadata">

**Author:** ![ricardo](https://www.debian-fr.org/user_avatar/www.debian-fr.org/ricardo/32/3864_2.png) [@ricardo](https://www.debian-fr.org/u/ricardo)\
**Post date:** [Février 20, 2016, 5:13 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/98 "2016-02-20T17:13:02Z")

</div>

La question était judicieuse et je vais ajouter la réponse de Matt au premier fil.  
@ Matt :  
dis-moi si j’ai bien compris le processus que tu indiques :

`Si vous voulez désactiver temporairement toutes les règles, vous tapez :
/etc/init.d/mon_parefeu clean
en prenant garde de ne pas pérenniser cet état, càd de ne pas rebouter ou de ne pas ajouter la commande '/etc/init.d/mon_parefeu stop'
Pour revenir à l'état antérieur, il vous suffit de taper :
/etc/init.d/mon_parefeu start
`

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 5:13 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/99 "2016-02-20T17:13:06Z")

</div>

Au vu de la dangereusité de la chose je propose une nouvelle version (si ça se trouve c’est pourri mais ça a le mérite de ne pas poser de problème de stop juste après un clean).

[code]#!/bin/sh

# chargement/déchargement d’iptables

IPTABLES=’/sbin /iptables’  
config=’/etc /config\_parefeu’

case “$1” in  
’start’)

# si clean est passé par là

if [-f ${config}.old]; then  
mv ${config}.old $config  
fi  
if [-f $config]; then  
/sbin/iptables-restore \< $config  
fi

RETVAL=$?  
;;  
‘stop’)

# si clean n’est pas passé par là (ou a était anéanti par un start)

if [! -f ${config}.old]; then  
/sbin/iptables-save \> $config  
fi

RETVAL=$?  
;;  
‘clean’)

# clean le parefeu pendant que la machine tourne

# ça peut être une faille de sécurite si on l’exécute lors de l’extinction avant l’arrêt des interfaces

# pensez à refaire un start après sinon la sauvegarde se fera automatiquement à l’extinction

# marque son passage

if [-f $config]; then  
mv $config ${config}.old  
fi

$IPTABLES -t filter -F  
$IPTABLES -t nat -F  
$IPTABLES -t mangle -F  
$IPTABLES -t raw -F  
$IPTABLES -t filter -P INPUT ACCEPT  
$IPTABLES -t filter -P OUTPUT ACCEPT  
$IPTABLES -t filter -P FORWARD ACCEPT  
$IPTABLES -t nat -P PREROUTING ACCEPT  
$IPTABLES -t nat -P POSTROUTING ACCEPT  
$IPTABLES -t nat -P OUTPUT ACCEPT  
$IPTABLES -t mangle -P PREROUTING ACCEPT  
$IPTABLES -t mangle -P OUTPUT ACCEPT  
$IPTABLES -t mangle -P POSTROUTING ACCEPT  
$IPTABLES -t mangle -P FORWARD ACCEPT  
$IPTABLES -t mangle -P INPUT ACCEPT  
$IPTABLES -t raw -P OUTPUT ACCEPT  
$IPTABLES -t raw -P PREROUTING ACCEPT  
RETVAL=$?  
;;  
‘restart’)  
$0 stop && $0 start  
RETVAL=$?  
;;  
\*)  
echo "Usage: $0 { start | stop | restart | clean }"  
RETVAL=1  
;;  
esac  
exit $RETVAL[/code]  
L’idée c’est que le clean va déplacer la config vers un \*.old. Si ce \*.old existe ça veut dire que le dernier appel était un clean. Si start est appellé après un clean il voit le \*.old et le remet à sa place.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 20, 2016, 5:13 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/100 "2016-02-20T17:13:48Z")

</div>

Mes modifications sont bidon ? (alors ça m’arrangerais de le savoir pour l’avenir et je mettrais mon message à jour pour dire de ne pas l’utiliser)  
Elle est bonne ? (alors peut être le mettre au début)

[Page précédente](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771.md?page=4)

[Page suivante](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771.md?page=6)
