iptables / nat -> refuse désespérement de router les paqu

Forum sur la sécurité des réseaux, la configuration des firewalls, la mise en place de protections contre les attaques, de DMZ, de systèmes anti-intrusion ...

Modérateur: modos Ixus

iptables / nat -> refuse désespérement de router les paqu

Messagepar Tazman_FR » 28 Oct 2005 14:53

Salut à tous

depuis quelques temps je cherche à router les connections http avec iptables. Aprés avoir appliqué les principes (enfin visiblement non puisque ca ne marche pas !) des divers sites traitants de la question sur le net (http://www.netfilter.org/, http://www.davidcoulson.net/writing/lxf/39/iptables.pdf, etc ...) pas moyens de faire router les paquets . Voici la règle que j'utilise :


iptables -t nat -A PREROUTING -i eth1 -d 192.168.10.39 -p tcp --dport 80 -j DNAT --to 192.168.10.38


en fait je veux router les connexion tcp port 80 à destionation de mon interface eth1 (192.168.10.39) vers un serveur secondaire (un peux comme si je voulais faire une DMZ.

mais ca marche pas.... une âme charitable pour m'indiquer les chemin ? et les erreures que je commet ?


a+

Tazman

[/quote]
"Un abruti qui marche ira toujours plus loin que deux intellectuels assis" - [M Audiart]
Avatar de l’utilisateur
Tazman_FR
Major
Major
 
Messages: 72
Inscrit le: 27 Mars 2004 16:28
Localisation: France - Toulon

Messagepar E-Mat » 28 Oct 2005 15:01

Bonjour,

Quelle est l'architecture de ton réseau (disposition, adresses privées, publiques, routeurs etc...) ? Peux-tu nous faire un petit schéma pour y voir un peu plus clair ? Ton serveur WEB doit-il être accessible depuis internet ou bien uniquement depuis un autre brin de ton réseau local ?

Matthieu
Avatar de l’utilisateur
E-Mat
Second Maître
Second Maître
 
Messages: 28
Inscrit le: 30 Oct 2003 01:00
Localisation: France - Agen

Messagepar Tazman_FR » 28 Oct 2005 15:15

Bonjour E-Mat

ben voila, je travail sur mon reseau en ip privée, j'ai simplement ceci :


==========
= switch =---------------->station 192.168.10.36
= =
= =
= =
= =---------------->serveur (futur FW) 192.168.10.39 (eth1)
= =
= =
= =
= =---------------->serveur web 192.168.10.38 (eth1)
= =
==========



Je cherche simplement à fair un maquette de routeur / firewall pour a terme le mettre en frontal sur mon install. Seulement comme je ne suis pas encore au point (ca doit se voir ! ) je fais d'abord des essais en ip privée


Donc, je cherche à nater une connection http arrivant sur 192.168.10.39 vers 192.168.10.38 (je commence simplement...et c'est visiblement suffisant ! )

merci pour les réponses

Tazman
"Un abruti qui marche ira toujours plus loin que deux intellectuels assis" - [M Audiart]
Avatar de l’utilisateur
Tazman_FR
Major
Major
 
Messages: 72
Inscrit le: 27 Mars 2004 16:28
Localisation: France - Toulon

Messagepar HaM » 28 Oct 2005 15:48

As tu activé l'IP_FORWARDING :?:
Pour l'activer :
Code: Tout sélectionner
echo "1" > /proc/sys/net/ipv4/ip_forward
Avatar de l’utilisateur
HaM
Amiral
Amiral
 
Messages: 1045
Inscrit le: 31 Juil 2002 00:00
Localisation: Boulogne-Billancourt 92

Messagepar Tazman_FR » 28 Oct 2005 15:57

re,

heu ouaip, voici mon code complet :

#on vide les tables de routage
iptables -X
iptables -F
iptables -t nat -F
iptables -t nat -X

#desactive la restransmission des paquets pendant les modifications
echo "0" > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A PREROUTING -i eth1 -d 192.168.10.39 -p tcp --dport 80 -j DNAT --to 192.168.10.38

#On reactive le forwarding après les modifications
echo "1" > /proc/sys/net/ipv4/ip_forward


heu...voilou

Tazman
"Un abruti qui marche ira toujours plus loin que deux intellectuels assis" - [M Audiart]
Avatar de l’utilisateur
Tazman_FR
Major
Major
 
Messages: 72
Inscrit le: 27 Mars 2004 16:28
Localisation: France - Toulon

Messagepar E-Mat » 28 Oct 2005 17:55

Tu essaye de faire du FORWARDING entre deux machines sur le même brin réseau, je n'en vois pas trop l'intéret même pour faire des tests, en effet autant attaquer directement la machine en questions et ne pas s'embêter avec les IPTABLE.

Bref, le principe d'un FIREWALL (en gros) est d'avoir plusieurs interfaces réseaux et de filtrer le flux entre chacunes d'entre elles. Dans ton cas ton FIREWALL n'en a qu'une... Donc il ne peut pas faire office de FW... Il te faut donc rajouter une carte réseau sur ton FW (eth0 + eth1) avec un nouvelle IP ensuite suivant ce schémas type ==>


--> Station Cliente (ip: 192.168.10.36)
|
|brin réseau 192.168.10.0/24
|
-----------------------------------------------
-->eth0 (ip: 192.168.10.1)
PC LINUX FIREWALL IPTABLES
-->eth1 (ip: 192.168.20.1)
-----------------------------------------------
|
|brin réseau 192.168.20.0/24
|
--> Serveur Web (ip: 192.168.20.38)


Comme le montre le schéma précédent s'il est compréhensible, le Firewall sert d'interconnexion entre les brin réseaux 192.168.10.0/24 (ex réseau public) et le brin réseau 192.168.20.0/24 (réseau privé ou DMZ).

Les machines du réseau 192.168.10.0/24 ne peux pas voir les machines du réseau 192.168.20.0/24 puisque cachées par le Firewall via l'IP (publique) 192.168.10.1 . Pour atteindre le serveur WEB, le client 192.168.10.36 va faire une requette HTTP sur le FIREWALL donc sur le port TCP 80 à l'ip 192.168.10.1 (et non sur 192.168.20.38 puisqu'invisible).

Le firewall lui, grâce à la ligne aux lignes IPTABLE suivantes :

iptables -A FORWARD -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.20.38 (Syntaxe à vérifier)


Le firewall donc, va récupérer la requette de la station cliente et replacer l'adresse IP de destination 192.168.10.1 par 192.168.20.38 puis la transferer sur son interface eth1 et le brin réseau 192.168.20.0/24. Cette requette sera donc réceptionnée par le serveur WEB qui aura bien évidemment comme passerelle l'IP 192.168.20.1 .

De plus, toutes les machines du réseaux local (ou DMZ) qui émettent des trames vers le réseau public 192.168.10.0/24 doivent, avant de sortir, avoir comme adresse IP source l'ip publique du firewall (soit 192.168.10.1) pour que les machines du réseau public puissent répondre. C'est bien évidemment le FIREWALL qui va se charger de cela via la ligne iptables suivante :

iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -j SNAT --to-source 192.168.10.1 (syntaxe à vérifier également)


Voilà, j'espère ne pas avoir été trop compliqué et qu'avec tt ça tu arrivera à faire tes tests. Il faut que je regarde sur mes docs si les syntaxes des IPTABLES sont bonnes, je te confirme plus tard, mais au moins tu as le principe de fonctionnement.

Si tu as des questions...

Bon courage
Avatar de l’utilisateur
E-Mat
Second Maître
Second Maître
 
Messages: 28
Inscrit le: 30 Oct 2003 01:00
Localisation: France - Agen

Messagepar bebertjack » 02 Nov 2005 13:51

Bonjour,

Il existe un soft pour configurer IPTABLE c'est fwbuilder.

Dans le fichier de politique qu'il génére les régles sont en clair, donc tu peut voir comment faire du nat par exemple.

Il nécessite l'installation (au moins) de X;

Sinon une version windows existe (payante mais version d'éval existante)

http://www.netcitadel.com/p/cat_fwb_gui_download.html


Bebertjack
bebertjack
Major
Major
 
Messages: 71
Inscrit le: 30 Mars 2004 11:23

re Nat + iptables

Messagepar Tazman_FR » 02 Nov 2005 19:23

Salut a tous,

désolé pour le lag dans la réponse, mais le week end à été long ;) !

je vais tester tous ca ! et merci pour les infos E-mat et bebertjack !

a+

tazman
"Un abruti qui marche ira toujours plus loin que deux intellectuels assis" - [M Audiart]
Avatar de l’utilisateur
Tazman_FR
Major
Major
 
Messages: 72
Inscrit le: 27 Mars 2004 16:28
Localisation: France - Toulon

Messagepar PsYKrO » 04 Nov 2005 14:34

euh je sais pas si ca va faire quelque chose

mais moi je marque au lieu de ça

Code: Tout sélectionner
iptables -t nat -A PREROUTING -i eth1 -d 192.168.10.39 -p tcp --dport 80 -j DNAT --to 192.168.10.38


Je met

Code: Tout sélectionner
iptables -t nat -A PREROUTING -i eth1 -d 192.168.10.39 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.38


car moi si je ne met pas --to-destination ... ca marche pas mon NAT...
Un voyage de 1000 lieux a commencé par un pas !
Avatar de l’utilisateur
PsYKrO
Aspirant
Aspirant
 
Messages: 125
Inscrit le: 09 Nov 2004 09:40

re iptables

Messagepar Tazman_FR » 14 Nov 2005 19:22

Rhââ,

refuse toujours de fonctionner.... je ne comprend pas, j'ai monté un serveur web sur une ip 192.168.20.10, sur un deuxieme, j'ai une interface sur 192.168.10.39 et une autre sur 192.168.20.20, pourtant j'ai refait soigneusement mes regles et je comprend pas pourquoi ca ne fait pas la translation...


voici mon script :


#on vide les tables de routage
iptables -X
iptables -F
iptables -t nat -F
iptables -t nat -X

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

IF_EXT=eth1
IF_INT=eth0
NET_WAN="0.0.0.0/24"
NET_DMZ="192.168.20.0/24"


iptables -A FORWARD -i $IF_EXT -o $IF_INT -s $NET_WAN -d 192.168.20.10 -p tcp --syn --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -i $IF_EXT -d $NET_DMZ -p tcp --syn --dport 80 -j DNAT --to-destination 192.168.20.10:80
iptables -t nat -A POSTROUTING -o $IF_INT -j SNAT --to-source 192.168.10.39



j'ai l'impression que je me melange les pinceaux là ....
"Un abruti qui marche ira toujours plus loin que deux intellectuels assis" - [M Audiart]
Avatar de l’utilisateur
Tazman_FR
Major
Major
 
Messages: 72
Inscrit le: 27 Mars 2004 16:28
Localisation: France - Toulon

ca maaaarrrcheeuuuu !

Messagepar Tazman_FR » 16 Nov 2005 16:43

Bon, resalut,

aprés avoir refait les doc qui vont bien (RTFM ;) ), ca a l'air de marcher comme ca :
#! /bin/sh

echo "Lancement des regles de routage"

#on vide les tables de routage
iptables -X
iptables -F
iptables -t nat -F
iptables -t nat -X

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

IF_EXT=eth1
IF_INT=eth0
NET_WAN="0.0.0.0/24"
NET_DMZ="192.168.20.0/24"


iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth1 -j DNAT --to 192.168.20.10


avec du masquerading sur tout ce qui sort de eth0.... bon vais essayer de compliquer un peux tout ca avec des requetes dns, smtp etc ...

a+
et merci a ceux qui m'ont répondu : leur aide m'à été précieuse

Tazman
"Un abruti qui marche ira toujours plus loin que deux intellectuels assis" - [M Audiart]
Avatar de l’utilisateur
Tazman_FR
Major
Major
 
Messages: 72
Inscrit le: 27 Mars 2004 16:28
Localisation: France - Toulon

re NAT + routage

Messagepar Tazman_FR » 16 Nov 2005 17:08

re bonjour, par contre je but sur une config,

si je desire avoir plusieurs adresses IP sur une seule carte via les alias sur les interfaces (ifconfig eth1 192.168.10.10, ifconfig eth1:1 192.168.10.20, etc ...) afin d'avoir plusieurs adresses (a terme publics) sur une seule carte, les commandes de mon script ne marchent pas :

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -p tcp -i $IF_EXT -j DNAT --to 192.168.20.10:8080


me renvois en reponse :
Warning: weird character in interface `eth1:1' (No aliases, :, ! or *).


quelqu'un à t'il une idée pour contourner ce porbleme (a part installer une carte réseau en plus ... )


a+

Tazman
"Un abruti qui marche ira toujours plus loin que deux intellectuels assis" - [M Audiart]
Avatar de l’utilisateur
Tazman_FR
Major
Major
 
Messages: 72
Inscrit le: 27 Mars 2004 16:28
Localisation: France - Toulon

Suite des folles aventures au pays du routage/firewalling...

Messagepar Tazman_FR » 25 Nov 2005 16:34

Salut tout le monde,

aprés avoir décris mes regles de filtrage et de routage classique (http...), je m'attaque au routage ftp, mais a priori ces quelques regles ne suffisent pas. je charge le module ip_conntrack_ftp, je nat ma connexion de l'adresse 10.39 vers la 20.10 sur le port 21, j'active le suivi de paquets pour les etats Established et Related... mais bon mon client ftp me repond :

Le canal de transfert n'a pas pu être ouvert. Raison : Une tentative de connexion a échoué car le parti connecté n'a pas répondu convenablement au-delà d'une certaine durée ou une connexion établie a échoué car l'hôte de connexion n'a pas répondu.
Erreur : N'a pas pu récupérer la liste du répertoire

Tout en dettectant le repertoire "home"

j'ai loupé quelques chose ?

Tazman
"Un abruti qui marche ira toujours plus loin que deux intellectuels assis" - [M Audiart]
Avatar de l’utilisateur
Tazman_FR
Major
Major
 
Messages: 72
Inscrit le: 27 Mars 2004 16:28
Localisation: France - Toulon

suite de mes folles avnetures :

Messagepar Tazman_FR » 25 Nov 2005 16:35

j'ai oublié, voici les regles que j'utilise :

##FTP
#** chargement du conntrack ftp
modprobe ip_conntrack_ftp ports=21,65000
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -d 192.168.10.39 -p tcp --syn --dport 21 -j DNAT --to-destination 192.168.20.10:21
iptables -A FORWARD -i eth1 -o eth0 -d 192.168.20.10 -p tcp --syn --dport 21 -j ACCEPT



....help ?
"Un abruti qui marche ira toujours plus loin que deux intellectuels assis" - [M Audiart]
Avatar de l’utilisateur
Tazman_FR
Major
Major
 
Messages: 72
Inscrit le: 27 Mars 2004 16:28
Localisation: France - Toulon

[resolue ]

Messagepar Tazman_FR » 25 Nov 2005 18:46

bon , ok je parle tout seul , m'enfin au cas ou certains rencontrerais le même prob :wink:

voici mon code pour nater le ftp :

(j'avais oublié le ip_nat_ftp avec modprobe)

##FTP
#** chargement du conntrack ftp
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

iptables -t nat -A PREROUTING -p tcp -d 192.168.10.39 --dport 21 -i eth1 -j DNAT --to 192.168.20.10:21
iptables -t nat -A PREROUTING -p tcp -d 192.168.10.39 --dport 20 -i eth1 -j DNAT --to 192.168.20.10:20
iptables -A FORWARD -i eth1 -o eth0 -d 192.168.20.10 -p tcp --syn -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


voilou,

a+ tous !
"Un abruti qui marche ira toujours plus loin que deux intellectuels assis" - [M Audiart]
Avatar de l’utilisateur
Tazman_FR
Major
Major
 
Messages: 72
Inscrit le: 27 Mars 2004 16:28
Localisation: France - Toulon

Suivant

Retour vers Sécurité et réseaux

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron