iptables + serveur ftp

iptables + serveur ftp - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 12-03-2004 à 12:50:18    

Salut,
 
J'explique rapidement mon problème :
 
Tout d'abord mon installation :
1 PC qui fait routeur et firewall qui tourne sous Debian Woody
1 PC Serveur sur reseau local avec Serveur FTP monté dessus
 
eth0                                     eth1
[INTERNET] <--> [ PC FIREWALL ] <-> [ RESEAU LOCAL ]
                  192.168.1.1         192.168.1.0/24
 
Le serveur FTP est sur l'adresse en local 192.168.1.3
 
Sur le réseau local, le serveur fonctionne très bien
 
Le problème vient quand je veut appeler mon serveur FTP à partir d'internet. J'ai pourtant fait du forwarding vers le serveur FTP avec le port 20 et 21 mais ca ne change rien.  
 
J'arrive à me connecter mais je n'arrive pas à transferer des fichiers en upload et en download . Ca semble se bloquer.
 
Comment dois je configurer mon firewall pour qu'on puisse utiliser le serveur FTP de l'exterieur ?

Reply

Marsh Posté le 12-03-2004 à 12:50:18   

Reply

Marsh Posté le 12-03-2004 à 13:07:24    

tu rediriges les requetes FTP qui s'adressent à ta passerelle vers ton serveur :)

Reply

Marsh Posté le 12-03-2004 à 13:21:20    

c'est fait je redirige tout ce qui vient de l'exterieur par le port  20 et 21 vers 192.168.1.3:20 et 192.168.1.3:21.
 
Je parviens à me connecter mais pas de transferts possibles

Reply

Marsh Posté le 12-03-2004 à 13:23:11    

il faut rediriger les related aussi je crois (à confirmer par un gourou iptables)

Reply

Marsh Posté le 12-03-2004 à 14:01:59    

t'as pensé au module ip_conntrack_ftp et/ou ip_nat_ftp ? (très pratique pour le ftp passif)

Reply

Marsh Posté le 12-03-2004 à 14:02:33    

+1

Reply

Marsh Posté le 12-03-2004 à 16:04:44    

oui mais comment ca marche ip_conntrack_ftp ?  
C'est la premiere fois que j'installe un firewall avec iptables

Reply

Marsh Posté le 12-03-2004 à 16:49:13    

vvanholl a écrit :

oui mais comment ca marche ip_conntrack_ftp ?  
C'est la premiere fois que j'installe un firewall avec iptables


 
Il faut que tu load le module (commande modprobe) avec, si tu n'utilises pas le port par défaut (21), un paramètre qui indique le port.
 
A partir de là tu peux utiliser le mode passif, donc ouvrir uniquement le port voulu sur le FW en entrée et faire du DNAT vers ta machine locale.

Reply

Marsh Posté le 12-03-2004 à 21:31:18    

Pour info voici mon fichier de regles firewall  
 
#!/bin/sh
 
IPTABLES=/sbin/iptables
INT_IF="bond0"
EXT_IF="eth0"
 
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
 
$IPTABLES -F
$IPTABLES -t nat -F
 
$IPTABLES -X LOG_DROP
$IPTABLES -N LOG_DROP
$IPTABLES -A LOG_DROP -j LOG --log-prefix "[IPT-DROP] "
$IPTABLES -A LOG_DROP -j DROP
$IPTABLES -X LOG_ACCEPT
$IPTABLES -N LOG_ACCEPT
$IPTABLES -A LOG_ACCEPT -j LOG --log-prefix "[IPT-ACCEPT] "
$IPTABLES -A LOG_ACCEPT -j ACCEPT
 
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP
 
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT
$IPTABLES -A FORWARD -i lo -j ACCEPT
$IPTABLES -A FORWARD -o lo -j ACCEPT
 
$IPTABLES -A INPUT -i $INT_IF -j ACCEPT
$IPTABLES -A OUTPUT -o $INT_IF -j ACCEPT
$IPTABLES -A FORWARD -i $INT_IF -j ACCEPT
$IPTABLES -A FORWARD -o $INT_IF -j ACCEPT
 
$IPTABLES -A OUTPUT -o $EXT_IF -j ACCEPT
$IPTABLES -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -i $EXT_IF -p tcp --dport 22 -j ACCEPT
$IPTABLES -A OUTPUT -o $EXT_IF -p icmp -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -i $EXT_IF -p icmp -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A INPUT -i $EXT_IF -p icmp -m state --state NEW -m limit --limit 10/min -j ACCEPT
 
#$IPTABLES -A INPUT -i $INT_IF -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j LOG_ACCEPT
#$IPTABLES -A INPUT -i $INT_IF -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED,RELATED -j LOG_ACCEPT
#$IPTABLES -A INPUT -i $INT_IF -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state NEW -j LOG_ACCEPT
 
$IPTABLES -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE
 
$IPTABLES -t nat -A PREROUTING -i $EXT_IF -p tcp --dport 80 -j DNAT --to-destination 192.168.1.3:80
$IPTABLES -t nat -A PREROUTING -i $EXT_IF -p tcp --dport 443 -j DNAT --to-destination 192.168.1.3:443
 
$IPTABLES -t nat -A PREROUTING -i $EXT_IF -p tcp --dport 20 -j DNAT --to-destination 192.168.1.3:20
$IPTABLES -t nat -A PREROUTING -i $EXT_IF -p tcp --dport 21 -j DNAT --to-destination 192.168.1.3:21
$IPTABLES -t nat -A PREROUTING -i $EXT_IF -p tcp --sport 1024:65535 --dport 50000:51000 -j DNAT --to-destination 192.168.1.3
 
$IPTABLES -t nat -A PREROUTING -i $EXT_IF -p tcp --dport 25 -j DNAT --to-destination 192.168.1.3:25
$IPTABLES -t nat -A PREROUTING -i $EXT_IF -p tcp --dport 110 -j DNAT --to-destination 192.168.1.3:110
 
$IPTABLES -t nat -A PREROUTING -i $EXT_IF -p tcp --dport 6667 -j DNAT --to-destination 192.168.1.3:6667
 
$IPTABLES -t nat -A PREROUTING -i $EXT_IF -p tcp --dport 8000 -j DNAT --to-destination 192.168.1.3:8000
 
$IPTABLES -A INPUT -i $EXT_IF -j LOG_DROP

Reply

Marsh Posté le 12-03-2004 à 22:30:10    

il te manque une règle du style :


$IPTABLES -A INPUT -i $EXT_IF -p tcp --dport 21 -m state --state NEW -j ACCEPT  


je pense
 
 
 
Ah oui, j'oubliais ça :


$IPTABLES -A FORWARD --m state --state RELATED,ESTABLISHED -j ACCEPT  
$IPTABLES -A FORWARD -d 192.168.1.3 -p tcp -m tcp --dport 21 --m state --state NEW -j ACCEPT
 


A toi de mettre ces exemples de règles au bon endroit dans le bon ordre pour que ca marche ... :D
 
Et comme posté plus haut, penses à charger les modules de connection tracking, y compris le ip_conntrack_ftp
 
EDIT : j'avais pas vu ça :


$IPTABLES -A FORWARD -o $INT_IF -j ACCEPT


C'est joli ça ... heureusement que tu as que des adresses privées derrière ton fw (encore que ...)  :D


Message édité par Zzozo le 13-03-2004 à 03:14:24
Reply

Marsh Posté le 12-03-2004 à 22:30:10   

Reply

Marsh Posté le 13-03-2004 à 02:32:29    

black_lord a écrit :

il faut rediriger les related aussi je crois (à confirmer par un gourou iptables)


uh ?  
Euh ... ca se redirige pas les "related" ... vu que cé le tracking de connection qui s'occupe de ça ... ca sera fait automatiquement si cé nécessaire ... :o
:D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed