Archives

FTP : Installer et configurer un serveur ProFTPd

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

proftpd_logo





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




On peut supprimer les éventuels résidus créés automatiquement dans le dossier utilisateur ( .ssh .bashrc ...)

Code BASH :
rm -rf /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