Pure-FTPd est un serveur FTP gratuit et léger basé sur Troll-FTPd, le développement a commencé en 2001 et il fonctionne sur de nombreux systèmes d'exploitation de type Unix, notamment Linux, *BSD, Solaris et HP-UX. Pure-FTPd possède de nombreuses fonctionnalités telles que les domaines virtuels, le répertoire personnel chroot, les utilisateurs virtuels, la prise en charge TLS/SSL, les quotas virtuels et bien d'autres.
Dans ce tutoriel, je vais vous montrer comment installer et configurer pure-ftpd sur OpenSUSE Leap 42.1. Je vais vous montrer comment configurer pure-ftpd avec TLS/SSL, puis configurer des utilisateurs virtuels.
Prérequis
- OpenSUSE Leap 42.1
- Privilèges root
- OpenSUSE, connaissances Zypper
Étape 1 - Installer et configurer SuSEfirewall2
SuSEfirewall2 est un script pour générer la configuration du pare-feu dans le fichier '/etc/sysconfig/SuSEfirewall2'. Nous allons installer SuSEfirewall2 puis ouvrir les ports pour SSH et le service FTP.
Installez SuSEfirewall2 avec zypper :
zypper in SuSEfirewall2
Ensuite, éditez le fichier de configuration '/etc/sysconfig/SuSEfirewall2' avec vim :
vim /etc/sysconfig/SuSEfirewall2
Ajoutez les nouveaux services ssh et FTP à la ligne 253 :
FW_SERVICES_EXT_TCP="ssh ftp"
Enregistrez et quittez.
Démarrez maintenant SuSEfirewall2 avec la commande systemctl :
systemctl start SuSEfirewall2
Étape 2 - Installer et configurer Pure-FTPd
Dans cette étape, nous allons installer pure-ftpd avec OpenSSL pour la configuration TLS/SSL et configurer l'utilisateur et le groupe pure-ftpd.
Installez les applications avec zypper comme indiqué ci-dessous :
zypper in pure-ftpd openssl
Ajoutez maintenant le nouveau groupe 'ftpgroup ' et le nouvel utilisateur du maître 'FTP user' appelé 'ftpuser ' au groupe.
groupadd ftpgroup
useradd -g ftpgroup -d /dev/null -s /etc ftpuser
Allez dans le répertoire pure-ftpd et éditez le fichier de configuration 'pure-ftpd.conf' avec l'éditeur vim :
cd /etc/pure-ftpd/
vim pure-ftpd.conf
Remplacez la valeur de la ligne 81 par "oui" pour désactiver l'utilisateur anonyme.
NoAnonymous yes
Décommentez la ligne 131 pour configurer le backend. Pure-ftpd prend en charge MySQL, PostgreSQL et LDAP en tant que backend, mais dans ce didacticiel, nous utiliserons "PureDB" pour le backend.
PureDB /etc/pure-ftpd/pureftpd.pdb
Commentez la ligne PAMAuthentication pour désactiver l'authentification PAM à la ligne 141 car nous utiliserons PureDB comme source d'authentification.
#PAMAuthentication yes
Enregistrez et quittez.
Étape 3 - Configurer TLS/SSL pour Pure-FTPd
Générez un nouveau fichier de certificat auto-signé dans le répertoire '/etc/ssl/private' avec la commande openssl :
openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem -days 365
Modifiez les autorisations du fichier de certificat en 0600 :
chmod 600 /etc/ssl/private/pure-ftpd.pem
Ensuite, revenez au répertoire pure-ftpd et modifiez le fichier de configuration pour activer la prise en charge TLS/SSL pour la connexion client.
cd /etc/pure-ftpd/
vim pure-ftpd.conf
Décommentez la ligne 439 pour activer TLS.
TLS 1
Décommentez la ligne 449 et ajoutez une nouvelle option pour la rendre plus sécurisée.
TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:!SSLv3
Décommentez la ligne 445 pour définir le fichier de certificat.
CertFile /etc/ssl/private/pure-ftpd.pem
Enregistrez et quittez.
Démarrez maintenant pure-ftpd avec la commande systemctl :
systemctl start pure-ftpd
Étape 4 - Configurer les utilisateurs virtuels
Pure-FTPd fournit des fonctionnalités pour créer et utiliser des utilisateurs virtuels au lieu d'utilisateurs réels du système (Linux). Pure-FTPd fournit plusieurs backends d'authentification et la configuration de l'utilisateur virtuel dépend du backend utilisé par le serveur. À l'étape 2, nous avons défini 'PureDB' comme backend.
Nous pouvons créer un nouvel utilisateur virtuel avec la commande 'pure-pw' fournie par pure-ftpd. Dans cette étape, nous allons créer un nouvel utilisateur virtuel nommé 'shiro' avec le répertoire '/srv/ftp/shiro' comme répertoire de base ftp et l'utilisateur est chrooté dans ce répertoire afin qu'il ne puisse pas accéder aux autres répertoires système.
Créez le nouvel utilisateur virtuel avec pure-pw :
pure-pw useradd shiro -u ftpuser -d /srv/ftp/shiro
Créez le répertoire pour l'utilisateur virtuel et changez le propriétaire de ce répertoire en « utilisateur FTP » maître.
mkdir -p /srv/ftp/shiro
chown -R ftpuser.ftpgroup /srv/ftp/shiro
Ensuite, nous devons enregistrer les modifications avec la commande ci-dessous :
pure-pw mkdb
Maintenant que l'utilisateur shiro est prêt à être utilisé, nous pouvons utiliser FTPp à partir de la ligne de commande ou FileZilla pour l'interface graphique pour se connecter au serveur.
Remarque :
pure-pw a plus d'options de commande, vous pouvez utiliser 'pure-pw help ' pour voir toutes les commandes utiles.
Étape 5 - Tester
J'utiliserai la commande FTP dans le terminal pour les tests. Ouvrez votre terminal et tapez "ftp":
ftp
Entrez ensuite l'ip du serveur pure-ftpd :
open 192.168.43.69
Connectez-vous avec l'utilisateur 'shiro' et le mot de passe, puis appuyez sur 'Entrée'.
Essayez de télécharger le fichier avec la commande 'put' :
put picture.png mypict.png
Vous verrez maintenant le fichier mypict.png sur le serveur avec la commande ls ci-dessous :
ls