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
news
uucp
operator
games
nobodyrpm
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.