FTP : Installer et configurer un serveur ProFTPd



Introduction




ProFTPD est un serveur FTP libre. Il permet de transférer des fichiers par Internet ou par le biais d'un réseau informatique local (intranet).
Toute personnes en ayant l'autorisation, peut télécharger et envoyer des fichiers. Il permet la création d'un espace anonyme.


Installation




Calculate Linux



Code BASH :
emerge -avq net-ftp/proftpd



CentOS



Les dépôts EPEL doivent être actifs.

Code BASH :
yum install proftpd



Configuration du service ProFTPd



Suivant la distribution, le fichier de configuration s'appelle /etc/proftpd/proftpd.conf ou /etc/proftpd.conf


Calculate Linux



On créé le fichier proftpd.conf depuis le modèle, on démarre le service puis on l'ajoute au démarrage :
Code BASH :
cp /etc/proftpd/proftpd.conf.sample /etc/proftpd/proftpd.conf
/etc/init.d/proftpd start
rc-update add proftpd default



CentOS



On démarre le service puis on l'ajoute au démarrage :

Code BASH :
systemctl start proftpd
systemctl enable proftpd



Fichier de configuration proftpd.conf



Par défaut, la configuration attribue un espace FTP anonyme : les fichiers listés sont ceux de /home/ftp.
Aussi, chaque utilisateur peut accéder à son dossier personnel (chrooté) avec ses identifiants et mots de passe système.


Fichier de démonstration



Voici le fichier original avec quelques explications en commentaire :

Code BASH :
 
# Nom du serveur qui s'affiche
ServerName "ProFTPD Default Server"
# Serveur Autonome (ne pas modifier)
ServerType standalone
# Activer le serveur par défaut (Si pas de "VirtualHost")
DefaultServer on
# Est-ce qu'on a besoin d'un shell valide pour se connecter
RequireValidShell off
# Activer l'authentification PAM
AuthPAM off
AuthPAMConfig ftp
 
# Port d'écoute (21 par défaut)
Port 21
 
# Permissions d'un dossier ou d'un fichier créé via FTP
Umask 022
 
# Nombre de connexions simultanées au FTP
MaxInstances 30
 
# Lancer le démon ftp sous cet utilisateur et groupe
User ftp
Group ftp
 
# Racine du FTP ( [b]~[/b] correspond au fait que l'utilisateur est cloisonné dans son dossier personnel)
DefaultRoot ~
 
# Generally files are overwritable.
AllowOverwrite on
 
# Désactiver la commande CHMOD via le FTP
<Limit SITE_CHMOD>
  DenyAll
</Limit>
 
# Exemple de dossier anonyme sans possibilité d'uploader
<Anonymous ~ftp>
  User ftp
  Group ftp
 
  # Possibilité de se connecter avec les utilisateurs "anonymous" et "ftp".
  UserAlias anonymous ftp
 
  # Limiter le nombre de connexions anonymes
  MaxClients 10
 
  # Désactiver la commande WRITE (d'écriture) pour les utilisateurs anonymes
  <Limit WRITE>
    DenyAll
  </Limit>
</Anonymous>



Interdire la connexion à root



Pour interdire root à se connecter, placer dans la section Global : RootLogin off

Code BASH :
<Global>
  RootLogin off
</Global>


Interdire des utilisateurs à se connecter



Pour interdire des utilisateurs à se connecter on pet utiliser le fameux fichier /etc/ftpusers. Dedans on liste les utilisateurs qui ne pourront pas se connecter. Exemple :
Code BASH :
# Provided by ftpbase (dont remove this line!)
# /etc/ftpusers: list of users disallowed FTP access
# $Header: /var/cvsroot/gentoo-x86/net-ftp/ftpbase/files/ftpusers,v 1.1 2005/06/28 14:52:26 uberlord Exp $
 
halt
operator
root
shutdown
sync
bin
daemon
adm



Dans la section Global, ne pas oublier de mentionner son utilisation :
Code BASH :
<Global>
   UseFtpUsers on
</Global>


Créer des utilisateurs FTP



On peut créer simplement un utilisateur système puis lui attribuer un mot de passe :

Code BASH :
useradd -d /home/moi -s /bin/false moi
passwd moi
mkdir /home/moi
chown -R moi /home/moi



ProFTPD + SSL



Un petit peu de sécurité, ça vous dit ?

On va générer un certificat :
Code BASH :
cd /etc/proftpd/
mkdir ssl
cd ssl/
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -out proftpd-rsa.pem -keyout proftpd-key.pem


On protège la clé :

Code BASH :
chmod 440 proftpd-key.pem


On édite /etc/proftpd/proftpd.conf pour renseigner le tout en ajoutant à la fin du fichier :

Code BASH :
TLSEngine on
TLSRequired on
TLSRSACertificateFile /etc/proftpd/ssl/proftpd-rsa.pem
TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd-key.pem
TLSLog /var/log/proftpd-tls.log
<IfModule mod_tls.c>
  TLSEngine on
</IfModule>


On redémarre proftpd pour prendre en compte les infos :

Code BASH :
/etc/init.d/proftpd restart

ou
Code BASH :
systemctl restart proftpd
Cette page a été vue 22113 fois