Problème avec mon Serveur FTP natté (iptables

Fermé
Tub - 12 avril 2004 à 14:17
 bokailaim - 13 juin 2004 à 01:14
Bonjour à tous,

Je vous explik ma situation : J'ai une passerelle avec Mandrake 9.2 connecté à internet par linterface ppp0 et connecté au reseau locale en eth0 (ip : 192.168.1.10).
J'ai un serveur ftp sur un poste Windows 2000 de mon reseau (ip : 192.168.1.17).
Je voudrais donc que celui ci soit accessible depuis l'éxterieur !
J'ai donc récuperer un script Iptable qui a priori est pas mal du tout mais en ce qui concerne mon serveur ftp, ca ne marche pas.
En pensant que c'était peut etre le script j'ai essayer d'autre manip que j'ai trouvé sur le net mais aucune fonctionne !
Le niveau de sécurité de ma mandrake est au niveau "Normal" et DrakeFirewall est désactivé !! Peut etre que mon script est correct mais qu'il y a peut etre une otre couche de securité ???

Sinon voici mon script :

#!/bin/sh

#path to iptables
IPT="/sbin/iptables"

#interface connected to the internet
EXTERNAL_IF="ppp0"

#interface connected to the LAN
INTERNAL_IF="eth0"

#Address of your network
INTERNAL_NETWORK="192.168.1.0/24"

#Services that are available on the firewall
FIREWALL_SERVICES_TCP="ftp ftp-data ssh 21"
FIREWALL_SERVICES_UDP="domain"

#Services which are routed by the firewall
ROUTED_SERVICES_TCP="ftp ftp-data ssh https domain"
ROUTED_SERVICES_UDP="domain"

#Services which are available on LAN only
SERVICES_ON_LAN_TCP="domain netbios-ssn netbios-ns netbios-dgm"
SERVICES_ON_LAN_UDP="domain netbios-ssn netbios-ns netbios-dgm"

#Accepted ICMP types
ICMP="echo-reply destination-unreachable echo-request time-exceeded source-quench"

#ports that will be forwarded
FORWARDED_PORTS="4662:192.168.1.17:4662 20:192.168.1.17:20 21:192.168.1.17:21"

#If something try to connect more than this number, the connections will be logged
MAX_CONNECT_PER_SECOND=1

function start(){
modprobe ip_conntrack_irc
modprobe ip_conntrack_ftp

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

echo -n "Drop ALL rulez ..."
$IPT -P INPUT DROP
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
echo "done"

#accept traffic for lo
echo -n "Accept Traffic on lo ... "
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
echo "done"

#accept traffic for LAN
$IPT -A FORWARD -i $INTERNAL_IF -o $EXTERNAL_IF -j ACCEPT
$IPT -A FORWARD -i $EXTERNAL_IF -o $INTERNAL_IF -j ACCEPT
echo "done"

#masquerading
echo -n "Masquerading network $INTERNAL_NETWORK ..."
$IPT -t nat -A POSTROUTING -s $INTERNAL_NETWORK -o $EXTERNAL_IF -j MASQUERADE
echo "done"

for v in $FIREWALL_SERVICES_TCP; do
echo -n "Accepting port $v for server usage (tcp) ... "
$IPT -A INPUT -i $INTERNAL_IF -p tcp --dport $v -j ACCEPT
$IPT -A OUTPUT -o $INTERNAL_IF -p tcp --sport $v -j ACCEPT
$IPT -A INPUT -i $EXTERNAL_IF -p tcp --dport $v -j ACCEPT
$IPT -A OUTPUT -o $EXTERNAL_IF -p tcp --sport $v -j ACCEPT
echo "done"
done

for v in $FIREWALL_SERVICES_UDP; do
echo -n "Accepting port $v for server usage (udp) ... "
$IPT -A INPUT -i $INTERNAL_IF -p udp --dport $v -j ACCEPT
$IPT -A OUTPUT -o $INTERNAL_IF -p udp --sport $v -j ACCEPT
$IPT -A INPUT -i $EXTERNAL_IF -p udp --dport $v -j ACCEPT
$IPT -A OUTPUT -o $EXTERNAL_IF -p udp --sport $v -j ACCEPT
echo "done"
done

for v in $ROUTED_SERVICES_TCP; do
echo -n "Routing port $v (tcp) ... "
$IPT -A INPUT -i $INTERNAL_IF -p tcp --dport $v -j ACCEPT
$IPT -A OUTPUT -o $INTERNAL_IF -p tcp --sport $v -j ACCEPT
$IPT -A INPUT -i $EXTERNAL_IF -p tcp --sport $v -j ACCEPT
$IPT -A OUTPUT -o $EXTERNAL_IF -p tcp --dport $v -j ACCEPT
echo "done"
done

for v in $ROUTED_SERVICES_UDP; do
echo -n "Accepting port $v (udp) ... "
$IPT -A INPUT -i $INTERNAL_IF -p udp --dport $v -j ACCEPT
$IPT -A OUTPUT -o $INTERNAL_IF -p udp --sport $v -j ACCEPT
$IPT -A INPUT -i $EXTERNAL_IF -p udp --sport $v -j ACCEPT
$IPT -A OUTPUT -o $EXTERNAL_IF -p udp --dport $v -j ACCEPT
echo "done"
done

for v in $SERVICES_ON_LAN_TCP; do
echo -n "Accepting port $v for LAN only (tcp) ..."
$IPT -A INPUT -i $INTERNAL_IF -p tcp --dport $v -j ACCEPT
$IPT -A OUTPUT -o $INTERNAL_IF -p tcp --sport $v -j ACCEPT
echo "done"
done

for v in $SERVICES_ON_LAN_UDP; do
echo -n "Accepting port $v for LAN only (udp) ..."
$IPT -A INPUT -i $INTERNAL_IF -p udp --dport $v -j ACCEPT
$IPT -A OUTPUT -o $INTERNAL_IF -p udp --sport $v -j ACCEPT
echo "done"
done

for v in $ICMP; do
echo -n "Accepting ICMP type $v (icmp) ... "
$IPT -A INPUT -i $INTERNAL_IF -p icmp --icmp-type $v -j ACCEPT
$IPT -A OUTPUT -o $INTERNAL_IF -p icmp --icmp-type $v -j ACCEPT
$IPT -A INPUT -i $EXTERNAL_IF -p icmp --icmp-type $v -j ACCEPT
$IPT -A OUTPUT -o $EXTERNAL_IF -p icmp --icmp-type $v -j ACCEPT
echo "done"
done

for v in $FORWARDED_PORTS; do
SOURCE_PORT=`echo $v | awk -F ":" '{ print $1}'`
IP_DEST=`echo $v | awk -F ":" '{ print $2}'`
DEST_PORT=`echo $v | awk -F ":" '{ print $1}'`

echo -n "Forward port $SOURCE_PORT to $IP_DEST whith port $DEST_PORT ... "
$IPT -t nat -A PREROUTING -i $EXTERNAL_IF -p tcp --dport ${SOURCE_PORT}:${DEST_PORT} -j DNAT --to $IP_DEST
$IPT -t nat -A PREROUTING -i $EXTERNAL_IF -p udp --dport ${SOURCE_PORT}:${DEST_PORT} -j DNAT --to $IP_DEST


$IPT -A INPUT -i $INTERNAL_IF -p tcp --sport $DEST_PORT -j ACCEPT
$IPT -A OUTPUT -o $INTERNAL_IF -p tcp --dport $DEST_PORT -j ACCEPT
$IPT -A INPUT -i $INTERNAL_IF -p tcp --sport $DEST_PORT -j ACCEPT
$IPT -A OUTPUT -o $INTERNAL_IF -p tcp --dport $DEST_PORT -j ACCEPT

$IPT -A INPUT -i $EXTERNAL_IF -p tcp --dport $SOURCE_PORT -j ACCEPT
$IPT -A OUTPUT -o $EXTERNAL_IF -p tcp --sport $SOURCE_PORT -j ACCEPT
$IPT -A INPUT -i $EXTERNAL_IF -p tcp --dport $SOURCE_PORT -j ACCEPT
$IPT -A OUTPUT -o $EXTERNAL_IF -p tcp --sport $SOURCE_PORT -j ACCEPT
echo "done"
done


echo -n "accept clients connections ..."
$IPT -A INPUT -p tcp --dport 1025: -j ACCEPT
echo "done ..."

echo -n "Matching state for connections ... "
$IPT -A INPUT -i $EXTERNAL_IF -p tcp -m state --state ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -o $EXTERNAL_IF -p udp -m state --state NEW,ESTABLISHED -j ACCEPT
echo "done"

echo -n "Start Logging ... "
$IPT -A INPUT -m limit --limit ${MAX_CONNECT_PER_SECOND}/second -j LOG
$IPT -N LOGGING
$IPT -A LOGGING -j LOG --log-prefix 'Firewall DROP : '
$IPT -A INPUT -i $EXTERNAL_IF -j LOGGING
echo "done"
}



function stop(){
echo -n "Stopping firewall (flush rules) ... "
$IPT -F
$IPT -X
$IPT -X LOGGING

$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT
echo "done"
}

Si qqun peut maider ce serait vraiment tres sympa car la je galere !!

Merci d'avance

8 réponses

Utilisateur anonyme
12 avril 2004 à 14:47
ba je vois pas de raison la
fait un iptable -L
pour voir se qu'il ya dedans apres

pour tester il faut que tu utilise l'ip de ppp0
sinon sa routera pas :)
$IPT -t nat -A PREROUTING -i $EXTERNAL_IF -p tcp --dport ${SOURCE_PORT}:${DEST_PORT} -j DNAT --to $IP_DEST
0
Merci tout dabord pour ta réponse !!
Ne crois tu pas que cela peut venir d'une source externe à IPTABLE car chez un ami cela marche trés bien !!! ???

Merci
0
Utilisateur anonyme
12 avril 2004 à 19:21
peut etre bin que oui
peut etre bin que non
je sais pas se qui tourne sur ta machine
je sais pas se qui pourrait poser probleme
0
Xenor Messages postés 3312 Date d'inscription dimanche 11 août 2002 Statut Contributeur Dernière intervention 22 juin 2015 51
12 avril 2004 à 21:44
Bjour à tous,
C'est vraiment bizarre ce script immense chez moi mon firewall se lance en 10 lignes et remplit toutes ces fonctions mais bon...
Pour la redirection de ports je n'ai pas la même chose (et chez moi ça marche). Ainsi, bien que je sache pas exactement ce que contient "SOURCE_PORT" et "DEST_PORT" j'essayerai :
$IPT -t nat -A PREROUTING -i $EXTERNAL_IF -p tcp --dport ${SOURCE_PORT} -j DNAT --to $IP_DEST:${DEST_PORT} 

à la place de
$IPT -t nat -A PREROUTING -i $EXTERNAL_IF -p tcp --dport ${SOURCE_PORT}:${DEST_PORT} -j DNAT --to $IP_DEST 


Enfin moi c'est cette syntaxe là que j'ai.
A essayer...

___________
- X e n o r ---
Jeune & Vaillant Guerrier CCM
0
Xenor Messages postés 3312 Date d'inscription dimanche 11 août 2002 Statut Contributeur Dernière intervention 22 juin 2015 51
12 avril 2004 à 21:46
ps : idem pour l'udp bien entendu... :-)

___________
- X e n o r ---
Jeune & Vaillant Guerrier CCM
0
Utilisateur anonyme
12 avril 2004 à 21:48
Tiens :)

Patapi Biribibi Rabada dada 
Dada dada !!
0
Xenor Messages postés 3312 Date d'inscription dimanche 11 août 2002 Statut Contributeur Dernière intervention 22 juin 2015 51 > Utilisateur anonyme
12 avril 2004 à 21:57
ben voyons :)
___________
- X e n o r ---
Jeune & Vaillant Guerrier CCM
0
Xenor Messages postés 3312 Date d'inscription dimanche 11 août 2002 Statut Contributeur Dernière intervention 22 juin 2015 51
13 avril 2004 à 03:58
heu petite rectification c'est n'est pas "--to" que j'ai à la fin mais "--to-destination". C'est d'ailleurs étrange parce que j'ai cherché dans la manpage de iptables, et "--to" tout seul il connait pas !
Donc, une dernière fois, modifie ta ligne et remplace la par
$IPT -t nat -A PREROUTING -i $EXTERNAL_IF -p tcp --dport ${SOURCE_PORT} -j DNAT --to-destination $IP_DEST:${DEST_PORT}

au moins pour essayer... Et tiens nous au courant !

___________
- X e n o r ---
Jeune & Vaillant Guerrier CCM
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
12 avril 2004 à 22:41
si le meme script marche bien ailleur y a pas trop de raison
essaye de voir si ta pas des veille regle qui sont entassé
iptables -t nat -L
iptables -L
si ya du monde dedans
iptables -t nat -F
iptables -F
puis la sa devrais etre vide :)
tu peut relancer le script
0
Xenor Messages postés 3312 Date d'inscription dimanche 11 août 2002 Statut Contributeur Dernière intervention 22 juin 2015 51
12 avril 2004 à 22:42
avec mandrake y'a toujours des raisons :)

___________
- X e n o r ---
Jeune & Vaillant Guerrier CCM
0
Utilisateur anonyme
12 avril 2004 à 22:47
oui sa c'est des ont dit ...
j'ai pas de pblm moi
j'ai encore jamais vu d'OS qui se maintenait et configurait tout seul

les problemes avec mandrake se trouve surtout au niveau des appli de config du cliquodrome, le reste c'est pareil qu'ailleur.
0
Xenor Messages postés 3312 Date d'inscription dimanche 11 août 2002 Statut Contributeur Dernière intervention 22 juin 2015 51
13 avril 2004 à 04:08
les problemes avec mandrake se trouve surtout au niveau des appli de config du cliquodrome... --> ça fait déjà pas mal comme problèmes non ? :-D
Ensuite j'ai jamais parlé d'OS qui se maintenait tout seul ! Je donnais juste une piste de réponse vu que la syntaxe de son script me parait étrange c'est tout ! Quant aux "ondit" j'invente rien à chaque fois que j'ai eu une mdk entre les mains c t tellement la merde et ça m'a tellement soulé leurs "draketools" à allures d'assistants crosoft que ça m'a rappelé windows. On sait pas où et quoi fonctionne comment, c'est pas modulable comme install. Obligé de tt réinstaller dès qu'une nouvelle version sort cad tous les 3 mois... J'appelle pas ça un système efficace. Bien sûr c'est mon avis mais qu'on vienne pas me dire que ce que je dis c'est des "ondit", c'est pas mon genre.
Maintenant si on peut rester concentré sur le problème à résoudre ça sera profitable pour tout le monde merci...

___________
- X e n o r ---
Jeune & Vaillant Guerrier CCM
0
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 23 novembre 2024 426
13 avril 2004 à 17:48
Salut Xenor, ça fesait longtemps!

Bon je pense qu'il y a eu assez de plainte en vers les differents outils de mandrake.
Une seule chose reste vraie dans tout les cas, on est nullement obligé d'utiliser ces outils, ou de reinstaller le systeme pour une simple mise à jour.

Il y a un paquet de monde satisfait par Mandrake, aussi bien chez les débutants que chez les utilisateurs experimentés, et a en juger par le nombre de message qui la concerne ici même, elle fait partie des quelques distribe a sortir réellement du lot, sans rien demander a personne....

Les message du genre "avec mandrake tout est possible" dans le sens ou tu l'as employé ne sont pas vraiment les bien venus, surtout de la part d'un habitué :)

Sinon quoi de nuef chez toi ? :)

"Si c'est stupide et que ça marche,
        alors ce n'est pas stupide"
0
Xenor Messages postés 3312 Date d'inscription dimanche 11 août 2002 Statut Contributeur Dernière intervention 22 juin 2015 51
13 avril 2004 à 17:53
C'est rien je suis très fâché avec mandrake !
moi ça va bien je reviens un peu voir ccm en ce moment comme tu le vois... et ça roule :)

Pour en revenir à mdk je suis d'accord avec ce que tu dis sauf sur les utilisateurs expérimentés : j'en connais aucun qui tourne sous mdk. C'est pour les débutants, une fois qu'on maîtrise un chouille le système on a vite envie de découvrir qqchose de + sérieux quoi c'est normal.... Enfin c'est au moins valable pr les gens que je cotoie !

___________
- X e n o r ---
Jeune & Vaillant Guerrier CCM
0
Utilisateur anonyme > asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 23 novembre 2024
14 avril 2004 à 07:47
C'était "avec mandrake y'a toujours des raisons".
Il y a des messages d'habitués bien pire que ça tu sais. Mandrake est une distribution "surement" trés intéressante et "surement" exploitable par des débutants, mais voila à force de cliquer à gauche et à droite tu ne sais pas vraiment ce que tu bidouilles. Le clic a le désagréable pouvoir de rendre les gens butés, Xénor est mon mentor des glaces, les gens devraient lui faire beaucoup confiance.

Patapi Biribibi Rabada dada 
Dada dada !!
0
Utilisateur anonyme > Xenor Messages postés 3312 Date d'inscription dimanche 11 août 2002 Statut Contributeur Dernière intervention 22 juin 2015
14 avril 2004 à 07:49
Je sais pas si sérieux est le terme exact à employer. Les pingouins expérimentés aiment réalisés leur propre système, c'est dans ce sens qu'ils choississent une Debian :)

Patapi Biribibi Rabada dada 
Dada dada !!
0
Si ca ne marche pas ca n'a rien a voir avec Mandrake, c'est par ce que ftp est un protocole pourri qui utilise 35000 ports choisis aleatoirement pour transferer les fichiers.
Avec le script que tu as copie/colle ici, le ftp en mode actif depuis l'exterieur si le client n'a pas de fw devrait marcher (en mode actif c'est le serveur qui se connecte au client pour faire les transferts). Pour le faire marcher en mode passiff il faut rediriger plus de ports, et dire au serveur ftp de n'utiliser que ces ports la.
0
ou sinon utiliser ip_conntrack_ftp ...
0