[iptables] questions à propos d'ip6tables (résolu)
[iptables] questions à propos d'ip6tables (résolu)
J'ai installé/configuré iptables sur mes machines, en utilisant /etc/iptables/simple_firewall.rules. À la lecture de la page https://wiki.archlinux.org/index.php/Sshguard, pour protéger le port ssh de mon raspberry pi, je me suis rendu compte qu'il existait également ip6tables pour gérer les adresses ipv6.
Après mes lectures, j'ai l'impression qu'avec une installation de base d'Archlinux :
— la machine accepte toutes les connections, ipv4 ipv6
— la mise en place d'un parefeu est une bonne pratique
— que iptables ne couvre que l'ipv4 (laissant la porte grande ouverte pour l'ipv6)
— qu'il faudrait installer¹ ip6tables pour gérer également l'ipv6, ou alors désactiver² l'ipv6
Maintenant place aux questions :
— Est-ce que j'ai bon ?
— Vous faites comment chez vous ?
_________________________________________
¹ https://wiki.archlinux.org/index.php/Si ... ewall#IPv6 : il est possible de faire du copier-coller des règles iptables.rules, mais il faut adapter les adresses IP référencées, adapter des règles à l'IPv6 (nouveau protocole icmpv6 cité à titre d'exemple), modifier les messages d'erreurs. Je suis sceptique.
² https://wiki.archlinux.org/index.php/Di ... sable_IPv6 : ça a l'air compliqué, également, et celà semble pouvoir causer des soucis
Après mes lectures, j'ai l'impression qu'avec une installation de base d'Archlinux :
— la machine accepte toutes les connections, ipv4 ipv6
— la mise en place d'un parefeu est une bonne pratique
— que iptables ne couvre que l'ipv4 (laissant la porte grande ouverte pour l'ipv6)
— qu'il faudrait installer¹ ip6tables pour gérer également l'ipv6, ou alors désactiver² l'ipv6
Maintenant place aux questions :
— Est-ce que j'ai bon ?
— Vous faites comment chez vous ?
_________________________________________
¹ https://wiki.archlinux.org/index.php/Si ... ewall#IPv6 : il est possible de faire du copier-coller des règles iptables.rules, mais il faut adapter les adresses IP référencées, adapter des règles à l'IPv6 (nouveau protocole icmpv6 cité à titre d'exemple), modifier les messages d'erreurs. Je suis sceptique.
² https://wiki.archlinux.org/index.php/Di ... sable_IPv6 : ça a l'air compliqué, également, et celà semble pouvoir causer des soucis
Dernière modification par bobo le mer. 01 oct. 2014, 09:07, modifié 1 fois.
dwm — BÉPO — vim — “more is less !”
- benjarobin
- Maître du Kyudo
- Messages : 17563
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [iptables] questions à propos d'ip6tables
Oui, tu as tout bon.
Et perso j'utilise ceci :
Et perso j'utilise ceci :
Code : Tout sélectionner
#!/bin/sh
###############################################################################
# Voir "Firewall et securite d'un reseau personnel sous Linux"
# http://olivieraj.free.fr/fr/linux/information/firewall/
###############################################################################
# Configuration : Interface exemple wlan0, eth0
INTERFACE="eth0"
PLAGE_LOCAL="192.168.0.0/24"
# Suppression de toutes les chaines pré-definies de la table FILTER
iptables -t filter -F
# Suppression de toutes les chaines utilisateur de la table FILTER
iptables -t filter -X
# Par défaut, toute les paquets sont détruits
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP
# Autorise l'interface loopback a dialoguer avec elle-même
iptables -t filter -A OUTPUT -o lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
iptables -t filter -A INPUT -i lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
# Autorise les connexions entrantes avec le réseau locale depuis "PLAGE_LOCAL" connecte a l'"INTERFACE"
# Optionnel, voir dangereux sur un Wifi public, uniquement à utiliser pour que tous les PC de ton réseaux
# locale aient accès à l'intégralité des ports
iptables -t filter -A OUTPUT -o $INTERFACE -s $PLAGE_LOCAL -d $PLAGE_LOCAL -j ACCEPT
iptables -t filter -A INPUT -i $INTERFACE -s $PLAGE_LOCAL -d $PLAGE_LOCAL -j ACCEPT
# SSH
iptables -t filter -A OUTPUT -o $INTERFACE -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --sport 22 -j ACCEPT
iptables -t filter -A INPUT -i $INTERFACE -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 22 -j ACCEPT
# HTTPD
iptables -t filter -A OUTPUT -o $INTERFACE -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --sport 80 -j ACCEPT
iptables -t filter -A INPUT -i $INTERFACE -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 80 -j ACCEPT
# Autorise les connexions avec l’extérieur uniquement si elles sont initialisées par les processus locaux
iptables -A OUTPUT -o $INTERFACE -d 0.0.0.0/0 -p all -m conntrack ! --ctstate INVALID -j ACCEPT
iptables -A INPUT -i $INTERFACE -s 0.0.0.0/0 -p all -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# Suppression de toutes les chaines pré-definies de la table FILTER
ip6tables -t filter -F
# Suppression de toutes les chaines utilisateur de la table FILTER
ip6tables -t filter -X
# Par défaut, toute les paquets sont détruits
ip6tables -t filter -P INPUT DROP
ip6tables -t filter -P OUTPUT DROP
ip6tables -t filter -P FORWARD DROP
# Autorise l'interface loopback a dialoguer avec elle-même
ip6tables -t filter -A OUTPUT -o lo -j ACCEPT
ip6tables -t filter -A INPUT -i lo -j ACCEPT
# Autorise les connexions avec l’extérieur uniquement si elles sont initialisées par les processus locaux
ip6tables -A OUTPUT -o $INTERFACE -p all -m conntrack ! --ctstate INVALID -j ACCEPT
ip6tables -A INPUT -i $INTERFACE -p all -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# Ping6 ?!
ip6tables -A INPUT -p icmpv6 -j ACCEPT
ip6tables -A INPUT -j REJECT --reject-with icmp6-adm-prohibited
ip6tables -A OUTPUT -p icmpv6 -j ACCEPT
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [iptables] questions à propos d'ip6tables
Bon, et bien j'ai l'air bien con avec mon iptables, sans pare-feu sur l'IPv6
Moi qui croyais mes machines sécurisées.
Je vais peaufiner mes notes d'installation, et tenter d'adapter le simple firewall pour ip6tables. D'abord pour PC fixes et netbook, ensuite pour le Raspberry Pi.

Je vais peaufiner mes notes d'installation, et tenter d'adapter le simple firewall pour ip6tables. D'abord pour PC fixes et netbook, ensuite pour le Raspberry Pi.
dwm — BÉPO — vim — “more is less !”
Re: [iptables] questions à propos d'ip6tables (résolu)
J'ai fait quelques essais infructueux pour reproduire https://wiki.archlinux.org/index.php/Si ... ewall#IPv6. Je n'ai vraisemblablement pas tout compris à la ligne de commande, voici le résultat :
Du coup j'ai fait le goret en recopient simple_firewall.rules, comme précédemment. Et j'ai adapté celà pour ip6tables.rules, de sorte que le service se lance. J'ai remplacé "icmp-port-unreachable" par "icmp6-port-unreachable" et j'ai supprimé la ligne en "--reject-with icmp-proto-unreachable" car "icmp6-proto-unreachable" et "icmp6-protocol-unreachable" n'existe pas, et j'ai été incapable de trouver qqch l'équivalent en IPv6.
Code : Tout sélectionner
# Generated by iptables-save v1.4.21 on Wed Oct 1 18:14:50 2014
*security
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Wed Oct 1 18:14:50 2014
# Generated by iptables-save v1.4.21 on Wed Oct 1 18:14:50 2014
*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Wed Oct 1 18:14:50 2014
# Generated by iptables-save v1.4.21 on Wed Oct 1 18:14:50 2014
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Wed Oct 1 18:14:50 2014
# Generated by iptables-save v1.4.21 on Wed Oct 1 18:14:50 2014
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed on Wed Oct 1 18:14:50 2014
# Generated by iptables-save v1.4.21 on Wed Oct 1 18:14:50 2014
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
COMMIT
# Completed on Wed Oct 1 18:14:50 2014
Code : Tout sélectionner
19:52 root@ iptables% diff iptables.rules ip6tables.rules
9,10c9
< -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
< -A INPUT -j REJECT --reject-with icmp-proto-unreachable
---
> -A INPUT -p udp -j REJECT --reject-with icmp6-port-unreachable
dwm — BÉPO — vim — “more is less !”
- benjarobin
- Maître du Kyudo
- Messages : 17563
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [iptables] questions à propos d'ip6tables (résolu)
Simple question, pourquoi ne pas utiliser ce que j'ai donné ?
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [iptables] questions à propos d'ip6tables (résolu)
Question valide
!
Lorsque j'avais enquêté sur iptables il y a quelques mois j'ai lu les pages associées de wiki anglophone et francophone. Je n'ai pas pris de notes mais voilà ce dont je me souviens :
— la méthode documentée sur le wiki fr est une méthode par port qui, il me semble, m'avait causé des soucis avec retroshare, et peut-être bien avec bittorrent : un usage réseau = 1 port = 2 entrées (j'ai l'impression que l'approche que tu as postée semble similaire à celle-ci). Les adresses IP en dur m'ont un peu bloqué|déconcerté
, si je me souviens bien
— la méthode documentée sur le wiki en Anglais ressemble furieusement au fichier simple_firewall.rules qui vient avec le paquet iptables. J'ai trouvé les explications assez claires et l'approche très élégante (et paresseuse
) : autorisation de toutes les connections sortantes, maintien de toutes les connections déjà établies, drop de toutes les sollicitations extérieures non initiées par le système = pas de cas par cas par protocole
Du coup, j'ai copié simple_firewall.rules en iptables.rules et j'ai clos le dossier
(et je suis passé à côté de cette histoire d'IPv6)
Édition :
Vois-tu un problème avec l'approche "simple_firewall.rules" ?
Quelle est ta vision des choses dans la lecture comparée des 2 wikis ?

Lorsque j'avais enquêté sur iptables il y a quelques mois j'ai lu les pages associées de wiki anglophone et francophone. Je n'ai pas pris de notes mais voilà ce dont je me souviens :
— la méthode documentée sur le wiki fr est une méthode par port qui, il me semble, m'avait causé des soucis avec retroshare, et peut-être bien avec bittorrent : un usage réseau = 1 port = 2 entrées (j'ai l'impression que l'approche que tu as postée semble similaire à celle-ci). Les adresses IP en dur m'ont un peu bloqué|déconcerté

— la méthode documentée sur le wiki en Anglais ressemble furieusement au fichier simple_firewall.rules qui vient avec le paquet iptables. J'ai trouvé les explications assez claires et l'approche très élégante (et paresseuse

Du coup, j'ai copié simple_firewall.rules en iptables.rules et j'ai clos le dossier

Édition :
Vois-tu un problème avec l'approche "simple_firewall.rules" ?
Quelle est ta vision des choses dans la lecture comparée des 2 wikis ?
dwm — BÉPO — vim — “more is less !”
- benjarobin
- Maître du Kyudo
- Messages : 17563
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [iptables] questions à propos d'ip6tables (résolu)
Je crains que tu es fait une mauvaise lecture de mon message car les 2 (simple firewall et ma config) font strictement la même chose...
Le wiki fr est en effet beaucoup plus restrictif, il n'autorise qu'une partie des ports en sorties, mais il utilise absolument le même principe que décrit dans le wiki us.
Je vais donc pour cela détailler ma configuration pour une meilleur compréhension, bien qu'il y est déjà des commentaires très explicites
En premier il est nécessaire de vider toute configuration préalable, on part sur des bases saines
Puis on interdit tout
Il est très important de laisser l'interface locale
Finalement on autorise toutes les connexions initiées depuis l'intérieur vers l'extérieur, rien n'est bloqué en sortie.
Comme tu peux le voir il n'y a aucune adresse IP donnée ni ne port...
Par contre si tu as un serveur ssh sur ton PC et que tu veux pouvoir t'y connecter depuis l'extérieur (un peu le but d'un serveur ssh), il te faudra nécessairement autoriser toutes les connexions faites sur le port 22, après libre à toi de modifier la règle suivante pour n'autoriser que certaines IP externes
De plus si tu veux accéder à l'ensemble des ports depuis ton réseau locale, ton réseau locale étant considéré comme l'extérieur, il faudra nécessaire autoriser une plage d’adresse, mais bien sur ceci est optionnel et n'est qu'a titre d'exemple, ceci peut être relativement dangereux :
Le wiki fr est en effet beaucoup plus restrictif, il n'autorise qu'une partie des ports en sorties, mais il utilise absolument le même principe que décrit dans le wiki us.
Je vais donc pour cela détailler ma configuration pour une meilleur compréhension, bien qu'il y est déjà des commentaires très explicites
En premier il est nécessaire de vider toute configuration préalable, on part sur des bases saines
Code : Tout sélectionner
# Suppression de toutes les chaines pré-definies de la table FILTER
iptables -t filter -F
# Suppression de toutes les chaines utilisateur de la table FILTER
iptables -t filter -X
Code : Tout sélectionner
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP
lo
discuter avec n'importe qui. Bloquer des paquets sur l'interface locale pourrait avoir des effets secondaires très indésirables
Code : Tout sélectionner
iptables -t filter -A OUTPUT -o lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
iptables -t filter -A INPUT -i lo -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
Code : Tout sélectionner
iptables -A OUTPUT -o $INTERFACE -d 0.0.0.0/0 -p all -m conntrack ! --ctstate INVALID -j ACCEPT
iptables -A INPUT -i $INTERFACE -s 0.0.0.0/0 -p all -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
Par contre si tu as un serveur ssh sur ton PC et que tu veux pouvoir t'y connecter depuis l'extérieur (un peu le but d'un serveur ssh), il te faudra nécessairement autoriser toutes les connexions faites sur le port 22, après libre à toi de modifier la règle suivante pour n'autoriser que certaines IP externes
Code : Tout sélectionner
iptables -t filter -A OUTPUT -o $INTERFACE -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --sport 22 -j ACCEPT
iptables -t filter -A INPUT -i $INTERFACE -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --dport 22 -j ACCEPT
Code : Tout sélectionner
iptables -t filter -A OUTPUT -o $INTERFACE -s $PLAGE_LOCAL -d $PLAGE_LOCAL -j ACCEPT
iptables -t filter -A INPUT -i $INTERFACE -s $PLAGE_LOCAL -d $PLAGE_LOCAL -j ACCEPT
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [iptables] questions à propos d'ip6tables (résolu)
Je n'avais pas vu cette subtilité :La politique par défaut sur OUTPUT est DROP, avec une règle acceptant tous les paquets non-INVALID.
Du coup ça me paraît redondant avec cette ligne :
Je note que le port pour ssh a été passé à la trappe dans ton implémentation ip6tables
(Du coup ça n'a rien à voir avec l'approche par port documentée sur le wiki fr :
https://wiki.archlinux.fr/Iptables#Conf ... ent_simple
Même s'il y a 2 lignes par port…)
Code : Tout sélectionner
iptables -t filter -P OUTPUT DROP
[…]
iptables -A OUTPUT -o $INTERFACE -d 0.0.0.0/0 -p all -m conntrack ! --ctstate INVALID -j ACCEPT

Code : Tout sélectionner
iptables -t filter -A OUTPUT -o $INTERFACE -s 0.0.0.0/0 -d 0.0.0.0/0 -p tcp --sport 22 -j ACCEPT
(Du coup ça n'a rien à voir avec l'approche par port documentée sur le wiki fr :
https://wiki.archlinux.fr/Iptables#Conf ... ent_simple
Même s'il y a 2 lignes par port…)
dwm — BÉPO — vim — “more is less !”
- benjarobin
- Maître du Kyudo
- Messages : 17563
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [iptables] questions à propos d'ip6tables (résolu)
Il est en effet possible que ce soit redondant... Il est vrai que ce sont des règles écrites il y a quelques temps, et comme cela fonctionne je n'ai jamais pris le temps de voir si on peut faire mieux 
Sinon c'est volontaire qu'en IPv6 aucune connexion ne soit autorisé depuis l'extérieur. En sortie tout fonctionne parfaitement en IPv6, mais j'avoue n'avoir jamais pris le temps de configurer mes DNS pour ajouter une entrée IPv6...

Sinon c'est volontaire qu'en IPv6 aucune connexion ne soit autorisé depuis l'extérieur. En sortie tout fonctionne parfaitement en IPv6, mais j'avoue n'avoir jamais pris le temps de configurer mes DNS pour ajouter une entrée IPv6...
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [iptables] questions à propos d'ip6tables (résolu)
« ne pas changer quelque chose qui fonctionne » C'est une approche saine… 
Merci pour les explications en tout cas

Merci pour les explications en tout cas
dwm — BÉPO — vim — “more is less !”