OVH Cloud OVH Cloud

Iptable et ses méandres

5 réponses
Avatar
longet
Bonjour,

Je me permet de vous demander conseil. En fait j'utilise Iptable
depuis 1 ans après avoir utilisé portfwd sous une debian.

La version de mon noyau est 2.4.19-686-smp.

Bref, j'ai des règles de Nat et port fowarding qui fonctionnaient très
bien depuis 1 an. Et je ne sais pour quelle raison, ces dernières ne
fonctionnent plus.

En gros j'ai donc un serveur debian qui fait routeur Adsl. Dans ce
dernier des règles de translation d'adresse me permettaient de me
connecter sur des ports de machines du réseau interne.

Du jour au lendemain, mais évidement je ne sais plus quand, cela n'a
plus fonctionné.

Je tente donc ma chance auprès de vous, voir si vous pouvez m'aider.

Voici les règles que j'applique :


#!/bin/sh

IPTABLES=iptables

IFCONFIG=ifconfig

AWK=awk



EXTIF="ppp0"

INTIF="eth1"

EXTIP="`$IFCONFIG $EXTIF | $AWK \

/$EXTIF/'{next}//{split($0,a,":");split(a[2],a," ");print
a[1];exit}'`"



echo " External IP: $EXTIP"

echo " ---"

echo " External Interface: $EXTIF"

echo " Internal Interface: $INTIF"

echo " ---"



#VNC

PORTFWIP="192.168.1.10"

$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -p tcp --dport 5900 -m state
--state NEW,ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A PREROUTING -t nat -p tcp -d $EXTIP --dport 5900 -j DNAT
--to $PORTFWIP

echo " Connexion VNC dispo"





Pourriez vous me dire si vous trouvez quelque chose de louche.

Je vous remercie encore pour votre future aide.



Voici à titre indicatif ce que me donne le kernel :



Feb 3 17:18:31 kernel: IN=ppp0 OUT=eth1 SRC=81.249.107.145
DST=192.168.1.3 LEN=48 TOS=0x00 PREC=0x00 TTL=121 ID=12655 DF
PROTO=TCP SPT=4845 DPT=80 WINDOW=16384 RES=0x00 SYN URGP=0



Merci encore



Cordialement
Jérome Longet

5 réponses

Avatar
andrei
Jerome wrote:

Bonjour,

Je me permet de vous demander conseil. En fait j'utilise Iptable
depuis 1 ans après avoir utilisé portfwd sous une debian.

La version de mon noyau est 2.4.19-686-smp.

Bref, j'ai des règles de Nat et port fowarding qui fonctionnaient très
bien depuis 1 an. Et je ne sais pour quelle raison, ces dernières ne
fonctionnent plus.

En gros j'ai donc un serveur debian qui fait routeur Adsl. Dans ce
dernier des règles de translation d'adresse me permettaient de me
connecter sur des ports de machines du réseau interne.

Du jour au lendemain, mais évidement je ne sais plus quand, cela n'a
plus fonctionné.

Je tente donc ma chance auprès de vous, voir si vous pouvez m'aider.

Voici les règles que j'applique :


#!/bin/sh

IPTABLES=iptables

IFCONFIG=ifconfig

AWK=awk



EXTIF="ppp0"

INTIF="eth1"

EXTIP="`$IFCONFIG $EXTIF | $AWK

/$EXTIF/'{next}//{split($0,a,":");split(a[2],a," ");print
a[1];exit}'`"



echo " External IP: $EXTIP"

echo " ---"

echo " External Interface: $EXTIF"

echo " Internal Interface: $INTIF"

echo " ---"



#VNC

PORTFWIP="192.168.1.10"

$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -p tcp --dport 5900 -m state
--state NEW,ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A PREROUTING -t nat -p tcp -d $EXTIP --dport 5900 -j DNAT
--to $PORTFWIP

echo " Connexion VNC dispo"





Pourriez vous me dire si vous trouvez quelque chose de louche.

Je vous remercie encore pour votre future aide.



Voici à titre indicatif ce que me donne le kernel :



Feb 3 17:18:31 kernel: IN=ppp0 OUT=eth1 SRC.249.107.145
DST2.168.1.3 LENH TOS=0x00 PREC=0x00 TTL1 ID655 DF
PROTO=TCP SPTH45 DPT€ WINDOW384 RES=0x00 SYN URGP=0



Merci encore



Cordialement
Jérome Longet
plutot que de t'embeter a programmer les iptables laisse des programmes le

faire, essai donc de faire un petit :
apt-get install fwbuilder
et demande lui de te configurer un fire wall avec routage
c'est nickel tout se fait soit a l'aide de wizard soit graphiquement a la
souris

sinon dans ton script (je pas non plus un expert) j'ai vu qu'il n'y avait
pas de regles pour le firewall, peut etre qu'une personne mal-intentionnée
s'est introduite sur ton ordinateur
essais de voir tes logs sur la periode concernée

Avatar
Julien Salgado
Jerome a écrit :
Bonjour,



Bonjour,

Je me permet de vous demander conseil. En fait j'utilise Iptable
depuis 1 ans après avoir utilisé portfwd sous une debian.

La version de mon noyau est 2.4.19-686-smp.


As-tu upgradé (par package) iptables ? car si c'est le cas il est
possible que ta version d'iptables ne soit pas à jour avec ton noyau.

$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -p tcp --dport 5900 -m state
--state NEW,ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A PREROUTING -t nat -p tcp -d $EXTIP --dport 5900 -j DNAT
--to $PORTFWIP


C'est bon... si il n'y a pas de règle plus prioritaire qui bloquerait le
traffic.

Feb 3 17:18:31 kernel: IN=ppp0 OUT=eth1 SRC.249.107.145
DST2.168.1.3 LENH TOS=0x00 PREC=0x00 TTL1 ID655 DF
PROTO=TCP SPTH45 DPT€ WINDOW384 RES=0x00 SYN URGP=0


J'en déduis qu'il y a d'autres règles. Je te conseille de regarder
l'ensemble de tes règles en utilisant "iptables-save" ou "iptables -L",
j'ai une petite préférence pour la première puisque tu vois les règles
comen tu pourrais les taper. Et de voir si tu ne DROP pas les paquets
plus tôt que prévu.

Sinon regarde si le forwarding est bien activé (si ce n'est pas le cas
les machines du réseau local ne peuvent pas aller sur internet donc ça
se voit vite).

--
Julien

Avatar
longet
Merci pour votre remarque.
voici le resultat de iptables-save :


# Generated by iptables-save v1.2.9 on Fri Feb 13 14:15:21 2004
*mangle
:PREROUTING ACCEPT [1142:168925]
:INPUT ACCEPT [23021:18805520]
:FORWARD ACCEPT [18524:7021735]
:OUTPUT ACCEPT [907:90025]
:POSTROUTING ACCEPT [37337:8848704]
COMMIT
# Completed on Fri Feb 13 14:15:21 2004
# Generated by iptables-save v1.2.9 on Fri Feb 13 14:15:21 2004
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -s 127.0.0.0/255.0.0.0 -i ! lo -j LOG
-A INPUT -s 127.0.0.0/255.0.0.0 -i ! lo -j DROP
-A INPUT -d 255.255.255.255 -i eth1 -j ACCEPT
-A INPUT -s 192.168.1.0/255.255.255.0 -i eth1 -j ACCEPT
-A INPUT -d 224.0.0.0/240.0.0.0 -i eth1 -p ! tcp -j ACCEPT
-A INPUT -s 192.168.1.0/255.255.255.0 -i ppp0 -j LOG
-A INPUT -s 192.168.1.0/255.255.255.0 -i ppp0 -j DROP
-A INPUT -d 255.255.255.255 -i ppp0 -j ACCEPT
-A INPUT -d 81.248.160.248 -i ppp0 -j ACCEPT
-A INPUT -j LOG
-A INPUT -j DROP
-A FORWARD -s 192.168.1.0/255.255.255.0 -i eth1 -o ppp0 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d 192.168.1.0/255.255.255.0 -o ppp0 -j LOG
-A FORWARD -d 192.168.1.0/255.255.255.0 -o ppp0 -j DROP
-A FORWARD -j LOG
-A FORWARD -j DROP
-A FORWARD -i ppp0 -o eth1 -p tcp -m tcp --dport 5900 -m state --state
NEW,RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -d 255.255.255.255 -o eth1 -j ACCEPT
-A OUTPUT -d 192.168.1.0/255.255.255.0 -o eth1 -j ACCEPT
-A OUTPUT -d 224.0.0.0/240.0.0.0 -o eth1 -p ! tcp -j ACCEPT
-A OUTPUT -d 192.168.1.0/255.255.255.0 -o ppp0 -j LOG
-A OUTPUT -d 192.168.1.0/255.255.255.0 -o ppp0 -j DROP
-A OUTPUT -d 255.255.255.255 -o ppp0 -j ACCEPT
-A OUTPUT -s 81.248.160.248 -o ppp0 -j ACCEPT
-A OUTPUT -j LOG
-A OUTPUT -j DROP
COMMIT
# Completed on Fri Feb 13 14:15:21 2004
# Generated by iptables-save v1.2.9 on Fri Feb 13 14:15:21 2004
*nat
:PREROUTING ACCEPT [57:4447]
:POSTROUTING ACCEPT [35:2299]
:OUTPUT ACCEPT [35:2299]
-A PREROUTING -d 81.248.160.248 -p tcp -m tcp --dport 5900 -j DNAT
--to-destination 192.168.1.10
-A POSTROUTING -s 192.168.1.0/255.255.255.0 -o ppp0 -j MASQUERADE
COMMIT
# Completed on Fri Feb 13 14:15:21 2004


J'ai bien en effet changé la version via un upgrade, mais normalement,
j'aurais du avoir une alerte au niveau du kernel ou sur un log,
indiquant que iptables n'est pas compatible...

Les autres PC ont toujours accès à internet....

Je ne sais toujours pas le pquoi du comment ...

Merci en tout cas de vos réponses.

Jerome


Julien Salgado wrote in message news:...
Jerome a écrit :
Bonjour,



Bonjour,

Je me permet de vous demander conseil. En fait j'utilise Iptable
depuis 1 ans après avoir utilisé portfwd sous une debian.

La version de mon noyau est 2.4.19-686-smp.


As-tu upgradé (par package) iptables ? car si c'est le cas il est
possible que ta version d'iptables ne soit pas à jour avec ton noyau.

$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -p tcp --dport 5900 -m state
--state NEW,ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A PREROUTING -t nat -p tcp -d $EXTIP --dport 5900 -j DNAT
--to $PORTFWIP


C'est bon... si il n'y a pas de règle plus prioritaire qui bloquerait le
traffic.

Feb 3 17:18:31 kernel: IN=ppp0 OUT=eth1 SRC.249.107.145
DST2.168.1.3 LENH TOS=0x00 PREC=0x00 TTL1 ID655 DF
PROTO=TCP SPTH45 DPT€ WINDOW384 RES=0x00 SYN URGP=0


J'en déduis qu'il y a d'autres règles. Je te conseille de regarder
l'ensemble de tes règles en utilisant "iptables-save" ou "iptables -L",
j'ai une petite préférence pour la première puisque tu vois les règles
comen tu pourrais les taper. Et de voir si tu ne DROP pas les paquets
plus tôt que prévu.

Sinon regarde si le forwarding est bien activé (si ce n'est pas le cas
les machines du réseau local ne peuvent pas aller sur internet donc ça
se voit vite).



Avatar
Julien Salgado
Jerome a écrit :
Merci pour votre remarque.
voici le resultat de iptables-save :

J'en profite pour faire quelques commentaires rapides.


# Generated by iptables-save v1.2.9 on Fri Feb 13 14:15:21 2004
*mangle
:PREROUTING ACCEPT [1142:168925]
:INPUT ACCEPT [23021:18805520]
:FORWARD ACCEPT [18524:7021735]
:OUTPUT ACCEPT [907:90025]
:POSTROUTING ACCEPT [37337:8848704]
COMMIT
# Completed on Fri Feb 13 14:15:21 2004
# Generated by iptables-save v1.2.9 on Fri Feb 13 14:15:21 2004
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -s 127.0.0.0/255.0.0.0 -i ! lo -j LOG
-A INPUT -s 127.0.0.0/255.0.0.0 -i ! lo -j DROP


Les deux dernières règles ne seront jamais prises en compte car la
première accepte tout... Vu qu'il y a des règles de LOG et de DROP à la
fin il suffit d'une seule ligne :

-A INPUT -s 127.0.0.0/255.0.0.0 -i lo -j ACCEPT


-A INPUT -d 255.255.255.255 -i eth1 -j ACCEPT


Je ne comprend pas l'utilité de cette ligne, à moins d'avoir un serveur
trs mal écrit sur le firewall (ce qui est mal), il n'y a aucune raison
d'accepter les broadcasts globaux.

-A INPUT -s 192.168.1.0/255.255.255.0 -i eth1 -j ACCEPT
-A INPUT -d 224.0.0.0/240.0.0.0 -i eth1 -p ! tcp -j ACCEPT


Cette ligne accepte les multicasts en direction du firewall, est aussi
utile ? Si c'est le cas il vaut mieux préciser le protocol
complétement.

-A INPUT -s 192.168.1.0/255.255.255.0 -i ppp0 -j LOG
-A INPUT -s 192.168.1.0/255.255.255.0 -i ppp0 -j DROP
-A INPUT -d 255.255.255.255 -i ppp0 -j ACCEPT


Voir le commentaire un peu plus haut.

-A INPUT -d 81.248.160.248 -i ppp0 -j ACCEPT


Dangereux et inutile...

-A INPUT -j LOG
-A INPUT -j DROP


Bon principe.

-A FORWARD -s 192.168.1.0/255.255.255.0 -i eth1 -o ppp0 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d 192.168.1.0/255.255.255.0 -o ppp0 -j LOG
-A FORWARD -d 192.168.1.0/255.255.255.0 -o ppp0 -j DROP


Les deux dernières lignes sont une bonnes idée, mais elle devrait être
la première chose vérifiée en sortie pour ppp0
-A FORWARD -j LOG
-A FORWARD -j DROP
-A FORWARD -i ppp0 -o eth1 -p tcp -m tcp --dport 5900 -m state --state
NEW,RELATED,ESTABLISHED -j ACCEPT


Voilà la ligne interessant qui est malheureusement après un DROP
général.

Pour la chaine FORWARD se serait mieux d'avoir :
-A FORWARD -d 192.168.1.0/255.255.255.0 -o ppp0 -j LOG
-A FORWARD -d 192.168.1.0/255.255.255.0 -o ppp0 -j DROP
-A FORWARD -s 192.168.1.0/255.255.255.0 -i eth1 -o ppp0 -j ACCEPT
-A FORWARD -d 192.168.1.10 -i ppp0 -o eth1 -p tcp
-m tcp --dport 5900 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j LOG
-A FORWARD -j DROP


-A OUTPUT -o lo -j ACCEPT

-A OUTPUT -d 255.255.255.255 -o eth1 -j ACCEPT
Même remarque que pour la chaine INPUT


-A OUTPUT -d 192.168.1.0/255.255.255.0 -o eth1 -j ACCEPT
-A OUTPUT -d 224.0.0.0/240.0.0.0 -o eth1 -p ! tcp -j ACCEPT


Même remarque que pour la chaine INPUT

-A OUTPUT -d 192.168.1.0/255.255.255.0 -o ppp0 -j LOG
-A OUTPUT -d 192.168.1.0/255.255.255.0 -o ppp0 -j DROP


OK

-A OUTPUT -d 255.255.255.255 -o ppp0 -j ACCEPT


Même remarque que pour la chaine INPUT

-A OUTPUT -s 81.248.160.248 -o ppp0 -j ACCEPT


Attention cette ligne autorise quasiment tout packet IP émis par le
firewall à aller sur internet... Il serait plus sûr de restreindre un
peu.

-A OUTPUT -j LOG
-A OUTPUT -j DROP
COMMIT
# Completed on Fri Feb 13 14:15:21 2004
# Generated by iptables-save v1.2.9 on Fri Feb 13 14:15:21 2004
*nat
:PREROUTING ACCEPT [57:4447]
:POSTROUTING ACCEPT [35:2299]
:OUTPUT ACCEPT [35:2299]
-A PREROUTING -d 81.248.160.248 -p tcp -m tcp --dport 5900 -j DNAT
--to-destination 192.168.1.10
-A POSTROUTING -s 192.168.1.0/255.255.255.0 -o ppp0 -j MASQUERADE
COMMIT
# Completed on Fri Feb 13 14:15:21 2004


J'ai bien en effet changé la version via un upgrade, mais normalement,
j'aurais du avoir une alerte au niveau du kernel ou sur un log,
indiquant que iptables n'est pas compatible...


Il peut juet dire que la syntaxe n'est pas correcte... mais ce n'est pas
le cas ici.

--
Julien

Avatar
longet
Merci encore, je viens de comprendre que les packets sont droppés au
passage. Je ne suis malheureusement pas un admin réseau, je rame un
peu parfois..... Et ma question évidente est comment passer mes règles
avant le Drop ????

Je recherche le fichier de config "Routeur" de ma machine, mais je ne
le trouve pas.

En fait si vous trouvez que la config est un peu ollé, c'est que c'est
tout simplement la debian qui me l'a fait. Lors de la config de ppp,
en gros j'ai activé le partage de connexion....

Je me suis juste occupé de fermer tous les daemons qui ne servaient à
rien. Cela explique cette config "de base"..

Si vous pouviez encore m'aider sur ce coup..... Je vous en remercie
d'avance.

Jerome

Julien Salgado .ignore.invalid> wrote in message news:...
Jerome a écrit :
Merci pour votre remarque.
voici le resultat de iptables-save :

J'en profite pour faire quelques commentaires rapides.


# Generated by iptables-save v1.2.9 on Fri Feb 13 14:15:21 2004
*mangle
:PREROUTING ACCEPT [1142:168925]
:INPUT ACCEPT [23021:18805520]
:FORWARD ACCEPT [18524:7021735]
:OUTPUT ACCEPT [907:90025]
:POSTROUTING ACCEPT [37337:8848704]
COMMIT
# Completed on Fri Feb 13 14:15:21 2004
# Generated by iptables-save v1.2.9 on Fri Feb 13 14:15:21 2004
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -s 127.0.0.0/255.0.0.0 -i ! lo -j LOG
-A INPUT -s 127.0.0.0/255.0.0.0 -i ! lo -j DROP


Les deux dernières règles ne seront jamais prises en compte car la
première accepte tout... Vu qu'il y a des règles de LOG et de DROP à la
fin il suffit d'une seule ligne :

-A INPUT -s 127.0.0.0/255.0.0.0 -i lo -j ACCEPT


-A INPUT -d 255.255.255.255 -i eth1 -j ACCEPT


Je ne comprend pas l'utilité de cette ligne, à moins d'avoir un serveur
trs mal écrit sur le firewall (ce qui est mal), il n'y a aucune raison
d'accepter les broadcasts globaux.

-A INPUT -s 192.168.1.0/255.255.255.0 -i eth1 -j ACCEPT
-A INPUT -d 224.0.0.0/240.0.0.0 -i eth1 -p ! tcp -j ACCEPT


Cette ligne accepte les multicasts en direction du firewall, est aussi
utile ? Si c'est le cas il vaut mieux préciser le protocol
complétement.

-A INPUT -s 192.168.1.0/255.255.255.0 -i ppp0 -j LOG
-A INPUT -s 192.168.1.0/255.255.255.0 -i ppp0 -j DROP
-A INPUT -d 255.255.255.255 -i ppp0 -j ACCEPT


Voir le commentaire un peu plus haut.

-A INPUT -d 81.248.160.248 -i ppp0 -j ACCEPT


Dangereux et inutile...

-A INPUT -j LOG
-A INPUT -j DROP


Bon principe.

-A FORWARD -s 192.168.1.0/255.255.255.0 -i eth1 -o ppp0 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d 192.168.1.0/255.255.255.0 -o ppp0 -j LOG
-A FORWARD -d 192.168.1.0/255.255.255.0 -o ppp0 -j DROP


Les deux dernières lignes sont une bonnes idée, mais elle devrait être
la première chose vérifiée en sortie pour ppp0
-A FORWARD -j LOG
-A FORWARD -j DROP
-A FORWARD -i ppp0 -o eth1 -p tcp -m tcp --dport 5900 -m state --state
NEW,RELATED,ESTABLISHED -j ACCEPT


Voilà la ligne interessant qui est malheureusement après un DROP
général.

Pour la chaine FORWARD se serait mieux d'avoir :
-A FORWARD -d 192.168.1.0/255.255.255.0 -o ppp0 -j LOG
-A FORWARD -d 192.168.1.0/255.255.255.0 -o ppp0 -j DROP
-A FORWARD -s 192.168.1.0/255.255.255.0 -i eth1 -o ppp0 -j ACCEPT
-A FORWARD -d 192.168.1.10 -i ppp0 -o eth1 -p tcp
-m tcp --dport 5900 -m state --state NEW,ESTABLISHED -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j LOG
-A FORWARD -j DROP


-A OUTPUT -o lo -j ACCEPT

-A OUTPUT -d 255.255.255.255 -o eth1 -j ACCEPT
Même remarque que pour la chaine INPUT


-A OUTPUT -d 192.168.1.0/255.255.255.0 -o eth1 -j ACCEPT
-A OUTPUT -d 224.0.0.0/240.0.0.0 -o eth1 -p ! tcp -j ACCEPT


Même remarque que pour la chaine INPUT

-A OUTPUT -d 192.168.1.0/255.255.255.0 -o ppp0 -j LOG
-A OUTPUT -d 192.168.1.0/255.255.255.0 -o ppp0 -j DROP


OK

-A OUTPUT -d 255.255.255.255 -o ppp0 -j ACCEPT


Même remarque que pour la chaine INPUT

-A OUTPUT -s 81.248.160.248 -o ppp0 -j ACCEPT


Attention cette ligne autorise quasiment tout packet IP émis par le
firewall à aller sur internet... Il serait plus sûr de restreindre un
peu.

-A OUTPUT -j LOG
-A OUTPUT -j DROP
COMMIT
# Completed on Fri Feb 13 14:15:21 2004
# Generated by iptables-save v1.2.9 on Fri Feb 13 14:15:21 2004
*nat
:PREROUTING ACCEPT [57:4447]
:POSTROUTING ACCEPT [35:2299]
:OUTPUT ACCEPT [35:2299]
-A PREROUTING -d 81.248.160.248 -p tcp -m tcp --dport 5900 -j DNAT
--to-destination 192.168.1.10
-A POSTROUTING -s 192.168.1.0/255.255.255.0 -o ppp0 -j MASQUERADE
COMMIT
# Completed on Fri Feb 13 14:15:21 2004


J'ai bien en effet changé la version via un upgrade, mais normalement,
j'aurais du avoir une alerte au niveau du kernel ou sur un log,
indiquant que iptables n'est pas compatible...


Il peut juet dire que la syntaxe n'est pas correcte... mais ce n'est pas
le cas ici.