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

Problème de passerelle

8 réponses
Avatar
pascal
Bonjour,

Voici le contenu du script qui initialise le partage de connexion:

#!/bin/bash
IFLAN=3Deth1
IFEXT=3Deth0

echo "Activation du Firewall : blocage de tout le traffic"
iptables -A INPUT -j DROP
iptables -A OUPUT -j DROP
iptables -A FORWARD -j DROP

echo -n "[Activation du partage de connexion]"
echo 1 > /proc/sys/net/ipv4/ip_forward
echo -n "[Activation du masqueradind]"
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A INPUT -i $IFLAN -p tcp --dport 1111 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 4662 -j ACCEPT
iptables -A FORWARD -p tcp --dport 4662 -j ACCEPT
iptables -A INPUT -i $IFLAN -p tcp --dport 1112 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 4663 -j ACCEPT
iptables -A FORWARD -p tcp --dport 4663 -j ACCEPT

iptables -A INPUT -i $IFLAN -p udp --dport 1111 -j ACCEPT
iptables -A OUTPUT -p udp --dport 4662 -j ACCEPT
iptables -A FORWARD -p udp --dport 4662 -j ACCEPT
iptables -A INPUT -i $IFLAN -p udp --dport 1112 -j ACCEPT
iptables -A OUTPUT -p udp --dport 4663 -j ACCEPT
iptables -A FORWARD -p udp --dport 4663 -j ACCEPT

echo -n "On laisse tout ouvert vers le net"
iptables -A OUTPUT -o $IFEXT -j ACCEPT

echo -n "autorise les r=C3=A9ponses de l'Internet vers mon LAN"
iptables -A FORWARD -j ACCEPT -m state --state established,related


Mais depuis deux jours lorsque j'active ce partage de connexion alors =20
mon serveur web (h=C3=A9berg=C3=A9 par ma machine debian qui est connect=C3=
=A9e =C3=A0 =20
internet) n'est plus accessible.

Qu'est-ce qui peut bien se mettre =C3=A0 foirer comme =C3=A7a, d'un coup ?

Quelles sont les lignes de ce script que je dois garder pour ne =20
partager que les connexions sur le port 80 ? Et est-ce que cela =20
suffira pour que les clients W$ puissent continuer =C3=A0 utiliser leur IM =
=20
? Ou pour chaque IM est-il n=C3=A9cessaire d'ouvrir un port particulier ?

Cordialement

Pascal

----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.

8 réponses

Avatar
Serge Cavailles
Le Mardi 26 Décembre 2006 14:17, a écrit  :
Bonjour,


Bonjour,

Voici le contenu du script qui initialise le partage de connexion:


[...]
iptables -A INPUT -j DROP


[...]
iptables -A INPUT -i $IFLAN -p tcp --dport 1111 -j ACCEPT


[...]
iptables -A INPUT -i $IFLAN -p tcp --dport 1112 -j ACCEPT


[...]
iptables -A INPUT -i $IFLAN -p udp --dport 1111 -j ACCEPT


[...]
iptables -A INPUT -i $IFLAN -p udp --dport 1112 -j ACCEPT



Les requêtes en provenance de $IFLAN à destination du port 80 du routeur sur
lequel tourne le script ne passent déjà pas les règles INPUT de celui-ci.

iptables -A INPUT -i $IFLAN -p tcp --dport 80 -j ACCEPT
permettrait l'accès depuis le lan au serveur web de l'hôte, pour autant que
le serveur web écoute sur cet interface.

Pour que le client reçoive sa réponse, il faudra de plus ajouter
iptables -A OUTPUT -o $IFLAN -p tcp --sport 80 -j ACCEPT
(ou bien utiliser le state related)

Vous partez d'une config qui droppe tout. Il est nécessaire dans ce ca s
d'autoriser le traffic pour chaque table à traverser de chaque interfa ce,
et pour chaque protocole (dport) souhaité.

echo -n "On laisse tout ouvert vers le net"
iptables -A OUTPUT -o $IFEXT -j ACCEPT



Cela revient à laisser OUTPUT en ACCEPT.

Une bonne lecture en français pour bien comprendre Netfilter et
l'utilisation d'iptables:
http://christian.caleca.free.fr/netfilter/

Cordialement


HTH - bon courage :-)
--
Serge
Avatar
Pascal Hambourg
Salut,

a écrit :

Voici le contenu du script qui initialise le partage de connexion:

#!/bin/bash
IFLAN=eth1
IFEXT=eth0


[...]
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


^^^^
C'est bien la peine d'avoir défini des variables. ;-)

[...]
echo -n "autorise les réponses de l'Internet vers mon LAN"
iptables -A FORWARD -j ACCEPT -m state --state established,related



Note : cette règle n'autorise pas seulement les réponses de l'internet
vers le LAN mais de n'importe où vers n'importe où puisqu'aucune
interface d'entrée ni de sortie n'est spécifiée. Aussi, cette règle
gagne à être placée en début de chaîne car elle ramasse gnéralement la
majorité des paquets.

Mais depuis deux jours lorsque j'active ce partage de connexion alors
mon serveur web (hébergé par ma machine debian qui est connectée à
internet) n'est plus accessible.

Qu'est-ce qui peut bien se mettre à foirer comme ça, d'un coup ?



En fait, ce qui est étonnant c'est que jusqu'ici le serveur ait été
accessible avec ces règles. ;-) Comme Serge l'a relevé, aucune règle
n'accepte les connexions entrantes sur le port TCP 80.

Quelles sont les lignes de ce script que je dois garder pour ne
partager que les connexions sur le port 80 ?



Qu'entends-tu exactement par "partager les connexions sur le port 80" ?

Et est-ce que cela suffira
pour que les clients W$ puissent continuer à utiliser leur IM ? Ou pour
chaque IM est-il nécessaire d'ouvrir un port particulier ?



Ça dépend du protocole de messagerie instantanée des clients (MSN,
Yahoo, AOL...)


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Pascal Hambourg
Serge Cavailles a écrit :

iptables -A INPUT -i $IFLAN -p tcp --dport 80 -j ACCEPT
permettrait l'accès depuis le lan au serveur web de l'hôte, pour autant que
le serveur web écoute sur cet interface.



J'aurais tendance à penser qu'un serveur écoute généralement sur une
adresse plutôt qu'une interface, sauf cas particuliers comme DHCP.

Pour que le client reçoive sa réponse, il faudra de plus ajouter
iptables -A OUTPUT -o $IFLAN -p tcp --sport 80 -j ACCEPT



C'est mal de se baser seulement sur le port source. Gros trou de
sécurité en vue.

(ou bien utiliser le state related)



Les paquets de réponse sont plutôt classés dans l'état ESTABLISHED.
RELATED c'est pour les messages d'erreur ICMP et les connexions liées
des protocoles compliqués comme FTP.

echo -n "On laisse tout ouvert vers le net"
iptables -A OUTPUT -o $IFEXT -j ACCEPT



Cela revient à laisser OUTPUT en ACCEPT.



Pas tout à fait : ça n'accepte que ce qui sort vers l'extérieur mais pas
vers le LAN.


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
pascal
Quoting Pascal Hambourg :

Salut,



Bonsoir Pascal,


a écrit :

Voici le contenu du script qui initialise le partage de connexion:

#!/bin/bash
IFLAN=eth1
IFEXT=eth0


[...]
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


^^^^
C'est bien la peine d'avoir défini des variables. ;-)

[...]
echo -n "autorise les réponses de l'Internet vers mon LAN"
iptables -A FORWARD -j ACCEPT -m state --state established,related



Note : cette règle n'autorise pas seulement les réponses de
l'internet vers le LAN mais de n'importe où vers n'importe où
puisqu'aucune interface d'entrée ni de sortie n'est spécifià ©e.
Aussi, cette règle gagne à être placée en début d e chaîne car elle
ramasse gnéralement la majorité des paquets.

Mais depuis deux jours lorsque j'active ce partage de connexion
alors mon serveur web (hébergé par ma machine debian qui est
connectée à internet) n'est plus accessible.

Qu'est-ce qui peut bien se mettre à foirer comme ça, d'un coup ?



En fait, ce qui est étonnant c'est que jusqu'ici le serveur ait à ©té
accessible avec ces règles. ;-) Comme Serge l'a relevé, aucune r ègle
n'accepte les connexions entrantes sur le port TCP 80.



Ce n'est pas moi qui ai écrit ce script. Et pour cause: je ne connais
rien à iptables.
Mais tel que je l'ai copié dans mont premier post il a fonctionné
pendant des semaines. Et là, tout à coup, plouf.... dès que j e
l'active, mon serveur web ne répond plus.

Je viens de lire quelques docs et effectivement il semble que la ligne
iptables -A FORWARD -j ACCEPT -m state --state established,related

doivent être placée en premier.


Quelles sont les lignes de ce script que je dois garder pour ne
partager que les connexions sur le port 80 ?



Qu'entends-tu exactement par "partager les connexions sur le port 80" ?



Je voulais parler de règles qui n'autorisent que le protocole HTTP (et HTTPS).

En fait, j'ai deux soucis:

1°/ Pourquoi ces rèsgles qui fonctionnaient semblent merder tout à coup ?

2°/ Au départ, je ne souhaite faire que du NAT (sans aucun filtrag e)
pour simplement partager ma connexion avec le PC XP de mon amie. Mais
son client P2P semble me prendre beaucoup de bande passante. Alors je
me dis que ce serait bien d'avoir deux scripts:
un qui autorise tout
et un qui autorise tout souf les connexions/requêtes sur les ports
utilisés par le clients P2P (j'ai remarqué que même si le cli ent P2P
est arrêté, il y a plein de requêtes qui arrivent tout de m ême en
direction des ports du client P2P).


Et est-ce que cela suffira pour que les clients W$ puissent
continuer à utiliser leur IM ? Ou pour chaque IM est-il nécess aire
d'ouvrir un port particulier ?



Ça dépend du protocole de messagerie instantanée des client s (MSN,
Yahoo, AOL...)



Elle utilise MSN et Gajim (jabber)

Cordialement

Pascal


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot
``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact org





----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
Avatar
Serge Cavailles
Je me doutais bien que si vous passiez par là je me ferais ramasser :-)

> (ou bien utiliser le state related)

Les paquets de réponse sont plutôt classés dans l'état ESTABLISHE D.
RELATED c'est pour les messages d'erreur ICMP et les connexions liées
des protocoles compliqués comme FTP.


Oups, erreur de ma part effectivement.

--
Serge
Avatar
Serge Cavailles
Le Mardi 26 Décembre 2006 23:06, a écrit  :

1°/ Pourquoi ces rèsgles qui fonctionnaient semblent merder tou t à coup ?



A mon avis, soit le script n'était pas lancé auparavant, soit un autre
script ajoutait des règles à celles-ci.

Vous avez supprimé un autre script contenant des règles iptables sur cette
machine? désinstallé un parefeu?

--
Serge
Avatar
pascal
Quoting Serge Cavailles :

Je pense (cela reste à confirmer) que mon problème est dû à   une
"erreur" que j'ai commise il y a quelques temps. Alors que je faisais
des essais de config sur le fichier de conf de apache quelqu'un a eu
le temps de voir des répertoires placés à la racine de mon se rveur,
dont l'un contient des films. Et en regardant les logs de Apache je me
suis rendu compte que lorsque cette personne téléchargeait un de m es
films cela coïncidait avec des timeout lors de l'accès à mon serveur
web. Et depuis que j'ai renommé le susdit répertoire je ne constat e
plus de timeout.

Cordialement

Pascal

Le Mardi 26 Décembre 2006 23:06, a écrit  :

1°/ Pourquoi ces rèsgles qui fonctionnaient semblent merder tou t à coup ?



A mon avis, soit le script n'était pas lancé auparavant, soit un autre
script ajoutait des règles à celles-ci.

Vous avez supprimé un autre script contenant des règles iptables sur cette
machine? désinstallé un parefeu?

--
Serge









----------------------------------------------------------------
This message was sent using IMP, the Internet Messaging Program.
Avatar
Serge Cavailles
Le Mercredi 27 Décembre 2006 01:32, a écrit  :
Je pense (cela reste à confirmer) que mon problème est dû à une
"erreur" que j'ai commise il y a quelques temps. Alors que je faisais
des essais de config sur le fichier de conf de apache quelqu'un a eu
le temps de voir des répertoires placés à la racine de mon serveur,
dont l'un contient des films. Et en regardant les logs de Apache je me
suis rendu compte que lorsque cette personne téléchargeait un d e mes
films cela coïncidait avec des timeout lors de l'accès à m on serveur
web. Et depuis que j'ai renommé le susdit répertoire je ne cons tate
plus de timeout.



Celà n'explique en aucun cas comment se fait la connection quand elle se
fait. Comme dit, il n'y a là aucune règle permettant de se connec ter depuis
le lan au serveur web, ni sur son IP publique, ni privée. Il doit y av oir
ailleurs d'autres régles (un parefeu ?). L'ensemble formé par l'a ddition
des règles n'est pas cohérent et peut entrainer des disfonctionne ments (et
déjà tel quel ce script n'est pas un modèle de sécurisa tion). Il serait
prudent AMA de revoir tout celà.

--
Serge