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

<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:25 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/121 "2016-02-20T17:25:48Z")

</div>

Le minimum c’est ça :

`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 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT`

Pour ce qui est de mes rêgles je n’ai rien inventé j’ai pris ça d’un howto. D’après celui-ci ces deux rêgles suplémentaires bloquerait le scan de port furtif.

---

<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:25 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/122 "2016-02-20T17:25:53Z")

</div>

[quote=“MisterFreez”]Le minimum c’est ça :

`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 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT`

Pour ce qui est de mes rêgles je n’ai rien inventé j’ai pris ça d’un howto. D’après celui-ci ces deux rêgles suplémentaires bloquerait le scan de port furtif.[/quote]  
Vs avez raison ts les deux pour le minimum mais pour ton scan de port, si ta règle générale interdit tte entrée, je ne vois pas pourquoi une règle secondaire spécifique ferait mieux.  
pour la règle reject, OK mais pas pour drop, il me semble.

---

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

</div>

Pour ceux qui utilisent la TV sur leur ordi via Free, il peut être indispensable d’ajouter la règle suivante :

```auto

```

Vs aurez compris qu’il faut remplacer “xx.yyy.zz.www” par votre IP  
Merci à Kna de m’avoir indiqué cette règle.

---

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

</div>

Reste plus qu’a connaitre son adresse IP.

Cette commande permet de le savoir :

```auto

```

Je ne sais pas s’il y a plus simple… 😒

---

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

</div>

et en couplant le tout, ça doit donner un truc du genre:

`/sbin/ifconfig | perl -anE 'if (/adr:/) {$F[1]=~ s/adr://g ; say grep {!/^127/} $F[1]}' | xargs iptables -A INPUT -s mafreebox.freebox.fr -p udp -m state --state ! INVALID -j ACCEPT -d`(pas testé)

---

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

</div>

[quote=“MisterFreez”]Reste plus qu’a connaitre son adresse IP.

Cette commande permet de le savoir :

```auto

```

Je ne sais pas s’il y a plus simple… 😒[/quote]  
sur le web, il y a plusieurs sites qui te la donne, en voilà un :  
[whatsmyip.org/](http://whatsmyip.org/)

---

<div class="post-metadata">

**Author:** ![Raum1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/9e8a1a/32.png) [@Raum1](https://www.debian-fr.org/u/Raum1)\
**Post date:** [Février 20, 2016, 7:13 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/127 "2016-02-20T19:13:08Z")

</div>

Pour celles et ceux qui se posent des questions sur les chaînes input, output, forward, j’avais créé il y a quelques temps les pages suivantes, que je viens d’actualiser :  
[Fonctionnement du parefeu sous Linux](http://linbox.free.fr/passerelle_simple/chapitres.php?chapitre=11)  
[Configuration globale du parefeu](http://linbox.free.fr/passerelle_simple/chapitres.php?chapitre=12)

C’est plutôt une introduction, c’est très schématique.

Une critique sur le script de Ricardo, au lieu de du mot clé “clean”, je mettrais plutôt “passthrough”, ensuite tu pourrais rajouter un mode “panic” qui ne laisse qu’un accès très restreint 😉

Perso, je suis plus orienté script et fonctions avec chargement d’addons… mes derniers scripts donnaient un truc du genre :

```auto
#! /bin/sh

LOOPBACK_INTERFACE="lo"   
LOOPBACK_NETWORK="127.0.0.0/8" 
IPTABLES="/usr/sbin/$IPTABLES"
FW_CONF="/etc/firewall/firewall.conf"

PWD=`pwd`

cd /etc/firewall

. /etc/firewall/fw-functions # ma bibliotheque de fonctions

/etc/firewall/clean.sh # je supprime toutes les chaines et règles existantes
/etc/firewall/chains.sh # je crée mes chaines personnelles

# définition de la police par défaut, tout est en drop
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT

#partage de la connexion Internet car ma machine est une passerelle
$IPTABLES -t nat -A POSTROUTING -s $INTERNAL_NETWORK -o $EXTERNAL_INTERFACE -j S
NAT --to $EXTERNAL_IP
echo 1 >/proc/sys/net/ipv4/ip_forward

$IPTABLES -A INPUT -i $INTERNAL_INTERFACE -s $INTERNAL_NETWORK -j ACCEPT
$IPTABLES -A OUTPUT -o $INTERNAL_INTERFACE -d $INTERNAL_NETWORK -j ACCEPT

# tout ce qui vient sur les chaines INPUT ou OUTPUT pour les protos TCP ou UDP
# je l'envoie sur les chaines LnD (D pour Drop) ou LnR (R pour Reject)
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p TCP -s $ANYWHERE -j LnD
$IPTABLES -A OUTPUT -o $EXTERNAL_INTERFACE -p TCP -s $ANYWHERE -j LnR
$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p UDP -s $ANYWHERE -j LnD
$IPTABLES -A OUTPUT -o $EXTERNAL_INTERFACE -p UDP -s $ANYWHERE -j LnR

$IPTABLES -A INPUT -i $EXTERNAL_INTERFACE -p ICMP -s $ANYWHERE -j ACCEPT
$IPTABLES -A OUTPUT -o $EXTERNAL_INTERFACE -p ICMP -s $ANYWHERE -j ACCEPT

# et je charge des "addons"
addons/dns.sh
addons/http_client.sh
addons/news.sh
addons/mail.sh
addons/mail_server.sh
addons/ntp.sh
addons/free_services.sh
addons/peertv.sh

echo "[Termine]"

cd $PWD
```

Et les addons ressemblent à :

```auto
#! /bin/sh

. /etc/firewall/fw-functions

protection off

echo addon dns

client_rule add UDP 53

protection on
```

Toute la complexité vient de la définition des variables dans le fichier “firewall.conf” et des addons…

En gros, je suis pour l’exploitabilité du pare-feu… plus on développe de services sur son réseau, plus ça peut devenir compliqué à gérer des règles “iptables”…

---

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

</div>

Je ferais deux remarques :  
[ol]  
[li]ce tuto est un “pour les nuls” d’où la non gestion de serveur sur la machine ;[/li]  
[li]quitte à être modulaire tu pourrais avoir une interface pour les utiliser facilement par exemple gérer la liste des addons à la volée (sans avoir à remodifier ton script à chaque fois).  
Tu gère un argument “-v” pour la liste des addons, "-a " pour activer l’addon et "-d " pour retirer l’addon (d’ailleurs tu na rien pour désactiver un addon).[/li][/ol]

---

<div class="post-metadata">

**Author:** ![Raum1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/9e8a1a/32.png) [@Raum1](https://www.debian-fr.org/u/Raum1)\
**Post date:** [Février 20, 2016, 7:13 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/129 "2016-02-20T19:13:45Z")

</div>

Tout à fait, le but est la “simplification” pour la création de nouvelle règle pour le pare-feu (le côté “pour les nuls”). Ensuite pour la gestion, en effet il faut développer le script. Pour être tout à fait complet, dans le répertoire /etc/firewall, j’ai d’autres scripts dont un [panic.sh](http://panic.sh) par exemple. Ensuite, j’ai un /etc/init.d/firewall avec les variables start | stop, etc qui font appel à ces scripts.

Les fonctions qui sont déclarées dans le fichier “/etc/firewall/fw-functions” gèrent les paramètres “-a” et “-d” car j’avais prévu l’ajout et le retrait des addons (d’où le “client add” dans l’addon)… mais bon… j’ai fini par partir sur un autre projet.

Pour ma part, c’est plus simple à administrer qu’un fichier de 32k remplit de règles IPTables…

La fonction client\_rule :

```auto
client_rule() {
        command=$1
        protocole=$2
        port=$3

        DO="-A"
        if ["$command" = "del"]
        then
           DO="-D"
        fi

        $IPTABLES $DO OUTPUT -o $EXTERNAL_INTERFACE -p $protocole \
          --sport $UNPRIVPORTS --dport $port -s $EXTERNAL_IP -d $ANYWHERE -j ACCEPT

        $IPTABLES $DO INPUT -i $EXTERNAL_INTERFACE -p $protocole -m state --state ESTABLISHED,RELATED \
          --sport $port --dport $UNPRIVPORTS -s $ANYWHERE -d $EXTERNAL_IP -j ACCEPT
}
```

---

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

</div>

Mais il t’a déjà été répondu que ce tuto ne se veut pas complet mais minimal et simplissime.  
On sait très bien qu’il y a des lacunes et qu’il peut être complété mais ce n,'est pas le but ici.  
C’est un tuto pour un débutant qui veut quand même avoir un minimum de protection sans trop se creuser la tête.  
Ensuite, quand ledit débutant devient plus “pointu”, il s’adresse à toi, OK ? :smt003

---

<div class="post-metadata">

**Author:** ![Raum1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/9e8a1a/32.png) [@Raum1](https://www.debian-fr.org/u/Raum1)\
**Post date:** [Février 20, 2016, 7:14 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/131 "2016-02-20T19:14:04Z")

</div>

Je crois qu’il y a un malentendu 🙂

Si j’apporte une critique, j’espère qu’elle est simplement constructive et elle est purement sur la forme. Je ne suis pas un ‘pro’ de iptables, c’est pour cela que j’ai préféré créer des scripts qui créent les règles automatiquement.

Donc je répète, j’ai critiqué la forme.

Maintenant sur le fond, il aurait été peut être plus judicieux de nommer le post “comprendre IPTables pour les nuls” et à ce moment là, je ne me serais pas permis de dire qu’il y avait peut être moyen de rendre les choses plus ‘transparentes’.

En aucun cas je ne me pose en “sauveur du monde” et on a tous à apprendre et à améliorer notre compréhension. J’ai peut être été hors sujet et si vous avez mal pris mon intervention alors je vous prie de m’excuser.

---

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

</div>

Aucunement vexé, je te l’assure et ton intervention est louable.  
Je ne fais que trouver un supplément de complication qui risque de rebuter le débutant.  
La discussion est ouverte dans ce fil et tes messages y ont leur place.

---

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

</div>

En fait en lisant tout ça je me suis dit qu’il était facile de faire un script simple pour faire un parefeu pour monsieur tout le monde. Ci dessous est le premier jet. J’ai pensé à la situation de M. tout le monde avec une box. J’ai essayé de penser au plus courant dont notamment

- le freeplayer
- les requêtes DHCP vers le routeur à l’autre bout de la box (si on fait dans la parano)  
Il y a la doc pour chaque fonction (c’est ça qui a été long à faire, c’est juste avant les directives après les fonctions) ainsi qu’un exemple  
complet à la fin. Le résultat est donné en citation après le code. Ça marche chez moi sans pbm pour une configuration plus compliquée mais il y a peut être des erreurs. Les personnes intéressées peuvent voir à la fin de ce post le jeu de règles obtenues à partir des directives données (en fin du code) que je reproduis ici.  
Rq:

- On ne peut pas tout faire avec les fonctions indiquées mais ça suffit pour un système qui me parait raisonnable
- Je n’ai pas approfondi une version parano avec la chaines OUTPUT en DROP par défaut, a priori tout est prévu pour avec les fonctions outputok and Co, elles fonctionnent mais bon, c’est sommaire. Cela étant pour une version perso, avec la possibilité de bloquer des ports en sortie, ça suffit dans la version standard.
- c’est plus une extension de la version de Ricardo avec des fonctions ad hoc qui permettent de faire facilement quelques opérations courantes qu’une nième version de parefeu.

[code]# pas de parano, OUTPUT et FORWARD en ACCEPT  
initialisation OUTPUT FORWARD  
passerelle

# on autorise les accès aux serveurs pop3, pop3ssl, ftp, smtp web et ssh.

inputok tcp pop3s pop3 ftp smtp www ssh https

# permet de renouveller le bail si on possède une box qui se configure en DHCP

inputok udp bootpc bootps ntp domain

# limiter les accès à ssh, ftp et pop3

limiteport ssh 5 90  
limiteport ftp 10 90  
limiteport pop3 5 90

# Tant pis pour HADOPI, un petit coup de Edonkey sur la machine 192.168.1.2

redirige tcp 4662 2  
redirige udp 4672 2  
redirige udp 4665 2

# on veut jouer à Starcraft sur cette machine 192.168.1.2

redirige 6112 tcp 2  
redirige 6112 udp 2  
redirige 4000 tcp 2  
redirige 4000 udp 2

# et à CS

redirigeserveur 27016 udp 2

# 

# je veux regarder la tele sur mon ordinateur en profitant de freeplayer

# freeplayer (freeplayer.freebox.fr=212.27.38.253)

# mais je ne connais pas les ports. Tant pis on fait confiance:

potes 212.27.38.253  
fromto 212.27.38.253 tcp 2  
fromto 212.27.38.253 udp 2

# maintenant soyons sérieux, le serveur Web est sur 192.168.1.3

redirigeserveur www tcp 3

# 

# enfin il y a des gens qui sont sous Windows, eux je ne veux pas qu’ils

# accèdent au port SMTP. Seul moi (192.168.1.2) je peux et aussi ma

# femme qui peut accéder à son compte sur [laposte.net](http://laposte.net) (elle a 192.168.1.3)

sortie tcp smtp 2 3 d 193.251.214.114[/code]

[code]#!/bin/sh

# FBoisson Mars 2009

# interfaces extérieure et Lan

IF\_EXT=eth1  
IF\_LAN=eth0

# 

# réseau local et IP public

LAN=192.168.1  
IP=82.66.248.156  
MOI=1  
IP\_LAN=$LAN.$MOI

# 

IPTABLES=“iptables”

# 

# restrictif

# 

RESTRICT="-m state --state NEW,ESTABLISHED,RELATED "

# 

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

# Utilitaires

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

# 

# obtient le port

port () {  
unset PRT  
PRT=`grep -E "^$1[^a-zA-Z]" /etc/services | sed -e '1,$s|^.*[\t|]\([0-9]*\)/.*$|\1|' | head -n 1`  
if [! -z $PRT] ; then  
RES=$PRT  
else  
RES=$1  
fi  
}

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

# Redirection

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

# 

# service local sur port $1 protocole $2 redirigé sur $LAN.$3:$4 ou $LAN.$3:$1 sinon

# 

redirigeserveur () {  
port $1  
PORT=$RES  
if [-z $4] ; then  
PDEST=$PORT  
else  
port $4  
PDEST=$RES  
fi  
$IPTABLES -t nat -A PREROUTING $RESTRICT -p $2 --dport $PORT -j DNAT -i $IF\_LAN -d $IP --to $LAN.$3:$PDEST  
$IPTABLES -t nat -A PREROUTING $RESTRICT -p $2 --dport $PORT -j DNAT -i $IF\_EXT --to $LAN.$3:$PDEST  
$IPTABLES -t nat -A POSTROUTING -o $IF\_LAN -p $2 --dport $PORT -s $LAN.0/24 -j MASQUERADE  
}

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

# 

# redirection simple du port $1 protocole $2 redirigé sur $LAN.$3:$4 ou $LAN.$3:$1 sinon

# en se limitant au paquet venant de $5 si $5 existe

# redirige port protocole ou port origine

# 

redirige () {  
port $1  
PORT=$RES  
if [-z $4] ; then  
PDEST=$PORT  
else  
port $4  
PDEST=$RES  
fi  
unset ORIGINE  
if [! -z $5] ; then  
ORIGINE="-s $5"  
fi  
$IPTABLES -t nat -A PREROUTING $RESTRICT -p $2 --dport $PORT -j DNAT -i $IF\_EXT $ORIGINE --to $LAN.$3:$PDEST  
}  
#############################################################

# 

# redirection de tout ce qui vient de $1 protocole $2 redirigé sur $LAN.$3

# fromto ou protocole vers

# 

fromto () {  
$IPTABLES -t nat -A PREROUTING -p $2 -i $IF\_EXT -s $1 -j DNAT --to $LAN.$3  
}

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

# Gestion des entrées

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

# 

# limite les connexions tcp sur le port $1 pour $2 connexions par $3 secondes

# 

limiteport () {  
port $1  
PORT=$RES  
$IPTABLES -I INPUT -i $IF\_EXT -p tcp --dport $PORT -m state --state NEW -m recent --set  
$IPTABLES -I INPUT -i $IF\_EXT -p tcp --dport $PORT -m state --state NEW -m recent --update --seconds $3 --hitcount $2 -j DROP  
}

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

# 

# interdit le port $1 protocole $2 à tous excepté la liste $3 $4 etc

# 

interdit () {  
PROT=$2  
port $1  
PORT=$RES  
shift  
shift  
for m in $\* ; do  
$IPTABLES -A INPUT -p $PROT $RESTRICT --dport $PORT -i $IF\_EXT -s $m -j ACCEPT  
done  
$IPTABLES -A INPUT -p $PROT --dport $PORT -i $IF\_EXT -j DROP  
}

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

# 

# autorise le port $1 protocole $2 à tous excepté la liste $3 $4 etc

# 

accepte () {  
PROT=$2  
port $1  
PORT=$RES  
shift  
shift  
for m in $\* ; do  
$IPTABLES -A INPUT -p $PROT --dport $PORT -i $IF\_EXT -s $m -j DROP  
done  
$IPTABLES -A INPUT -p $PROT $RESTRICT --dport $PORT -i $IF\_EXT -j ACCEPT  
}  
#############################################################

# 

# Entrée OK en protocole $1 pour les ports suivants éventuellement limité

# à une source donnée si suivi par s

# exemple: inputok tcp smtp ssh telnet s 12.34.55.66 s 12.44.233.22 www

# 

inputok () {  
PROT=$1  
shift  
while [! -z $1] ; do  
port $1  
PORT=$RES  
shift  
if [! -z $1] && [$1 = “s”] ; then  
while [! -z $1] && [$1 = “s”] ; do  
shift  
DEST="-s $1"  
shift  
$IPTABLES -A INPUT $RESTRICT -p $PROT $DEST --dport $PORT -j ACCEPT  
done  
else  
$IPTABLES -A INPUT $RESTRICT -p $PROT --dport $PORT -j ACCEPT  
fi  
done  
}  
#############################################################

# 

# Liste de machines de confiance, tout ce qui vient de ces machines

# est acceptée

# 

potes () {  
while [! -z $1] ; do  
$IPTABLES -A INPUT $RESTRICT -s $1 -j ACCEPT  
shift  
done  
}  
#############################################################

# Gestion des sorties

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

# 

# SortieOK en protocole $1 pour les ports suivants éventuellement limité

# à une destination donnée si suivi par d

# exemple: outputok tcp smtp ssh telnet d 12.34.55.66 d 12.44.233.22 www

# si forward est donné en premier argument, cela porte sur la chaine FORWARD

# sinon sur la chaine OUTPUT

# exemple: outputok forward tcp smtp ssh telnet d 12.34.55.66 d 12.44.233.22 www

# 

outputok () {  
unset $TABLE  
if [$1 = “forward”] ; then  
TABLE=FORWARD  
shift  
else  
TABLE=OUTPUT  
fi  
PROT=$1  
shift  
while [! -z $1] ; do  
port $1  
PORT=$RES  
shift  
if [! -z $1] && [$1 = “d”] ; then  
while [! -z $1] && [$1 = “d”] ; do  
shift  
DEST="-d $1"  
shift

```
	$IPTABLES -A $TABLE $RESTRICT -p $PROT $DEST --dport $PORT -j ACCEPT
    done
else
    $IPTABLES -A $TABLE $RESTRICT -p $PROT --dport $PORT -j ACCEPT
fi
done

```

}  
#############################################################

# 

# Liste de machines de confiance, tout ce qui vient de ces machines

# est acceptée, et tout ce qui est à destination de ces machines est accepté

# 

machinesures () {  
while [! -z $1] ; do  
$IPTABLES -A FORWARD $RESTRICT -s $1 -j ACCEPT  
shift  
done  
}  
destinationsures () {  
while [! -z $1] ; do  
$IPTABLES -A OUTPUT $RESTRICT -d $1 -j ACCEPT  
shift  
done  
}  
#############################################################

# 

# Interdiction de sortie pour des machines données exceptés

# des ports précis, attention la syntaxe est un peu différente

# sortielimite 240 tcp www 443 110 d 195.154.98.97 25 8080 udp 53

# limite la machine au port 80, 443 et 110 en tcp, 53 en udp

# et 25 et8080 en tcp vers 195.154.98.97

sortielimite () {  
MACHINE=$LAN.$1  
DEST="“  
shift  
PROT=$1  
shift  
PROT=tcp  
while [! -z $1] ; do  
if [$1 = “tcp”] || [$1 = “udp”] ; then  
PROT=$1  
DEST=”“  
shift  
elif [$1 = “d”] ; then  
shift  
DEST=”-d $1"  
shift  
else  
port $1  
PORT=$RES  
shift  
$IPTABLES -A FORWARD -s $MACHINE $DEST -p $PROT --dport $PORT -j ACCEPT  
fi  
done  
$IPTABLES -A FORWARD -s $MACHINE -m state --state RELATED,ESTABLISHED -j ACCEPT  
$IPTABLES -A FORWARD -s $MACHINE -j DROP  
}  
#############################################################

# Gestion de passerelle

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

# 

# passerelle

# 

passerelle () {  
$IPTABLES -t nat -A POSTROUTING -o $IF\_EXT -j MASQUERADE  
}  
#############################################################

# 

# sortie vers port $1 interdit sauf pour les indications après de la forme

# fin\_IP\_source [d IP destination]

# exemple: sortie tcp smtp 251 240 d 12.45.245.23 252

# OK pour $IP\_LAN.251 et 252 et OK pour $LAN.240 -\> 12.45.245.23

# 

sortie () {  
PROT=$1  
shift  
port $1  
PORT=$RES  
shift  
while [! -z $1] ; do  
SOURCE=$LAN.$1  
shift  
if [! -z $1] && [$1 = “d”] ; then  
shift  
DEST="-d $1"  
shift  
else  
unset DEST  
fi  
$IPTABLES -t nat -A PREROUTING $RESTRICT -p $PROT -s $SOURCE $DEST -i $IF\_LAN --dport $PORT -j ACCEPT  
done  
$IPTABLES -t nat -A PREROUTING -p $PROT --dport $PORT -i $IF\_LAN -d $IP\_LAN -j ACCEPT  
$IPTABLES -t nat -A PREROUTING -p $PROT --dport $PORT -i $IF\_LAN -d $IP -j ACCEPT  
$IPTABLES -t nat -A PREROUTING -p $PROT --dport $PORT -i $IF\_LAN -j DROP  
}

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

# Initialisation

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

# 

# initialisation restrictive par défaut mais cool sur les chaines données en argument

# initialisation OUTPUT FORWARD

# met ACCEPT sur OUTPUT et FORWARD

# 

initialisation () {

# raz

```
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "16384" > /proc/sys/net/ipv4/ip_conntrack_max OUTPUT=DROP
INPUT=DROP
FORWARD=DROP
while [! -z $1] ; do
if [$1 = OUTPUT] ; then
    OUTPUT=ACCEPT
fi
if [$1 = INTPUT] ; then
    INTPUT=ACCEPT
fi
if [$1 = FORWARD] ; then
    FORWARD=ACCEPT
fi
shift
done
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -F INPUT
$IPTABLES -t nat -F
$IPTABLES -P INPUT $INPUT
$IPTABLES -P OUTPUT $OUTPUT
$IPTABLES -P FORWARD $FORWARD

if [$INPUT = DROP] ; then

```

# sur le LAN c’est des potes

```
$IPTABLES -A INPUT -i $IF_LAN -j ACCEPT

```

# les connexions liées ou ouvertes c’est OK.

```
$IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

```

# loopback: don’t be schizo

```
$IPTABLES -A INPUT -i lo -j ACCEPT

```

# icmp: pas de parano tout de même sinon on ne fait rien

```
$IPTABLES -A INPUT -p icmp -j ACCEPT
fi
if [$OUTPUT = DROP] ; then

```

# sur le LAN c’est des potes

```
$IPTABLES -A OUTPUT -o $IF_LAN -j ACCEPT

```

# les connexions liées ou ouvertes c’est OK.

```
$IPTABLES -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

```

# loopback: don’t be schizo

```
$IPTABLES -A OUTPUT -o lo -j ACCEPT

```

# icmp: pas de parano tout de même sinon on ne fait rien

```
$IPTABLES -A OUTPUT -p icmp -j ACCEPT
fi
if [$FORWARD = DROP] ; then

```

# les connexions liées ou ouvertes c’est OK.

```
$IPTABLES -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

```

# icmp: pas de parano tout de même sinon on ne fait rien

```
$IPTABLES -A FORWARD -p icmp -j ACCEPT
fi

```

}

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

# Règles

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

# 

# Le parefeu se suppose en fait deux interfaces à régler dans le début du script

# IF\_EXT est l’interface vers l’extérieur (Internet), IF\_LAN est celle

# vers le LAN

# LAN est le prefix du réseau (supposé /24, tout ça est a améliorer).

# Le parefeu se fait par appel à plusieurs routines

# \* initialisation initialise le parefeu, les arguments sont INPUT OUTPUT FORWARD

# ordre indifférent, qui sont les chaines où la politique par défaut est

# ACCEPT. Si on veut tout paramétrer, on met

# initialisation

# L’utlisateur normal met

# initialisation OUTPUT FORWARD

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

# \* passerelle est une fonction sans argument qui indique que la machine

# est une passerelle

# Suivent des fonctions gérant les entrées, les redirections et les sorties.

# Les ports peuvent être indiqués par leur nom (ssh) ou leur numéro (23).

# protocole définit le protocle (tcp ou udp essentiellement)

# Pour gérer les entrées on a comme fonctions

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

# \* inputok qui prend comme argument

# - le protocole

# - une suite de ports qui seront autorisés en entrée avec éventuellement

# une source imposée. Ainsi

# inputok tcp pop3 smtp domain telnet s 122.23.23.1 s 144.22.3.0/24 www https

# ouvre les ports pop3, smtp, www et https pour tous et le port telnet

# pour la machine 122.23.23.1 et le réseau 144.22.3.0/24

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

# \* accepte qui prend comme argument

# - le protocole

# - un numéro de port

# - une liste de machine ou de réseau

# ouvre le port à tous excepté les machines indiquées dans la liste.

# accepte tcp www 66.249.93.104

# accepte tout le monde sur le port www excepté 66.249.93.104

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

# \* interdit qui prend comme argument

# - le protocole

# - un numéro de port

# - une liste de machine ou de réseau

# interdit le port à tous excepté les machines indiquées dans la liste.

# interdit tcp ssh 66.249.93.104 82.66.248.0/24

# accepte tout le monde sur le port ssh excepté 66.249.93.104 et

# le réseau 82.66.248.0/24

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

# \* potes prenant comme arguments une liste de machines/réseau définit

# les machines de confiance. Tout est accepté venant d’eux.

# potes 82.66.248.156

# me permet d’aller sur tous les ports chez vous.

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

# \* limiteport prenant comme argument

# - un numéro de port

# - un décompte

# - un temps en secondes

# bloque toute machine ayant effectuée trop de connexions durant le temps donné

# sur le port indiqué.

# limiteport ssh 3 90

# bloque toute personne ayant fait plus de 3 connexions ssh en 90s, cela pendant

# 90 secondes.

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

# \* redirigeserveur

# permet de rediriger les connexions vers un serveur, cela est vrai pour

# l’extérieur comme pour le LAN. En clair

# redirigeserveur www tcp 251 81

# redirige les connexions venant de l’internet sur 192.168.1.251:81 (en

# admettant que LAN=192.168.1) et également celle venant du LAN (ce qui est

# important et nécessite du MASQUERADING).

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

# \* redirige prenant comme argument

# - un numéro de port

# - un protocole

# - le numéro définissant une machine dans le LAN (23 pour 192.168.1.23)

# - un numéro de port (optionnel)

# redirige le port donné en premier argument sur la machine donnée en 3ième

# argument (port identique ou défini par le 4ième argument)

# Si un 5ième argument est donné, cela limite la règle uniquement à la

# machine donné en argument.

# redirige 2222 tcp 123 22 82.66.248.156

# permet à la machine 82.66.248.156 et elle seulement (merci :)) d’aller sur le

# port ssh de 192.168.1.123 (si LAN=192.168.1)

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

# \* fromto est une redirection basique

# Il redirige le port donné en premier argument (protocole donné en 2ième

# argument) sur la machine définie par le 3ième argument (éventuellement

# port donné en 4ième argument). Pour jouer à Starcraft, sur la machine

# 192.168.1.234, ce serait

# fromto 6112 tcp 234

# fromto 6112 udp 234

# fromto 4000 tcp 234

# fromto 4000 udp 234

# (je ne sais plus si c’est UDP ou TCP à rediriger, je met les 2)

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

# \* outputok gère les sorties ou si forward est donné en premier argument,

# le forwarding (on ne comptera cet éventuel premier argument dans

# ce qui suit). L’argument suivant est le protocle (tcp ou udp) puis

# suivent une liste de ports avec éventuellement une destination imposée.

# outputok forward tcp telnet ssh smtp d 12.34.55.66 d 12.44.233.22 www

# autorise le relais tcp vers les ports telnet, ssh, smtp uniquement vers

# 12.34.55.66 et 12.44.233.22 et vers le port www.

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

# \* machinesures définit une liste de machines sûres autorisées à tout faire

# échappant aux restrictions ci dessus (pour le relais). destinationsures

# désigne les machines sur pour la sortie.

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

# \* sortie port protocole liste de machines

# interdit les accès vers l’extérieur pour les machines venant du LAN excepté

# pour les machines indiquées avec éventuellement des destinations limitées.

# sortie smtp tcp 251 249 d 195.154.98.97 249 d 212.27.48.4

# interdit le port 25 sauf à la machine 192.168.1.251 et, pour les destinations

# 195.154.98.97 et 212.27.48.4 à la machine 192.168.1.249 (remarquez que 249

# a été répété).

# un parefeu typique serait

initialisation OUTPUT FORWARD  
passerelle

# on autorise les accès aux serveurs pop3, pop3ssl, ftp, smtp web et ssh.

inputok tcp pop3s pop3 ftp smtp www ssh https

# permet de renouveller le bail si on possède une box qui se configure en DHCP

inputok udp bootpc bootps ntp domain

# limiter les accès à ssh, ftp et pop3

limiteport ssh 5 90  
limiteport ftp 10 90  
limiteport pop3 5 90

# Tant pis pour HADOPI, un petit coup de Edonkey sur la machine 192.168.1.2

redirige tcp 4662 2  
redirige udp 4672 2  
redirige udp 4665 2

# on veut jouer à Starcraft sur cette machine 192.168.1.2

redirige 6112 tcp 2  
redirige 6112 udp 2  
redirige 4000 tcp 2  
redirige 4000 udp 2

# et à CS

redirigeserveur 27016 udp 2

# 

# je veux regarder la tele sur mon ordinateur en profitant de freeplayer

# freeplayer (freeplayer.freebox.fr=212.27.38.253)

# mais je ne connais pas les ports. Tant pis on fait confiance:

potes 212.27.38.253  
fromto 212.27.38.253 tcp 2  
fromto 212.27.38.253 udp 2

# maintenant soyons sérieux, le serveur Web est sur 192.168.1.3

redirigeserveur www tcp 3

# 

# enfin il y a des gens qui sont sous Windows, eux je ne veux pas qu’ils

# accèdent au port SMTP. Seul moi (192.168.1.2) je peux et aussi ma

# femme qui peut accéder à son compte sur [laposte.net](http://laposte.net) (elle a 192.168.1.3)

sortie tcp smtp 2 3 d 193.251.214.114  
[/code]

Les règles obtenues:

[quote]iptables -F INPUT  
iptables -F OUTPUT  
iptables -F FORWARD  
iptables -F INPUT  
iptables -t nat -F  
iptables -P INPUT DROP  
iptables -P OUTPUT ACCEPT  
iptables -P FORWARD ACCEPT  
iptables -A INPUT -i eth0 -j ACCEPT  
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT  
iptables -A INPUT -i lo -j ACCEPT  
iptables -A INPUT -p icmp -j ACCEPT  
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE  
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 995 -j ACCEPT  
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 110 -j ACCEPT  
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 21 -j ACCEPT  
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 25 -j ACCEPT  
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 80 -j ACCEPT  
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 22 -j ACCEPT  
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 443 -j ACCEPT  
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p udp --dport 68 -j ACCEPT  
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p udp --dport 67 -j ACCEPT  
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p udp --dport 123 -j ACCEPT  
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -p udp --dport 53 -j ACCEPT  
iptables -I INPUT -i eth1 -p tcp --dport 22 -m state --state NEW -m recent --set  
iptables -I INPUT -i eth1 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 90 --hitcount 5 -j DROP  
iptables -I INPUT -i eth1 -p tcp --dport 21 -m state --state NEW -m recent --set  
iptables -I INPUT -i eth1 -p tcp --dport 21 -m state --state NEW -m recent --update --seconds 90 --hitcount 10 -j DROP  
iptables -I INPUT -i eth1 -p tcp --dport 110 -m state --state NEW -m recent --set  
iptables -I INPUT -i eth1 -p tcp --dport 110 -m state --state NEW -m recent --update --seconds 90 --hitcount 5 -j DROP  
iptables -t nat -A PREROUTING -m state --state NEW,ESTABLISHED,RELATED -p 4662 --dport tcp -j DNAT -i eth1 --to 192.168.1.2:tcp  
iptables -t nat -A PREROUTING -m state --state NEW,ESTABLISHED,RELATED -p 4672 --dport udp -j DNAT -i eth1 --to 192.168.1.2:udp  
iptables -t nat -A PREROUTING -m state --state NEW,ESTABLISHED,RELATED -p 4665 --dport udp -j DNAT -i eth1 --to 192.168.1.2:udp  
iptables -t nat -A PREROUTING -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 6112 -j DNAT -i eth1 --to 192.168.1.2:6112  
iptables -t nat -A PREROUTING -m state --state NEW,ESTABLISHED,RELATED -p udp --dport 6112 -j DNAT -i eth1 --to 192.168.1.2:6112  
iptables -t nat -A PREROUTING -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 4000 -j DNAT -i eth1 --to 192.168.1.2:4000  
iptables -t nat -A PREROUTING -m state --state NEW,ESTABLISHED,RELATED -p udp --dport 4000 -j DNAT -i eth1 --to 192.168.1.2:4000  
iptables -t nat -A PREROUTING -m state --state NEW,ESTABLISHED,RELATED -p udp --dport 27016 -j DNAT -i eth0 -d 82.66.248.156 --to 192.168.1.2:27016  
iptables -t nat -A PREROUTING -m state --state NEW,ESTABLISHED,RELATED -p udp --dport 27016 -j DNAT -i eth1 --to 192.168.1.2:27016  
iptables -t nat -A POSTROUTING -o eth0 -p udp --dport 27016 -s 192.168.1.0/24 -j MASQUERADE  
iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -s 212.27.38.253 -j ACCEPT  
iptables -t nat -A PREROUTING -p tcp -i eth1 -s 212.27.38.253 -j DNAT --to 192.168.1.2  
iptables -t nat -A PREROUTING -p udp -i eth1 -s 212.27.38.253 -j DNAT --to 192.168.1.2  
iptables -t nat -A PREROUTING -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 80 -j DNAT -i eth0 -d 82.66.248.156 --to 192.168.1.3:80  
iptables -t nat -A PREROUTING -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 80 -j DNAT -i eth1 --to 192.168.1.3:80  
iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 80 -s 192.168.1.0/24 -j MASQUERADE  
iptables -t nat -A PREROUTING -m state --state NEW,ESTABLISHED,RELATED -p tcp -s 192.168.1.2 -i eth0 --dport 25 -j ACCEPT  
iptables -t nat -A PREROUTING -m state --state NEW,ESTABLISHED,RELATED -p tcp -s 192.168.1.3 -d 193.251.214.114 -i eth0 --dport 25 -j ACCEPT  
iptables -t nat -A PREROUTING -p tcp --dport 25 -d 192.168.1.1 -i eth0 -j ACCEPT  
iptables -t nat -A PREROUTING -p tcp --dport 25 -d 82.66.248.156 -i eth0 -j ACCEPT  
iptables -t nat -A PREROUTING -p tcp --dport 25 -i eth0 -j DROP  
[/quote]

---

<div class="post-metadata">

**Author:** ![Raum1](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/9e8a1a/32.png) [@Raum1](https://www.debian-fr.org/u/Raum1)\
**Post date:** [Février 20, 2016, 7:21 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/134 "2016-02-20T19:21:37Z")

</div>

faut que je réflesse un peu 🙂  
 ouais donc en fait ce que je voulais dire… c’est qu’il vaut mieux éviter de mettre comme politique par défaut “ACCEPT” dans la chaîne FORWARD, c’est mal.

du coup tes règles en input ne sont pas utiles (tu devrais le voir avec un iptables -nvL, les compteurs devraient être à 0).  
[Schéma NetFilter](http://upload.wikimedia.org/wikipedia/fr/3/3e/Netfilter_schema.png)

Tu fais du DNAT, dans le noeud de PREROUTING :

```auto
iptables -t nat -A PREROUTING -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 80 -j DNAT -i eth0 -d 82.66.248.156 --to 192.168.1.3:80
```

De fait, l’adresse 82.66.248.156 est changée en 192.168.1.3 avant de passer dans la chaîne “INPUT” (regardes bien le schéma). Ensuite, eh bien le noyau applique le processus de routage et envoie dans le noeud “FORWARD” car cela ne va pas à destination de ses processus locaux. Or tu ne filtres RIEN dans ta chaîne FORWARD !

```auto
iptables -P FORWARD ACCEPT
```

Même s’il semble que tu ne puisses passer dans la chaîne FORWARD que les nouvelles sessions, les établies, etc… 😕 Il y a d’autres règles qui me perturbent.

Disons simplement que sur le principe, c’est pas bien, car de plus tu autorises tout ton LAN à sortir par n’importe quel protocole, sans aucun filtrage, rien…

---

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

</div>

[quote=“Raum”] faut que je réflesse un peu 🙂  
 ouais donc en fait ce que je voulais dire… c’est qu’il vaut mieux éviter de mettre comme politique par défaut “ACCEPT” dans la chaîne FORWARD, c’est mal.  
[/quote]  
Ça dépend le contexte, pourquoi diable quand il s’agit d’un LAN où chaque machine est de confiance (en gros ta maison…). Cf plus bas.

[quote]  
du coup tes règles en input ne sont pas utiles (tu devrais le voir avec un iptables -nvL, les compteurs devraient être à 0).[/quote]  
Ben non, ça marche bien, et ces règles sont utiles

> [@](#):
>
> [Schéma NetFilter](http://upload.wikimedia.org/wikipedia/fr/3/3e/Netfilter_schema.png)
> 
> Tu fais du DNAT, dans le noeud de PREROUTING :
> 
> ```auto
> iptables -t nat -A PREROUTING -m state --state NEW,ESTABLISHED,RELATED -p tcp --dport 80 -j DNAT -i eth0 -d 82.66.248.156 --to 192.168.1.3:80
> ```
> 
> De fait, l’adresse 82.66.248.156 est changée en 192.168.1.3 avant de passer dans la chaîne “INPUT” (regardes bien le schéma). Ensuite, eh bien le noyau applique le processus de routage et envoie dans le noeud “FORWARD” car cela ne va pas à destination de ses processus locaux. Or tu ne filtres RIEN dans ta chaîne FORWARD !
> 
> ```auto
> iptables -P FORWARD ACCEPT
> ```

Là tu n’as pas compris la règle, il s’agit d’une machine (mettons 192.168.1.25) du LAN qui interroge le serveur via son IP publique. La connexion va passer à la passerelle, si cela renvoit sur 192.168.1.3, ce dernier va répondre froidement à 192.168.1.25 qui verra donc revenir un paquet de 192.168.1.3 alors qu’il veut établir une connexion avec 82.66.248.156, la connexion ne se fera pas. Il est donc impératif de faire du masquerading afin 192.168.1.3 repasse par la passerelle et que 192.168.1.25 recoivent bien une réponse venant de la machine 82.66.248.156.

Pour le reste, vu que c’est une machine du LAN, ça n’est pas filtré, tout va bien.

[quote]  
Même s’il semble que tu ne puisses passer dans la chaîne FORWARD que les nouvelles sessions, les établies, etc… 😕 Il y a d’autres règles qui me perturbent.

Disons simplement que sur le principe, c’est pas bien, car de plus tu autorises tout ton LAN à sortir par n’importe quel protocole, sans aucun filtrage, rien…[/quote]  
Là encore il faut relire le titre du fil.  
Sinon, il y a une fonction (sortielimite) que j’ai rajouté pour ceux qui ont FON chez eux derrière leur parefeu (mon cas).  
Pour limiter un peu sans être draconien les ports, j’ai mis ceci comme règles:

`# FON: tout de 1 à 1023 sauf SMTP, 1937 = port FONERA
sortielimite 240 tcp 1:24 26:1023 \
    8080 aol svn openvpn cvspserver mysql vnetd msnp 6891 4000 1937 \
    udp 1:1023 aol svn openvpn cvspserver mysql msnp 6891 6112 1812 1813
`Attention à autoriser le port 1937 en TCP et les ports 1812,1813 en UDP sinon la fonera ne pourra pas se signaler et le point d’accès ne sera pas répertorié.

---

<div class="post-metadata">

**Author:** ![titi\_le\_boss](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/aca169/32.png) [@titi\_le\_boss](https://www.debian-fr.org/u/titi_le_boss)\
**Post date:** [Février 20, 2016, 8:14 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/136 "2016-02-20T20:14:16Z")

</div>

salut tout le monde,  
je suis nouveau sur ce forum et je suis passé récemment de ubuntu à debian  
je voudrais savoir si ce qui est dit page 1 (à savoir que le pare feu n’est pas configuré par défaut) est valable sur debian 5.0  
merci d’avance

---

<div class="post-metadata">

**Author:** ![titi\_le\_boss](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/aca169/32.png) [@titi\_le\_boss](https://www.debian-fr.org/u/titi_le_boss)\
**Post date:** [Février 20, 2016, 8:14 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/137 "2016-02-20T20:14:16Z")

</div>

[quote=“Ashgenesis”]Je me suis amusé à faire un petit script qui initialise les règles iptables et qui utilise iptables-save

Le script est à lancer une seule fois et sous root 🙂

[code]#!/bin/sh

# Script de démarrage iptables by Ashgenesis

# Utilisation

# Mettre le script executable et le lancer

# sous l’utilisateur root ou avec les droits

# administrateur

# Rajouter les règles spécifiques a votre

# config le cas écheant

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

#cp ./firewall.sh /etc/init.d/firewall.sh  
echo -e "#!/bin/sh

# chargement/dechargement d’iptables

case “$1” in  
’start’)  
/sbin/iptables-restore \< /etc/firewall.conf  
RETVAL=$?  
;;  
‘stop’)  
/sbin/iptables-save \> /etc/firewall.conf  
RETVAL=$?  
;;  
‘clean’)

# clean le parefeu pendant que la machine tourne

# ca peut être une faille de securite si on l’execute lors de l’extinction avant l’arret des interfaces

# pensez à refaire un start apres sinon la sauvegarde se fera automatiquement à l’extinction

/sbin/iptables -t filter -F  
/sbin/iptables -t nat -F  
/sbin/iptables -t mangle -F  
/sbin/iptables -t raw -F  
/sbin/iptables -t filter -P INPUT ACCEPT  
/sbin/iptables -t filter -P OUTPUT ACCEPT  
/sbin/iptables -t filter -P FORWARD ACCEPT  
/sbin/iptables -t nat -P PREROUTING ACCEPT  
/sbin/iptables -t nat -P POSTROUTING ACCEPT  
/sbin/iptables -t nat -P OUTPUT ACCEPT  
/sbin/iptables -t mangle -P PREROUTING ACCEPT  
/sbin/iptables -t mangle -P OUTPUT ACCEPT  
/sbin/iptables -t mangle -P POSTROUTING ACCEPT  
/sbin/iptables -t mangle -P FORWARD ACCEPT  
/sbin/iptables -t mangle -P INPUT ACCEPT  
/sbin/iptables -t raw -P OUTPUT ACCEPT  
/sbin/iptables -t raw -P PREROUTING ACCEPT  
RETVAL=$?  
;;  
‘restart’)  
$0 stop && $0 start  
RETVAL=$?  
;;  
‘status’)  
/sbin/iptables-save  
RETVAL=$?  
;;  
\*)  
echo "Usage: $0 { start | stop | restart | clean | status }“  
RETVAL=1  
;;  
esac  
exit $RETVAL  
” \> /etc/init.d/firewall.sh

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

# Initialisation

iptables -t filter -F  
iptables -t nat -F  
iptables -t mangle -F  
iptables -t raw -F

# Règles par défault

iptables -t filter -P INPUT DROP  
iptables -t filter -P FORWARD DROP  
iptables -t filter -P OUTPUT ACCEPT

# Autorisation de loopback (logique)

iptables -t filter -A INPUT -i lo -j ACCEPT

# Autorisation des connections déjà établies

iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

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

# Rajouter ici les regles spécifiques à votre utilisation

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

iptables-save \> /etc/firewall.conf

chmod +x /etc/init.d/firewall.sh

update-rc.d [firewall.sh](http://firewall.sh) defaults 19 21  
[/code][/quote]  
j’ai suivi le tuto et je suis un peu bloqué là  
comment on lance ce script svp

---

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

</div>

[quote=“titi\_le\_boss”]salut tout le monde,  
je suis nouveau sur ce forum et je suis passé récemment de ubuntu à debian  
je voudrais savoir si ce qui est dit page 1 (à savoir que le pare feu n’est pas configuré par défaut) est valable sur debian 5.0  
merci d’avance[/quote]  
Valable pour etch, lenny, squeez et la Sid actuelle.  
Ils sont entrain de changer tout ça dans le noyau mais ce ne seras pas en place avant deux ans je pense. Donc encore deux ans de validité.

---

<div class="post-metadata">

**Author:** ![titi\_le\_boss](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/t/aca169/32.png) [@titi\_le\_boss](https://www.debian-fr.org/u/titi_le_boss)\
**Post date:** [Février 20, 2016, 8:14 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/139 "2016-02-20T20:14:23Z")

</div>

erf ok…  
dommage

---

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

</div>

[quote=“titi\_le\_boss”]erf ok…  
dommage[/quote]  
❓😐

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

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