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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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.
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
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.
#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.
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
laforest.michel@free.fr 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.
#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.
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.
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.
#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.
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.