logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#51 19-05-2018 10:07:08

Henry33
Membre
Inscription : 23-12-2016

Re : [Résolu] Configuration iptables à 4 réseaux

raleur a écrit :


"depuis son port ssh", ce n'est pas une source ?



Si, mais d'un point de vue mnémotechnique, c'est pas génial... (d)epuis ne ressemble pas à (s)ource mais plutôt à (d)estination. Je me demandais donc si il n'y avait une meilleure définition.

Hors ligne

#52 19-05-2018 10:40:03

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Configuration iptables à 4 réseaux

Henry33 a écrit :

c'est donc normal que iptables ne me donne pas la source de mon erreur.


Oui. Il aurait fallu penser à regarder dans les logs du noyau avec dmesg pour y trouver des messages de ce genre :

x_tables: ip_tables: udp match: only valid for protocol 17


(Le protocole 17 est UDP, cf. /etc/protocols)

Henry33 a écrit :

Si ça avait été une erreur d'états de paquets, il ne m'aurait rien dit, c'est ça ?


Comment ça, une erreur d'état ?

Henry33 a écrit :

Au fait, tu as été voir le tutoriel


Oui, j'y ai jeté un coup d'oeil. Mais en règle générale je n'aime pas les tutoriels, alors mon avis est biaisé. Je crains qu'il soit un peu compliqué pour les débutants. Je ne me suis pas penché sur les détails pour voir s'il contient d'autres incohérences que celle que tu as relevée.


Il vaut mieux montrer que raconter.

Hors ligne

#53 19-05-2018 11:03:32

Henry33
Membre
Inscription : 23-12-2016

Re : [Résolu] Configuration iptables à 4 réseaux

Il faut que j'apprenne à utiliser les log, ça viendra.

Une erreur d'état = une mauvaise formulation des états par rapport sens des paquets et à ce que je veux faire. Je suis en train de me pencher dessus.

Concernant le tutoriel, ça serait bien que quelqu'un aille y jeter un oeil, il fait parti des résultats dans les moteurs de recherche avec "iptables pare-feu routeur". Je n'ai aucune prétention sur le sujet des règles de filtrages iptables mais il me semble que ce qui est publié n'est pas bon d'un point de vue technique (sans parlé de la rédaction, pardon pour l'auteur...). C'est dommage car il n'y a pas beaucoup de résultats qui pointent sur des pages explicatives et non sur des forums où ce sont des types comme moi qui posent des questions. En plus,  les gens ne publiant pas leurs résultats final (la plupart semblent abandonner en cours de route...), ça fait beaucoup de lecture de problème pour peu, voir pas, de solutions...

Hors ligne

#54 19-05-2018 12:31:44

Henry33
Membre
Inscription : 23-12-2016

Re : [Résolu] Configuration iptables à 4 réseaux

Youhou, ça fonctionne pour eth0 et wlan1 avec tout en DROP par défaut !

C'est peut-être du bricolage et il y a certainement encore des choses à redire mais je suis content. Première fois que je réussi à naviguer depuis un poste client sur le réseau privé après sept jours de dur labeur. Merci raleur pour ta patience et pour ton aide, sans toi, ça aurait été beaucoup plus long et douloureux !

iptables-save

# Generated by iptables-save v1.4.21 on Sat May 19 11:07:20 2018
*nat
:PREROUTING ACCEPT [85:12925]
:INPUT ACCEPT [6:388]
:OUTPUT ACCEPT [2:146]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o wlan1 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
COMMIT
# Completed on Sat May 19 11:07:20 2018
# Generated by iptables-save v1.4.21 on Sat May 19 11:07:20 2018
*filter
:INPUT DROP [35:3770]
:FORWARD DROP [14:840]
:OUTPUT DROP [1:132]
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p icmp -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 67:68 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m multiport --sports 80,443,8000 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -i wlan1 -p icmp -m state --state ESTABLISHED -j ACCEPT
-A INPUT -i wlan1 -p tcp -m tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -i wlan1 -p udp -m udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -i wlan1 -p udp -m udp --sport 67:68 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -i wlan1 -p tcp -m multiport --sports 80,443,8000 -m state --state ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.200.0/24 -i eth0 -o wlan1 -p icmp -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -d 192.168.200.0/24 -i wlan1 -o eth0 -p icmp -m state --state ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o wlan1 -p tcp -m tcp --sport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o wlan1 -p udp -m udp --sport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o wlan1 -p udp -m udp --sport 67:68 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -p tcp -m tcp --dport 53 -m state --state ESTABLISHED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -p udp -m udp --dport 53 -m state --state ESTABLISHED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -p udp -m udp --dport 67:68 -m state --state ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o wlan1 -p tcp -m multiport --sports 80,443,8000 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -p tcp -m multiport --dports 80,443,8000 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o eth0 -p icmp -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --sport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --sport 67:68 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m multiport --sports 80,443,8000 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o wlan1 -p icmp -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o wlan1 -p tcp -m tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o wlan1 -p udp -m udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o wlan1 -p udp -m udp --dport 67:68 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o wlan1 -p tcp -m multiport --dports 80,443,8000 -m state --state NEW,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Sat May 19 11:07:20 2018
 



Je n'imaginais pas qu'écrire des règles de filtrage soit aussi complexe...

PS: j'ai doublé et inversé les règles ssh pensant que c'était la méthode pour que la connexion soit commencée à la fois depuis un client et depuis le routeur mais je ne peux pas encore tester la connexion en ssh à mon PC depuis le routeur car le pare-feu semble bloquer l'arrivée de connexion ssh (en clair, ça marche pas alors que je crois que ça devrait). Le PC est protégé avec ufw et il va me falloir quelques heures pour me mettre à jour...

Globalement, qu'est-ce que tu en penses de cette table de filtrage ?

Dernière modification par Henry33 (19-05-2018 12:32:31)

Hors ligne

#55 19-05-2018 12:42:35

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Configuration iptables à 4 réseaux

Henry33 a écrit :

(d)epuis ne ressemble pas à (s)ource mais plutôt à (d)estination.


Et d'un point de vue sémantique, ce n'est pas suffisamment proche ?
Sinon, tu peux dire explicitement "depuis le port source" et "vers le port destination".

Henry33 a écrit :

Une erreur d'état = une mauvaise formulation des états par rapport sens des paquets et à ce que je veux faire.


Ce ne serait une erreur qu'au sens de ce que tu veux faire, et pas au sens d'iptables. Iptables ne peut pas deviner ce que tu veux faire.

Henry33 a écrit :

Concernant le tutoriel, ça serait bien que quelqu'un aille y jeter un oeil


Passer en revue et nettoyer un tutoriel aussi long et écrit par quelqu'un d'autre, c'est un peu s'attaquer aux écuries d'Augias...


Il vaut mieux montrer que raconter.

Hors ligne

#56 19-05-2018 14:27:29

Henry33
Membre
Inscription : 23-12-2016

Re : [Résolu] Configuration iptables à 4 réseaux

raleur a écrit :


Passer en revue et nettoyer un tutoriel aussi long et écrit par quelqu'un d'autre, c'est un peu s'attaquer aux écuries d'Augias...



Y en a un qui a réussi...


A part ça, que penses-tu de ma table de filtrage ? Je peux me baser dessus pour terminer mon projet ?

Hors ligne

#57 19-05-2018 17:47:01

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Configuration iptables à 4 réseaux

Henry33 a écrit :

Y en a un qui a réussi...


Mon pseudo n'est pas Hercule. Et c'est bien connu, les râleurs ça n'a que de la gueule, pour critiquer il y a du monde mais quand il faut agir il n'y a plus personne.

Henry33 a écrit :

A part ça, que penses-tu de ma table de filtrage ?


Il y a des règles qui me semblent louches. Et notamment celles-ci :

-A FORWARD -i eth0 -o wlan1 -p tcp -m multiport --sports 80,443,8000 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -p tcp -m multiport --dports 80,443,8000 -m state --state ESTABLISHED -j ACCEPT
 


Avec ces règles, je ne vois pas comment une machine du LAN peut accéder au web car les paquets sortants d'une connexion HTTP(S) ont le port destination 80 ou 443 et les paquets entrants ont le port source 80 ou 443, soit l'inverse de tes règles.

Tant qu'on y est,

-A INPUT -i eth0 -p tcp -m multiport --sports 80,443,8000 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m multiport --sports 80,443,8000 -m state --state NEW,ESTABLISHED -j ACCEPT
 


Peux-tu me dire à quoi sont censées servir ces règles ? Moi, je ne vois pas.

J'en profite pour rappeler que l'état NEW doit être associé à --dport et non à --sport, car c'est le port destination du paquet initial qui permet d'identifier un service. Le port source du paquet initial n'est généralement pas significatif. Accepter un paquet TCP ou UDP dans l'état NEW sans --dport, c'est autoriser une demande de connexion à n'importe quel service.

-A FORWARD -s 192.168.200.0/24 -i eth0 -o wlan1 -p icmp -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -d 192.168.200.0/24 -i wlan1 -o eth0 -p icmp -m state --state ESTABLISHED -j ACCEPT
 


Je l'ai déjà écrit, -s et -d sont inutile quand il suffit de se baser sur -i ou -o. D'ailleurs tu n'utilises -s ou -d nulle part ailleurs.
Je profite de ces règles pour mentionner le traitement des paquets ICMP. Tu n'autorises pas les paquets ICMP dans l'état RELATED. Or certains de ces types de paquets sont très importants car il signalent des erreurs qui doivent être prises en compte pour un bon fonctionnement des communications. Ces types sont : destination-unreachable, time-exceeded, parameter-problem.
Il y a en revanche d'autres types de paquets ICMP dans l'état RELATED qui peuvent être exploités à des fins malveillantes et qu'il est recommandé de ne plus utiliser : source-quench et redirect. Si pour cette raison on ne veut pas prendre le risque d'accepter tous les types de paquets ICMP dans l'état RELATED, il est recommandé d'accepter au moins les trois types précédents.

Parlons un peu des paquets DHCP :

-A INPUT -i eth0 -p udp -m udp --dport 67:68 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i wlan1 -p udp -m udp --sport 67:68 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --sport 67:68 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o wlan1 -p udp -m udp --dport 67:68 -m state --state NEW,ESTABLISHED -j ACCEPT
 


D'une part, il y a des chances que ces règles soient inutiles car les logiciels clients et serveur DHCP ont tendance à communiquer directement avec l'interface réseau, sans passer par la couche IP du noyau qui fait appel à iptables. En effet, bien qu'étant formellement des paquets IP, les paquets DHCP peuvent avoir des particularités qui les rendent impropres à la prise en charge normale par la pile IP du noyau.
D'autre part, le suivi de connexion est inopérant sur ces paquets, donc il ne faut pas chercher à les filtrer sur l'état.
Pour finir, tes règles autorisent indifféremment les deux ports 67 et 68 et uniquement en source ou en destination, alors qu'ils ont des rôles bien définis : 67 est le port côté serveur et 68 est le port côté client.
client vers serveur : sport=68 et dport=67
serveur vers client : sport=67 et dport=68

Par contre, accepter des paquets DHCP dans FORWARD, tu peux oublier. La seule façon de transmettre des paquets DHCP entre deux réseaux est avec un relais DHCP, pas un routeur.

Passons au DNS dans FORWARD.

-A FORWARD -i eth0 -o wlan1 -p tcp -m tcp --sport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o wlan1 -p udp -m udp --sport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -p tcp -m tcp --dport 53 -m state --state ESTABLISHED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -p udp -m udp --dport 53 -m state --state ESTABLISHED -j ACCEPT
 


Si le but est d'autoriser les requêtes directes du LAN vers l'extérieur, il n'y aurait pas une inversion entre sport et dport ?


Il vaut mieux montrer que raconter.

Hors ligne

#58 19-05-2018 21:28:12

Henry33
Membre
Inscription : 23-12-2016

Re : [Résolu] Configuration iptables à 4 réseaux

Y a une autre catégorie de râleurs (à laquelle j'appartiens), c'est ceux qui se sortent les mains des poches quand il faut faire des choses qui plaisent pas à tout le monde et qui se rendent compte qu'il n'y a plus personne dès que ça devient difficile... Dicton de chef d'équipe : "La bouche c'est bien, les mains c'est mieux" (...Oui je sais, ça marche pas pour tout, mais bon, on fait ce qu'on peut).

Y pas mal d'erreurs que tu relèves qui viennent de cette fameuse table de routage dont je te parle, dans le tutoriel (y en a de moi aussi). Je n'ai aucune prétention sur le sujet mais peut-être serait-il judicieux de la mettre hors-ligne le temps qu'elle soit corrigée. Le tutoriel est dans les docs de Debian-Facile depuis 4 ans, donc y a plus d'un qui a dû se faire avoir. Si tu veux, une fois que j'aurai fini avec cette partie eth0 <-> wlan1, je peux la recopier en eth1 <-> eth0 comme dans le tuto et vous l'envoyer, ça sera toujours ça de fait.


Merci pour tous ces compléments d'informations, je reprends ma table de filtrage.

Dernière modification par Henry33 (20-05-2018 08:52:53)

Hors ligne

#59 20-05-2018 09:58:53

Henry33
Membre
Inscription : 23-12-2016

Re : [Résolu] Configuration iptables à 4 réseaux

Salut,

Bon, j'ai corrigé mes erreurs, il y a avait bien des inversions entre les -s et -d (c'est curieux que ça ait fonctionné...), les règles INPUT et OUTPUT HTTP vers etho ne servaient effectivement à rien, j'ai suspendu les règles DHCP et ça fonctionne sans, j'ai précisé les requêtes ICMP et j'ai établi les états pour toutes les règles en respectant tes consignes.

Je n'ai pas ajouté les requêtes ICMP echo-reply en INPUT pour l'interface extérieur wlan1 car je ne veut pas que mon routeur réponde au ping depuis le réseau publique, j'ai bon ?

- Une question concernant dnsmasq, vu qu'il est installé sur le routeur, est-ce que la règle FORWARD des paquets DNS ne le contourne pas ? J'ai suspendu ces règles et la résolution des DNS fonctionne donc je me dis que c'est le cas.

- Concernant ssh, j'ai doublé les règles en INPUT -i eth0 et OUTPUT -i eth0 pour que je puisse établir la connexion depuis et vers le routeur. Est-ce qu'il n'y a un moyen de simplifier ces règles ?

- Concernant ICMP, j'ai établit des règles pour 6 types mais il y en a plein d'autres (j'ai vu des règles pour 3/2, 3/3, 3/4, et 12). Sont-elles utiles et quels états leurs appliquer ? (documentation de référence https://www.frozentux.net/iptables-tuto … #ICMPTYPES)


Copie de mon fichier iptables.rules.encours


# Generated by iptables-save v1.4.21 on Thu May 17 18:14:32 2018
*filter
:INPUT DROP [19:1400]
:FORWARD DROP [0:0]
:OUTPUT DROP [18:1368]
# --- INPUT loopback
-A INPUT -i lo -j ACCEPT


# ---INPUT eth0 ---

# - ICMP -
-A INPUT -i eth0 -p icmp --icmp-type echo-reply -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i eth0 -p icmp --icmp-type echo-request -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i eth0 -p icmp --icmp-type time-exceeded -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i eth0 -p icmp --icmp-type destination-unreachable -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i eth0 -p icmp --icmp-type source-quench -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p icmp --icmp-type redirect -m state --state NEW,ESTABLISHED -j ACCEPT

#-A INPUT -i eth0 -p icmp -m state --state NEW,ESTABLISHED -j ACCEPT

# - DNS - OK
-A INPUT -i eth0 -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT

# - DHCP -
#-A INPUT -i eth0 -p udp --dport 67:68 -j ACCEPT

# - HTTP et HTTPS -

# - SSH -
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT


# --- INPUT wlan1 ---

# - ICMP -
-A INPUT -p icmp --icmp-type echo-request -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i wlan1 -p icmp --icmp-type time-exceeded -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i wlan1 -p icmp --icmp-type destination-unreachable -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i wlan1 -p icmp --icmp-type source-quench -m state --state ESTABLISHED -j ACCEPT
-A INPUT -i wlan1 -p icmp --icmp-type redirect -m state --state ESTABLISHED -j ACCEPT

#-A INPUT -i wlan1 -p icmp -m state --state ESTABLISHED -j ACCEPT

# - DNS -
-A INPUT -i wlan1 -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -i wlan1 -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT

# - DHCP -
#-A INPUT -i wlan1 -p udp --sport 67:68 -j ACCEPT

# - HTTP et HTTPS -
-A INPUT -i wlan1 -p tcp -m multiport --sports 80,443,8000 -m state --state ESTABLISHED -j ACCEPT

# --- FORWARD eth0 vers wlan1 ---
#-A FORWARD -i eth0 -o wlan1 -p tcp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
#-A FORWARD -i wlan1 -o eth0 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

# - ICMP -
-A FORWARD -i eth0 -o wlan1 -p icmp --icmp-type echo-reply -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eth0 -o wlan1 -p icmp --icmp-type echo-request -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eth0 -o wlan1 -p icmp --icmp-type time-exceeded -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eth0 -o wlan1 -p icmp --icmp-type destination-unreachable -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eth0 -o wlan1 -p icmp --icmp-type source-quench -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o wlan1 -p icmp --icmp-type redirect -m state --state NEW,ESTABLISHED -j ACCEPT

#-A FORWARD -i eth0 -o wlan1 -p icmp -m state --state NEW,ESTABLISHED -j ACCEPT

-A FORWARD -i wlan1 -o eth0 -p icmp --icmp-type echo-reply -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -p icmp --icmp-type echo-request -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -p icmp --icmp-type time-exceeded -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -p icmp --icmp-type destination-unreachable -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -p icmp --icmp-type source-quench -m state --state ESTABLISHED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -p icmp --icmp-type redirect -m state --state ESTABLISHED -j ACCEPT

#-A FORWARD -i wlan1 -o eth0 -p icmp -m state --state ESTABLISHED -j ACCEPT


# - DNS -
#-A FORWARD -i eth0 -o wlan1 -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
#-A FORWARD -i eth0 -o wlan1 -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
#-A FORWARD -i wlan1 -o eth0 -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
#-A FORWARD -i wlan1 -o eth0 -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT


# - HTTP et HTTPS -
-A FORWARD -i eth0 -o wlan1 -p tcp -m multiport --dports 80,443,8000 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -p tcp -m multiport --sports 80,443,8000 -m state --state ESTABLISHED -j ACCEPT


# --- OUTPUT loopback ---
-A OUTPUT -o lo -j ACCEPT


# --- OUTPUT eth0 ---

# - ICMP -
-A OUTPUT -o eth0 -p icmp --icmp-type echo-reply -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -o eth0 -p icmp --icmp-type echo-request -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -o eth0 -p icmp --icmp-type time-exceeded -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -o eth0 -p icmp --icmp-type destination-unreachable -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -o eth0 -p icmp --icmp-type source-quench -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p icmp --icmp-type redirect -m state --state NEW,ESTABLISHED -j ACCEPT

#-A OUTPUT -o eth0 -p icmp -m state --state NEW,ESTABLISHED -j ACCEPT

# - DNS -
-A OUTPUT -o eth0 -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT

# - DHCP -
#-A OUTPUT -o eth0 -p udp --sport 67:68 -j ACCEPT

# - HTTP et HTTPS -

# - SSH -
-A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT


# --- OUTPUT wlan 1 ---

# - ICMP -
-A OUTPUT -o wlan1 -p icmp --icmp-type echo-request -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -o wlan1 -p icmp --icmp-type time-exceeded -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -o wlan1 -p icmp --icmp-type destination-unreachable -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -o wlan1 -p icmp --icmp-type source-quench -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o wlan1 -p icmp --icmp-type redirect -m state --state NEW,ESTABLISHED -j ACCEPT

#-A OUTPUT -o wlan1 -p icmp -m state --state NEW,ESTABLISHED -j ACCEPT

# - DNS -
-A OUTPUT -o wlan1 -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o wlan1 -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT

# - DHCP -
#-A OUTPUT -o wlan1 -p udp --dport 67:68 -j ACCEPT

# - HTTP et HTTPS -
-A OUTPUT -o wlan1 -p tcp -m multiport --dports 80,443,8000 -m state --state NEW,ESTABLISHED -j ACCEPT

COMMIT
# Completed on Thu May 17 18:14:32 2018
# Generated by iptables-save v1.4.21 on Thu May 17 18:14:32 2018
*nat
:PREROUTING ACCEPT [54:7572]
:INPUT ACCEPT [3:729]
:OUTPUT ACCEPT [41:3543]
:POSTROUTING ACCEPT [26:2283]
-A POSTROUTING -o wlan1 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
COMMIT
# Completed on Thu May 17 18:14:32 2018

 




Ca commence à ressembler à quelque chose de juste ?

Dernière modification par Henry33 (20-05-2018 10:02:30)

Hors ligne

#60 20-05-2018 10:08:41

Henry33
Membre
Inscription : 23-12-2016

Re : [Résolu] Configuration iptables à 4 réseaux

Je viens de voir mon erreur dans FORWARD, je corrige.

Hors ligne

#61 20-05-2018 10:11:50

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Configuration iptables à 4 réseaux

Henry33 a écrit :

Je viens de voir mon erreur dans FORWARD, je corrige


Corrige dans ton message précédent pour économiser de la place, ne fais pas un nouveau message.
Je rédige quelques commentaires en attendant.


Il vaut mieux montrer que raconter.

Hors ligne

#62 20-05-2018 10:34:10

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Configuration iptables à 4 réseaux

Commentaires généraux sur ton message, pas sur le jeu de règles.

Henry33 a écrit :

Je n'ai pas ajouté les requêtes ICMP echo-reply en INPUT pour l'interface extérieur wlan1 car je ne veut pas que mon routeur réponde au ping depuis le réseau publique, j'ai bon ?


C'est comme tu veux. Ton réseau, tes règles.

Henry33 a écrit :

- Une question concernant dnsmasq, vu qu'il est installé sur le routeur, est-ce que la règle FORWARD des paquets DNS ne le contourne pas ?


Oui. Cela peut être utile pour interroger directement un serveur DNS particulier. Par exemple cela m'arrive souvent quand je fais des tests sur une zone DNS, j'interroge directement les serveurs DNS faisant autorité pour celle-ci. Y a-t-il un intérêt à forcer les clients du LAN de passer par dnsmasq ?

Henry33 a écrit :

- Concernant ssh, j'ai doublé les règles en INPUT -i eth0 et OUTPUT -i eth0 pour que je puisse établir la connexion depuis et vers le routeur. Est-ce qu'il n'y a un moyen de simplifier ces règles ?


Non, puisque ce sont des connexions en sens inverse qui nécessitent des règles différentes.

Henry33 a écrit :

- Concernant ICMP, j'ai établit des règles pour 6 types mais il y en a plein d'autres (j'ai vu des règles pour 3/2, 3/3, 3/4, et 12). Sont-elles utiles et quels états leurs appliquer ?


J'ai écrit que les types source-quench et redirect étaient à proscrire.
Le type 12 correspond à parameter-problem qu'il est recommendé d'accepter.
Inutile de différencier les codes d'un même type.
Les types ICMP peuvent être classés en différentes catégories :
- les requêtes, ex : echo-request
- les réponses, ex : echo-reply
- les messages d'erreur, ex : destination-unreachable, time-exceeded, parameter-problem
Les requêtes ont l'état NEW ou ESTABLISHED et les réponses valides ont l'état ESTABLISHED, comme en TCP et UDP.
Les erreurs valides ont l'état RELATED.

J'ai une question : as-tu vraiment besoin d'accéder à des serveurs web qui écoutent sur le port 8000 ? Ce n'est pas un port standard.

Je voulais aussi ajouter quelques observations sur la rédaction du fichier de règles. Il n'est pas obligatoire de respecter le groupement par chaîne du format généré par iptables-save. Pour ma part, je regroupe les règles INPUT, OUTPUT et FORWARD qui traitent une même connexion, je trouve que c'est plus lisible. Voici un exemple de disposition que j'utiliserais, basé sur une ancienne version de ton fichier :

*nat
:PREROUTING ACCEPT
:INPUT ACCEPT
:OUTPUT ACCEPT
:POSTROUTING ACCEPT
-A POSTROUTING -o wlan1 -j MASQUERADE
-A POSTROUTING -o eth1  -j MASQUERADE
COMMIT

*filter
:INPUT DROP
:FORWARD DROP
:OUTPUT DROP

# loopback
-A OUTPUT -o lo -j ACCEPT
-A INPUT  -i lo -j ACCEPT

# ICMP
-A OUTPUT -o eth0 -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A INPUT  -i eth0 -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

-A OUTPUT -o wlan1 -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A INPUT  -i wlan1 -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT

-A FORWARD -i eth0  -o wlan1 -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i wlan1 -o eth0  -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT

# DNS serveur
-A INPUT  -i eth0 -p tcp -m tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
-A INPUT  -i eth0 -p udp -m udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --sport 53 -m state --state ESTABLISHED -j ACCEPT

# DNS client
-A OUTPUT -o wlan1 -p tcp -m tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT  -i wlan1 -p tcp -m tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o wlan1 -p udp -m udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT  -i wlan1 -p udp -m udp --sport 53 -m state --state ESTABLISHED -j ACCEPT

-A FORWARD -i eth0  -o wlan1 -p tcp -m tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan1 -o eth0  -p tcp -m tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
-A FORWARD -i eth0  -o wlan1 -p udp -m udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan1 -o eth0  -p udp -m udp --sport 53 -m state --state ESTABLISHED -j ACCEPT

# DHCP serveur
-A INPUT  -i eth0 -p udp -m udp --sport 68 --dport 67 -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --sport 67 --dport 68 -j ACCEPT

# DHCP client
-A OUTPUT -o wlan1 -p udp -m udp --sport 68 --dport 67 -j ACCEPT
-A INPUT  -i wlan1 -p udp -m udp --sport 67 --dport 68 -j ACCEPT

# HTTP client
-A OUTPUT -o eth0  -p tcp -m multiport --dports 80,443,8000 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT  -i eth0  -p tcp -m multiport --sports 80,443,8000 -m state --state ESTABLISHED -j ACCEPT

-A OUTPUT -o wlan1 -p tcp -m multiport --dports 80,443,8000 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT  -i wlan1 -p tcp -m multiport --sports 80,443,8000 -m state --state ESTABLISHED -j ACCEPT

-A FORWARD -i eth0  -o wlan1 -p tcp -m multiport --dports 80,443,8000 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan1 -o eth0  -p tcp -m multiport --sports 80,443,8000 -m state --state ESTABLISHED -j ACCEPT

# SSH serveur
-A INPUT  -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

# SSH client
-A OUTPUT -o eth0 -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT  -i eth0 -p tcp -m tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
COMMIT
 


J'ai aussi supprimé les commentaires de date et les compteurs de paquets ajoutés par iptables-save qui ne sont pas pertinents et peuvent être omis.

Tu as dit ne pas encore vouloir utiliser de chaînes utilisateur, mais je voulais aussi te montrer un exemple de leur puissance dans l'exemple suivant ou j'ai intégré eth1 et wlan1. Sans les chaînes utilisateur, il aurait fallu doubler les règles INPUT/OUTPUT et quadrupler les règles FORWARD pour prendre en compte toutes les combinaisons. J'ai même pu regrouper certaines règles INPUT/OUTPUT et FORWARD dans une chaîne commune.

*nat
:PREROUTING ACCEPT
:INPUT ACCEPT
:OUTPUT ACCEPT
:POSTROUTING ACCEPT
-A POSTROUTING -o wlan1 -j MASQUERADE
-A POSTROUTING -o eth1  -j MASQUERADE
COMMIT

*filter
:INPUT DROP
:FORWARD DROP
:OUTPUT DROP

# chaines utilisateur
-N in_lan
-N in_pub
-N out_lan
-N out_pub
-N in
-N out

-A INPUT -i eth0   -j in_lan
-A OUTPUT -o eth0  -j out_lan

-A INPUT -i wlan0  -j in_lan
-A OUTPUT -o wlan0 -j out_lan

-A INPUT -i eth1   -j in_pub
-A OUTPUT -o eth1  -j out_pub

-A INPUT -i wlan1  -j in_pub
-A OUTPUT -o wlan1 -j out_pub

-A in_pub  -j in
-A out_pub -j out

-A FORWARD -i eth0  -o eth1  -j out
-A FORWARD -i eth1  -o eth0  -j in

-A FORWARD -i eth0  -o wlan1 -j out
-A FORWARD -i wlan1 -o eth0  -j in

-A FORWARD -i wlan0 -o eth1  -j out
-A FORWARD -i eth1  -o wlan0 -j in

-A FORWARD -i wlan0 -o wlan1 -j out
-A FORWARD -i wlan1 -o wlan0 -j in

# loopback
-A OUTPUT -o lo -j ACCEPT
-A INPUT  -i lo -j ACCEPT

# ICMP
-A out_lan -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A in_lan  -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

-A out -p icmp -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A in  -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT

# DNS serveur
-A in_lan  -p tcp -m tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A out_lan -p tcp -m tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
-A in_lan  -p udp -m udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A out_lan -p udp -m udp --sport 53 -m state --state ESTABLISHED -j ACCEPT

# DNS client
-A out -p tcp -m tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A in  -p tcp -m tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
-A out -p udp -m udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A in  -p udp -m udp --sport 53 -m state --state ESTABLISHED -j ACCEPT

# DHCP serveur
-A in_lan  -p udp -m udp --sport 68 --dport 67 -j ACCEPT
-A out_lan -p udp -m udp --sport 67 --dport 68 -j ACCEPT

# DHCP client
-A out_pub -p udp -m udp --sport 68 --dport 67 -j ACCEPT
-A in_pub  -p udp -m udp --sport 67 --dport 68 -j ACCEPT

# HTTP client
-A out_lan -p tcp -m multiport --dports 80,443,8000 -m state --state NEW,ESTABLISHED -j ACCEPT
-A in_lan  -p tcp -m multiport --sports 80,443,8000 -m state --state ESTABLISHED -j ACCEPT

-A out -p tcp -m multiport --dports 80,443,8000 -m state --state NEW,ESTABLISHED -j ACCEPT
-A in  -p tcp -m multiport --sports 80,443,8000 -m state --state ESTABLISHED -j ACCEPT

# SSH serveur
-A in_lan  -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A out_lan -p tcp -m tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

# SSH client
-A out_lan -p tcp -m tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A in_lan  -p tcp -m tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
COMMIT
 


Il vaut mieux montrer que raconter.

Hors ligne

#63 20-05-2018 11:07:45

Henry33
Membre
Inscription : 23-12-2016

Re : [Résolu] Configuration iptables à 4 réseaux

- C'est comme tu veux. Ton réseau, tes règles.

C'est pour ça que je me donne du mal.


-Y a-t-il un intérêt à forcer les clients du LAN de passer par dnsmasq ?

Je dirais que oui, dnsmasq est configuré pour diriger les requêtes DNS vers les serveurs d'OpenDNS (pour l'instant). En forçant les requêtes LAN, je veux être sûr qu'elles passent bien par ces serveurs.


-- Ok pour les ssh


- J'ai écrit que les types source-quench et redirect étaient à proscrire.

J'avais mal compris... J'ai lu trop vite... J'ai juste corrigé l'état RELATED de ces ports. Je les supprime.


-- Je me repenche sur les ICMP


- ...as-tu vraiment besoin d'accéder à des serveurs web qui écoutent sur le port 8000 ?

Je ne sais pas, ça fait partie des règles que j'ai recopié. Maintenant que je comprends mieux le fonctionnement des règles de filtrage, je vais me pencher sur les ports dont je peux avoir besoin ou non. Je croyais que c'était pour le https mais sans avoir vérifié. Je vais me pencher dessus.


-- J'ai hésité à regrouper les règles INPUT et OUTPUT, j'en suis resté à la mise en forme du fichier iptables-save. Je vais adopter ce format, il est plus clair.


-- Merci de m'avoir montrer les chaînes utilisateur. J'ai encore les règles eth0<->eth1, wlan0<->eth1 et wlan0<->eth1 à ajouter, les chaînes vont beaucoup me simplifier la vie !!!


Bonne journée, à plus tard !

Hors ligne

#64 20-05-2018 12:37:45

Henry33
Membre
Inscription : 23-12-2016

Re : [Résolu] Configuration iptables à 4 réseaux

C'est tout un dossier les ICMP...

raleur a écrit :


Les types ICMP peuvent être classés en différentes catégories :
- les requêtes, ex : echo-request
- les réponses, ex : echo-reply
- les messages d'erreur, ex : destination-unreachable, time-exceeded, parameter-problem
Les requêtes ont l'état NEW ou ESTABLISHED et les réponses valides ont l'état ESTABLISHED, comme en TCP et UDP.
Les erreurs valides ont l'état RELATED.



Donc echo-request et echo-reply ne doivent pas avoir l'état RELATED.
Et destination-unreachable, time-exceeded, parameter-problem ne peuvent pas avoir les états NEW ou ESTABLISHED.

C'est bien ça ?

Mais du coup, les OUTPUT de destination-unreachable, time-exceeded sont-ils nécessaires ? Si le routeur/destinataire a un problème, qui envoie les réponses RELATED...(?)
C'est le cas aussi pour parameter-problem ?

En gros, ça donne:


-A INPUT -i eth0 -p icmp --icmp-type echo-reply -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p icmp --icmp-type echo-reply -m state --state NEW,ESTABLISHED -j ACCEPT

-A INPUT -i eth0 -p icmp --icmp-type echo-request -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p icmp --icmp-type echo-request -m state --state NEW,ESTABLISHED -j ACCEPT

-A INPUT -i eth0 -p icmp --icmp-type time-exceeded -m state --state RELATED -j ACCEPT
#-A OUTPUT -o eth0 -p icmp --icmp-type time-exceeded -m state --state RELATED -j ACCEPT

-A INPUT -i eth0 -p icmp --icmp-type destination-unreachable -m state --state RELATED -j ACCEPT
#-A OUTPUT -o eth0 -p icmp --icmp-type destination-unreachable -m state --state RELATED -j ACCEPT

-A INPUT -i eth0 -p icmp --icmp-type 12 -m state --state RELATED -j ACCEPT
#-A OUTPUT -o eth0 -p icmp --icmp-type 12 -m state --state RELATED -j ACCEPT
 

Hors ligne

#65 20-05-2018 13:09:08

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Configuration iptables à 4 réseaux

Henry33 a écrit :

Donc echo-request et echo-reply ne doivent pas avoir l'état RELATED.
Et destination-unreachable, time-exceeded, parameter-problem ne peuvent pas avoir les états NEW ou ESTABLISHED.


C'est ça. En fait j'aurais dû écrire "ne peuvent pas" plutôt que "ne doivent pas".
Un paquet ICMP de type echo-reply ne sera jamais dans l'état NEW ou RELATED. S'il correspond à un paquet ICMP de type echo-request vu récemment il sera considéré comme une réponse à cette requête et aura l'état ESTABLISHED, sinon il aura l'état INVALID.
Même chose pour un type d'erreur : s'il correspond à une connexion existante il aura l'état RELATED, sinon il aura l'état INVALID.
Donc ce n'est pas très grave si on accepte un état que le type paquet ne peut pas avoir, du moment que ce n'est pas l'état INVALID.

Henry33 a écrit :

Mais du coup, les OUTPUT de destination-unreachable, time-exceeded sont-ils nécessaires ? Si le routeur/destinataire a un problème, qui envoie les réponses RELATED...(?)


Les messages d'erreur ICMP servent à informer l'expéditeur d'un paquet (processus local ou autre machine) que le paquet n'a pas pu être délivré à son destinataire. Ils sont donc importants pour que l'expéditeur puisse réagir en conséquence. Par exemple, si un paquet n'a pas pu être délivré parce qu'il est trop gros, l'expéditeur informé pourra renvoyer le paquet en le fragmentant pour ne pas dépasser la taille maximum indiquée dans le message.

-A INPUT -i eth0 -p icmp --icmp-type echo-reply -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p icmp --icmp-type echo-reply -m state --state NEW,ESTABLISHED -j ACCEPT
 


Comme expliqué plus haut, un paquet ICMP echo-reply ne peut pas avoir l'état NEW mais ce n'est pas grave de le mentionner, la condition ne sera simplement jamais vraie. Aucun paquet qui n'aurait pas dû être accepté ne sera accepté.

-A INPUT -i eth0 -p icmp --icmp-type 12 -m state --state RELATED -j ACCEPT
#-A OUTPUT -o eth0 -p icmp --icmp-type 12 -m state --state RELATED -j ACCEPT
 


- Autant mettre "parameter-problem" que 12, c'est un peu plus parlant.
- Pourquoi avoir commenté la règle dans OUTPUT (même remarque pour les types destination-unreachable et time-exceeded) ? Le routeur peut émettre ces types de message. Un exemple est lors d'un traceroute ; ce sont les messages ICMP de type time-exceeded qui permettent de lister les noeuds intermédiaires du chemin.

Dernière modification par raleur (20-05-2018 13:57:51)


Il vaut mieux montrer que raconter.

Hors ligne

#66 20-05-2018 14:57:20

Henry33
Membre
Inscription : 23-12-2016

Re : [Résolu] Configuration iptables à 4 réseaux

- Pourquoi avoir commenté la règle dans OUTPUT... ?
Pour la même raison que pour destination-unreachable et time-exceeded.

Bon, j'ai repris la table de filtrage en incluant les chaînes... Il faut un moment d'adaptation pour s'y faire... Et établissant les bons états pour les bonnes requêtes. Ca sens la fin ! Je mets la copie de mon fichier iptables.encours.chaines. J'ai fait attention donc "normalement", ça devrait être bon...

Par contre, je crois que je vais avoir besoin du DHCP, j'ai voulu brancher une tablette par l'ethernet et elle n'a pas pu obtenir d'adresse. Malheureusement, à cause d'un cable défectueux elle ne s'était pas rechargée donc elle s'est éteinte tout de suite... Je voudrais malgré tout paramétrer convenablement ces règles, histoire de faire les choses convenablement sur toute la ligne.

raleur a écrit :


Pour finir, tes règles autorisent indifféremment les deux ports 67 et 68 et uniquement en source ou en destination, alors qu'ils ont des rôles bien définis : 67 est le port côté serveur et 68 est le port côté client.
client vers serveur : sport=68 et dport=67
serveur vers client : sport=67 et dport=68



Ca donne donc :

# - DHCP - eth0 et wlan0

#-A in_priv -p udp --sport 68 -j ACCEPT
#-A out_priv -p udp --dport 67 -j ACCEPT

# - DCHP - eth1 et wlan1

#-A in_pub -p udp --sport 68 -j ACCEPT
#-A out_pub -p udp --dport 67 -j ACCEPT
 



C'est bien ça ?

iptables.encours.chaines


*filter
:INPUT DROP [19:1400]
:FORWARD DROP [0:0]
:OUTPUT DROP [18:1368]

# chaines utilisateur

-N in_priv
-N in_pub
-N out_priv
-N out_pub
-N in
-N out

-A INPUT -i eth0   -j in_priv
-A OUTPUT -o eth0  -j out_priv

-A INPUT -i wlan0  -j in_priv
-A OUTPUT -o wlan0 -j out_priv

-A INPUT -i eth1   -j in_pub
-A OUTPUT -o eth1  -j out_pub

-A INPUT -i wlan1  -j in_pub
-A OUTPUT -o wlan1 -j out_pub

-A in_pub  -j in
-A out_pub -j out

-A FORWARD -i eth0  -o eth1  -j out
-A FORWARD -i eth1  -o eth0  -j in

-A FORWARD -i eth0  -o wlan1 -j out
-A FORWARD -i wlan1 -o eth0  -j in

-A FORWARD -i wlan0 -o eth1  -j out
-A FORWARD -i eth1  -o wlan0 -j in

-A FORWARD -i wlan0 -o wlan1 -j out
-A FORWARD -i wlan1 -o wlan0 -j in


# - loopback -

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


# - SSH -

-A in_priv -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A out_priv -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

-A in_priv -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
-A out_priv -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT


# - ICMP -

-A in_priv -p icmp --icmp-type echo-reply -m state --state ESTABLISHED -j ACCEPT
-A out_priv -p icmp --icmp-type echo-reply -m state --state ESTABLISHED -j ACCEPT
-A in -p icmp --icmp-type echo-reply -m state --state ESTABLISHED -j ACCEPT
-A out -p icmp --icmp-type echo-reply -m state --state ESTABLISHED -j ACCEPT


-A in_priv -p icmp --icmp-type echo-request -m state --state NEW,ESTABLISHED -j ACCEPT
-A out_priv -p icmp --icmp-type echo-request -m state --state NEW,ESTABLISHED -j ACCEPT
-A in -p icmp --icmp-type echo-request -m state --state ESTABLISHED -j ACCEPT
-A out -p icmp --icmp-type echo-request -m state --state NEW,ESTABLISHED -j ACCEPT


-A in_priv -p icmp --icmp-type time-exceeded -m state --state RELATED -j ACCEPT
-A out_priv -p icmp --icmp-type time-exceeded -m state --state RELATED -j ACCEPT
-A in -p icmp --icmp-type time-exceeded -m state --state RELATED -j ACCEPT
-A out -p icmp --icmp-type time-exceeded -m state --state RELATED -j ACCEPT

-A in_priv -p icmp --icmp-type destination-unreachable -m state --state RELATED -j ACCEPT
-A out_priv -p icmp --icmp-type destination-unreachable -m state --state RELATED -j ACCEPT
-A in -p icmp --icmp-type destination-unreachable -m state --state RELATED -j ACCEPT
-A out -p icmp --icmp-type destination-unreachable -m state --state RELATED -j ACCEPT

-A in_priv -p icmp --icmp-type parameter-problem -m state --state RELATED -j ACCEPT
-A out_priv -p icmp --icmp-type parameter-problem -m state --state RELATED -j ACCEPT
-A in -p icmp --icmp-type parameter-problem -m state --state RELATED -j ACCEPT
-A out -p icmp --icmp-type parameter-problem -m state --state RELATED -j ACCEPT


# - DNS - routeur

-A in_priv -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A out_priv -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
-A in_pub -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
-A out_pub -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT

-A in_priv -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A out_priv -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
-A in_pub -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
-A out_pub -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT


# - DNS - Internet

#-A in -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
#-A out -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT

#-A in -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
#-A out -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT


# - DHCP - eth0 et wlan0

#-A in_priv -p udp --sport 68 -j ACCEPT
#-A out_priv -p udp --dport 67 -j ACCEPT

# - DCHP - eth1 et wlan1

#-A in_pub -p udp --sport 68 -j ACCEPT
#-A out_pub -p udp --dport 67 -j ACCEPT


# - HTTP -

-A in -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED -j ACCEPT
-A out -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT

COMMIT

*nat
:PREROUTING ACCEPT [54:7572]
:INPUT ACCEPT [3:729]
:OUTPUT ACCEPT [41:3543]
:POSTROUTING ACCEPT [26:2283]
-A POSTROUTING -o wlan1 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
COMMIT

 



EDIT1 : Bon... La tablette (Android) a du mal a obtenir une adresse du routeur. Le seul paramètre qui semble fonctionner c'est 67:68 en sport et dport... Ca correspond pas à ce que j'avais compris...

EDIT2: J'ai vu que la tablette avait une adresse ipv6 donc j'ai activé le filtrage ipv6 et j'ai adapté la table de filtrage, comme ce sera fait. Je vais aller faire pareil à  dnsmasq.

EDIT3 : J'ai ajouter les règles concernant packet-too-big, je me suis dit que ça doit être important. Il y a aussi router-advertisement, il est utile celui là ?

Dernière modification par Henry33 (20-05-2018 17:39:24)

Hors ligne

#67 20-05-2018 20:31:35

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Configuration iptables à 4 réseaux

Règles DHCP : non, ça ne va pas. Regarde dans mes exemples.

Henry33 a écrit :

J'ai vu que la tablette avait une adresse ipv6 donc j'ai activé le filtrage ipv6 et j'ai adapté la table de filtrage


C'est-à-dire ?
Si l'adresse commence par fe80, c'est juste une adresse locale sans intérêt.

Henry33 a écrit :

J'ai ajouter les règles concernant packet-too-big, je me suis dit que ça doit être important. Il y a aussi router-advertisement, il est utile celui là ?


Packet-too-big est l'équivalent en ICMPv6 de fragmentation-needed en ICMPv4 mais c'est un nouveau type à part entière qu'il faut effectivement prendre en compte et non plus un des codes du type destination-unreachable. Son rôle est encore plus important en IPv6 qu'en IPv4 car les paquets IPv6 ne peuvent être fragmentés qu'à la source contrairement aux paquets IPv4 qui ont le drapeau DF=0 (Don't Fragment) qui peuvent aussi être fragmentés en chemin par un routeur.


Il vaut mieux montrer que raconter.

Hors ligne

#68 20-05-2018 21:03:35

Henry33
Membre
Inscription : 23-12-2016

Re : [Résolu] Configuration iptables à 4 réseaux

J'ai compris mon erreur avec le DHCP...

C'est une adresse fe80 oui. Le ipv6 m'est totalement inconnu et comme il n'y a (apparemment) pas grand chose à faire pour le paramétrer en plus de l'ipv4, je l'ai fait. Si il vaut mieux éviter ce protocole, je peux toujours le suspendre. Je t'avoue que je l'ai fait au cas où, un jour, il soit géré par un réseau auquel je me connecterai, comme ça, je n'aurai pas besoin de me replonger dans des paramétrages que j'aurai certainement oublié (ou pas...). Bref, j'ai recopié la table de filtrage de l'ivp4 en ajoutant les v6 aux icmp et ajouter le icmpv6-type fragmentation-needed.

Je corrige mon erreur avec le dhcp et je partage les résultats.

Encore merci à toi, raleur, tu m'as accompagné durant cette semaine chargée et tu m'as aidé à écrire une table de filtrage meilleure que ce que j'aurais pû faire tout seul. C'est grâce à toi si j'en suis arrivé à bout en seulement une semaine. Bravo et merci pour ta patience !

Hors ligne

#69 20-05-2018 21:16:04

Henry33
Membre
Inscription : 23-12-2016

Re : [Résolu] Configuration iptables à 4 réseaux

Voici donc le résultat final (ou en tout cas, une base bien établie) pour une table de filtrage iptables avec pare-feu sur une passerelle entre eth0, réseau privé, et wlan1, réseau publique, avec dnsmasq installé, pas de réponse au ping depuis réseau publique. Je me dit que ce sera utile à ceux qui en ont besoin.

règles de base eth0 <-> wlan1

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]


# --- loopback ---

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


# --- eth0 ---

# - ICMP -
-A INPUT -i eth0 -p icmp --icmp-type time-exceeded -m state --state RELATED -j ACCEPT
-A OUTPUT -o eth0 -p icmp --icmp-type time-exceeded -m state --state RELATED -j ACCEPT

-A INPUT -i eth0 -p icmp --icmp-type destination-unreachable -m state --state RELATED -j ACCEPT
-A OUTPUT -o eth0 -p icmp --icmp-type destination-unreachable -m state --state RELATED -j ACCEPT

-A INPUT -i eth0 -p icmp --icmp-type parameter-problem -m state --state RELATED -j ACCEPT
-A OUTPUT -o eth0 -p icmp --icmp-type parameter-problem -m state --state RELATED -j ACCEPT

# - PING - sens réseau privé -> routeur
-A INPUT -i eth0 -p icmp --icmp-type echo-request -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p icmp --icmp-type echo-reply -m state --state ESTABLISHED -j ACCEPT

# - PING - sens routeur -> réseau privé
-A OUTPUT -o eth0 -p icmp --icmp-type echo-request -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p icmp --icmp-type echo-reply -m state --state ESTABLISHED -j ACCEPT


# - DNS -
-A INPUT -i eth0 -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT

-A INPUT -i eth0 -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT


# - DHCP - (supprimer les # en cas de besoin)
#-A INPUT -i eth0 -m udp --sport 68 --dport 67 -j ACCEPT
#-A OUTPUT -o eth0 -p udp --sport 67 --dport 68 -j ACCEPT


# - SSH - sens réseau privé -> routeur
-A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

# - SSH - sens routeur -> réseau privé
-A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT


# --- wlan1 ---

# - ICMP -
-A INPUT -i wlan1 -p icmp --icmp-type time-exceeded -m state --state RELATED -j ACCEPT
-A OUTPUT -o wlan1 -p icmp --icmp-type time-exceeded -m state --state RELATED -j ACCEPT

-A INPUT -i wlan1 -p icmp --icmp-type destination-unreachable -m state --state RELATED -j ACCEPT
-A OUTPUT -o wlan1 -p icmp --icmp-type destination-unreachable -m state --state RELATED -j ACCEPT

-A INPUT -i wlan1 -p icmp --icmp-type parameter-problem -m state --state RELATED -j ACCEPT
-A OUTPUT -o wlan1 -p icmp --icmp-type parameter-problem -m state --state RELATED -j ACCEPT

# - PING - sens routeur -> réseau publique
-A OUTPUT -o wlan1 -p icmp --icmp-type echo-request -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i wlan1 -p icmp --icmp-type echo-reply -m state --state ESTABLISHED -j ACCEPT

# - PING - sens réseau publique -> routeur
#-A INPUT -i wlan1 -p icmp --icmp-type echo-request -m state --state NEW,ESTABLISHED -j ACCEPT
#-A OUTPUT -o wlan1 -p icmp --icmp-type echo-reply -m state --state ESTABLISHED -j ACCEPT


# - DNS -
-A OUTPUT -o wlan1 -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i wlan1 -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT

-A OUTPUT -o wlan1 -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i wlan1 -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT


# - DHCP - (supprimer les # en cas de besoin)
#-A INPUT -i wlan1 -p udp --sport 67 --dport 68 -j ACCEPT
#-A OUTPUT -o wlan1 -p udp --sport 68 --dport 67 -j ACCEPT

# - HTTP et HTTPS -
-A OUTPUT -o wlan1 -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -i wlan1 -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED -j ACCEPT



# --- FORWARD ---

# - ICMP -
-A FORWARD -i eth0 -o wlan1 -p icmp --icmp-type time-exceeded -m state --state RELATED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -p icmp --icmp-type time-exceeded -m state --state RELATED -j ACCEPT

-A FORWARD -i eth0 -o wlan1 -p icmp --icmp-type destination-unreachable -m state --state RELATED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -p icmp --icmp-type destination-unreachable -m state --state RELATED -j ACCEPT

-A FORWARD -i eth0 -o wlan1 -p icmp --icmp-type parameter-problem -m state --state RELATED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -p icmp --icmp-type parameter-problem -m state --state RELATED -j ACCEPT

# - PING - Sens réseau privé -> réseau publique
-A FORWARD -i eth0 -o wlan1 -p icmp --icmp-type echo-request -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -p icmp --icmp-type echo-reply -m state --state ESTABLISHED -j ACCEPT

# - PING - Sens réseau publique -> réseau privé
#-A FORWARD -i wlan1 -o eth0 -p icmp --icmp-type echo-request -m state --state NEW,ESTABLISHED -j ACCEPT
#-A FORWARD -i eth0 -o wlan1 -p icmp --icmp-type echo-reply -m state --state ESTABLISHED -j ACCEPT


# - DNS - (supprimer les # si il n'y a pas de serveur DNS installé sur le routeur)
#-A FORWARD -i eth0 -o wlan1 -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
#-A FORWARD -i wlan1 -o eth0 -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT

#-A FORWARD -i eth0 -o wlan1 -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
#-A FORWARD -i wlan1 -o eth0 -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT

# - HTTP et HTTPS -
-A FORWARD -i eth0 -o wlan1 -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan1 -o eth0 -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED -j ACCEPT


COMMIT

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o wlan1 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
COMMIT
 
 



La même table avec en plus wlan0, réseau privé, et eth1, réseau publique, et chaînes utilisateur

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]

# chaines utilisateur
-N in_priv
-N in_pub
-N out_priv
-N out_pub
-N in
-N out
-N icmp_error
-N ping
-N ssh

-A INPUT -i eth0   -j in_priv
-A OUTPUT -o eth0  -j out_priv

-A INPUT -i wlan0  -j in_priv
-A OUTPUT -o wlan0 -j out_priv

-A INPUT -i eth1   -j in_pub
-A OUTPUT -o eth1  -j out_pub

-A INPUT -i wlan1  -j in_pub
-A OUTPUT -o wlan1 -j out_pub

-A in_pub  -j in
-A out_pub -j out

-A FORWARD -i eth0  -o eth1  -j out
-A FORWARD -i eth1  -o eth0  -j in

-A FORWARD -i eth0  -o wlan1 -j out
-A FORWARD -i wlan1 -o eth0  -j in

-A FORWARD -i wlan0 -o eth1  -j out
-A FORWARD -i eth1  -o wlan0 -j in

-A FORWARD -i wlan0 -o wlan1 -j out
-A FORWARD -i wlan1 -o wlan0 -j in

-A icmp_error -p icmp --icmp-type destination-unreachable -m state --state RELATED -j ACCEPT

-A icmp_error -p icmp --icmp-type time-exceeded -m state --state RELATED -j ACCEPT

-A icmp_error -p icmp --icmp-type parameter-problem -m state --state RELATED -j ACCEPT

-A ping -p icmp --icmp-type echo-request -m state --state NEW,ESTABLISHED -j ACCEPT

-A ping -p icmp --icmp-type echo-reply -m state --state ESTABLISHED -j ACCEPT

-A ssh -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

-A ssh -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

# - loopback -

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


# - SSH - sens réseau privé <-> routeur

-A in_priv -j ssh
-A out_priv -j ssh


# - ICMP -

-A in_priv -j icmp_error
-A out_priv -j icmp_error

-A in -j icmp_error
-A out -j icmp_error


# - PING -  réseau privé <-> routeur

-A in_priv -j ping  
-A out_priv -j ping

# - PING - sens routeur et réseau privé -> réseau publique

-A out -j ping
-A in -m state ! --state NEW -j ping


# - DNS - en passant par dnsmasq (routeur)

-A in_priv -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A out_priv -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
-A in_priv -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A out_priv -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT


# - DNS - pour le routeur

-A out_pub -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A in_pub -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
-A out_pub -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
-A in_pub -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT


# - DNS - FORWARD (sans passer par le routeur)

#-A out -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
#-A in -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
#-A out -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
#-A in -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT


# - DHCP - eth0 et wlan0

-A in_priv  -p udp --sport 68 --dport 67 -j ACCEPT
-A out_priv -p udp --sport 67 --dport 68 -j ACCEPT

# - DCHP - eth1 et wlan1 (supprimer les # en cas de besoin)

#-A out_pub -p udp --sport 67 --dport 68 -j ACCEPT
#-A in_pub  -p udp --sport 68 --dport 67 -j ACCEPT


# - HTTP -

-A out -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
-A in -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED -j ACCEPT


COMMIT

*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o wlan1 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
COMMIT

 



Tables mises à jour le 21/05/2018
Deuxième table mise à jour et corrigée le 22/05/2018

Dernière modification par Henry33 (23-05-2018 05:25:12)

Hors ligne

#70 20-05-2018 21:22:08

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Configuration iptables à 4 réseaux

Henry33 a écrit :

Le ipv6 m'est totalement inconnu et comme il n'y a (apparemment) pas grand chose à faire pour le paramétrer en plus de l'ipv4, je l'ai fait.


Sur un hôte en configuration automatique, peut-être. En revanche il y a un peu plus que "pas grand-chose" à configurer pour prendre en charge l'IPv6 en tant que routeur : les préfixes de chaque réseau, les interfaces, radvd, optionnellement le protocole DHCPv6 (jamais utilisé)...

Henry33 a écrit :

j'ai recopié la table de filtrage de l'ivp4 en ajoutant les v6 aux icmp et ajouter le icmpv6-type fragmentation-needed.


Ce n'est pas si simple. L'IPv6 sur un LAN a des besoins spécifiques qui n'ont pas d'équivalent en IPv4 : j'ai nommé NDP (Neighbour Discovery Protocol) qui comprend les 4 types ICMPv6 de sollicitation et annonce de voisin et de routeur.

Dernière modification par raleur (20-05-2018 21:23:17)


Il vaut mieux montrer que raconter.

Hors ligne

#71 20-05-2018 21:45:11

Henry33
Membre
Inscription : 23-12-2016

Re : [Résolu] Configuration iptables à 4 réseaux

Heuuuu... Ok... Moi qui croyais en voir le bout... Bon ba je vais aller me taper de la doc sur ipv6... Mais moi je veux pas mettre mon réseau en ipv6, je veux juste le rendre compatible au cas où, un jour, je sois connecté à un réseau ipv6. Prendre de l'avance en somme.

Vu que le boulot est pas mal dégrossi et surtout que j'en comprends beaucoup plus maintenant qu'il y a une semaine, je vais essayer de faire la table de filtrage correctement, comme ça, je n'aurai plus à y toucher. Dnsmasq fait l'ipv6 donc y a rien à installer en plus. Juste les correspondances des noms et deux trois autres choses, ça devrait aller...

Hors ligne

#72 20-05-2018 22:01:56

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Configuration iptables à 4 réseaux

Commentaires sur le premier fichier.

# - DNS - ajouter des # devant les lignes si pas de serveur DNS installé sur le routeur
-A INPUT -i wlan1 -p tcp --sport 53 -m state --state ESTABLISHED -j ACCEPT
-A OUTPUT -o wlan1 -p tcp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
 


Même s'il n'y a pas de serveur DNS installé sur le routeur, il faut bien que les processus locaux du routeur puissent envoyer des requêtes DNS vers les serveurs DNS extérieurs, donc il ne faut jamais commenter ces règles.

Suggestion de présentation :
Une "connexion" (au sens large, pas seulement au sens étroit de TCP) fait intervenir des paquets dans les deux sens : du client vers le serveur ("requête") et du serveur vers le client ("réponse").
Je recommande de systématiquement placer côte à côte les deux règles iptables qui traitent ces deux sens pour une même connexion, et de mettre en premier la règle qui traite le sens client vers serveur (avec l'état NEW puisque le premier paquet est transmis dans ce sens), car cela me semble le plus logique et lisible.

# - DHCP - (supprimer les # en cas de besoin)
#-A INPUT -i wlan1 -p udp -m udp --sport 68 --dport 67 -j ACCEPT
#-A OUTPUT -o wlan1 -p udp -m udp --sport 67 --dport 68 -j ACCEPT
 


Sur wlan1 le routeur est client DHCP donc il faut intervertir les port 67 (serveur) et 68 (client) dans ces règles.

# - ICMP -
-A FORWARD -i eth0 -o wlan1 -p icmp --icmp-type echo-reply -m state --state ESTABLISHED -j ACCEPT
(...)
-A FORWARD -i wlan1 -o eth0 -p icmp --icmp-type echo-request -m state --state ESTABLISHED -j ACCEPT
 


En suivant ma recommandation, tu aurais peut-être détecté plus facilement que la règle censée accepter les requêtes n'a pas l'état NEW, donc qu'il est impossible d'initier une connexion et que l'état ESTABLISHED ne sera jamais atteint.
Si tu ne veux pas autoriser le ping depuis l'extérieur vers le LAN, il suffit de supprimer ces deux règles plutôt que leur donner des états impossibles à atteindre.

J'observe au passage que tu n'as pas mis de règles autorisant le ping du routeur vers l'extérieur par wlan1. Oubli ou absence de besoin ? Ça peut être utile pour faire des tests.

Pour le reste du fichier, ça me semble bon.


Il vaut mieux montrer que raconter.

Hors ligne

#73 20-05-2018 22:05:29

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Configuration iptables à 4 réseaux

Henry33 a écrit :

Mais moi je veux pas mettre mon réseau en ipv6, je veux juste le rendre compatible au cas où, un jour, je sois connecté à un réseau ipv6.


Tu peux préparer les règles ip6tables à l'avance, mais il faudra quand même te taper la configuration IPv6 elle-même le jour où tu auras une connectivité IPv6.
Note : pas de NAT en IPv6. Ça existe, ip6tables peut le faire mais c'est mal, et IPv6 a précisément été développé et déployé pour ne pas en avoir besoin, avec suffisamment d'adresses IPv6 globales (publiques) pour toutes les machines connectées à l'internet.

Dernière modification par raleur (20-05-2018 22:06:49)


Il vaut mieux montrer que raconter.

Hors ligne

#74 20-05-2018 22:20:39

raleur
Membre
Inscription : 03-10-2014

Re : [Résolu] Configuration iptables à 4 réseaux

Commentaires sur le second fichier avec chaînes utitisateur.

Tu pourrais alléger encore plus en factorisant les règles des 3 types ICMP d'erreur dans une chaîne utilisateur.

Pour le reste, ça m'a l'air bien.

Il vaut mieux montrer que raconter.

Hors ligne

#75 20-05-2018 22:34:26

Henry33
Membre
Inscription : 23-12-2016

Re : [Résolu] Configuration iptables à 4 réseaux

Super ! J'ai le cerveau qui est cuit ce soir mais j'essaie de préparer la correction. Je relis ça demain matin et je corrige les fichiers en ligne.

Merci et bonne fin de soirée !

Dernière modification par Henry33 (21-05-2018 07:53:47)

Hors ligne

Pied de page des forums