Tag Archives: pure-ftp

Paramétrage de ProFTP avec un utilisateur système dédié

Dans le cadre d’une intervention pour un client, j’ai du mettre en place un serveur FTP avec paramétrage d’un utilisateur unique qui ne pouvait accéder qu’à un dossier, propriété d’un autre utilisateur. Cet utilisateur ne devait pas pouvoir se logguer en SSH ou par un autre moyen. Autre souci, le serveur n’avait pas d’accès au Net et étant distant nous ne pouvions y insérer un CD-ROM avec les sources. Il fallait donc un serveur FTP que nous pouvions installer avec un minimum de RPM.

Installation

Bien que je sois plus habitué à Pure-FTP [link] j’ai choisi ProFTP car il ne présentait qu’un seul fichier RPM sur la configuration du serveur client (Mandriva 2009.0). Pour l’installer, soit vous avez déjà le RPM, soit vous pouvez le télécharger en ligne. Pour les serveurs installés sous Mandriva 2009.0 il s’agit du paquetage proftpd-1.3.2-0.4mdv2009.0.i586.rpm

wget ftp://ftp.proxad.net/pub/Distributions_Linux/MandrivaLinux/official/2009.0/i586/media/main/updates/proftpd-1.3.2-0.4mdv2009.0.i586.rpm

Procédez ensuite à son installation :

rpm -i proftpd-1.3.2-0.4mdv2009.0.i586.rpm

Vérifiez que les services se lanceront bien automatiquement :

chkconfig –list | grep proftpd

Nous devons alors avoir cet affichage :

proftpd 0:arrêt 1:arrêt 2:arrêt 3:marche 4:marche 5:marche 6:arrêt

Si cela n’est pas le cas, vous pouvez changer les démarrages du service en fonction des niveaux d’init avec la commande suivante :

chkconfig proftpd –level 2345 on

Configuration

Afin de lancer le serveur FTP nous utiliserons l’utilisateur nobody du groupe nobody. Pour cela nous allons vérifier son existence et son appartenance à ce groupe.

cat /etc/group | grep nobody

Si vous n’avez rien d’affiché, exécutez la commande suivante :

groupadd nobody

Ensuite nous vérifions la présence de l’utilisateur en question :

cat /etc/passwd | grep nobody

Si vous n’avez rien d’affiché il est possible de le créer :

useradd nobody -d / -s /bin/false usermod
nobody -g nobody

Nous nous servirons d’une commande similaire pour créer notre utilisateur de connexion en FTP, mais avant il nous faut définir /bin/false dans le fichier /etc/shells. Editez le avec VI (ou votre éditeur préféré) et ajoutez cette entrée en fin de fichier.

Nous créons ensuite notre utilisateur FTP :

useradd ftp-monserveur -s /bin/false -d /home/user-ftp/sauvegardes/ -g user-system1

Nous avons normalement cet affichage lors de sa création car le dossier existe déjà :

useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.

Nous définissons son mot de passe :

passwd user-ftp

Afin de limiter les connexions en FTP, nous nous arrangeons pour que tout les utilisateurs en dehors de user-ftp soient bien renseignés dans le fichier /etc/ftpusers Nous aurons alors le contenu suivant dans ce fichier :

root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

rpm
messagebus
polkituser
vcsa
haldaemon
avahi
avahi-autoipd
postfix
ntp
sshd
mysql
apache
memcached
user-system1
user-system2
ftp

Nous passons ensuite au fichier de configuration de proftp : /etc/proftpd.conf Voici ci dessous les entrées à modifier, nous laisserons les autres par défaut.

# le nom du serveur
ServerName « Mon Serveur FTP »

# Autoriser l’usage de /etc/ftpusers
UseFtpUsers on

# Cantonner les utilisateurs dans leur répertoire personnel (déjà présente mais commentée)
DefaultRoot : ~

PassivePorts 40000 40020

Se servir de drakfirewall afin d’ouvrir les ports du serveur FTP : 21 donné dans la liste par défaut puis 40000:40020/tcp dans la partie avancée.

Nous pouvons maintenant démarrer le service :

service proftpd start

Voici deux liens vers des tutoriaux qui m’ont aidé dans cette configuration. Vous pourrez y constater que je ne me sers de presque rien côté options du serveur FTP et que vous pouvez aussi avec ProFTP  utiliser des utilisateurs virtuels comme avec Pure-FTP.

Installation et configuration de pure-ftp sur Ubuntu serveur Hardy Heron (8.04 LTS)

Voici peu de temps j’ai du procéder à la re-installation complète de mon serveur Web. En effet suite à un crash de la machine physique, le serveur virtuel avait prit un léger coup. Sa restauration sur un nouveau système de virtualisation (Xen au lieu de vserver) semblant difficile, j’ai préféré repartir avec une installation propre du système. Mon hébergeur a donc installé le même OS, Ubuntu 8.04LTS server (Hardy Heron). Oui je sais que la version date un peu mais nous étions dans l’urgence et nous avons fait au plus simple pour la restauration derrière :)

Ayant rencontré quelques difficultés pour installer de nouveau le serveur FTP, j’ai décidé de faire profiter d’autres de ma méthode afin de leur faciliter la vie plus tard. A l’époque, étant en train de développer un site Web qui devait accueillir une page de téléchargement avec potentiellement pas mal de connexions, j’avais choisi Pure-FTP. En effet avec son système d’utilisateurs virtuels, il présentait un fonctionnement plus simple et la possibilité d’un utilisateur virtuel en lecture seulement afin de créer des liens ftp et non http, ce qui aurait permit une sérieuse économie sur les ressources du serveur. Cette interface na jamais été mise en production, mais j’ai conservé ce serveur FTP car il était simple de configuration et de fonctionnement, du moins à mon goût.

Tout d’abord installons le serveur :

sudo apt-get install pure-ftpd pure-ftpd-common

Si vous n’êtes pas sur un serveur, mais sur un bureau (desktop), je vous invite à installer aussi pureadmin. Reportez-vous aux documentations accessibles par les liens plus bas pour ce point.

Une fois le serveur installé, nous avons un groupe pour les utilisateurs ftp et un utilisateur réel pour le serveur.

sudo groupadd ftpgroup
sudo useradd -g ftpgroup -d /dev/null -s /usr/sbin/nologin ftpuser

Il est possible d’apporter de nombreuses configurations au serveur FTP en lui même comme une limitation sur le type d’IP pouvant se connecter (IP V4 ou V6), des logs plus verbeux, …etc… Suivre les deux liens suivants pour consulter ces options [link1 - link2].

Une fois cette étape terminée, nous allons pouvoir créer nos utilisateurs virtuels. Attention dans cette partie je n’utilise que la ligne de commande car je suis sur un serveur, mais étonnamment il est conseillé de n’utiliser que cette méthode, même si vous avez installé pureadmin ;)

sudo pure-pw useradd user1 -u ftpuser -g ftpgroup -d /var/www/html/site1
sudo pure-pw useradd user2 -u ftpuser -g ftpgroup -d /var/www/html/site2

A chaque utilisateur ajouté, il vous sera demandé de saisir le mot de passe de ce dernier (deux fois). Il est bien sûr possible de rajouter diverses options pour les utilisateurs comme des quotas, une IP/mask pour un compte donné et ainsi de suite. Toutes ces options se retrouvent dans la documentation de Pure-FTP mais en voici déjà une bonne vision :

pure-pw useradd <login> [-f <passwd file>] -u <uid> [-g <gid>]
-D/-d <home directory> [-c <gecos>]
[-t <download bandwidth>] [-T <upload bandwidth>]
[-n <max number of files>] [-N <max Mbytes>]
[-q <upload ratio>] [-Q <download ratio>]
[-r <allow client host>[/<mask>][,<allow client host>[/<mask>]]…]
[-R <deny client host>[/<mask>][,<deny client host>[/<mask>]]…]
[-i <allow local host>[/<mask>][,<allow client host>[/<mask>]]…]
[-I <deny local host>[/<mask>][,<deny local host>[/<mask>]]…]
[-y <max number of concurrent sessions>]
[-z <hhmm>-<hhmm>] [-m]

Une fois les utilisateurs créés il faut générer leur fichier. Utilisez pour cela la commande suivante :

sudo pure-pw mkdb

Si nous nous arrétions là nous obtiendrions une erreur 530 en essayant de nous connecter. Afin d’activer ll’authetification liée à Pure-FTP, il faut créer un lien symbolique vers le fichier PureDB dans le dossier auth :

sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure

On peut trouver dans ce dossier d’autres liens symboliques. Personnellement j’ai toujours du réaliser cette étape. D’après certains sites il faudrait idéalement que le lien symbolique de l’identification choisie soit en premier dans le dossier. Si l’erreur 530 persiste, il est conseillé de désactiver l’identification PAM en remplaçant « yes » par « no » dans le fichier « /etc/pure-ftpd/conf/PAMAuthentication ».

Si à l’issue cela persistait encore et que dans le fichier /var/log/syslog vous avez un affichage proche du suivant :

Jun  9 11:46:41 monserveur pure-ftpd: (?@monserveur) [INFO] New connection from monserveur
Jun  9 11:46:46 monserveur pure-ftpd: (?@monserveur) [INFO] PAM_RHOST enabled. Getting the peer address
Jun  9 11:46:47 monserveur pure-ftpd: (?@monserveur) [WARNING] Authentication failed for user [monuserftp]
Jun  9 11:46:53 monserveur pure-ftpd: (?@monserveur) [INFO] Logout.

Je vous invite alors à redémarrer votre serveur. Oui je sais que cela peut-être considéré comme hérétique que de vouloir redémarrer un serveur Linux mais dans le cadre présent cela peut aider ;)

Si au démarrage du serveur FTP vous obtenez l’erreur suivante dans le fichier /etc/var/syslog :

Jun 9 16:55:37 monserveur pure-ftpd: (?@?) [ERROR] Sorry, invalid address given

Il y a fort à parier que la résolution DNS de votre serveur soit dans les choux. Je vous invite alors à vérifier la configuration des serveur DNS disponibles dans le fichier /etc/resolv.conf.

Voici maintenant quelques commandes utiles pour le fonctionnement immédiat de votre serveur.

Lister les utilisateurs virtuels :

sudo pure-pw list

Lister les utilisateurs connectés et leurs états :

sudo pure-ftpwho

Changer le mot de  passe d’un utilisateur :

pure-pw passwd monuser -f /etc/pure-ftpd/pureftpd.passwd

Il est aussi possible d’ajouter un message personnalisé pour chaque utilisateur. Pour cela je vous inviterai à consulter la première documentation sur Doc Ubuntu :) Voila pour toute cette partie. J’espère que cela sera utile à certains :)

Liens complémentaires / sources :