Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

iptables: yo pas tout compris

2 réponses
Avatar
laforest.michel
Bonjour, j'ai deux machines en réseau:
La premiere: serveur nfs avec deux cartes reseau, eth0 reliée à l'autre
machine, adresse ip : 192.168.5.1; la deuxieme carte réseau eth1 à une
freebox.
La deuxieme machine, avec une carte eth0, adresse ip 192.168.5.2 reliée à
la premiere machine.
Je veux que ma deuxieme machine puisse monter une partition nfs de la
premiere machine, et naviguer sur internet.
Tout marchait, nfs et la navigation, jusqu'à l'établissement des règles
iptables; depuis, la deuxieme machine peut se connecter sur internet, mais
plus la premiere, et impossible de monter ma partition nfs sur ma deuxieme
machine (acces rejete dans syslog).
Conclusion : j'ai dû légèrement me planter dans iptables! Par contre, ce
que je ne comprends pas, c'est que même si je fais /etc/init.d/iptables
stop sur ma premiere machine, ça ne change rien !
A savoir, je suis sous debian.
Je vous mets à la suite mes règles iptables, si quelqu'un peut m'expliquer
ce qui merde, et en quoi, car ça montre que je n'ai pas tout saisi.

Merci

Michel

Règles iptables :

#!/bin/bash
#Effacement tables
echo 0 > /proc/net/ipv4/ip_forward
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X
#
#Fermeture totale
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
#
#Ouverture localhost
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
#
#Ouverture reseau local
iptables -t filter -A OUTPUT -o eth0 -s 192.168.5.0/2 -d 192.168.5.0/2 -j
ACCEPT
iptables -t filter -A INPUT -i eth0 -s 192.168.5.0/2 -d 192.168.5.0/2 -j
ACCEPT
#
#Masquage d'adresse
iptables -t nat -A POSTROUTING -s 192.168.5.1 -o eth1 -j MASQUERADE
#La ligne qui précède, je me demande si c'est pas une connerie,
#vu que c'est la premiere machine ?
iptables -t nat -A POSTROUTING -s 192.168.5.2 -o eth1 -j MASQUERADE
#
#C'est parti pour internet:
iptables -t filter -A FORWARD -i eth0 -o eth1 -s 192.168.5.1 -d 0.0.0.0/0
-m state --state ! INVALID -j ACCEPT
#Ligne précedente: La aussi je m'interroge...
iptables -t filter -A FORWARD -i eth0 -o eth1 -s 192.168.5.1 -d 0.0.0.0/0
-m state --state ! INVALID -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -o eth0 -s 0.0.0.0/0 -d 192.168.5.1
-m state -- ESTABLISHED,RELATED -j ACCEPT
#Même habituel questionnement pour la précédente
iptables -t filter -A FORWARD -i eth1 -o eth0 -s 0.0.0.0/0 -d 192.168.5.2
-m state -- ESTABLISHED,RELATED -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward

Voilà. J'explique ce qui me pose question, peut-être pourra-t'on
m'expliquer en quoi mon résonnement est erroné (ou bon, ça m'arrive des
fois)
Je prends les 2 dernieres lignes qui m'intrigue (celle avec 192.168.5.1)
Cette adresse ip est celle de la premiere machine sur la carte eth0; or, ce
qui arrive par la freebox entre par eth1, mais n'a pas de raison de passer
par eth0, donc par l'adresse ip 192.168.5.1 (?), donc cette ligne ne sert à
rien, et dans ce cas, je n'ouvre pas d'autorisation pour ma premiere
machine, non ?
Mais si le probleme est là, comment faire pour ouvrir une autorisation de
passage pour ma premiere machine, par son adresse ip internet? (c'est à
dire celle d'eth1?)
Mais le probleme, c'est que ça n'explique pas l'impossibilité pour la
deuxieme machine de monter la partition nfs de la premiere machine.

Merci de répondre à mes questionnements

2 réponses

Avatar
Frencia
Bonjour

Un chose m'intrigue: pourquoi 192.168.5.0/2 dans les lignes suivantes ?
J'aurai plutôt mis 192.168.5.0/24 Est ce un problème de copier/coller.
#Ouverture reseau local
iptables -t filter -A OUTPUT -o eth0 -s 192.168.5.0/2 -d 192.168.5.0/2 -j
ACCEPT
iptables -t filter -A INPUT -i eth0 -s 192.168.5.0/2 -d 192.168.5.0/2 -j
ACCEPT


Salutations
JPF

Bonjour, j'ai deux machines en réseau:
La premiere: serveur nfs avec deux cartes reseau, eth0 reliée à l'autre
machine, adresse ip : 192.168.5.1; la deuxieme carte réseau eth1 à une
freebox.
La deuxieme machine, avec une carte eth0, adresse ip 192.168.5.2 reliée à
la premiere machine.
Je veux que ma deuxieme machine puisse monter une partition nfs de la
premiere machine, et naviguer sur internet.
Tout marchait, nfs et la navigation, jusqu'à l'établissement des règles
iptables; depuis, la deuxieme machine peut se connecter sur internet, mais
plus la premiere, et impossible de monter ma partition nfs sur ma deuxieme
machine (acces rejete dans syslog).
Conclusion : j'ai dû légèrement me planter dans iptables! Par contre, ce
que je ne comprends pas, c'est que même si je fais /etc/init.d/iptables
stop sur ma premiere machine, ça ne change rien !
A savoir, je suis sous debian.
Je vous mets à la suite mes règles iptables, si quelqu'un peut m'expliquer
ce qui merde, et en quoi, car ça montre que je n'ai pas tout saisi.

Merci

Michel

Règles iptables :

#!/bin/bash
#Effacement tables
echo 0 > /proc/net/ipv4/ip_forward
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X
#
#Fermeture totale
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
#
#Ouverture localhost
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
#
#Ouverture reseau local
iptables -t filter -A OUTPUT -o eth0 -s 192.168.5.0/2 -d 192.168.5.0/2 -j
ACCEPT
iptables -t filter -A INPUT -i eth0 -s 192.168.5.0/2 -d 192.168.5.0/2 -j
ACCEPT
#
#Masquage d'adresse
iptables -t nat -A POSTROUTING -s 192.168.5.1 -o eth1 -j MASQUERADE
#La ligne qui précède, je me demande si c'est pas une connerie,
#vu que c'est la premiere machine ?
iptables -t nat -A POSTROUTING -s 192.168.5.2 -o eth1 -j MASQUERADE
#
#C'est parti pour internet:
iptables -t filter -A FORWARD -i eth0 -o eth1 -s 192.168.5.1 -d 0.0.0.0/0
-m state --state ! INVALID -j ACCEPT
#Ligne précedente: La aussi je m'interroge...
iptables -t filter -A FORWARD -i eth0 -o eth1 -s 192.168.5.1 -d 0.0.0.0/0
-m state --state ! INVALID -j ACCEPT
iptables -t filter -A FORWARD -i eth1 -o eth0 -s 0.0.0.0/0 -d 192.168.5.1
-m state -- ESTABLISHED,RELATED -j ACCEPT
#Même habituel questionnement pour la précédente
iptables -t filter -A FORWARD -i eth1 -o eth0 -s 0.0.0.0/0 -d 192.168.5.2
-m state -- ESTABLISHED,RELATED -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward

Voilà. J'explique ce qui me pose question, peut-être pourra-t'on
m'expliquer en quoi mon résonnement est erroné (ou bon, ça m'arrive des
fois)
Je prends les 2 dernieres lignes qui m'intrigue (celle avec 192.168.5.1)
Cette adresse ip est celle de la premiere machine sur la carte eth0; or,
ce qui arrive par la freebox entre par eth1, mais n'a pas de raison de
passer par eth0, donc par l'adresse ip 192.168.5.1 (?), donc cette ligne
ne sert à rien, et dans ce cas, je n'ouvre pas d'autorisation pour ma
premiere machine, non ?
Mais si le probleme est là, comment faire pour ouvrir une autorisation de
passage pour ma premiere machine, par son adresse ip internet? (c'est à
dire celle d'eth1?)
Mais le probleme, c'est que ça n'explique pas l'impossibilité pour la
deuxieme machine de monter la partition nfs de la premiere machine.

Merci de répondre à mes questionnements


Avatar
Julien Salgado
a écrit :
Bonjour, j'ai deux machines en réseau:


Bonjour,

La premiere: serveur nfs avec deux cartes reseau, eth0 reliée à l'autre
machine, adresse ip : 192.168.5.1; la deuxieme carte réseau eth1 à une
freebox.
La deuxieme machine, avec une carte eth0, adresse ip 192.168.5.2 reliée à
la premiere machine.
Je veux que ma deuxieme machine puisse monter une partition nfs de la
premiere machine, et naviguer sur internet.
Tout marchait, nfs et la navigation, jusqu'à l'établissement des règles
iptables; depuis, la deuxieme machine peut se connecter sur internet, mais
plus la premiere, et impossible de monter ma partition nfs sur ma deuxieme
machine (acces rejete dans syslog).
Conclusion : j'ai dû légèrement me planter dans iptables! Par contre, ce
que je ne comprends pas, c'est que même si je fais /etc/init.d/iptables
stop sur ma premiere machine, ça ne change rien !


En effet, cela charge la configuration « inactive » qui n'est pas
forcément sans filtrage. Ce serait plutôt :
/etc/init.d/iptables clear

A savoir, je suis sous debian.
Je vous mets à la suite mes règles iptables, si quelqu'un peut m'expliquer
ce qui merde, et en quoi, car ça montre que je n'ai pas tout saisi.

Merci

Michel

Règles iptables :

#!/bin/bash
#Effacement tables
echo 0 > /proc/net/ipv4/ip_forward
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X
#
#Fermeture totale
iptables -t filter -P INPUT DROP
iptables -t filter -P OUTPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
#
#Ouverture localhost
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
#


C'est un peu trop large, mais bon...

#Ouverture reseau local
iptables -t filter -A OUTPUT -o eth0 -s 192.168.5.0/2 -d 192.168.5.0/2 -j
ACCEPT
iptables -t filter -A INPUT -i eth0 -s 192.168.5.0/2 -d 192.168.5.0/2 -j
ACCEPT


Là par contre c'est beaucoup trop large la notation utilisée indique un
réseau avec sa taille donc 192.168.5.0/2 veux en faite dire toutes les
IP de 192.0.0.0 à 255.255.255.255 ce qui fait pas mal...
En fait tu veux restreindre je suppose qu'à ton réseau local, comme cela
ne concerne que que deux machines il suffit d'utiliser les IPs.

iptables -A OUTPUT -o eth0 -s 192.168.5.1 -d 192.168.5.2 -j ACCEPT
iptables -A INPUT -i eth0 -s 192.168.5.2 -d 192.168.5.1 -j ACCEPT

De plus, il serait préférable de restreindre un peu plus, mais on va
supposer que tu as toutes confiance en ton réseau local.

#
#Masquage d'adresse
iptables -t nat -A POSTROUTING -s 192.168.5.1 -o eth1 -j MASQUERADE


Cette ligne est inutile, en effet si une communication a lieu sur le
réseau local alors l'IP source sera déja 192.168.5.1 mais l'interface de
sortie sera eth0. Pour une commnucation vers l'internet l'IP sera celle
donnée par free qui ne sera donc pas celle-ci et l'interface de sortie
sera bien eth1.

#La ligne qui précède, je me demande si c'est pas une connerie,
#vu que c'est la premiere machine ?
iptables -t nat -A POSTROUTING -s 192.168.5.2 -o eth1 -j MASQUERADE


Cette règle est la règle utile.

#
#C'est parti pour internet:
iptables -t filter -A FORWARD -i eth0 -o eth1 -s 192.168.5.1 -d 0.0.0.0/0
-m state --state ! INVALID -j ACCEPT
#Ligne précedente: La aussi je m'interroge...
iptables -t filter -A FORWARD -i eth0 -o eth1 -s 192.168.5.1 -d 0.0.0.0/0
-m state --state ! INVALID -j ACCEPT


Deux fois la même règle... qui est inutile, car en temps normal l'IP
source d'une communication ne devrait pas être 192.168.5.1 pour aller
sur internet.

iptables -t filter -A FORWARD -i eth1 -o eth0 -s 0.0.0.0/0 -d 192.168.5.1
-m state -- ESTABLISHED,RELATED -j ACCEPT


Aussi inutile.

#Même habituel questionnement pour la précédente
iptables -t filter -A FORWARD -i eth1 -o eth0 -s 0.0.0.0/0 -d 192.168.5.2
-m state -- ESTABLISHED,RELATED -j ACCEPT


Acceptation des retours pour le deuxième PC... Mais les phases
d'initialisation ne sont pas autorisées, je ne comprend pas, il faudrait
une règle du style :

iptables -A FORWARD -i eth0 -o eth1 -s 192.168.5.2
-m state NEW,ESTABLISHED,RELATED -j ACCEPT

en moins permissif éventuellement.

echo 1 > /proc/sys/net/ipv4/ip_forward

Voilà. J'explique ce qui me pose question, peut-être pourra-t'on
m'expliquer en quoi mon résonnement est erroné (ou bon, ça m'arrive des
fois)
Je prends les 2 dernieres lignes qui m'intrigue (celle avec 192.168.5.1)
Cette adresse ip est celle de la premiere machine sur la carte eth0; or, ce
qui arrive par la freebox entre par eth1, mais n'a pas de raison de passer
par eth0, donc par l'adresse ip 192.168.5.1 (?), donc cette ligne ne sert à
rien, et dans ce cas, je n'ouvre pas d'autorisation pour ma premiere
machine, non ?


Tout ce qui concerne la première machine passe par INPUT et OUTPUT pour
la partie filtrage et n'a pas besoin de NAT. Si on est pas trop exigeant
en terme de sécurité on peut se contenter de :

iptables -A INPUT -i eth1 -m state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -o eth1 -m state NEW,ESTABLISHED,RELATED -j ACCEPT

C'est surtout la deuxième règle qui est trop permissive, il faudrait
préciser les protocoles/ports pour l'utilisation qui est faite de la
machine.

Mais si le probleme est là, comment faire pour ouvrir une autorisation de
passage pour ma premiere machine, par son adresse ip internet? (c'est à
dire celle d'eth1?)


Le mieux est de récupérer l'adresse IP pour la préciser dans le script
(éventuellement dynamiquement). L'autre possibilité est de faire
confiance à la couche IP de linux.

Mais le probleme, c'est que ça n'explique pas l'impossibilité pour la
deuxieme machine de monter la partition nfs de la premiere machine.


Pour finir, il faudrait aussi une règle de LOG à la fin fin de chaque
chaine du type :
iptables -A INPUT -j LOG

Pour voir ce qui est bloqué. Car sur le réseau local rien ne devrait
être bloqué avec tes règles, sauf si :
- tu utilises un firewall sur ton autre machine,
- tu utilises les TCP wrapper sur une des machines,
- tu utilises des noms pour les machines et la résolution par en vrille
car elle utilise des serveurs DNS sur internet.
Dans tous les cas les logs seront utiles.



Merci de répondre à mes questionnements




--
Julien