# Pare-feu IPv4/IPv6, versions bureau et serveur

**URL:** <https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665>\
**Category:** Trucs et Astuces\
**Created:** [Mars 14, 2016, 2:33 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665 "2016-03-14T14:33:20Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![seb-ksl](https://www.debian-fr.org/user_avatar/www.debian-fr.org/seb-ksl/32/2946_2.png) [@seb-ksl](https://www.debian-fr.org/u/seb-ksl)\
**Post date:** [Mars 14, 2016, 2:33 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665/1 "2016-03-14T14:33:21Z")

</div>

Bonjour à tous,

Sur suggestion de Ricardo, j’ouvre un nouveau fil pour proposer une mise à jour de pare-feu basique présenté [ici](https://www.debian-fr.org/t/installation-parefeu-iptables-ip6tables-pour-les-nuls/). Le principe reste le même, l’idée était simplement d’unifier un peu toutes les nouveautés liées à l’IPv6 et de proposer une version bureau et serveur.  
Ce fil est destiné aux débutants, et j’accepterai bien volontiers toutes les modifications proposées par des personnes plus compétentes que moi (elles sont nombreuses 🙂).

#Le principe  
##iptables  
Sur Debian, `iptables` et `ip6tables` (tous deux empaquetés dans le paquet `iptables`) vous permettront de mettre assez facilement en place un pare-feu basique pour IPv4 et IPv6.  
Après installation, le pare-feu ne pare rien du tout, il est ouvert à tous les vents, il va donc falloir le configurer. Et il faudra également prendre soin de lancer le pare-feu, avec sa configuration, dès le démarrage de la machine.

##Bureau/serveur  
La configuration d’un pare-feu diffère évidemment beaucoup selon les besoins de la machine concernée. Sur votre machine de bureau, par exemple, vous pouvez faire simple et choisir de bloquer toute communication entrante venant de l’extérieur. En revanche, un serveur doit pouvoir répondre à des sollicitations sur certains ports, au moins 80 et 443 si vous hébergez un serveur HTTP/HTTPS. On sera donc obligés d’être plus fins dans le cas d’un serveur. Deux versions du script seront donc proposées dans ce fil.

##IPv4/IPv6  
Une adresse IP sert à identifier une machine dans un réseau. Pendant longtemps les adresses IPv4 ont été suffisantes pour ça, elles sont de type 104.28.12.4 (au hasard). Seulement, il semblerait qu’avec l’augmentation du nombre de machines et ~~de babioles~~ d’objets connectés, on arrive à saturation de ce système d’adressage. Une nouvelle norme a donc été mise en place : IPv6. À ce jour, les deux normes coexistent et il convient donc de se protéger sur les deux fronts, en tenant compte en plus certaines spécificités d’IPv6.

#La mise en place  
##Installation d’`iptables`  
Ce n’est pas le plus compliqué, et vous pouvez utiliser votre gestionnaire de paquets favori. Par exemple : `# aptitude install iptables`.

##Création d’un script d’init  
Comme introduit plus haut, il faut s’assurer que le pare-feu soit lancé lors de la phase de boot du système. Pour ça, on crée un fichier nommé par exemple `init_firewall` dans `/etc/init.d/`.

```auto
#!/bin/sh

### BEGIN INIT INFO
# Provides: init_firewall
# Required-Start: $local_fs
# Should-Start:
# Required-Stop: $local_fs
# Should-Stop:
# X-Start-Before: $network
# X-Stop-After: $network
# Default-Start: S
# Default-Stop: 0 6
# Short-description: iptables-based firewall
### END INIT INFO

case "$1" in

'start')
iptables-restore < /etc/config_parefeu_IPv4
ip6tables-restore < /etc/config_parefeu_IPv6
echo "Starting firewall"
RETVAL=$?
;;

'stop')
iptables-save > /etc/config_parefeu_IPv4
ip6tables-save > /etc/config_parefeu_IPv6
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

#### IPv4 ####

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 INPUT 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

#### IPv6 ####
# Attention : la table nat IPv6 n'existe pas sous Wheezy (noyau 3.2)

ip6tables -t filter -F
ip6tables -t nat -F
ip6tables -t mangle -F
ip6tables -t raw -F
ip6tables -t filter -P INPUT ACCEPT
ip6tables -t filter -P OUTPUT ACCEPT
ip6tables -t filter -P FORWARD ACCEPT
ip6tables -t nat -P PREROUTING ACCEPT
ip6tables -t nat -P POSTROUTING ACCEPT
ip6tables -t nat -P INPUT ACCEPT
ip6tables -t nat -P OUTPUT ACCEPT
ip6tables -t mangle -P PREROUTING ACCEPT
ip6tables -t mangle -P OUTPUT ACCEPT
ip6tables -t mangle -P POSTROUTING ACCEPT
ip6tables -t mangle -P FORWARD ACCEPT
ip6tables -t mangle -P INPUT ACCEPT
ip6tables -t raw -P OUTPUT ACCEPT
ip6tables -t raw -P PREROUTING ACCEPT

RETVAL=$?
;;

'restart')
$0 stop && $0 start
RETVAL=$?
;;

*)
echo "Usage: $0 { start | stop | restart | clean}"
RETVAL=1
;;

esac
exit $RETVAL

```

Ne pas oublier de rendre le script exécutable : `chmod +x /etc/init.d/init_firewall`. Puis, pour permettre au gestionnaire de boot de prendre en charge ce nouveau script, on lance `update-rc.d init_firewall defaults`.

##Configuration  
À ce stade, votre pare-feu accepte toutes les connexions. Il reste donc à le configurer. Pour cela, il “suffit” de faire appel à `iptables` et `ip6tables` pour définir les règles du pare-feu une à une. En pratique, je me suis fait un script `/usr/local/sbin/config_firewall` qui regroupe toutes mes règles “de base”. Cette organisation est flexible et me permet toujours d’entrer une règle `iptable` à la main le jour où j’en ai besoin. Et inversement, de revenir à mon jeu de règles de base en lançant `config_firewall`. Pensez à restreindre les droits sur ce script, `chown root:root` et `chmod 740` feront l’affaire.

###Pour une machine de bureau

```auto
#!/bin/sh

/etc/init.d/init_firewall clean

##################
# IPv4 #
##################

# droper l'input et le forward par défaut, accepter l'output
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# laisser l'interface lo (loop) tranquille
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# maintenir les connexions établies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# accepter en entrée le ping (icmp) et les
# connexions sur les ports nécessaires
iptables -A INPUT -p icmp --icmp-type echo-request -m conntrack --ctstate NEW -m limit --limit 1/s --limit-burst 1 -j ACCEPT
iptables -A INPUT -p tcp --dport xxxx -j ACCEPT
iptables -A INPUT -p udp --dport xxxx -j ACCEPT

###################
# IPv6 #
###################

# droper l'input et le forward par défaut, accepter l'output
ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT ACCEPT

# laisser l'interface lo (loop) tranquille
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A OUTPUT -o lo -j ACCEPT

# maintenir les connexions établies
ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# NDP pour toute interface de type broadcast
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbour-solicitation -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbour-advertisement -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -j ACCEPT

# accepter en entrée le ping (icmpv6), les
# connexions sur les ports nécessaires.
ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -m conntrack --ctstate NEW -m limit --limit 1/s --limit-burst 1 -j ACCEPT
ip6tables -A INPUT -p tcp --dport xxxx -j ACCEPT
ip6tables -A INPUT -p udp --dport xxxx -j ACCEPT

/etc/init.d/init_firewall restart

```

###Pour un serveur

```auto
#!/bin/sh

/etc/init.d/init_firewall clean

###################
# IPv4 #
###################

# tout droper par défaut
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP

# laisser l'interface lo (loop) tranquille
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# maintenir les connexions établies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# accepter en entrée le ping (icmp), et les
# connexions sur les ports nécessaires.
iptables -A INPUT -p icmp --icmp-type echo-request -m conntrack --ctstate NEW -m limit --limit 1/s --limit-burst 1 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport xxxx -j ACCEPT
iptables -A INPUT -p udp --dport xxxx -j ACCEPT

# accepter en sortie le ping, les requêtes HTTP(S), DNS,
# et les connexions sur les ports nécessaires.
iptables -A OUTPUT -p icmp --icmp-type echo-request -m conntrack --ctstate NEW -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport xxxx -j ACCEPT
iptables -A OUTPUT -p udp --dport xxxx -j ACCEPT

###################
# IPv6 #
###################

# tout droper par défaut
ip6tables -t filter -P INPUT DROP
ip6tables -t filter -P FORWARD DROP
ip6tables -t filter -P OUTPUT DROP

# laisser l'interface lo (loop) tranquille
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A OUTPUT -o lo -j ACCEPT

# maintenir les connexions établies
ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
ip6tables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# NDP pour toute interface de type broadcast
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbour-solicitation -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbour-advertisement -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -j ACCEPT

ip6tables -A OUTPUT -p icmpv6 --icmpv6-type neighbour-solicitation -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type neighbour-advertisement -j ACCEPT
ip6tables -A OUTPUT -p icmpv6 --icmpv6-type router-solicitation -j ACCEPT

# accepter en entrée le ping (icmpv6), les
# connexions entrantes déjà établies et les connexions sur les ports nécessaires.
ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -m conntrack --ctstate NEW -m limit --limit 1/s --limit-burst 1 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT
ip6tables -A INPUT -p tcp --dport xxxx -j ACCEPT
ip6tables -A INPUT -p udp --dport xxxx -j ACCEPT

# accepter en sortie le ping, les requêtes HTTP(S), DNS,
# et les connexions sur les ports nécessaires.
ip6tables -t filter -A OUTPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT
ip6tables -A OUTPUT -p tcp --dport 80 -j ACCEPT
ip6tables -A OUTPUT -p tcp --dport 443 -j ACCEPT
ip6tables -A OUTPUT -p udp --dport 53 -j ACCEPT
ip6tables -A OUTPUT -p tcp --dport 53 -j ACCEPT
ip6tables -A OUTPUT -p tcp --dport xxxx -j ACCEPT
ip6tables -A OUTPUT -p udp --dport xxxx -j ACCEPT

/etc/init.d/init_firewall restart

```

##Démarrage  
Une fois votre script de configuration lancé, votre pare-feu devrait être en place ! Grâce au `restart` à la fin du script `config_firewall`, les règles IPv4 et IPv6 ont été sauvegardées et seront remises en place à chaque démarrage.

##Vérification  
Et voilà ! Maintenant, vérification importante : le pare-feu a-t-il bien été configuré ? Vous pouvez pour ça utiliser deux commandes différentes qui donnent les mêmes informations, simplement formatées différemment :

- `iptables -vL --line-numbers` et `ip6tables -vL --line-numbers`, ou bien
- `iptables-save` et `ip6tables-save`, dont la sortie est plus facilement comparable avec le script `config_firewall`.  
Dans les deux cas, vous devriez voir les règles globales (policy) et ciblées en place.

#À l’usage

- Pour ajouter une règle, c’est soit à la main dans un terminal, soit ajout dans le script `config_firewall`. Si vous le faites à la main, veillez à bien lancer un restart du script d’init (voir ci-dessus) si vous voulez que la règle soit enregistrée pour les prochains boots.
- En cas de doute ou après chaque modification, ne pas hésiter à vérifier l’état du pare-feu (voir §Vérification ci-dessus).

#Fils à consulter

- Le fil original de ricardo : [ici](https://www.debian-fr.org/t/installation-parefeu-iptables-ip6tables-pour-les-nuls).
- La discussion IPv4/IPv6 : [là](https://www.debian-fr.org/t/apprendre-a-passer-en-ipv6).
- Pour discuter de ce T&A : [là-bas](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls).

#Merci à

- Ricardo, pour son post initial.
- PascalHambourg, PengouinPdt et Ricardo pour leurs conseils avisés.

---

<div class="post-metadata">

**Author:** ![seb-ksl](https://www.debian-fr.org/user_avatar/www.debian-fr.org/seb-ksl/32/2946_2.png) [@seb-ksl](https://www.debian-fr.org/u/seb-ksl)\
**Post date:** [Mars 17, 2016, 8:43 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665/2 "2016-03-17T08:43:51Z")

</div>

Post réservé.

---

<div class="post-metadata">

**Author:** ![seb-ksl](https://www.debian-fr.org/user_avatar/www.debian-fr.org/seb-ksl/32/2946_2.png) [@seb-ksl](https://www.debian-fr.org/u/seb-ksl)\
**Post date:** [Mars 17, 2016, 8:45 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665/3 "2016-03-17T08:45:21Z")

</div>

#Les débats et questions à propos de ce T&A ont leur place ici : [https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls).

---

<div class="post-metadata">

**Author:** ![seb-ksl](https://www.debian-fr.org/user_avatar/www.debian-fr.org/seb-ksl/32/2946_2.png) [@seb-ksl](https://www.debian-fr.org/u/seb-ksl)\
**Post date:** [Août 23, 2016, 11:53 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665/4 "2016-08-23T11:53:39Z")

</div>

Pour information, aujourd’hui dans les branches testing et unstable est arrivée une version de systemd (231-4) qui casse la rétro-compatibilité avec les “vieux” scripts d’init SysV tel que celui proposé ici. Si vous êtes en testing ou unstable, votre pare-feu NE DÉMARRE PLUS automatiquement au boot. Je modifie le tutoriel au plus vite 🙂.

---

<div class="post-metadata">

**Author:** ![seb-ksl](https://www.debian-fr.org/user_avatar/www.debian-fr.org/seb-ksl/32/2946_2.png) [@seb-ksl](https://www.debian-fr.org/u/seb-ksl)\
**Post date:** [Août 23, 2016, 12:12 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665/5 "2016-08-23T12:12:41Z")

</div>

Bon, étant dans l’incapacité d’éditer le premier message de ce fil, vous trouverez ci-dessous le paragraphe “Création d’un script d’init” modifié pour systemd.

##Création d’un script d’init systemd

Comme introduit plus haut, il faut s’assurer que le pare-feu soit lancé lors de la phase de boot du système. Puisque systemd est maintenant le système d’init par défaut de Debian, on va suivre la procédure adaptée.

On crée d’abord un fichier service, par exemple `/etc/systemd/system/init_firewall.service` qui contient :

```auto
[Unit]
Description=Iptables firewall
DefaultDependencies=no
Wants=network-pre.target
Before=network-pre.target shutdown.target
Conflicts=shutdown.target

[Service]
Type=oneshot
ExecStart=/usr/local/bin/init_firewall start
ExecStop=/usr/local/bin/init_firewall stop
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

```

Ce fichier correspond peu ou prou aux en-têtes LSB de l’ancien système d’init, et permet d’interfacer systemd avec votre script d’init.

Le script d’init à proprement parler peut être stocké où on veut. Je vous propose un pragmatique `/usr/local/bin/init_firewall` qui contiendra :

```auto
#! /bin/sh

start(){
    iptables-restore < /etc/config_parefeu_IPv4
    ip6tables-restore < /etc/config_parefeu_IPv6
    echo "Starting firewall"
    RETVAL=$?
}

stop(){
    iptables-save > /etc/config_parefeu_IPv4
    ip6tables-save > /etc/config_parefeu_IPv6
    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

    #### IPv4 ####

    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 INPUT 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

    #### IPv6 ####
    # Attention : la table nat IPv6 n'existe pas sous Wheezy (noyau 3.2)

    ip6tables -t filter -F
    ip6tables -t nat -F
    ip6tables -t mangle -F
    ip6tables -t raw -F
    ip6tables -t filter -P INPUT ACCEPT
    ip6tables -t filter -P OUTPUT ACCEPT
    ip6tables -t filter -P FORWARD ACCEPT
    ip6tables -t nat -P PREROUTING ACCEPT
    ip6tables -t nat -P POSTROUTING ACCEPT
    ip6tables -t nat -P INPUT ACCEPT
    ip6tables -t nat -P OUTPUT ACCEPT
    ip6tables -t mangle -P PREROUTING ACCEPT
    ip6tables -t mangle -P OUTPUT ACCEPT
    ip6tables -t mangle -P POSTROUTING ACCEPT
    ip6tables -t mangle -P FORWARD ACCEPT
    ip6tables -t mangle -P INPUT ACCEPT
    ip6tables -t raw -P OUTPUT ACCEPT
    ip6tables -t raw -P PREROUTING ACCEPT

    RETVAL=$?
}

case $1 in
    start|stop) "$1" ;;
esac

```

N’oubliez pas de rendre le script exécutable : `chmod +x /usr/local/bin/init_firewall`.  
Enfin, pour indiquer à systemd la présence de votre nouveau service : `systemctl enable init_firewall.service`. Vous pouvez dès maintenant, sans rebooter, lancer votre pare-feu en exécutant `systemctl start init_firewall.service`, et vérifier que tout s’est bien passé avec `systemctl status init_firewall.service`.

---

<div class="post-metadata">

**Author:** ![Almtesh](https://www.debian-fr.org/user_avatar/www.debian-fr.org/almtesh/32/10312_2.png) [@Almtesh](https://www.debian-fr.org/u/Almtesh)\
**Post date:** [Août 23, 2016, 2:09 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665/6 "2016-08-23T14:09:46Z")

</div>

Sinon, tu as le paquet `iptables-persistent` de la suite `netfilter-persistent` qui fait très bien le boulot. Après, tu configures les règles dans `/etc/iptables/rules.v4` pour les règles IPv4 et `/etc/iptables/rules.v6` pour les règles IPv6.  
Le post-install te demande même s’il doit importer les règles que tu as déjà installées.

---

<div class="post-metadata">

**Author:** ![seb-ksl](https://www.debian-fr.org/user_avatar/www.debian-fr.org/seb-ksl/32/2946_2.png) [@seb-ksl](https://www.debian-fr.org/u/seb-ksl)\
**Post date:** [Août 31, 2016, 6:54 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665/7 "2016-08-31T18:54:25Z")

</div>

> [@](#):
>
> iptables-persistent

Super, grand merci ! Je ne connaissais pas ce paquet et je viens d’utiliser sur un nouveau serveur pour un petit projet, c’est effectivement impeccable. On met les règles en place, on installe le paquet, et paf !

---

<div class="post-metadata">

**Author:** ![Almtesh](https://www.debian-fr.org/user_avatar/www.debian-fr.org/almtesh/32/10312_2.png) [@Almtesh](https://www.debian-fr.org/u/Almtesh)\
**Post date:** [Août 31, 2016, 8:04 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665/8 "2016-08-31T20:04:34Z")

</div>

> [@](#):
>
> Super, grand merci !

De rien, c’est toujours un plaisir de faire découvrir mes petites astuces…

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Septembre 27, 2016, 7:02 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665/9 "2016-09-27T19:02:04Z")

</div>

Salut  
Sur un desktop ou laptop je me contente d’ufw et de son interface graphique gufw

```
apt-cache show gufw
Package: gufw
Source: gui-ufw
Version: 16.10.0-1
Installed-Size: 3271
Maintainer: Python Applications Packaging Team <python-apps-team@lists.alioth.debian.org>
Architecture: all
Depends: python3:any (>= 3.3.2-2~), ufw (>= 0.34~rc), gir1.2-gtk-3.0, policykit-1, gir1.2-webkit2-4.0, python3-gi
Description-fr: interface utilisateur graphique pour ufw
 Gufw est un moyen facile et intuitif pour gérer un pare-feu Linux. Il
 prend en charge, entre autres, les tâches courantes telles que l'autorisation
 ou le blocage de ports individuels ou pair à pair courants préconfigurés.
Description-md5: 6ba71ac631b02c0d683f78355db5e633
Homepage: http://gufw.org/
Tag: admin::configuring, implemented-in::python, interface::graphical,
 interface::x11, network::firewall, role::program, scope::utility,
 security::firewall, uitoolkit::gtk, use::configuring, x11::application
Section: admin
Priority: optional
Filename: pool/main/g/gui-ufw/gufw_16.10.0-1_all.deb
Size: 832574
MD5sum: 88b4fc22a2fdfa5c042c12600d2aabf3
SHA1: bad903ee7d2e474655199767f4959303529e11d4
SHA256: 33b74050c3d673974abe938fed763f87e60fce48e372f4cef7e34afadeb556f0

```

[![](https://www.debian-fr.org/uploads/default/original/2X/d/d16901813cb8909d6566f550e1ccbc190fa04d6d.png)](http://pix.toile-libre.org/?img=1475409055.png)

---

<div class="post-metadata">

**Author:** ![hulk](https://www.debian-fr.org/user_avatar/www.debian-fr.org/hulk/32/3868_2.png) [@hulk](https://www.debian-fr.org/u/hulk)\
**Post date:** [Novembre 5, 2016, 9:29 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665/10 "2016-11-05T09:29:31Z")

</div>

pour la persistance des règles iptables ipv4 et ipv6 j’utilise iptables-persistent a installer avec `apt-get install iptables-persistent`

on a plus qu’a créer un scripte iptables dont la dernière ligne ce termine par  
`service netfilter-persistent save`

exemple:

```
   ### SUPPRESSION de TOUTES LES ANCIENNES TABLES (OUVRE TOUT!!) ###
   ## ipv6
   /usr/sbin/ip6tables -F
   /usr/sbin/ip6tables -X
   /usr/sbin/ip6tables -t nat -F  
   /usr/sbin/ip6tables -t nat -X  
 
    /usr/sbin/ip6tables -P INPUT ACCEPT
    /usr/sbin/ip6tables -P OUTPUT ACCEPT
    /usr/sbin/ip6tables -P FORWARD ACCEPT 
   
   ##ipv4
    /usr/sbin/iptables -F
    /usr/sbin/iptables -X
   /usr/sbin/iptables -t nat -F  
   /usr/sbin/iptables -t nat -X  
   
   /usr/sbin/iptables -P INPUT ACCEPT
   /usr/sbin/iptables -P OUTPUT ACCEPT
   /usr/sbin/iptables -P FORWARD ACCEPT 

service netfilter-persistent save
```

---

<div class="post-metadata">

**Author:** ![seb-ksl](https://www.debian-fr.org/user_avatar/www.debian-fr.org/seb-ksl/32/2946_2.png) [@seb-ksl](https://www.debian-fr.org/u/seb-ksl)\
**Post date:** [Novembre 6, 2016, 7:30 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665/11 "2016-11-06T19:30:32Z")

</div>

Oui, c’est déjà ce qui m’avait été proposé au-dessus ;). Un jour je prendrai le temps de modifier ce T&A pour prendre ça en compte !

---

<div class="post-metadata">

**Author:** ![PengouinPdt](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pengouinpdt/32/3978_2.png) [@PengouinPdt](https://www.debian-fr.org/u/PengouinPdt)\
**Post date:** [Novembre 16, 2017, 8:11 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665/12 "2017-11-16T08:11:28Z")

</div>



---

<div class="post-metadata">

**Author:** ![Geoliv](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/g/59ef9b/32.png) [@Geoliv](https://www.debian-fr.org/u/Geoliv)\
**Post date:** [Novembre 29, 2017, 4:36 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665/13 "2017-11-29T16:36:22Z")

</div>

Bonjour,

Est que le restart est prévu à travers ce nouveau script ?

---

<div class="post-metadata">

**Author:** ![Richard2](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/r/eb8c5e/32.png) [@Richard2](https://www.debian-fr.org/u/Richard2)\
**Post date:** [Juin 16, 2018, 4:11 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665/14 "2018-06-16T16:11:35Z")

</div>

Bonsoir,

J’espère ne pas me méprendre en disant que lorsque l’on utilise le paquet iptables-persistant, on ne doit pas créer le fichier init-firewall dans le dossier /etc/init.d mais seulement recopier , dans un terminal, les règles de ledit fichier avant d’inscrire les règles de configuration, c’est bien ça?

Exemple:

```
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 INPUT 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

ip6tables -t filter -F
ip6tables -t nat -F
ip6tables -t mangle -F
ip6tables -t raw -F
ip6tables -t filter -P INPUT ACCEPT
ip6tables -t filter -P OUTPUT ACCEPT
ip6tables -t filter -P FORWARD ACCEPT
ip6tables -t nat -P PREROUTING ACCEPT
ip6tables -t nat -P POSTROUTING ACCEPT
ip6tables -t nat -P INPUT ACCEPT
ip6tables -t nat -P OUTPUT ACCEPT
ip6tables -t mangle -P PREROUTING ACCEPT
ip6tables -t mangle -P OUTPUT ACCEPT
ip6tables -t mangle -P POSTROUTING ACCEPT
ip6tables -t mangle -P FORWARD ACCEPT
ip6tables -t mangle -P INPUT ACCEPT
ip6tables -t raw -P OUTPUT ACCEPT
ip6tables -t raw -P PREROUTING ACCEPT

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -m conntrack --ctstate NEW -m limit --limit 1/s --limit-burst 1 -j ACCEPT
iptables -A INPUT -p tcp --dport xxxx -j ACCEPT
iptables -A INPUT -p udp --dport xxxx -j ACCEPT

ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT ACCEPT
ip6tables -A INPUT -i lo -j ACCEPT
ip6tables -A OUTPUT -o lo -j ACCEPT
ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbour-solicitation -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbour-advertisement -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -j ACCEPT
ip6tables -A INPUT -p icmpv6 --icmpv6-type echo-request -m conntrack --ctstate NEW -m limit --limit 1/s --limit-burst 1 -j ACCEPT
ip6tables -A INPUT -p tcp --dport xxxx -j ACCEPT
ip6tables -A INPUT -p udp --dport xxxx -j ACCEPT

sudo -s iptables-save -c

```

Merci de m’éclairer

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Février 23, 2019, 7:51 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665/15 "2019-02-23T07:51:34Z")

</div>

Salut  
j’ai migré de iptables à nftables

> **[Pare-feu: nftables](https://bidouilledebian.wordpress.com/2019/02/19/pare-feu-nftables/)**
>
> Comme nftables va devenir le pare-feu par défaut dans Debian, j’ai activé l’outil.

ça drop 🕶

```auto
nft list ruleset; date; who -b
table inet filter {
	chain input {
		type filter hook input priority 0; policy accept;
		iif "lo" accept
		ct state established,related accept
		tcp dport { ssh, http, https, 8200 } ct state new accept
		counter packets 10980 bytes 4821930 drop
	}
}
samedi 23 février 2019, 10:19:41 (UTC+0100)
         démarrage système 2019-02-23 07:05

```

---

<div class="post-metadata">

**Author:** ![Elancourt](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/e/53a042/32.png) [@Elancourt](https://www.debian-fr.org/u/Elancourt)\
**Post date:** [Mars 26, 2019, 9:54 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665/16 "2019-03-26T21:54:13Z")

</div>

J’attends voir les versions du script seront donc proposées afin de me décider. Merci

Le release [plombier annemasse](https://plombier-annemasse.com/)

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Août 2, 2019, 5:44 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665/17 "2019-08-02T17:44:16Z")

</div>

[https://www.debian.org/releases/buster/amd64/release-notes/ch-whats-new.fr.html#nftables](https://www.debian.org/releases/buster/amd64/release-notes/ch-whats-new.fr.html#nftables)

---

<div class="post-metadata">

**Author:** ![Zargos](https://www.debian-fr.org/user_avatar/www.debian-fr.org/zargos/32/10889_2.png) [@Zargos](https://www.debian-fr.org/u/Zargos)\
**Post date:** [Octobre 6, 2020, 2:36 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665/18 "2020-10-06T14:36:07Z")

</div>

perso je passe par shorewall(6) et shorewall-init. Aucun script à faire.

---

<div class="post-metadata">

**Author:** ![grandtoubab](https://www.debian-fr.org/user_avatar/www.debian-fr.org/grandtoubab/32/4505_2.png) [@grandtoubab](https://www.debian-fr.org/u/grandtoubab)\
**Post date:** [Décembre 31, 2020, 10:02 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665/19 "2020-12-31T10:02:03Z")

</div>

J’ai fait une propreté , plus adapté à un Pc familial.

cat /etc/nftables.conf

```auto
#!/usr/sbin/nft -f
# 
flush ruleset

table inet ma_table {
	chain trafic_entrant {
		type filter hook input priority 0; policy drop;
# par defaut le trafic entrant est rejeté		
		iif lo accept comment "Accepter le trafic local"
#	
#		
		ct state invalid drop comment "Rejeter les connexions invalides"
#	
		ct state established,related accept comment "Accepter le trafic dont nous sommes à l'origine"
#
		counter drop comment "Compter et rejeter tout le reste"
	}

	chain trafic_transfert {
		type filter hook forward priority 0; policy drop; 
		# Pas de transfert, on est pas un routeur 
	}

	chain trafic_sortant {
		type filter hook output priority 0; policy accept; 
		# Accepter tout ce qui sort
	}

}

```

Ce qui donne:

```auto
root@debian:~# nft list ruleset
table inet ma_table {
	chain trafic_entrant {
		type filter hook input priority filter; policy drop;
		iif "lo" accept comment "Accepter le trafic local"
		ct state invalid drop comment "Rejeter les connexions invalides"
		ct state established,related accept comment "Accepter le trafic dont nous sommes à l'origine"
		counter packets 97 bytes 2986 drop comment "Compter et rejeter tout le reste"
	}

	chain trafic_transfert {
		type filter hook forward priority filter; policy drop;
	}

	chain trafic_sortant {
		type filter hook output priority filter; policy accept;
	}
}
root@debian:~# 

```

---

<div class="post-metadata">

**Author:** ![Zargos](https://www.debian-fr.org/user_avatar/www.debian-fr.org/zargos/32/10889_2.png) [@Zargos](https://www.debian-fr.org/u/Zargos)\
**Post date:** [Décembre 31, 2020, 10:55 UTC](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665/20 "2020-12-31T10:55:02Z")

</div>

Pensez systématiquement à LOG les drop. C’est important car le parefeu, ce n’est pas uniquement de filtrer mais aussi de savoir ce que l’on filtre (pour éventuellement voir ce qui se passe).  
Il y a deux modes de logs. Soit par l’habituel classique via rsyslog qui finit dans /var/log/syslog ou dans un fichier dédié avec un filtre dans la configuration rsyslog.conf ou rsyslog.d. Soit d’utiliser ulogd (par le package ulog2)

[Page suivante](https://www.debian-fr.org/t/pare-feu-ipv4-ipv6-versions-bureau-et-serveur/68665.md?page=2)
