# 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:** 11

<div class="post-metadata">

**Author:** ![kim](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/9f8e36/32.png) [@kim](https://www.debian-fr.org/u/kim)\
**Post date:** [Février 20, 2016, 10:38 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/201 "2016-02-20T22:38:07Z")

</div>

Merci dric64 pour ta réponse, j’ai clean le parfeudebian, je reprend tout depuis le début,j’ai fais plein de boulette, j’ai préféré pas cc.

---

<div class="post-metadata">

**Author:** ![kim](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/9f8e36/32.png) [@kim](https://www.debian-fr.org/u/kim)\
**Post date:** [Février 20, 2016, 10:38 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/202 "2016-02-20T22:38:08Z")

</div>

J’ai tout réinstallé depuis le début.

Mais se qui est bizzare, je n’aperçoit pas cette ligne

```auto

```

[code]debian:/home/kei# iptables-save

# Generated by iptables-save v1.4.2 on Tue Jun 8 17:34:31 2010

\*filter  
:INPUT DROP [42:6271]  
:FORWARD DROP [0:0]  
:OUTPUT ACCEPT [749:126136]  
-A INPUT -i lo -j ACCEPT  
-A INPUT -p icmp -j ACCEPT  
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT  
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT  
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT  
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT  
-A INPUT -p tcp -m tcp --dport 631 -j ACCEPT  
-A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT  
-A INPUT -j ULOG --ulog-prefix "[IPTABLES DROP IN] : "  
-A FORWARD -j ULOG --ulog-prefix "[IPTABLES DROP FWD] : "  
COMMIT

# Completed on Tue Jun 8 17:34:31 2010

# Generated by iptables-save v1.4.2 on Tue Jun 8 17:34:31 2010

\*nat  
:PREROUTING ACCEPT [3:1728]  
:POSTROUTING ACCEPT [79:5182]  
:OUTPUT ACCEPT [79:5182]  
COMMIT

# Completed on Tue Jun 8 17:34:31 2010

# Generated by iptables-save v1.4.2 on Tue Jun 8 17:34:31 2010

\*mangle  
:PREROUTING ACCEPT [707:587069]  
:INPUT ACCEPT [704:585341]  
:FORWARD ACCEPT [0:0]  
:OUTPUT ACCEPT [749:126136]  
:POSTROUTING ACCEPT [791:132407]  
COMMIT

# Completed on Tue Jun 8 17:34:31 2010

# Generated by iptables-save v1.4.2 on Tue Jun 8 17:34:31 2010

\*raw  
:PREROUTING ACCEPT [707:587069]  
:OUTPUT ACCEPT [749:126136]  
COMMIT

# Completed on Tue Jun 8 17:34:31 2010

[/code]

---

<div class="post-metadata">

**Author:** ![dric64](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/d/f475e1/32.png) [@dric64](https://www.debian-fr.org/u/dric64)\
**Post date:** [Février 20, 2016, 10:38 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/203 "2016-02-20T22:38:08Z")

</div>

T’as du oublier de la rentrer

---

<div class="post-metadata">

**Author:** ![kim](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/k/9f8e36/32.png) [@kim](https://www.debian-fr.org/u/kim)\
**Post date:** [Février 20, 2016, 10:38 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/204 "2016-02-20T22:38:09Z")

</div>

Les mauvaises manipulations,je commence à y être habitué. ![:075](https://www.debian-fr.org/uploads/default/original/1X/660d70f9421e915a2561756e6d9f245d4f609347.gif "dequoi") , mais avant de la mettre j’ai préféré avoir confirmation, c’est se que je pensé aussi,l’avoir oublié.

Il est marrant ton chat 🙂

Résultat.

[code]debian:/home/kei# iptables-save

# Generated by iptables-save v1.4.2 on Tue Jun 8 19:26:52 2010

\*filter  
:INPUT DROP [37:5939]  
:FORWARD DROP [0:0]  
:OUTPUT ACCEPT [148:20976]  
-A INPUT -i lo -j ACCEPT  
-A INPUT -p icmp -j ACCEPT  
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT  
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT  
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT  
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT  
-A INPUT -p tcp -m tcp --dport 631 -j ACCEPT  
-A INPUT -p tcp -m tcp --dport 5222 -j ACCEPT  
-A INPUT -j ULOG --ulog-prefix "[IPTABLES DROP IN] : "  
-A FORWARD -j ULOG --ulog-prefix "[IPTABLES DROP FWD] : "  
-A OUTPUT -j ULOG --ulog-prefix "[IPTABLES ACCEPT OUT] : "  
COMMIT

# Completed on Tue Jun 8 19:26:52 2010

# Generated by iptables-save v1.4.2 on Tue Jun 8 19:26:52 2010

\*nat  
:PREROUTING ACCEPT [3:1728]  
:POSTROUTING ACCEPT [28:1711]  
:OUTPUT ACCEPT [28:1711]  
COMMIT

# Completed on Tue Jun 8 19:26:52 2010

# Generated by iptables-save v1.4.2 on Tue Jun 8 19:26:52 2010

\*mangle  
:PREROUTING ACCEPT [135:73522]  
:INPUT ACCEPT [132:71794]  
:FORWARD ACCEPT [0:0]  
:OUTPUT ACCEPT [148:20976]  
:POSTROUTING ACCEPT [185:26915]  
COMMIT

# Completed on Tue Jun 8 19:26:52 2010

# Generated by iptables-save v1.4.2 on Tue Jun 8 19:26:52 2010

\*raw  
:PREROUTING ACCEPT [135:73522]  
:OUTPUT ACCEPT [148:20976]  
COMMIT

# Completed on Tue Jun 8 19:26:52 2010

debian:/home/kei#

[/code] ![:049](https://www.debian-fr.org/uploads/default/original/1X/d95ba8413b5221afc0bc15b9965ffad445f89be8.gif "coeur") ![:049](https://www.debian-fr.org/uploads/default/original/1X/d95ba8413b5221afc0bc15b9965ffad445f89be8.gif "coeur")

---

<div class="post-metadata">

**Author:** ![ggoodluck47](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/c67d28/32.png) [@ggoodluck47](https://www.debian-fr.org/u/ggoodluck47)\
**Post date:** [Février 20, 2016, 11:02 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/205 "2016-02-20T23:02:51Z")

</div>

Salut,

Le sujet ayant refait surface j’en profite pour ouvrir le cahier des réclamations

1 - Pour un parefeu sans réseau :  
2 - Pour un parefeu sur une machine serveur dhcp :  
3 - Pour un parefeu sur une machine avec réseau sans dhcp :

Celui là est resté dans le stylo ou c’est la même chose que le 2 ?

---

<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, 11:02 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/206 "2016-02-20T23:02:51Z")

</div>

Non, on attendait que tu l’ajoutes 😈

---

<div class="post-metadata">

**Author:** ![Mitsu](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/f475e1/32.png) [@Mitsu](https://www.debian-fr.org/u/Mitsu)\
**Post date:** [Février 20, 2016, 11:02 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/207 "2016-02-20T23:02:51Z")

</div>

[quote=“ggoodluck47”]Salut,  
3 - Pour un parefeu sur une machine avec réseau sans dhcp :  
[/quote]

nécessite dnsutils / net-tools  
nécessite les modules LOG et conntrack d’iptables aussi (modprobe ipt\_LOG / modprobe ipt\_conntrack)

```auto
#!/bin/sh

IPT=/sbin/iptables

# on récupère les trois premiers segments l'ip de la machine où s'éxécute le script
# si l'ip est 192.168.0.40, on aura 192.168.0
IPSERV=`ifconfig eth0 | grep "inet adr" | sed 's/.*adr:\([0-9]*\.[0-9]*\.[0-9]*\).*/\1/'`

# on fait pointer par défaut sur ACCEPT
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT

# on nettoie les tables
$IPT -F INPUT
$IPT -F OUTPUT
$IPT -F FORWARD
$IPT -F LOG_DROP
$IPT -X LOG_DROP

# on fait pointer par défaut sur DROP
$IPT -P INPUT DROP
$IPT -P FORWARD DROP

# La machine locale est sure
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# ne pas casser les connexions etablies
$IPT -t filter -A INPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

# on se protège des scan de port
$IPT -t filter -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

# Protection SYN flood
$IPT -t filter -A INPUT -i eth0 -p tcp --syn -m limit --limit 5/s -j ACCEPT
$IPT -t filter -A INPUT -i eth0 -p udp -m limit --limit 10/s -j ACCEPT

# Protection ping flood
$IPT -t filter -A INPUT -i eth0 -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
$IPT -t filter -A INPUT -i eth0 -p icmp --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT

# on accepte le traffique sur le réseaux interne tout en passant le tout par filter
# on sait jamais... si une machine était infecté
$IPT -t filter -A INPUT -i eth0 -p tcp --source $IPSERV.0/16 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
$IPT -t filter -A OUTPUT -o eth0 -p tcp --destination $IPSERV.0/16 -m state --state RELATED,ESTABLISHED -j ACCEPT

# ports en tcp
for PRT in 20 21 25 80 143
do
$IPT -t filter -A OUPUT -p tcp --dport $PRT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -t filter -A INTPUT -p tcp --dport $PRT -m state --state RELATED,ESTABLISHED -j ACCEPT
done

# port en udp
# on est serveur dns
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT
iptables -t filter -A OUPUT -p udp --sport 53 -j ACCEPT
# on est client d'un serveur dns
iptables -t filter -A INPUT -p udp --sport 53 -j ACCEPT
iptables -t filter -A OUPUT -p udp --dport 53 -j ACCEPT
# on est client d'un serveur ntp
iptables -t filter -A INPUT -p udp --sport 123 -j ACCEPT
iptables -t filter -A OUPUT -p udp --dport 123 -j ACCEPT

#Logs
$IPT -N LOG_DROP
$IPT -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP] : ' --log-level debug
$IPT -A LOG_DROP -j DROP
$IPT -t filter -A INPUT -j LOG_DROP
$IPT -t filter -A OUTPUT -j LOG_DROP
$IPT -t filter -A FORWARD -j LOG_DROP
```

en espérant que ce soit ça que vous vouliez 😉

---

<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, 11:10 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/208 "2016-02-20T23:10:33Z")

</div>

À partir de Squeeze le boot utilise un système basé sur des dépendances entre les scripts, le tuto ne marche donc plus pour les utilisateurs de Squeeze et Sid.

Logiquement ce qu’il faudrais c’est lancer le firewall avant ifupdown, l’arrêt on s’en fout royalement.  
Voici mon script à titre d’exemple :

[code]### BEGIN INIT INFO

# Provides: firewall

# Required-Start:

# Required-Stop:

# Default-Start: S

# Short-Description: Met en place le firewall avec iptables

# Description: Start met en place les règles de firewall et stop les désactive

# store permet de sauvegarder de nouvelles rêgles.

### END INIT INFO

# Author: Michel Barret [michel.barret@gmail.com](mailto:michel.barret@gmail.com)

# 

# Please remove the “Author” lines above and replace them

# with your own name if you copy and modify this script.

# Do NOT “set -e”

# PATH should only include /usr/\* if it runs after the [mountnfs.sh](http://mountnfs.sh) script

PATH=/sbin:/usr/sbin:/bin:/usr/bin  
DESC="Firewall système"  
RULES=’/etc/config\_parefeu’

# 

# Protect the rules file

# 

do\_protect()  
{  
if [-f “$RULES”] && [$(stat -c %a “$RULES”) -ne 600]; then  
chmod 600 "$RULES"  
fi  
}

# 

# Function that starts the daemon/service

# 

do\_start()  
{  
do\_protect  
if [-f “$RULES”]; then  
iptables-restore \< "$RULES"  
fi  
}

# 

# Function that stops the daemon/service

# 

do\_stop()  
{  
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  
}

do\_store()  
{  
iptables-save \> "$RULES"  
do\_protect  
}

case “$1” in  
start)  
do\_start  
;;  
stop)  
do\_stop  
;;  
status)  
iptables -L  
;;  
store)  
do\_store  
;;  
\*)  
#echo “Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}” \>&2  
echo “Usage: firwall {start|stop|status|restart|force-reload}” \>&2  
exit 3  
;;  
esac

:[/code]

Ensuite il faut modifier l’entête /etc/init.d/ifupdown :

[code]#!/bin/sh -e

### BEGIN INIT INFO

# Provides: ifupdown

# Required-Start: ifupdown-clean parfeu

# Required-Stop: $local\_fs

# Default-Start: S

# Default-Stop: 0 6

# Short-Description: Prepare the system for taking up interfaces.

### END INIT INFO[/code]

On ajoute “parfeu” (c’est le nom que j’ai donné à mon script) comme dépendance “Required-Start”.

Enfin il lance

```auto

```

Il serait plus propre de mettre en place un détournement de fichier pour être protégé des mises à jour du paquet ifupdown.

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 20, 2016, 11:10 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/209 "2016-02-20T23:10:39Z")

</div>

En reprenant ton script, j’ai toujours les messages d’erreurs :

[code]update-rc.d mon\_parefeu defaults  
update-rc.d: using dependency based boot sequencing  
update-rc.d: warning: mon\_parefeu start runlevel arguments (2 3 4 5) do not match LSB Default-Start values (S)  
update-rc.d: warning: mon\_parefeu stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (none)  
insserv: Script mon\_parefeu is broken: incomplete LSB comment.  
insserv: missing `Required-Start:' entry: please add even if empty. insserv: missing`Required-Stop:’ entry: please add even if empty.  
insserv: missing `Default-Stop:' entry: please add even if empty. insserv: Script mon_parefeu is broken: incomplete LSB comment. insserv: missing`Required-Start:’ entry: please add even if empty.  
insserv: missing `Required-Stop:' entry: please add even if empty. insserv: missing`Default-Stop:’ entry: please add even if empty.  
insserv: Script mon\_parefeu is broken: incomplete LSB comment.  
insserv: missing `Required-Start:' entry: please add even if empty. insserv: missing`Required-Stop:’ entry: please add even if empty.  
insserv: missing `Default-Stop:' entry: please add even if empty. insserv: Script mon_parefeu is broken: incomplete LSB comment. insserv: missing`Required-Start:’ entry: please add even if empty.  
insserv: missing `Required-Stop:' entry: please add even if empty. insserv: missing`Default-Stop:’ entry: please add even if empty.  
insserv: Script mon\_parefeu is broken: incomplete LSB comment.  
insserv: missing `Required-Start:' entry: please add even if empty. insserv: missing`Required-Stop:’ entry: please add even if empty.  
insserv: missing `Default-Stop:' entry: please add even if empty. insserv: Script mon_parefeu is broken: incomplete LSB comment. insserv: missing`Required-Start:’ entry: please add even if empty.  
insserv: missing `Required-Stop:' entry: please add even if empty. insserv: missing`Default-Stop:’ entry: please add even if empty.  
insserv: Script mon\_parefeu is broken: incomplete LSB comment.  
insserv: missing `Required-Start:' entry: please add even if empty. insserv: missing`Required-Stop:’ entry: please add even if empty.  
insserv: missing `Default-Stop:' entry: please add even if empty. insserv: Script mon_parefeu is broken: incomplete LSB comment. insserv: missing`Required-Start:’ entry: please add even if empty.  
insserv: missing `Required-Stop:' entry: please add even if empty. insserv: missing`Default-Stop:’ entry: please add even if empty.  
insserv: warning: current start runlevel(s) (2 3 4 5) of script `mon_parefeu' overwrites defaults (S). insserv: Default-Stop undefined, assuming empty stop runlevel(s) for script`mon\_parefeu’

[/code]  
Bon, il faut dire que l’ancien script marche toujours hein (les règles sont chargées au démarrage), mais les erreurs sont gênantes.

---

<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, 11:11 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/210 "2016-02-20T23:11:29Z")

</div>

J’ai fais deux modification au script. J’ai vu après coup que j’avais oublié deux lignes.  
Ensuite j’ai modifié la fonction do\_protect parce que le script est lancé (chez moi) à un moment où le système de fichier est monté en lecture seule.

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 20, 2016, 11:11 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/211 "2016-02-20T23:11:35Z")

</div>

Ajout d’une ligne Default-Stop pour retirer une erreur, et petite correction de faute de frappe dans la partie “usage” :

[code]### BEGIN INIT INFO

# Provides: firewall

# Required-Start:

# Required-Stop:

# Default-Start: S

# Default-Stop:

# Short-Description: Met en place le firewall avec iptables

# Description: Start met en place les règles de firewall et stop les désactive

# store permet de sauvegarder de nouvelles rêgles.

### END INIT INFO

# Author: Michel Barret [michel.barret@gmail.com](mailto:michel.barret@gmail.com)

# 

# Please remove the “Author” lines above and replace them

# with your own name if you copy and modify this script.

# Do NOT “set -e”

# PATH should only include /usr/\* if it runs after the [mountnfs.sh](http://mountnfs.sh) script

PATH=/sbin:/usr/sbin:/bin:/usr/bin  
DESC="Firewall système"  
RULES=’/etc/config\_parefeu’

# 

# Protect the rules file

# 

do\_protect()  
{  
if [-f “$RULES”] && [$(stat -c %a “$RULES”) -ne 600]; then  
chmod 600 "$RULES"  
fi  
}

# 

# Function that starts the daemon/service

# 

do\_start()  
{  
do\_protect  
if [-f “$RULES”]; then  
iptables-restore \< "$RULES"  
fi  
}

# 

# Function that stops the daemon/service

# 

do\_stop()  
{  
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  
}

do\_store()  
{  
iptables-save \> "$RULES"  
do\_protect  
}

case “$1” in  
start)  
do\_start  
;;  
stop)  
do\_stop  
;;  
status)  
iptables -L  
;;  
store)  
do\_store  
;;  
\*)  
#echo “Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}” \>&2  
echo “Usage: firewall {start|stop|status|restart|force-reload}” \>&2  
exit 3  
;;  
esac

:  
[/code]  
Mais toujours ceci comme erreur :

`update-rc.d mon_parefeu defaults
update-rc.d: using dependency based boot sequencing
update-rc.d: warning: mon_parefeu start runlevel arguments (2 3 4 5) do not match LSB Default-Start values (S)
update-rc.d: warning: mon_parefeu stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (none)
insserv: warning: current start runlevel(s) (2 3 4 5) of script `mon_parefeu' overwrites defaults (S).
insserv: warning: current stop runlevel(s) (0 1 6) of script `mon_parefeu' overwrites defaults (empty).
`  
Que des warnings, donc c’est cool, mais allez savoir… Peut-être devrions nous plutot utiliser cron pour le démarrage du parefeu?

---

<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, 11:11 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/212 "2016-02-20T23:11:42Z")

</div>

[quote=«&nbsp;thuban&nbsp;»]Mais toujours ceci comme erreur :

`update-rc.d mon_parefeu defaults
update-rc.d: using dependency based boot sequencing
update-rc.d: warning: mon_parefeu start runlevel arguments (2 3 4 5) do not match LSB Default-Start values (S)
update-rc.d: warning: mon_parefeu stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (none)
insserv: warning: current start runlevel(s) (2 3 4 5) of script `mon_parefeu' overwrites defaults (S).
insserv: warning: current stop runlevel(s) (0 1 6) of script `mon_parefeu' overwrites defaults (empty).
`[/quote]  
Si tu regarde les scripts d’à coté genre /etc/init.d/ifupdown, tu vois un «&nbsp;Default-Start: S&nbsp;» ?

> [@thuban](#):
>
> Que des warnings, donc c’est cool, mais allez savoir… Peut-être devrions nous plutot utiliser cron pour le démarrage du parefeu?

C’est pas tellement logique on cherche pas à le lancer periodiquement.

---

<div class="post-metadata">

**Author:** ![ggoodluck47](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/c67d28/32.png) [@ggoodluck47](https://www.debian-fr.org/u/ggoodluck47)\
**Post date:** [Février 20, 2016, 11:11 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/213 "2016-02-20T23:11:54Z")

</div>

Salut,

Favoritisme : moi il bougonne sous prétexte que je n’ai rien mis en Required-start & stop !

### BEGIN INIT INFO

# Provides: firewall

# Required-Start:

# Required-Stop:

# Default-Start: S

# Default-Stop:

# Short-Description: Met en place le firewall avec iptables

# Description: Start met en place les règles de firewall et stop les désactive

# store permet de sauvegarder de nouvelles rêgles.

### END INIT INFO

---

<div class="post-metadata">

**Author:** ![thuban](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thuban/32/4177_2.png) [@thuban](https://www.debian-fr.org/u/thuban)\
**Post date:** [Février 20, 2016, 11:11 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/214 "2016-02-20T23:11:57Z")

</div>

@Misterfreeze : Pour cron, je pensais à la solution proposée avant sur le wiki de debian facile (la page n’est plus dispo… ça me rend super crédible 😃 )  
Mais, dans le script que tu propose, tu as bien mis un S dans le default-start, non? Il faut mieux mettre 2 plutot?

@ggoodluck : Il s’agit de warnings ou d’erreurs?

---

<div class="post-metadata">

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

</div>

des fois que… j’ai revu mon script qui possède de multiples erreurs…  
La passerelle réseaux est en .1, et un serveur mail se situe en .254  
Je permet web, ftp, ssh, mail, puis les requetes whois/dns/ntp  
Le script est tel qu’il récupère au début l’ip de la machine (histoire d’éviter d’avoir à modifier le script à chaque mise en place sur une machine du réseau)

```auto
#!/bin/sh

### BEGIN INIT INFO
# Provides: filtre réseaux
# Required-Start: $network
# Required-Stop: 
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: rc-firewall standard
# Description: Règles iptables standard linux
### END INIT INFO

IPT=/sbin/iptables
IPSERV=`ifconfig eth0 | grep "inet adr" | sed 's/.*adr:\([0-9]*\.[0-9]*\.[0-9]*\).*/\1/'`

case "$1" in
start)
clear
printf "\n-----------------------------------------"
printf "\n| Firewall Starting |"
printf "\n-----------------------------------------"
printf "\n"

# on fait pointer par défaut sur ACCEPT
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT

# on nettoie
$IPT -F INPUT
$IPT -F OUTPUT
$IPT -F FORWARD
$IPT -F LOG_DROP
$IPT -X LOG_DROP

# on fait pointer par défaut sur DROP
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP

# La machine locale est sure
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# ne pas casser les connexions etablies
$IPT -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# on se protège des scan de port
$IPT -t filter -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

# Protection SYN flood
$IPT -t filter -A INPUT -p tcp --syn -m limit --limit 5/s -j ACCEPT
$IPT -t filter -A INPUT -p udp -m limit --limit 10/s -j ACCEPT

# Protection ping flood
$IPT -t filter -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
$IPT -t filter -A INPUT -p icmp --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT

##################################################

#######
# SSH #
#######

# Client ssh
$IPT -A INPUT -p tcp --sport 22 -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p tcp --dport 22 -m state --state RELATED,ESTABLISHED -j ACCEPT

##################################################

########
# Mail #
########

# SMTP
$IPT -t filter -A INPUT -p tcp --sport 25 -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 25 -m state --state RELATED,ESTABLISHED -j ACCEPT

# IMAP
$IPT -t filter -A INPUT -p tcp --sport 143 -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -t filter -A OUTPUT -p tcp --dport 143 -m state --state RELATED,ESTABLISHED -j ACCEPT

##################################################

#######
# DNS #
#######

$IPT -A INPUT -p udp --dport 53 -j ACCEPT
$IPT -A OUTPUT -p udp --sport 53 -j ACCEPT
$IPT -A INPUT -p tcp --dport 53 -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 53 -j ACCEPT

$IPT -A INPUT -p udp --sport 53 -j ACCEPT
$IPT -A OUTPUT -p udp --dport 53 -j ACCEPT
$IPT -A INPUT -p tcp --sport 53 -j ACCEPT
$IPT -A OUTPUT -p tcp --dport 53 -j ACCEPT

##################################################

#######
# NTP #
#######

# on est client NTP
$IPT -A INPUT -p tcp --sport 123 -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p tcp --dport 123 -m state --state RELATED,ESTABLISHED -j ACCEPT

##################################################

#########
# Whois #
#########

$IPT -A INPUT -p tcp --sport 43 -j ACCEPT
$IPT -A OUTPUT -p tcp --dport 43 -j ACCEPT

##################################################

#######
# Web #
#######

# on est client Web
$IPT -A INPUT -p tcp --sport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p tcp --dport 80 -m state --state RELATED,ESTABLISHED -j ACCEPT

##################################################

#######
# FTP #
#######

# on est client FTP
$IPT -A INPUT -p tcp --sport 20 -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p tcp --dport 20 -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A INPUT -p tcp --sport 21 -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p tcp --dport 21 -m state --state RELATED,ESTABLISHED -j ACCEPT

##################################################

$IPT -A INPUT -i eth0 --source $IPSERV.1 -j ACCEPT
$IPT -A OUTPUT -o eth0 --destination $IPSERV.1 -j ACCEPT
$IPT -A INPUT -i eth0 --source $IPSERV.254 -j ACCEPT
$IPT -A OUTPUT -o eth0 --destination $IPSERV.254 -j ACCEPT

#Logs
$IPT -N LOG_DROP
$IPT -A LOG_DROP -j LOG --log-prefix '[IPTABLES DROP] : ' --log-level debug
$IPT -A LOG_DROP -j DROP
$IPT -t filter -A INPUT -j LOG_DROP
$IPT -t filter -A OUTPUT -j LOG_DROP
$IPT -t filter -A FORWARD -j LOG_DROP

exit 0
;;

stop)
$IPT -F INPUT
$IPT -F OUTPUT
$IPT -F FORWARD
$IPT -F LOG_DROP
$IPT -X LOG_DROP
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
clear
printf "\n-----------------------------------------"
printf "\n| Firewall Stopped |"
printf "\n-----------------------------------------"
printf "\n"
exit 0
;;

restart)

exit 0
;;

*)
echo "Utilisation: /etc/init.d/netfilter {start|stop}"
exit 1
;;

esac
```

si vous avez des remarques… 😉

---

<div class="post-metadata">

**Author:** ![PascalHambourg](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pascalhambourg/32/5837_2.png) [@PascalHambourg](https://www.debian-fr.org/u/PascalHambourg)\
**Post date:** [Février 20, 2016, 11:12 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/216 "2016-02-20T23:12:05Z")

</div>

> [@Mitsu](#):
>
> Le script est tel qu’il récupère au début l’ip de la machine (histoire d’éviter d’avoir à modifier le script à chaque mise en place sur une machine du réseau)

Es-tu sûr que l’interface réseau s’appelle eth0 sur toutes les machines ?  
Que toutes les machines sont installées avec la langue française par défaut ? En VO (sans langue installée ou anglais), ifconfig affiche «&nbsp;inet addr&nbsp;» (comme «&nbsp;address&nbsp;») et non «&nbsp;inet adr&nbsp;» (comme «&nbsp;adresse&nbsp;»), donc ta récupération d’adresse ne marcherait pas. Accessoirement le mélange d’anglais et de français dans la sortie d’ifconfig est quelque peu incongru.

> [@Mitsu](#):
>
> si vous avez des remarques

- AMA les limites sur le ping sont beaucoup trop basses.
- Ta règle «&nbsp;protection syn flood&nbsp;» est un trou de sécurité puisqu’elle accepte n’importe quel port. Elle devrait bloquer les paquets hors limite plutôt qu’accepter les paquets en dessous de la limite sans autre vérification.
- Inutile de répéter les règles avec RELATED,ESTABLISHED pour chaque port puisqu’il y a déjà une règle globale en début de chaîne, donc ça ne sert à rien.
- Tes règles DNS et Whois sont un trou béant : on peut se connecter à n’importe quel port local depuis l’extérieur avec le port source 53 en TCP et UDP ou 43 en TCP.
- Les règles FTP sur le port 20 sont inutiles et dangereuses, il vaut mieux charger le module de suivi de connexion FTP nf\_conntrack\_ftp.
- Je ne vois pas de règle pour les paquets créant une nouvelle connexion (state NEW), donc les règles acceptant les paquets suivants (state ESTABLISHED,RELATED) risquent de ne pas de servir à grand chose puisqu’il n’y aura pas de paquet suivant.  
Bref, y a encore du boulot.

Le principe de base pour utiliser le suivi de connexion, c’est :

- une règle globale dans INPUT et OUTPUT pour accepter tous les paquets appartenant ou liés à une connexion existante (state ESTABLISHED,RELATED) en début de chaîne (plus efficace car c’est la majorité des paquets)
- des règles dans OUTPUT pour accepter les paquets créant une nouvelle connexion (state NEW) sortante vers les protocole/ports/types ICMP autorisés
- des règles dans INPUT pour accepter les paquets créant une nouvelle connexion (state NEW) entrante vers les protocole/ports/types ICMP autorisés

---

<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, 11:12 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/217 "2016-02-20T23:12:05Z")

</div>

Pascal, puisque te voilà revenu, peux-tu me dire si le parefeu (SIMPLISSIME) originel de ce tuto est fautif ou non.  
Je sais que tu me l’as déjà fais améliorer mais je voudrais confirmation : est-ce qu’avec ce parefeu on est couvert, un peu ou pas du tout :?/  
le lien :  
[http://forum.debian-fr.org/viewtopic.php?f=8&t=1901](http://forum.debian-fr.org/viewtopic.php?f=8&t=1901)

---

<div class="post-metadata">

**Author:** ![PascalHambourg](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pascalhambourg/32/5837_2.png) [@PascalHambourg](https://www.debian-fr.org/u/PascalHambourg)\
**Post date:** [Février 20, 2016, 11:12 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/218 "2016-02-20T23:12:06Z")

</div>

Le jeu de règles est simple mais solide, c’est la base. Pas la peine de se lancer dans des fioritures genre protection anti synflood et scan si la gestion basique des flux de communication n’est pas gérée correctement.

Il y a juste la règle concernant ICMP dont il me semble avoir déjà écrit tout le mal que je pensais. J’aurais aussi installé le script avec update-rc.d dans le runlevel S avec un numéro inférieur à 40 plutôt que dans les runlevels par défaut (2345) afin que le pare-feu soit actif avant le démarrage des interfaces réseau. Pour finir, je trouve certaines descriptions un peu nébuleuses (pour ne pas dire fumeuses) :

- “Pour un parefeu sans réseau” ; euh, c’est quoi l’intérêt d’un pare-feu s’il n’y a pas de réseau ? D’après les règles je pense que tu voulais dire “pour un hôte (station ou serveur)” non routeur".

- “Pour un parefeu sur une machine serveur dhcp” alors qu’il n’y a pas de règle concernant DHCP ? Je pense que tu voulais dire “pour une machine faisant office de routeur avec NAT”.

- “A INPUT -i lo -j ACCEPT ((C’est la communication du noyau avec les services réseau éventuels, et c’est critique))” ??? C’est pour les communications IP entre processus locaux s’exécutant sur la machine, rien à voir avec le noyau.

---

<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, 11:12 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/219 "2016-02-20T23:12:07Z")

</div>

Ok pour tout, je vais modifier en fonction dès que possible (travail urgent en ce moment)  
pour ce qui suit, par quoi dois-je le remplacer, s’il y a lieu ?

```auto
- "A INPUT -i lo -j ACCEPT ((C'est la communication du noyau avec les services réseau éventuels, et c'est critique))" ??? C'est pour les communications IP entre processus locaux s'exécutant sur la machine, rien à voir avec le noyau.
```

---

<div class="post-metadata">

**Author:** ![PascalHambourg](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pascalhambourg/32/5837_2.png) [@PascalHambourg](https://www.debian-fr.org/u/PascalHambourg)\
**Post date:** [Février 20, 2016, 11:12 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/220 "2016-02-20T23:12:07Z")

</div>

“C’est la communication du noyau avec les services réseau éventuels” pourrait être remplacé par quelque chose du genre “C’est pour les communications IP entre processus locaux s’exécutant sur la machine”. Je ne suis pas certain que ce soit plus clair pour tout le monde, mais au moins c’est plus correct.

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

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