Serveur FTP

Salut à tous :stuck_out_tongue:

J’ai installé sur mon serveur Linux un serveur FTP avec ProFTP, j’ai écrit mon proftpd.conf en partie, connexions anonymes refusées, un utilisateur + son répertoire perso est un utilisateur et une session FTP.

Je tente de me connecter en local au serveur, ça marche niquel.
Une copine se connecte depuis Internet, j’ai débloqué dans Shorewall le port 21, ça marche niquel aussi (elle tourne sous Windows 2000).

Puis ensuite certains de mes potes tentent de se connecter : lag monstrueux, puis finalement le serveur répond que le login est faux alors qu’il est correct.
Comme par hazard, tous ces potes ont le SP2 (Windows XP) installé sur leur PC.
L’un d’entre eux m’a dit que ça vennait peut être de là.
Je teste donc avec un poste sous XP sans SP2 : ça marche niquel.

Je me suis aperçu aussi que sur les ordis de mes potes sur lesquels ça ne fonctionne pas, si on ouvre une console DOS et que l’on tente d’accéder au serveur avec ftp -n, ça marche niquel.
Ils ont essayé avec des logiciels comme SmartFTP, même problème. SmartFTP a d’ailleurs tenté de se connecter en anonyme sans demander de mot de passe, ce qui évidement n’a pu fonctionner.

Des suggestions ? Pourquoi le SP2 semble ne pas fonctionner sur MON FTP ? C’est assez bizarre non ? De quoi celà peut-il venir ?

Merci.

EDIT : un autre détail.
Mon père est relié directement au serveur via mon réseau local.
Sur son PC il a un modem 56k qui lui permet d’utiliser le minitel ou de pouvoir gérer ses sites en cas de panne de Free.
Lorsque je veux accéder au serveur FTP en LAN en tapant l’adresse ftp://192.168.0.1 dans le poste de travail, Windows tente de se connecter via le modem 56k au lieu de passer par LAN :stuck_out_tongue:
Y a t-il moyen de remédier à ça ?
C’est assez bizarre, car lorsque il veut accéder à des adresses HTTP ça fonctionne et ça passe bien par la passerelle du serveur…

[quote name=‹ bluelambda › date=’ 20 Feb 2005, 17:00’]Lorsque je veux accéder au serveur FTP en LAN en tapant l’adresse ftp://192.168.0.1 dans le poste de travail, Windows tente de se connecter via le modem 56k au lieu de passer par LAN :stuck_out_tongue:
Y a t-il moyen de remédier à ça ?
[right][post=« 334469 »]<{POST_SNAPBACK}>[/post][/right][/quote]

Tu pourrais quand même chercher un peu. :stuck_out_tongue:

Options Internet (dans IE) > Connexions > « never dial a connection » (tu traduis)

Pour le reste, ça sent le pb de firewall à plein nez. Pour info, c’est une très mauvaise idée d’héberger un serveur ftp derrière un NAT (partage de connexion). Je sais pas si cela est ton cas mais je soupçonne cela. Avec un serveur ftp derrière un NAT tes visiteurs ne pourront pas se connecter en ftp passif à moins que tu saches parfaitement gérer ton affaire.

Si ton serveur est derrière un firewall iptables, oublie pas d’activer les 2 modules :

[quote]modprobe ip_conntrack_ftp
modprobe ip_nat_ftp[/quote]

[quote]Pour le reste, ça sent le pb de firewall à plein nez. Pour info, c’est une très mauvaise idée d’héberger un serveur ftp derrière un NAT (partage de connexion)[/quote]Mon serveur est directement connecté à Internet. C’est un vrai serveur quoi, aucune redirection NAT. Ensuite il fait office de routeur et masquerading sur mon réseau local, avec ocasionnellement des redirections NAT mais pas sur le port FTP.
Le problème de firewall viendrai d’où tu pense ? Du SP2 de mes potes ou de mon serveur ?
Si ça vient du SP2 de mes potes c’est bizarre car comme je l’ai dit dans une console DOS je peux me connecter au serveur FTP et transférer.
Si ça vient de mon serveur c’est bizarre aussi car certains personnes peuvent s’y connecter sans aucune encombre, depuis le net.

[quote]Si ton serveur est derrière un firewall iptables, oublie pas d’activer les 2 modules[/quote]Mon serveur est derière un firewall iptable, mais je n’administre pas directement iptable.
J’utilise Shorewall (qui est basé sur iptable) que j’administre avec Webmin.
A quoi servent ces deux modules ?
Ils serviront vu que j’utilise Shorewall ?

Merci pour les infos :stuck_out_tongue:

Le protocole ftp exploite 2 canaux en fait. Il y’a le canal qui s’etablit sur le port 21 du serveur (canal de contrôle) mais aussi le le canal qui sert a vehiculer les transferts. Le mode de fonctionnement de ce canal dépend de la configuration “ftp actif” ou “ftp passif” du client, en gros :

-> en ftp passif le canal de contrôle négocie un port dynamique sur le serveur où le client peut venir se connecter. Si le firewall n’est pas configuré correctement pour accepter cette connexion, elle tape directement dans le firewall et c’est perdu. Les modules pour iptables servent à intercepter le port dynamique pour ouvrir celui-ci au moment utile.

-> en ftp actif c’est le serveur qui vient se connecter sur un port dynamique du client depuis son port 20 (c’est pour cela qu’on parle souvent de ports 20 et 21 pour le ftp). Si le client n’est pas en mesure d’accepter cette connexion, alors c’est perdu aussi. Le ftp en ligne de commande fonctionne en ftp actif par defaut.

A priori, si les modules ne sont pas activés, on peut se connecter en ftp actif du coup (vu que c’est le client qui accepte la 2ième connexion). Pour savoir ce qu’il en est : lsmod.

OK je pense que je comrpends mieux à présent :stuck_out_tongue:

J’ai conçu la configuration de mon firewall de manière à ce que les connexions puisent être initialisées depuis l’intérieur sur tous les ports, mais aucune connection ne peut être initialisée depuis l’extérieur à part sur les ports ouverts.
Mon serveur peut donc se connecter sans problèmes avec son port 20.

Si j’active ces modules c’est pour que mon serveur FTP puisse être passif ?
Mais à ce moment là, vu que c’est le client qui se connecte, comment savoir quel port ouvrir pour le transfert ? Y a t-il moyen de spécifier un port ?

EDIT : les deux modules ne sont pas actifs sur le serveur.
EDIT2 : dans la doc de ProFTPD il est conseille de ne pas mettre plus de 30 utilisateurs. Je suppose que c’est pour ne pas entrer en conflit avec d’autres ports assigné à d’autres services (un port FTP par utilisateur) et on peut mettre plus de 30 uniquement sur un serveur qui fait que serveur FTP c’est bien celà ?

[quote name=‘bluelambda’ date=’ 20 Feb 2005, 19:42’]Si j’active ces modules c’est pour que mon serveur FTP puisse être passif ?
Mais à ce moment là, vu que c’est le client qui se connecte, comment savoir quel port ouvrir pour le transfert ? Y a t-il moyen de spécifier un port ?

EDIT : les deux modules ne sont pas actifs sur le serveur.
EDIT2 : dans la doc de ProFTPD il est conseille de ne pas mettre plus de 30 utilisateurs. Je suppose que c’est pour ne pas entrer en conflit avec d’autres ports assigné à d’autres services (un port FTP par utilisateur) et on peut mettre plus de 30 uniquement sur un serveur qui fait que serveur FTP c’est bien celà ?
[right][post=“334511”]<{POST_SNAPBACK}>[/post][/right][/quote]

Donc l’activation de ses 2 modules devraient permettre l’accès en ftp passif à ton serveur. Sache aussi que sans ces modules il est à priori impossible d’initier une connexion ftp active depuis ton réseau local vers le net. Pour ce qui est des ports : proftpd aloue par défaut dynamiquement des ports > 1024 (parce qu’il doit pouvoir ouvrir le port en non root). Il est possible de restreindre cette gamme dans la config de proftpd, mais cela n’est pas spécialement utile (ni nécessaire).

La limitation à 30 n’a certainement rien à voir avec les ports. C’est probablement plutôt pour des raisons de sécurité et simplement parce que 30 forks risquent de consommer trop de RAM (oublie pas qu’Unix fonctionne selon le principe qu’une nouvelle connexion (ftp, web, ssh, mail…) genere un nouveau processus qui consomme donc de la memoire sur le serveur.

Bon ben merci beaucoup pour votre aide, ça semble fonctionner lorsque j’active les deux modules !

Chacun de mes utilisateurs FTP a son dossier personnel.
Chaque dossier personnel est dans /home/nom_utilisateur.
Au moment du login, l’utilisateur met son nom et son mot de passe et il est directement connecté à son répertoire perso.
J’aimerai, moi, avec mon login et mon mot de passe, lorsque je me connecte à mon FTP, accéder directement à /home pour consulter librement les répertoires de chaque utilisateur.
Est-ce possible de paramétrer ProFTPD de la sorte ?

[quote name=‘bluelambda’ date=’ 21 Feb 2005, 21:28’]Chacun de mes utilisateurs FTP a son dossier personnel.
Chaque dossier personnel est dans /home/nom_utilisateur.
Au moment du login, l’utilisateur met son nom et son mot de passe et il est directement connecté à son répertoire perso.
J’aimerai, moi, avec mon login et mon mot de passe, lorsque je me connecte à mon FTP, accéder directement à /home pour consulter librement les répertoires de chaque utilisateur.
Est-ce possible de paramétrer ProFTPD de la sorte ?
[right][post=“334873”]<{POST_SNAPBACK}>[/post][/right][/quote]

Tout est possible. DefaultChdir et DefaultRoot sont tes amis.

J’ai entendu parler de DefaultChdir et DefaultRoot, j’ai d’ailleurs mis DefaultRoot ~ dans mon proftpd.conf pour que mes utilisateurs soient loggués dans leur répertoire respectif.
Seulement je ne sais pas comment exploiter celà pour un utilisateur administrateur.

J’ai trouvé ça, qui permet d’autoriser les connections anonymes au FTP si on l’ajoute au ftpd.conf :

<Anonymous ~ftp> User ftp Group ftp UserAlias anonymous ftp MaxClients 10 RequireValidShell off AnonRequirePassword off <Limit WRITE> DenyAll </Limit> </Anonymous>

C’est un truc de ce genre de je dois faire pour créer un admin ayant pour DefaultRoot /home ?
Seulement je sais pas exactement si c’est comme ça qu’il faut faire, je ne veut pas faire de bêtise comromettante pour la sécurité du serveur.
Lorsque je remplace Anonymous par autre chose, il dit une erreur, lorsque je change ftp dans user et que je met mon login à la place pareil.

J’ai réussi en faisant en sorte que le répertoire de mon utilisateur ftpmaster soit /home.

Seulement il n’a pas accès en écriture sur certains fichiers des utilisateurs… comment faire pour qu’il ait toujours tous les accès aux fichiers utilisateurs ?

[quote name=‘bluelambda’ date=’ 23 Feb 2005, 19:15’]J’ai réussi en faisant en sorte que le répertoire de mon utilisateur ftpmaster soit /home.

Seulement il n’a pas accès en écriture sur certains fichiers des utilisateurs… comment faire pour qu’il ait toujours tous les accès aux fichiers utilisateurs ?
[right][post=“335568”]<{POST_SNAPBACK}>[/post][/right][/quote]

Est-ce que le terme “gestion des droits” a un sens pour toi ? On dirait bien que non. Si les espaces home sont en lecture seule pour tous les users sauf le owner et pour root c’est qu’il y’a une bonne raison. Mais si tu tiens absolument a foutre le chaos le plus complet dans ton linux, regarde du cote de “man chmod” et “man chown”.

[quote]Est-ce que le terme “gestion des droits” a un sens pour toi ? On dirait bien que non. Si les espaces home sont en lecture seule pour tous les users sauf le owner et pour root c’est qu’il y’a une bonne raison.[/quote]Ben je sais bien qu’il y a une bonne raison, mais je ne vois pas de solution. Moi je veux que le ftpmaster ait accès avec tous les droits aux dossiers des users. Sinon le ftpmaster ne sert strictement à rien.