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

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 21, 2016, 2:30 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/361 "2016-02-21T02:30:12Z")

</div>

Re,

> [@PascalHambourg](#):
>
> …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.

J’ai ma réponse… 😉

---

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

</div>

Si tu mets la commande iptables-restore dans une option pre-up au lieu de post-up, les règles iptables seront mises en place avant le démarrage de l’interface. Un défaut éventuel, c’est que la mise en place des règles iptables par ce moyen reste tributaire de l’activation d’une interface particulière.

---

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 21, 2016, 2:31 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/363 "2016-02-21T02:31:06Z")

</div>

Salut,

J’ai rajouté ça à mon script, histoire d’avoir un aperçu de l’ensemble des tables.

`...
status)
    # Liste des tables
    echo
    echo "---------- TABLE 'FILTER' ----------"
    echo
    /sbin/iptables -t filter -L -v
    echo
    echo "---------- TABLE 'NAT' -----------"
    echo
    /sbin/iptables -t nat -L -v
    echo
    echo "---------- TABLE 'MANGLE' ----------"
    echo
    /sbin/iptables -t mangle -L -v
    echo
    ;;
...
echo "Usage: $0 {start|stop|restart|clean|status}"
...`

---

<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 21, 2016, 2:31 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/364 "2016-02-21T02:31:09Z")

</div>

iptables-save ne suffit pas ?

---

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 21, 2016, 2:31 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/365 "2016-02-21T02:31:10Z")

</div>

S’il te suffit tant mieux… 😉

Là tu as d’un coup:

```auto

```

Essaye tu verras la différence.

---

<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 21, 2016, 2:31 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/366 "2016-02-21T02:31:10Z")

</div>

Justement, iptables-save sans argument affiche d’un coup toutes les règles de toutes les tables, dans un format détaillé à la fois plus compact et plus lisible AMA car plus proche de la syntaxe de création des règles.

Accessoirement, ton bout de script a deux défauts supplémentaires par rapport à iptables-save :

- il manque la table ‘raw’,
- si une table n’est pas chargée car pas utilisée, ‘iptables -t -L’ force inutilement son chargement ; tu peux l’éviter en testant sa présence dans /proc/net/ip\_tables\_names (ou plus malin, en faisant une boucle sur le contenu de ce fichier). A noter que c’est aussi un défaut des scripts de réinitialisation “aveugles” qui peuvent avoir le même effet.

---

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 21, 2016, 2:31 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/367 "2016-02-21T02:31:10Z")

</div>

[quote=“PascalHambourg”]Justement, iptables-save sans argument affiche d’un coup toutes les règles de toutes les tables, dans un format détaillé à la fois plus compact et plus lisible AMA car plus proche de la syntaxe de création des règles.

Accessoirement, ton bout de script a deux deux défauts supplémentaires par rapport à iptables-save :

- il manque la table ‘raw’,
- J’ai rajouté la table RAW, merci du rappel.  
J’aime bien avoir des détails sur le trafic qui passe par chaque règle:

---

<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 21, 2016, 2:31 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/368 "2016-02-21T02:31:10Z")

</div>

iptables-save peut aussi afficher les compteurs avec l’option -c.

---

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 21, 2016, 2:31 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/369 "2016-02-21T02:31:11Z")

</div>

Je capitule… 😆

---

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

</div>

😆😆😆  
Pour une fois que j’ai «&nbsp;bon&nbsp;»  
tiens, j’en rajoute une couche :  
 ![:dance:](https://www.debian-fr.org/uploads/default/original/1X/c5479df83c1e5adae8782ae88416ebec2c474ae1.gif "Dance") ![:dance:](https://www.debian-fr.org/uploads/default/original/1X/c5479df83c1e5adae8782ae88416ebec2c474ae1.gif "Dance") ![:dance:](https://www.debian-fr.org/uploads/default/original/1X/c5479df83c1e5adae8782ae88416ebec2c474ae1.gif "Dance")

---

<div class="post-metadata">

**Author:** ![panthere](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/p/5daacb/32.png) [@panthere](https://www.debian-fr.org/u/panthere)\
**Post date:** [Février 21, 2016, 2:31 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/371 "2016-02-21T02:31:15Z")

</div>

Moi pas ![:violence-fencing:](https://www.debian-fr.org/uploads/default/original/1X/f1a2338ae5576390423463a2cbfda9603e0f10e7.gif "Fencing")😆  
le default d’iptables save, c’est le numéro de la ligne 🙂 plus facile pour ce reperer dans un script . de plus tu as des commentaire avec l’heur et la date …

```auto
# Completed on Fri Jun 10 18:49:33 2011
# Generated by iptables-save v1.4.5 on Fri Jun 10 18:49:33 2011
```

ce qui peux etre pénible si on veux filtrer avec grep sure certin caractère 😛 .  
[size=85](on est vendredi 😃 )[/size]

par contre pour ce qui est de la table raw ,je vien d’apprendre quelque chose ![:023](https://www.debian-fr.org/uploads/default/original/1X/3c587556c0cc11389317c03a60788d77ceebd307.gif "OK")

---

<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 21, 2016, 2:31 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/372 "2016-02-21T02:31:46Z")

</div>

Les lignes de commentaire, ça se filtre facilement.

---

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 21, 2016, 2:31 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/373 "2016-02-21T02:31:59Z")

</div>

Salut,  
J’essaye de “loguer” les paquets qui passent par mes règles iptables, et je n’arrive à pas grand chose…

J’ai tout d’abord séparé les logs iptables de kern pour les mettres dans iptables.log (rsyslog). C’est plus clair.

Par contre je ne logue que les paquets sur les ports 137 et 138… C’est pas terrible.

Voici un extrait de mon iptables-save

`# Generated by iptables-save v1.4.8 on Mon Jun 13 17:26:06 2011
*filter
:INPUT DROP [17:1438]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [2928:544236]
:fail2ban-ssh - [0:0]
:log_table - [0:0]
...
Ensemble des règles (ACCEPT)
...
-A log_table -j LOG --log-prefix "iptables: " --log-level 6
COMMIT`

Je ne comprend pas comment faire pour tout loguer (Accept, Drop et Forward)  
Merci de vos conseils.

---

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 21, 2016, 2:32 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/374 "2016-02-21T02:32:03Z")

</div>

Re,  
Est-ce que la solution ne serait pas de créer une table pour chaque "règle"  
Du genre:

`iptables -N LOGACCEPT > /dev/null 2> /dev/null 
iptables -F LOGACCEPT 
iptables -A LOGACCEPT -j LOG --log-prefix "ACCEPT " 
iptables -A LOGACCEPT -j ACCEPT`

Puis

```auto

```

Je ne sais pas si c’est bon…  
Et je coince pour le FORWARD et le DROP…

---

<div class="post-metadata">

**Author:** ![panthere](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/p/5daacb/32.png) [@panthere](https://www.debian-fr.org/u/panthere)\
**Post date:** [Février 21, 2016, 2:32 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/375 "2016-02-21T02:32:04Z")

</div>

moi je fait:

1 les police a drop  
2, les regle qui von bien  
3 je log tout avec ulog ,comme sa sa va pas dans les fichier systeme

```auto
iptables -A INPUT -j ULOG --ulog-prefix="Entree "
```

voila simple , si t’a trop d’entrée tu peux limiter avec le module -m limit, c est même préférable pour eviter de saturer le serveur.  
seulement pafois sa déconne ,probablement parce que la règle est pas bonne.

```auto
		#iptables -A INPUT -m limit --limit-burst 4 --limit 4/hour -j ULOG --ulog-prefix="Entree "
		#iptables -A OUTPUT -m limit --limit-burst 1 --limit 1/hour -j ULOG --ulog-prefix="Sortie "
		#iptables -A FORWARD -m limit --limit-burst 1 --limit 1/hour -j ULOG --ulog-prefix="Forward "
```

si tes règle son bien faite tu devrai avoir peux d’entrée dans les log 🙂

---

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

</div>

Une chaîne définie par l’utilisateur, pas une table.  
En fait une pour chaque cible terminale que tu utilises :  
ACCEPT -\> logaccept  
DROP -\> logdrop  
REJECT -\> logreject  
REJECT --reject-with tcp-reset -\> logrejectrst  
etc.

Les chaînes définies par l’utilisateur peuvent être appelées depuis n’importe quelle chaîne de la table à laquelle elles appartiennent, donc aussi bien une des chaînes de base INPUT, OUTPUT, FORWARD ou une chaîne définie par l’utilisateur. Il faut bien sûr terminer les chaînes de base par une règle appelant une chaîne logxxx, sinon les paquets atteignant la fin de la chaîne seront traités par la politique par défaut sans être loggés.

Par contre, tout logger n’est pas forcément utile, sauf pour faire des tests. C’est un coup à se faire inonder de logs…

---

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 21, 2016, 2:32 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/377 "2016-02-21T02:32:05Z")

</div>

[quote=«&nbsp;PascalHambourg&nbsp;»]Par contre, tout logger n’est pas forcément utile, sauf pour faire des tests. C’est un coup à se faire inonder de logs…[/quote]J’ai vu c’est plusieurs Mo à la minute…

[quote=«&nbsp;PascalHambourg&nbsp;»]Une chaîne définie par l’utilisateur, pas une table.[/quote]Oui une chaine, pardon.

Je «&nbsp;crois&nbsp;» avoir à peu près saisi. Ça donnerais:[code]  
:LOGFWD - [0:0]  
:LOGIN - [0:0]  
:LOGOUT - [0:0]  
…  
-A INPUT -i lo -j LOGOUT  
-A INPUT -m state --state RELATED,ESTABLISHED -j LOGOUT  
-A INPUT -s 10.9.8.254/32 -p udp -m udp --dport 1812:1814 -j LOGOUT  
…  
-A LOGFWD -j LOG --log-prefix "FORWARD --REJECT "  
-A LOGFWD -j DROP  
-A FORWARD -j LOGFWD

-A LOGIN -j LOG --log-prefix "INPUT --REJECT "  
-A LOGIN -j DROP  
-A INPUT -j LOGIN

-A LOGOUT -j LOG --log-prefix "OUTPUT --ACCEPT "  
-A LOGOUT -j ACCEPT  
[/code]

Est-ce qu’avec les deux dernières lignes je ne fais pas double emploi avec les règles au dessus ? (pour freeradius pas exemple)  
Je crois que ma règle «&nbsp;LOGOUT&nbsp;» est ok, mais pour les autres (forward et input) je nage dans le brouillard… iptables ne peut pas savoir que c’est du forward ou du input…

C’est à des fin de test évidemment.  
Mes règles iptables (sans mes essais de logs) semblent fonctionner, mais comment vérifier… J’ai du mal à trouver l’outil qui va bien.

Purée je souffre… ![:017](https://www.debian-fr.org/uploads/default/original/1X/7bbea83f89515ab7c7a738dddb86c4d4f140bd13.gif "reflechit") ![:005](https://www.debian-fr.org/uploads/default/original/1X/cdd45e7dd754015ac5291329b843a2851a0d4fe8.gif "chaud")

@Panthère: Je regarderais ULOG quand je «&nbsp;maîtriserais&nbsp;» un peu mieux iptables…

---

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

</div>

Je ne comprends pas la logique de nommage et d’utilisation de ces chaînes.  
Pourquoi appeler LOGOUT une chaîne appelée depuis la chaîne INPUT ?  
Pourquoi appeler d’une part LOGOUT une chaîne qui ACCEPTe et d’autre part LOGIN et LOGFWD des chaînes qui DROPpent ?  
Pourquoi mettre REJECT dans le préfixe alors que la cible est DROP ?

AMA la première chose à faire avant de pondre des règles, c’est de définir ce que tu veux logger dans le préfixe : la chaîne de base d’origine (ce n’est pas indispensable, on peut la déduire des informations in= et out=), la cible appliquée ?

---

<div class="post-metadata">

**Author:** ![panthere](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/p/5daacb/32.png) [@panthere](https://www.debian-fr.org/u/panthere)\
**Post date:** [Février 21, 2016, 2:32 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/379 "2016-02-21T02:32:08Z")

</div>

[quote=“PascalHambourg”]  
Par contre, tout logger n’est pas forcément utile, sauf pour faire des tests. C’est un coup à se faire inonder de logs…[/quote]

moi sa ne me derange pas vraiment puisque je met -m limit --limit-burst 1 --limit 1/hour mai evidament on peux affiner avec un port et/ou une ip.  
et puis si sa vien a faire ramer la machine il suffi de suprimer la règle .

Lol ulog ce charge juste de mettre les entrée ailleur c’est donc plus simple , si si 😉

---

<div class="post-metadata">

**Author:** ![lol](https://www.debian-fr.org/user_avatar/www.debian-fr.org/lol/32/15629_2.png) [@lol](https://www.debian-fr.org/u/lol)\
**Post date:** [Février 21, 2016, 2:32 UTC](https://www.debian-fr.org/t/digression-installation-parefeu-iptables-ip6tables-pour-les-nuls/771/380 "2016-02-21T02:32:10Z")

</div>

Bonjour,  
Effectivement ce n’était pas clair mon affaire… Aussi brumeux que dans mon esprit.  
La nuit m’a permis d’y voir plus clair.

`:LOGIN - [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [812:365500]
...
-A INPUT -i lo -j LOGIN
-A INPUT -m state --state RELATED,ESTABLISHED -j LOGIN
-A INPUT -s 10.9.8.254/32 -p udp -m udp --dport 1812:1814 -j LOGIN
...
-A LOGIN -m limit --limit 1/min --limit-burst 4 -j LOG --log-prefix "RULE 1: --ACCEPT "
-A LOGIN -j ACCEPT
-A FORWARD -j LOG --log-prefix "RULE 2: --FORWARD "
-A OUTPUT -m limit --limit 1/min -j LOG --log-prefix "RULE 3: --OUTPUT "`

J’ai un dernier doute…  
Les paquets entrants qui ne passent pas par la règle «&nbsp;LOGIN&nbsp;» ils sont quand même acceptés dans ma configuration ?  
Il faut que j’ajoute un -A INPUT -j DROP après ?

Merci panthère pour le -m limit ![:023](https://www.debian-fr.org/uploads/default/original/1X/3c587556c0cc11389317c03a60788d77ceebd307.gif "OK")  
Au moins j’ai le temps d’arrêter les logs si ça prend de l’ampleur…

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

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