C'est bon j'ai trouvé !!
Vous allez penser que je pose des questions alors que je pourrais etre en 
mesure de trouver les réponses tout seul, mais j'ai passé deux jours rien que 
sur ce problème !! :)
Enfin bref, le problème venait du fait que le firewall ne masqueradait pas 
lorsque les paquets réponse (en provenance du serveur web) étaient envoyé au 
client. J'en conclue donc une règle de base de la communication tcp : lorsque 
un client fait une demande à un serveur, seul le serveur a le droit de lui 
donner la réponse.

Voici donc en vrac les quelques lignes qui ont rendu possible cet exploit !

$IPTABLES -t nat -A PREROUTING -d 192.168.0.3 -p tcp --dport 90 -j DNAT 
--to-destination 192.168.0.5:80

$IPTABLES -A FORWARD -p tcp --destination-port 80 -m state --state 
NEW,INVALID -j ACCEPT

$IPTABLES -A FORWARD -p tcp --source-port 80 -m state --state RELATED -j 
ACCEPT

$IPTABLES -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Les flags tcp sont peut etre à revoir mais je ne maitrise pas encore bien 
appris leur fonctionnement. Enfin, j'écris ces lignes dans l'espoir d'aider 
une ame perdue lorsque ce message sera referéncé par les moteurs de recherche 
! :)

Dario

On Saturday 01 June 2002 19:27, Dario Spagnolo wrote:
> Résultat avec tcpdump :
>
> linfast est le client avec l'adresse 192.168.0.1
> linserv est le firewall avec l'adresse 192.168.0.3
> linweb est le serveur web avec l'adresse 192.168.0.5
>
> Le "dnsix" dans le log du client indique le port 90 du firewall utilisé
> pour la redirection vers le port 80 du serveur web.
>
> Log depuis le serveur :
> 19:21:35.119046 linfast.zaphebergeur.net.33406 >
> linweb.zaphebergeur.net.www: S
> 1260460749:1260460749(0) win 5840 <mss 1460,sackOK,timestamp 8459878[|tcp]>
> (DF) (ttl 63, id 3243, len 60)
> 19:21:35.119107 linweb.zaphebergeur.net.www >
> linfast.zaphebergeur.net.33406: R
> [tcp sum ok] 0:0(0) ack 1260460750 win 0 (DF) (ttl 255, id 0, len 40)
> 19:21:38.114397 linfast.zaphebergeur.net.33406 >
> linweb.zaphebergeur.net.www: S
> 1260460749:1260460749(0) win 5840 <mss 1460,sackOK,timestamp 8460178[|tcp]>
> (DF) (ttl 63, id 3244, len 60)
> 19:21:38.114432 linweb.zaphebergeur.net.www >
> linfast.zaphebergeur.net.33406: R
> [tcp sum ok] 0:0(0) ack 1 win 0 (DF) (ttl 255, id 0, len 40)
> 19:21:44.113851 linfast.zaphebergeur.net.33406 >
> linweb.zaphebergeur.net.www: S
> 1260460749:1260460749(0) win 5840 <mss 1460,sackOK,timestamp 8460778[|tcp]>
> (DF) (ttl 63, id 3245, len 60)
> 19:21:44.113862 linweb.zaphebergeur.net.www >
> linfast.zaphebergeur.net.33406: R
> [tcp sum ok] 0:0(0) ack 1 win 0 (DF) (ttl 255, id 0, len 40)
> 19:21:56.112819 linfast.zaphebergeur.net.33406 >
> linweb.zaphebergeur.net.www: S
> 1260460749:1260460749(0) win 5840 <mss 1460,sackOK,timestamp 8461978[|tcp]>
> (DF) (ttl 63, id 3246, len 60)
> 19:21:56.112838 linweb.zaphebergeur.net.www >
> linfast.zaphebergeur.net.33406: R
> [tcp sum ok] 0:0(0) ack 1 win 0 (DF) (ttl 255, id 0, len 40)
>
> Log depuis le client :
> 19:22:38.814714 linfast.33406 > 192.168.0.3.dnsix: S
> 1260460749:1260460749(0) win 5840 <mss 1460,sackOK,timestamp 8459878[|tcp]>
> (DF) (ttl 64, id 3243, len 60)
> 19:22:38.815036 192.168.0.5.http > linfast.33406: R [tcp sum ok] 0:0(0) ack
> 1260460750 win 0 (DF) (ttl 255, id 0, len 40)
> 19:22:41.810201 linfast.33406 > 192.168.0.3.dnsix: S
> 1260460749:1260460749(0) win 5840 <mss 1460,sackOK,timestamp 8460178[|tcp]>
> (DF) (ttl 64, id 3244, len 60)
> 19:22:41.810612 192.168.0.5.http > linfast.33406: R [tcp sum ok] 0:0(0) ack
> 1 win 0 (DF) (ttl 255, id 0, len 40)
> 19:22:47.810203 linfast.33406 > 192.168.0.3.dnsix: S
> 1260460749:1260460749(0) win 5840 <mss 1460,sackOK,timestamp 8460778[|tcp]>
> (DF) (ttl 64, id 3245, len 60)
> 19:22:47.810531 192.168.0.5.http > linfast.33406: R [tcp sum ok] 0:0(0) ack
> 1 win 0 (DF) (ttl 255, id 0, len 40)
> 19:22:59.810212 linfast.33406 > 192.168.0.3.dnsix: S
> 1260460749:1260460749(0) win 5840 <mss 1460,sackOK,timestamp 8461978[|tcp]>
> (DF) (ttl 64, id 3246, len 60)
> 19:22:59.810492 192.168.0.5.http > linfast.33406: R [tcp sum ok] 0:0(0) ack
> 1 win 0 (DF) (ttl 255, id 0, len 40)
>
>
> Tout ceci m'a l'air très normal, vous ne trouvez pas ? On remarque meme que
> pour le serveur la communication est très transparente et il ne tient meme
> pas compte du firewall. Est-ce que ça pose un problème pour le client s'il
> envoie un paquet SYN à une adresse IP et qu'en réponse il reçoit le paquet
> ACK depuis une autre adresse ? Je remarque que l'id du paquet d'envoi n'est
> pas le meme que celui du paquet de reception... C'est peut-etre pas normal,
> je ne sais pas.
> Le client ne reçoit aucune donnée http du serveur et que la connexion est
> coupée après 4 ou 5 tentatives espacées de quelques secondes.
>
> Je m'appelle à votre savoir ! :)
>
> Merci.
>
> Dario
>
> On Saturday 01 June 2002 14:03, Dario Spagnolo wrote:
> > Salut à tous,
> >
> > je suis sur le point d'installer un serveur apache sur une machine qui
> > n'aura pas accès direct à internet, si ce n'est par une machine faisant
> > office de firewall. Le kernel sur le firewall est un 2.4 donc je pense
> > que ma solution s'appelle iptables. M'étant inspiré de du IP-Masquerade
> > Howto et d'un article sur lea-linux.org, j'ai ajouté ces trois lignes au
> > fichier de config du firewall :
> >
> > #IP du firewall : 192.168.0.3
> > #IP du serveur : 192.168.0.5
> > #Il existe déjà un serveur sur le port 80 dans le firewall lui meme, donc
> > pour l'instant je voudrais que celui du serveur web soit accessible par
> > le port 90 du firewall.
> >
> > PORTFWIP="192.168.0.5"
> > #EXTIP="195.78.18.236"              Pas utilisé, je me contenterais pour 
> > l'instant
> > que le serveur soit accessible par le lan. En plus cette variable devra
> > changer à chaque reconnexion à cause de l'ip dynamique. Donc à voir plus
> > tard.
> >
> > $IPTABLES -t nat -A PREROUTING -d 192.168.0.3 -p tcp --dport 90 -j DNAT
> > --to-destination 192.168.0.5:80
> >
> > $IPTABLES -A FORWARD -i eth0 -o eth0 -p tcp --destination-port 90 -m
> > state --state NEW,ESTABLISHED -j ACCEPT
> >
> > $IPTABLES -A FORWARD -o eth0 -i eth0 -p tcp --source-port 90 -m state
> > --state ESTABLISHED -j ACCEPT
> >
> > Avec ces règles, on dirait que la connection s'établit mais ça ne va pas
> > plus loin. Faudrait que j'analyse ça avec ethereal mais Star Wars Episode
> > II commence dans 15 minutes au cinema ! Je ferais ça plus tard... :)
> >
> > Merci de votre aide !
> >
> > Dario
>
> ___________________________________________________________________________
>___ ifrance.com, l'email gratuit le plus complet de l'Internet !
> vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP...
> http://www.ifrance.com/_reloc/email.emailif
>
>
>
> Linux-Azur :      http://www.linux-azur.org
> Désinscriptions: http://www.linux-azur.org/liste.php3
> **** Pas de message au format HTML, SVP ****
 
______________________________________________________________________________
ifrance.com, l'email gratuit le plus complet de l'Internet !
vos emails depuis un navigateur, en POP3, sur Minitel, sur le WAP...
http://www.ifrance.com/_reloc/email.emailif



Linux-Azur :      http://www.linux-azur.org
Désinscriptions: http://www.linux-azur.org/liste.php3
**** Pas de message au format HTML, SVP ****

Répondre à