[résolu] iptables : cible SNAT ou cible MASQUERADE?

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

[résolu] iptables : cible SNAT ou cible MASQUERADE?

Messagepar Geceo » 11 Déc 2006 11:41

Bonjour,

J'ai un serveur FTP d'adresse privée 192.168.0.100 derrière un routeur Linux, qui fait aussi pare-feu. L'adresse publique du routeur étant statique, j'ai utilisé la règle SNAT et non la règle MASQUERADE. Cela donne :

# Mise en place de la translation d'adresse
iptables --table nat --append POSTROUTING --jump SNAT --to-source $ADRESSE_IP_PUBLIQUE

# NAT : le trafic connexions FTP (21) est redirigé vers le serveur 192.168.0.100
iptables --table nat --append PREROUTING --destination $ADDRESSE_IP_PUBLIQUE --protocol tcp --dport 21 --jump DNAT --to-destination 192.168.0.100

# NAT : le trafic données FTP (65000:65535) est redirigé vers le serveur 192.168.0.100
iptables --table nat --append PREROUTING --destination $ADDRESSE_IP_PUBLIQUE --protocol tcp --dport 65000:65535 --jump DNAT --to-destination 192.168.0.100

Cela fonctionne (on peut se connecter au serveur), mais tous les paquets arrivant sur le serveur FTP semblent provenir du routeur ($ADRESSE_IP_PUBLIQUE) et donc je ne peux plus détecter les crétins qui font des attaques en force brute.

Si j'utilise MASQUERADE au lieu de SNAT, cela donne :
iptables --table nat --append POSTROUTING --jump MASQUERADE
et là c'est l'adresse privée du routeur que je vois systématiquement (192.168.0.1).

Donc la question est : est-il possible de rediriger les paquets vers mon serveur FTP et de continuer de voir les adresses réelles des utilisateurs?

Merci d'avance!
Grégoire
Dernière édition par Geceo le 12 Déc 2006 14:27, édité 1 fois au total.
Geceo
Premier-Maître
Premier-Maître
 
Messages: 48
Inscrit le: 07 Juil 2005 10:53

Messagepar tomtom » 12 Déc 2006 00:36

Heu, ben oui parceque là tu fais ton masquage dans les deux sens !

Ce qu'il faut, c'est ajouter un filtre sur ta règle :

iptables --table nat --append POSTROUTING -o $ifwan--jump SNAT --to-source $ADRESSE_IP_PUBLIQUE


Avec ifwan ton interface internet (public). Comme ça seuls les paquets sortants seront masqués, pas les entrant !

exactement le même remède avec le masquerading (qui fonctionne très bien même en ip statique ;) )

t.
One hundred thousand lemmings can't be wrong...
Avatar de l’utilisateur
tomtom
Amiral
Amiral
 
Messages: 6035
Inscrit le: 26 Avr 2002 00:00
Localisation: Paris

Messagepar Geceo » 12 Déc 2006 13:29

Merci de m'avoir répondu, mais ça ne résoud pas complètement mon problème.

En fait, j'avais bien indiqué initialement l'option "--out-interface eth0" au début, mais je l'avais enlevée car je me suis aperçu qu'avec cette condition supplémentaire, les utilisateurs du réseau interne (192.168.0.x) n'arrivent plus à accéder au serveur avec $ADRESSE_IP_EXTERNE (et c'est logique puisque pour eux, les paquets émis par le serveur sortent par eth1 et non par eth0).

Au niveau des règles pour autoriser le trafic vers les adresses NATées, j'ai utilisé ceci :

# On autorise tout le trafic NAT qui traverse la passerelle
iptables --append FORWARD --destination 192.168.0.0/24 --jump ACCEPT
iptables --append FORWARD --source 192.168.0.0/24 --jump ACCEPT

Donc tout ce qui arrive par eth1 et sort par eth0 est autorisé, et inversement.

Par contre ce qui arrive par eth1 et ressort par eth1 n'est pas pris en compte. Faut-il que je rajoute deux règles INPUT et OUTPUT qui ressembleraient à ça?
iptables --append INPUT --source 192.168.0.0/24 --destination 192.168.0.0/24 --jump ACCEPT
iptables --append OUTPUT --source 192.168.0.0/24 --destination 192.168.0.0/24 --jump ACCEPT
Dernière édition par Geceo le 12 Déc 2006 13:59, édité 1 fois au total.
Geceo
Premier-Maître
Premier-Maître
 
Messages: 48
Inscrit le: 07 Juil 2005 10:53

Messagepar Geceo » 12 Déc 2006 13:42

Bon apparemment, même avec les règles INPUT et OUTPUT supplémentaires, ça ne résoud pas mon problème.

J'ai du mal à comprendre ce qui se passe au niveau du routeur dans le cas d'un utilisateur du réseau interne qui accès au serveur avec l'IP externe du routeur... :oops:
Geceo
Premier-Maître
Premier-Maître
 
Messages: 48
Inscrit le: 07 Juil 2005 10:53

Messagepar Geceo » 12 Déc 2006 14:26

Eurêka!!!

Il suffisait d'ajouter une ligne avec --out-interface eth1!

Donc au lieu de :
iptables --table nat --append POSTROUTING --jump SNAT --to-source $ADRESSE_IP_PUBLIQUE

J'utilise maintenant :
iptables --table nat --append POSTROUTING --out-interface eth0 --jump SNAT --to-source $ADRESSE_IP_PUBLIQUE
iptables --table nat --append POSTROUTING --out-interface eth1 --source 192.168.0.0/24 --jump SNAT --to-source $ADRESSE_IP_PUBLIQUE

De cette façon, quelle que soit l'interface de sortie du paquet, et seulement en sortie, il est étiquetté comme provenant de l'adresse IP publique.

Merci beaucoup tomtom car tu m'as bien mis sur la voie!

Grégoire

PS : j'ajoute la condition --source 192.168.0.0/24 pour les paquets sortant par eth1 car sinon, les paquets arrivant de l'extérieur sont aussi modifiés et on retombe dans le problème du début...
Geceo
Premier-Maître
Premier-Maître
 
Messages: 48
Inscrit le: 07 Juil 2005 10:53


Retour vers Sécurité et réseaux

Qui est en ligne ?

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

cron