Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[HOWTO] Configurer un serveur FTP avec Proftpd
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2869
Location: Grenoble, France

PostPosted: Mon Jul 11, 2005 10:29 am    Post subject: [HOWTO] Configurer un serveur FTP avec Proftpd Reply with quote

But : avoir un serveur ftp qui puisse autoriser les connexions anonymes, aussi bien qu'en utilisateur, en permettant l'envoi de données par les utilisateurs, le téléchargement etc...

Dernière mise à jour : 31/05/06
- correction par rapport à l'overwrite
- corrections de fautes de français (bouh j'ai honte)

Sommaire :
I . Installation
II . Configuration
III . Bonus


I - Installation


On va installer le paquet net-ftp/proftpd, qui nécessitera entre autre ftpbase.
Avant, il était nécessaire de rajouter le use authunix, qui maintenant n'est plus nécessaire et son ancien effet est aujoud'hui direct. Merci Shingara pour la remarque.
Ensuite, on "emerge" proftpd :

Code:
#  emerge proftpd


Voilà, maintenant on va passer à la configuration :

II - Configuration

Alors, on va créer un utilisateur sous lequel tournera le serveur :
Code:
#  useradd -d /home/ftp -g ftp -p ftp ftp


Nous voilà donc avec un utilisateur ftp, appartenant au groupe ftp, ayant pour répertoire /home/ftp (là ou on va stocker les repertoire du ftp) et pour mot de passe ftp

Ensuite, on va créer le fichier de configuration :
on va donc éditer le fichier de configuration /etc/proftpd/proftpd.conf avec votre éditeur préféré. (*hint* vim *hint*)

Alors on va donner un nom au serveur, lui dire de fonctionner en standalone, et préciser que toutes les connections doivent être traitées par ce serveur, qu'un shell valide n'est pas nécessaire. On précise qu'on utilise PAM pour s'identifier, avec le service ftp

Code:
ServerName          "Exemple de Serveur Proftpd"
ServerType          standalone
DefaultServer       on
RequireValidShell   off
AuthPAM             on
AuthPAMConfig       ftp


On va ensuite, par securité, désactiver le login en root :
Code:

RootLogin off


Ensuite, on précise le port à utiliser : par defaut le port ftp est 21.
Code:
Port            21

(Rem : n'oubliez pas d'autoriser la circulation par ce port dans vos règles iptables)

On règle le umask :
Code:
Umask 022


Ensuite, on dit sous quel utilisateur le serveur doit être lancé, on a créé un utilisateur "ftp" tout à l'heure à cet effet.
Code:
User ftp
Group ftp


Si vous voulez limiter le nombre de connections (pour éviter une DOS par exemple) :
Code:
MaxInstances 10


On peut autoriser le remplaçement de fichiers (overwrite) de manière globale :
Code:
AllowOverwrite on

Pour l'autoriser au cas par cas, voyez plus bas la section d'ajout d'utilisateurs.

Le serveur autorise les comptes de la machine n'ayant pas de compte dans ce fichier à se connecter, et à se ballader avec leurs droits normaux : si vous voulez les limiter à un certain endroit, ajoutez ceci :
Code:
DefaultRoot /home/ftp

Ici, /home/ftp sera consideré comme la racine, et on ne pourra pas aller plus haut dans l'arborescence.

Voilà, les règles de bases sont écrites, on va maintenant ajouter les utilisateurs

Utilisateur anonyme
On va créer un répertoire publique en lecture seule seulement pour les utilisateurs anonymes
Code:
su ftp
mkdir /home/ftp/pub


Ensuite, on ajoute un utilsateur anonyme qu'on restreint à ce répertoire, en lecture seulement
Code:
<Anonymous /home/ftp/pub>
    User ftp
    Group ftp
    UserAlias anonymous ftp # on "alias" avec anonymous
    MaxClients 10 # si on veut limiter le nombre de clients anonymes connectés
    <Limit WRITE>
         DenyAll
    </Limit>
</Anonymous>


Ensuite, si vous voulez ajouter un utilisateur (qu'on appellera user1), avec mot de passe, autorisation d'upload etc
Code:
<Anonymous /home/ftp/user1> #on donne comme répertoire racine /home/ftp/user1, mais on peut aussi donner son $HOME en mettant ~user1 à la place
   User user1
   Group ftp #il demande que l'utilisateur appartienne au groupe ftp
   AnonRequirePassword yes # on demande l'identification par mot de passe
   <Limit STOR READ CWD DELE MKD RNTO RMD RETR>
       AllowAll
   </Limit>
</Anonymous>


On a autorisé l'utilisateur à envoyer des données, lire, changer de répertoire, effacer des fichiers, créer des répertoires, renomer, effacer des répertoires, et télécharger depuis le serveur.

Pour permettre à un utilisateur précis de remplacer des fichiers, il faut ajouter dans la configuration AllowOverwrite on :
Code:
<Anonymous /home/ftp/user1>
   User user1
   Group ftp
   AnonRequirePassword yes
   AllowOverwrite on
   <Limit STOR READ CWD DELE MKD RNTO RMD RETR>
       AllowAll
   </Limit>
</Anonymous>


Voilà, pour lancer le serveur, il y a un script dans /etc/init.d/
Il suffit de taper :
Code:
#  /etc/init.d/proftpd start

Et pour que le serveur soit démarré automatiquement au démarrage de la machine :
Code:
#  rc-update add proftpd default



Note : pour vous connecter avec votre explorateur en anonyme, il suffit de taper l'adresse du ftp.
si vous voulez être connecté avec un utilisateur particulier, tapez l'adresse comme ceci:
ftp://nom_d_utilisateur@adresse_du_ftp

ATTENTION, comme
Ey le fait remarquer, la connection en ftp n'est pas sécurisée par défaut, donc la connection par utilisateur normal non associé au ftp, donnant accès à tout, est à proscrire, de même qu'utiliser le même utilisateur normal que l'on utilise pour d'autres opérations sur la machine. Je vous conseille de créer des utilisateurs dédiés au ftp, n'appartenant qu'à ce groupe, et surtout ayant un shell non-valide, i.e /bin/false, pour pouvoir bloquer les connections à ssh sur ce critère dans le pire des cas...




III - BONUS



Règles iptables
Alors : voici des règles iptables fournies par Profy
Note : Dans le cas présent, l'interface de connection est ppp
Code:
#FTP serveur(serveur) <-> internet(client)

#ports de l'interfaces
#Ici on autorise les amis
iptables -A INPUT -p tcp -s <ip ou de domaine du pote> -i ppp0 --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -s <ip ou de domaine du pote> -i ppp0 --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -p tcp -o ppp0 --sport 21 -m state --state ESTABLISHED -j ACCEPT
#ports pour le transfert de fichier
iptables -A INPUT -p tcp -i ppp0 --dport 20 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -o ppp0 --sport 20 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -i ppp0 --sport 1024:65000 --dport 1024:65000 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -o ppp0 --sport 1024:65000 --dport 1024:65000 -m state --state ESTABLISHED,RELATED -j ACCEPT



Accès à un repertoire monté
Lorsqu'on se connecte avec un utilisateur, le répertoire de connection est considéré comme la racine, on ne peut donc pas remonter plus haut dans l'abrorescence réelle du disque. C'est bien joli, mais si on veut accéder à un autre endroit du disque, on ne peut pas. Et bien sûr, les liens symboliques ne fonctionnent pas.
Pour remédier à celà, il existe une astuce : on crée un répertoire mnt/ par exemple, et là on va y mettre une image du répertoire auquel on voudrait accéder, avec cette commande :
Code:
mount -n --bind /mnt/rep_source /home/mon_user/mnt/rep_destination 1>&2


Pour automatiser ceci, il suffit de placer la ligne suivante dans /etc/fstab :
Code:
/mnt/rep_source        /home/mon_user_mnt/rep_destination        none       bind         0 0


Merci à Kwenspc pour cette astuce! Et à Ey pour la ligne dans le fstab


Voilà une petite configuration pour un serveur ftp simple.


Voilà, c'est un premier how to, je suis ouvert à tous commentaires, modifications ou corrections que vous auriez à apporter.

Ce document est publié sous license GNU FDL

(note : ouais je sais, ça ne sert à rien, mais c'est plus fun :))


Last edited by kopp on Wed May 31, 2006 1:45 pm; edited 8 times in total
Back to top
View user's profile Send private message
cylgalad
Veteran
Veteran


Joined: 18 Apr 2003
Posts: 1327
Location: France

PostPosted: Mon Jul 11, 2005 10:32 am    Post subject: Reply with quote

envoi de données...
Back to top
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2869
Location: Grenoble, France

PostPosted: Mon Jul 11, 2005 10:37 am    Post subject: Reply with quote

cylgalad wrote:
envoi de données...


Oups, plus c'est gros, moins je les vois moi :) ... bon après avoir cité deux fois au lieu d'éditer, c'est corrigé, avec quelques autres....
Back to top
View user's profile Send private message
cylgalad
Veteran
Veteran


Joined: 18 Apr 2003
Posts: 1327
Location: France

PostPosted: Mon Jul 11, 2005 10:41 am    Post subject: Reply with quote

Il y a pleins d'autres fautes ;)
Back to top
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2869
Location: Grenoble, France

PostPosted: Mon Jul 11, 2005 11:28 am    Post subject: Reply with quote

Voilà, j'ai tout relu, et normalement, je n'en ai pas laissées...
Enfin, je suis un peu une buse en orthographe... donc rien n'est sûr! mais ça doit déjà être moins moche :)
Back to top
View user's profile Send private message
-KuRGaN-
Veteran
Veteran


Joined: 05 Dec 2004
Posts: 1142
Location: Besançon (25) [FRANCE]

PostPosted: Mon Jul 11, 2005 11:39 am    Post subject: Reply with quote

Nikel, merci pour le how-to.

Ben je sens que je vais en faire un sur vsftpd histoire de garnir les how-to français services FTP :wink:
_________________
Knight Gent00 Industries RiDeR !!!!
Back to top
View user's profile Send private message
profy
Tux's lil' helper
Tux's lil' helper


Joined: 08 Jun 2005
Posts: 96
Location: Sophia Antipolis

PostPosted: Mon Jul 11, 2005 12:11 pm    Post subject: Reply with quote

Les regles iptables pour ftp, le client ftp peut ainsi fonctionner en mode passif (A tester).
ppp0 : interface de la connexion Internet.
Ne pas oublier d'activer ip_conntrack_ftp.
Code:

#FTP serveur(serveur) <-> internet(client)

#ports de l'interfaces
#Ici on autorise les amis
iptables -A INPUT -p tcp -s <ip ou de domaine du pote> -i ppp0 --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -s <ip ou de domaine du pote> -i ppp0 --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -p tcp -o ppp0 --sport 21 -m state --state ESTABLISHED -j ACCEPT
#ports pour le transfert de fichier
iptables -A INPUT -p tcp -i ppp0 --dport 20 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -o ppp0 --sport 20 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp -i ppp0 --sport 1024:65000 --dport 1024:65000 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp -o ppp0 --sport 1024:65000 --dport 1024:65000 -m state --state ESTABLISHED,RELATED -j ACCEPT

_________________
Plus je connais les hommes, plus j'aime mon pc.
Back to top
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2869
Location: Grenoble, France

PostPosted: Mon Jul 11, 2005 12:50 pm    Post subject: Reply with quote

Merci, j'ai ajouté ça a la fin du how to
Back to top
View user's profile Send private message
kwenspc
Advocate
Advocate


Joined: 21 Sep 2003
Posts: 4918

PostPosted: Mon Jul 11, 2005 12:59 pm    Post subject: Reply with quote

sympa le howto 8)

@kopp : t'as mattés tes message privés? :wink:
_________________
membre officieux du SAV Ati GEntoo
Back to top
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2869
Location: Grenoble, France

PostPosted: Wed Jul 13, 2005 7:16 pm    Post subject: Reply with quote

En fait, je me rends compte d'un petit problème.
Ceci marche bien quand on se connecte avec un client ftp, genre gFTP...
seulement quand on se connecte avec Firefox, je ne vois pas moyen d'acceder aux parties appartenant aux utilisateurs "privés"...
Vous connaissez un moyen pour faire ça ?
Back to top
View user's profile Send private message
obris
n00b
n00b


Joined: 11 Jul 2005
Posts: 11
Location: les Sables d'Olonne-85-France

PostPosted: Wed Jul 13, 2005 7:59 pm    Post subject: Reply with quote

merci pour le Howto. C'est exactement ce que je cherchais.
Back to top
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2869
Location: Grenoble, France

PostPosted: Thu Jul 21, 2005 9:06 am    Post subject: Reply with quote

Bon, en fait pour mon problème avec mozilla, il suffit de mettre dans la barre d'adresse : ftp://user@adresse_du_ftp et voilà
Problème, je viens de voir que pour les users qui ne sont pas dans le proftpd.conf, ben ça connecte en mettant directement au repertoire du type... génant quand même tout ça....

Je vais essayer de voir si je trouve une méthode poru empecher ça... (autre que mettre tous les users dans le fichier de conf bien sûr ;))
Back to top
View user's profile Send private message
DuF
Advocate
Advocate


Joined: 09 Dec 2002
Posts: 2647
Location: Paris

PostPosted: Thu Jul 21, 2005 1:13 pm    Post subject: Reply with quote

Pour les users qui se connectent directement dans leur répertoire, il faut jouer avec la directive : DefaultRoot qu'il faut mettre dans la section globale pour qu'elle s'applique aux utilisateurs qui ne sont pas explicitement définis dans le fichier de conf de proftpd.
Back to top
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2869
Location: Grenoble, France

PostPosted: Thu Jul 21, 2005 2:13 pm    Post subject: Reply with quote

Effectivement c'est ça! Merci Duf
Je rajouterai ça au how-to ce soir
Back to top
View user's profile Send private message
Ey
l33t
l33t


Joined: 07 Apr 2005
Posts: 863
Location: Paris

PostPosted: Thu Jul 21, 2005 6:02 pm    Post subject: Re: [HOWTO] Configurer un serveur FTP avec Proftpd Reply with quote

kopp wrote:
Le serveur autorise les comptes de la machine n'ayant pas de compte dans ce fichier à se connecter, et à se ballader avec leurs droits normaux : si vous voulez les limiter à un certain endroit, ajoutez ceci :
Code:
DefaultRoot /home/ftp

Ici, /home/ftp sera consideré comme la racine, et on ne pourra pas aller plus haut dans l'arborescence.

Je penses qu'il faudrait que tu insistes plus sur le fait que FTP n'est absolument pas sécurisé (sauf utilisation de TLS) et que le mot de passe circule en clair et que l'on perd tout l'intérêt de se loguer en ssh sur la machine vu qu'il suffit d'écouter le trafique ftp pour voir passer les mots de passe...
Donc le defaultroot ne protège pas de grand chose, le mieux est d'interdire le login en user ou d'activer la crypto...

kopp wrote:

Accès à un repertoire monté
Lorsqu'on se connecte avec un utilisateur, le repertoire de connection est considéré comme la racine, on ne peut donc pas remonter plus haut dans l'abrorescence réelle du disque. C'est bien joli, mais si on veut acceder à un autre endroit du disque, on ne peut pas.Et bien sur, les liens symboliques ne fonctionnent pas.
Pour remedier à celà, il existe une astuce: on crée un repertoire mnt/ par exemple, et là on va y mettre une image du repertoire auquel on voudrait acceder, avec cette commande :
Code:
mount -n --bind /mnt/rep_source /home/mon_user/mnt/rep_destination 1>&2


Pour automatiser ceci, il suffit de placer cette ligne dans /etc/conf.d/local.start

Euh ça peut se mettre dans le fstab tout ça...
Code:
/mnt/rep_source        /home/mon_user_mnt/rep_destination        none       bind         0 0
Back to top
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2869
Location: Grenoble, France

PostPosted: Thu Jul 21, 2005 6:20 pm    Post subject: Reply with quote

Lol, oui pas bête pour la remarque sur le fstab, j'vais pas réfléchi, j'avais juste suivi ce que kwenspc m'avait dit... pas bien de faire le mouton!!!!

Sinon, merci pour la remarque sur la sécurité, faudra que je jette un oeil sur l'utilisation d'une connection secure pour y rajouter.

D'ailleurs, à tous ceux qui ont des remarques ou astuces à fournir, ils sont les bienvenus, le but étant de donner le maximum d'info à celui qui voudra configurer son serveur ftp avec proftpd. J'ai pris l'initiative, mais comme vous pouvez le voir, je ne suis pas un pro ;) Donc toute aide est la bienvenue
Back to top
View user's profile Send private message
Dais
l33t
l33t


Joined: 05 Aug 2004
Posts: 977
Location: Québec

PostPosted: Thu Jul 21, 2005 6:59 pm    Post subject: Reply with quote

On va me trouver anti-geek mais .. et gproftpd alors ?
_________________
Tout ce que je suis n'est que cause
Tout ce que je suis n'est que conséquence
Pourquoi s'attacher à toutes ces choses
Pourquoi continuer dans la souffrance ?

-
Shiki Soku Ze Ku, Ku Soku Ze Shiki
Back to top
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2869
Location: Grenoble, France

PostPosted: Thu Jul 21, 2005 7:35 pm    Post subject: Reply with quote

Là, je reste sur le derrière lol!
*cherche une excuse bidon*
*a trouvé une excuse bidon* --->
Ouais mais euh, ça fait pas l337 h4X0r le front end


Tant pi! Mais bon là on peut rajouter plus de trucs :) Et y a les bonus ;)
<--*essaye de redonner de la valeur à son truc qui en a perdu d'un coup beaucoup*

Bon sinon pour continuer, assez souvent quand j'essaye de filer des trucs sur mon ftp à des utilisateurs non-avertis (comprennez des utilisateurs windows) ils arrivent pas à se connecter, en user ou en anonyme avec IE
Celà vient-il de IE (ça ne m'étonnerait même pas, mais ne soyons pas mauvaise langue quand même) ? de sa configuration(ou celle de windows) ? du fait qu'on utilise une identification avec PAM ?
Vous avez une idée ? A part le fait de leur conseiller Firefox, voir de changer d'OS ? ;)
Back to top
View user's profile Send private message
ultrabug
Developer
Developer


Joined: 24 Jan 2005
Posts: 698
Location: Paris

PostPosted: Fri Jul 22, 2005 8:40 am    Post subject: Reply with quote

merci pour le howto :)
Back to top
View user's profile Send private message
shingara
Tux's lil' helper
Tux's lil' helper


Joined: 26 Dec 2004
Posts: 137
Location: Paris, FR

PostPosted: Wed Oct 12, 2005 5:18 pm    Post subject: Re: [HOWTO] Configurer un serveur FTP avec Proftpd Reply with quote

kopp wrote:

Code:
#  echo "net-ftp/proftpd authunix" >> /etc/portage/package.use



Cet ajout de USE ne sert plus a rien, maintenant il n'y a plus ce USE, je pense qu'il a été remplacer par le USE noauthunix.

Je cite le changelog :
changelog wrote:
*proftpd-1.2.10-r5 (08 Jun 2005)

08 Jun 2005; Gustavo Felisberto <humpback@gentoo.org>;
-proftpd-1.2.10-r4.ebuild, +proftpd-1.2.10-r5.ebuild:
Fixed problem with noauthunix flag. Thanks uberloard.

06 Jun 2005; Gustavo Felisberto <humpback@gentoo.org>;
proftpd-1.2.10-r4.ebuild:
Changed useflag to noauthunix as authunix is needed in linux (dont know
about bsd, but bsd users can use useflag).


Sinon, merci pour ce HOWTO, il m'a bien aidé :)
_________________
shingara
Back to top
View user's profile Send private message
kopp
Advocate
Advocate


Joined: 09 Apr 2004
Posts: 2869
Location: Grenoble, France

PostPosted: Thu Oct 13, 2005 8:44 pm    Post subject: Reply with quote

De rien ;)

Sinon, merci pour la remarque, c'est modifié dans le howto. (Désolé j'ai été un peu long à réagir, hier soir j'étais en mode flemme ON :))
Back to top
View user's profile Send private message
yesi
Guru
Guru


Joined: 25 Oct 2004
Posts: 331

PostPosted: Sun Oct 30, 2005 11:57 pm    Post subject: Reply with quote

on oublie souvent le site lea-linux.org...:)

Duf, tu aurais pu te faire de la pub quand même!!!!
il a fallu que je le fasse! c'est malin!

http://lea-linux.org/cached/index/Reseau-partfic-proftpd.html
Back to top
View user's profile Send private message
l.slysz
Apprentice
Apprentice


Joined: 03 Jun 2005
Posts: 256

PostPosted: Mon Oct 31, 2005 10:35 am    Post subject: Reply with quote

hmm j'ai cherché, mais sans resultat :

est il possible de specifier la plage de port autorisés pour les transferts de fichiers ? ( pour le mode passif plus precisement ?)
ça serait tres utile quand le pc n'est pas en direct sur le net , afin de configurer le routeur

merci d'avance ;)
Back to top
View user's profile Send private message
naerex
Guru
Guru


Joined: 02 Apr 2005
Posts: 316
Location: Paris, France

PostPosted: Mon Oct 31, 2005 4:10 pm    Post subject: Reply with quote

Pour ceux qui sont interessé par un serveur ftp hyper simple, il y a oftpd dans portage.
il ne fait que ftp public chrooté sur /home/ftp
Je m'en sert depuis un moment, il est performant je trouve.
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum