View previous topic :: View next topic |
Author |
Message |
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Mon Jul 11, 2005 10:29 am Post subject: [HOWTO] Configurer un serveur FTP avec Proftpd |
|
|
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 :
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 :
Ensuite, on précise le port à utiliser : par defaut le port ftp est 21.
(Rem : n'oubliez pas d'autoriser la circulation par ce port dans vos règles iptables)
On règle le umask :
Ensuite, on dit sous quel utilisateur le serveur doit être lancé, on a créé un utilisateur "ftp" tout à l'heure à cet effet.
Si vous voulez limiter le nombre de connections (pour éviter une DOS par exemple) :
On peut autoriser le remplaçement de fichiers (overwrite) de manière globale :
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 |
|
|
cylgalad Veteran
Joined: 18 Apr 2003 Posts: 1327 Location: France
|
Posted: Mon Jul 11, 2005 10:32 am Post subject: |
|
|
envoi de données... |
|
Back to top |
|
|
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Mon Jul 11, 2005 10:37 am Post subject: |
|
|
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 |
|
|
cylgalad Veteran
Joined: 18 Apr 2003 Posts: 1327 Location: France
|
Posted: Mon Jul 11, 2005 10:41 am Post subject: |
|
|
Il y a pleins d'autres fautes |
|
Back to top |
|
|
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Mon Jul 11, 2005 11:28 am Post subject: |
|
|
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 |
|
|
-KuRGaN- Veteran
Joined: 05 Dec 2004 Posts: 1142 Location: Besançon (25) [FRANCE]
|
Posted: Mon Jul 11, 2005 11:39 am Post subject: |
|
|
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 _________________ Knight Gent00 Industries RiDeR !!!! |
|
Back to top |
|
|
profy Tux's lil' helper
Joined: 08 Jun 2005 Posts: 96 Location: Sophia Antipolis
|
Posted: Mon Jul 11, 2005 12:11 pm Post subject: |
|
|
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 |
|
|
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Mon Jul 11, 2005 12:50 pm Post subject: |
|
|
Merci, j'ai ajouté ça a la fin du how to |
|
Back to top |
|
|
kwenspc Advocate
Joined: 21 Sep 2003 Posts: 4954
|
Posted: Mon Jul 11, 2005 12:59 pm Post subject: |
|
|
sympa le howto
@kopp : t'as mattés tes message privés? _________________ membre officieux du SAV Ati GEntoo |
|
Back to top |
|
|
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Wed Jul 13, 2005 7:16 pm Post subject: |
|
|
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 |
|
|
obris n00b
Joined: 11 Jul 2005 Posts: 11 Location: les Sables d'Olonne-85-France
|
Posted: Wed Jul 13, 2005 7:59 pm Post subject: |
|
|
merci pour le Howto. C'est exactement ce que je cherchais. |
|
Back to top |
|
|
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Thu Jul 21, 2005 9:06 am Post subject: |
|
|
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 |
|
|
DuF Advocate
Joined: 09 Dec 2002 Posts: 2687 Location: Paris
|
Posted: Thu Jul 21, 2005 1:13 pm Post subject: |
|
|
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 |
|
|
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Thu Jul 21, 2005 2:13 pm Post subject: |
|
|
Effectivement c'est ça! Merci Duf
Je rajouterai ça au how-to ce soir |
|
Back to top |
|
|
Ey l33t
Joined: 07 Apr 2005 Posts: 863 Location: Paris
|
Posted: Thu Jul 21, 2005 6:02 pm Post subject: Re: [HOWTO] Configurer un serveur FTP avec Proftpd |
|
|
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 |
|
|
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Thu Jul 21, 2005 6:20 pm Post subject: |
|
|
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 |
|
|
Dais l33t
Joined: 05 Aug 2004 Posts: 977 Location: Québec
|
Posted: Thu Jul 21, 2005 6:59 pm Post subject: |
|
|
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 |
|
|
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Thu Jul 21, 2005 7:35 pm Post subject: |
|
|
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 |
|
|
ultrabug Developer
Joined: 24 Jan 2005 Posts: 698 Location: Paris
|
Posted: Fri Jul 22, 2005 8:40 am Post subject: |
|
|
merci pour le howto |
|
Back to top |
|
|
shingara Tux's lil' helper
Joined: 26 Dec 2004 Posts: 137 Location: Paris, FR
|
Posted: Wed Oct 12, 2005 5:18 pm Post subject: Re: [HOWTO] Configurer un serveur FTP avec Proftpd |
|
|
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 |
|
|
kopp Advocate
Joined: 09 Apr 2004 Posts: 2885 Location: Grenoble, France
|
Posted: Thu Oct 13, 2005 8:44 pm Post subject: |
|
|
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 |
|
|
yesi Guru
Joined: 25 Oct 2004 Posts: 331
|
|
Back to top |
|
|
l.slysz Apprentice
Joined: 03 Jun 2005 Posts: 256
|
Posted: Mon Oct 31, 2005 10:35 am Post subject: |
|
|
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 |
|
|
naerex Guru
Joined: 02 Apr 2005 Posts: 316 Location: Paris, France
|
Posted: Mon Oct 31, 2005 4:10 pm Post subject: |
|
|
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 |
|
|
|
|
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
|
|