Linux #9 - Faire un bon serveur FTP en 1m20 chrono !
Table des matières:
- Conditions préalables
- Installer vsftpd sur Debian 9
- Configuration de vsftpd
- 1. Accès FTP
- 2. Activation des téléchargements
- 3. Prison de Chroot
- 4. Connexions FTP passives
- 5. Limitation de la connexion utilisateur
- 6. Sécurisation des transmissions avec SSL / TLS
- Redémarrez le service vsftpd
- Ouverture du pare-feu
- Création d'un utilisateur FTP
- Désactiver l'accès au shell
- Conclusion
FTP (File Transfer Protocol) est un protocole réseau standard utilisé pour transférer des fichiers vers et depuis un réseau distant. Pour des transferts de données plus sécurisés et plus rapides, utilisez SCP ou SFTP.
Il existe de nombreux serveurs FTP open source disponibles pour Linux. Les plus populaires et les plus utilisés sont PureFTPd, ProFTPD et vsftpd.
Ce tutoriel explique comment installer et configurer vsftpd (démon Ftp très sécurisé) sur Debian 9. vsftpd un serveur FTP stable, sécurisé et rapide. Nous vous montrerons également comment configurer vsftpd pour restreindre les utilisateurs à leur répertoire personnel et crypter toute la transmission avec SSL / TLS.
Conditions préalables
L'utilisateur auquel vous êtes connecté doit disposer des privilèges sudo pour pouvoir installer des packages.
Installer vsftpd sur Debian 9
Le paquet vsftpd est disponible dans les référentiels Debian. L'installation est assez simple:
sudo apt update
sudo apt install vsftpd
Le service vsftpd démarre automatiquement une fois le processus d'installation terminé. Vérifiez-le en imprimant l'état du service:
sudo systemctl status vsftpd
La sortie ressemblera à quelque chose comme ci-dessous, montrant que le service vsftpd est actif et en cours d'exécution:
● vsftpd.service - vsftpd FTP server Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2018-12-10 11:42:51 UTC; 53s ago Main PID: 1394 (vsftpd) CGroup: /system.slice/vsftpd.service └─1394 /usr/sbin/vsftpd /etc/vsftpd.conf
Configuration de vsftpd
Le serveur vsftpd peut être configuré en modifiant le fichier
vsftpd.conf
, situé dans le répertoire
/etc
La plupart des paramètres sont bien documentés dans le fichier de configuration. Pour toutes les options disponibles, visitez la page officielle vsftpd.
Dans les sections suivantes, nous passerons en revue certains paramètres importants nécessaires pour configurer une installation vsftpd sécurisée.
Commencez par ouvrir le fichier de configuration vsftpd:
1. Accès FTP
Localisez les directives
anonymous_enable
et
local_enable
et vérifiez votre correspondance de configuration avec les lignes ci-dessous:
anonymous_enable=NO local_enable=YES
Cela garantit que seuls les utilisateurs locaux peuvent accéder au serveur FTP.
2. Activation des téléchargements
Décommentez le paramètre
write_enable
pour autoriser les modifications du système de fichiers telles que le téléchargement et la suppression de fichiers.
3. Prison de Chroot
Pour empêcher les utilisateurs FTP d'accéder à tous les fichiers en dehors de leurs répertoires personnels, décommentez le paramètre
chroot
.
chroot_local_user=YES
Par défaut pour éviter une vulnérabilité de sécurité, lorsque chroot est activé, vsftpd refusera de télécharger des fichiers si le répertoire dans lequel les utilisateurs sont verrouillés est accessible en écriture.
Utilisez l'une des méthodes ci-dessous pour autoriser les téléchargements lorsque le chroot est activé.
-
Méthode 1. - La méthode recommandée pour autoriser le téléchargement est de garder le chroot activé et de configurer les répertoires FTP. Dans ce tutoriel, nous allons créer un répertoire
/etc/vsftpd.confftp
à l'intérieur de la page d'accueil de l'utilisateur qui servira de chroot et de répertoire deuploads
inscriptible pour le téléchargement de fichiers.user_sub_token=$USER local_root=/home/$USER/ftp
Méthode 2. - Une autre option consiste à ajouter la directive suivante dans le fichier de configuration vsftpd. Utilisez cette option si vous devez accorder un accès en écriture à votre utilisateur à son répertoire personnel.
/etc/vsftpd.confallow_writeable_chroot=YES
4. Connexions FTP passives
vsftpd peut utiliser n'importe quel port pour les connexions FTP passives. Nous spécifierons la plage minimale et maximale de ports, puis ouvrirons la plage dans notre pare-feu.
Ajoutez les lignes suivantes au fichier de configuration:
/etc/vsftpd.conf
pasv_min_port=30000 pasv_max_port=31000
5. Limitation de la connexion utilisateur
Pour autoriser uniquement certains utilisateurs à se connecter au serveur FTP, ajoutez les lignes suivantes à la fin du fichier:
userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO
Lorsque cette option est activée, vous devez spécifier explicitement quels utilisateurs peuvent se connecter en ajoutant les noms d'utilisateur au fichier
/etc/vsftpd.user_list
(un utilisateur par ligne).
6. Sécurisation des transmissions avec SSL / TLS
Afin de crypter les transmissions FTP avec SSL / TLS, vous devrez disposer d'un certificat SSL et configurer le serveur FTP pour l'utiliser.
Vous pouvez utiliser un certificat SSL existant signé par une autorité de certification de confiance ou créer un certificat auto-signé.
Dans ce didacticiel, nous allons générer un certificat SSL auto-signé à l'aide de la commande
openssl
.
La commande suivante créera une clé privée de 2048 bits et un certificat auto-signé valide pendant 10 ans. La clé privée et le certificat seront enregistrés dans un même fichier:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Une fois le certificat SSL créé, ouvrez le fichier de configuration vsftpd:
sudo nano /etc/vsftpd.conf
Recherchez les directives
rsa_cert_file
et
rsa_private_key_file
, remplacez leurs valeurs par le chemin du fichier
pam
et définissez la directive
ssl_enable
sur
YES
:
rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES
Sauf indication contraire, le serveur FTP utilisera uniquement TLS pour établir des connexions sécurisées.
Redémarrez le service vsftpd
Une fois l'édition terminée, le fichier de configuration vsftpd (à l'exclusion des commentaires) devrait ressembler à ceci:
/etc/vsftpd.conf
listen=NO listen_ipv6=YES anonymous_enable=NO local_enable=YES write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key ssl_enable=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO
Enregistrez le fichier et redémarrez le service vsftpd pour que les modifications prennent effet:
Ouverture du pare-feu
Pour ouvrir le port
21
(port de commande FTP), le port
20
(port de données FTP) et
30000-31000
(plage de ports passifs), exécutez les commandes suivantes:
sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp
Pour éviter d'être verrouillé, nous ouvrirons également le port
22
:
sudo ufw allow OpenSSH
Rechargez les règles UFW en désactivant et réactivant UFW:
sudo ufw disable
sudo ufw enable
Pour vérifier les modifications exécutées:
sudo ufw status
Status: active To Action From -- ------ ---- 20:21/tcp ALLOW Anywhere 30000:31000/tcp ALLOW Anywhere OpenSSH ALLOW Anywhere 20:21/tcp (v6) ALLOW Anywhere (v6) 30000:31000/tcp (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)
Création d'un utilisateur FTP
Pour tester notre serveur FTP, nous allons créer un nouvel utilisateur.
- Si vous avez déjà un utilisateur auquel vous souhaitez accorder un accès FTP, ignorez la 1ère étape. Si vous définissez
allow_writeable_chroot=YES
dans votre fichier de configuration, ignorez la 3ème étape.
-
Créez un nouvel utilisateur nommé
newftpuser
:sudo adduser newftpuser
Ajoutez l'utilisateur à la liste des utilisateurs FTP autorisés:
echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list
Créez l'arborescence de répertoires FTP et définissez les autorisations appropriées:
sudo mkdir -p /home/newftpuser/ftp/upload
sudo chmod 550 /home/newftpuser/ftp
sudo chmod 750 /home/newftpuser/ftp/upload
sudo chown -R newftpuser: /home/newftpuser/ftp
Comme discuté dans la section précédente, l'utilisateur pourra télécharger ses fichiers dans le répertoire
ftp/upload
.
À ce stade, votre serveur FTP est entièrement fonctionnel et vous devriez pouvoir vous connecter à votre serveur à l'aide de n'importe quel client FTP pouvant être configuré pour utiliser le cryptage TLS tel que FileZilla.
Désactiver l'accès au shell
Par défaut, lors de la création d'un utilisateur, s'il n'est pas spécifié explicitement, l'utilisateur aura un accès SSH au serveur.
Pour désactiver l'accès au shell, nous allons créer un nouveau shell qui affichera simplement un message indiquant à l'utilisateur que son compte est limité à l'accès FTP uniquement.
Créez le shell
/bin/ftponly
et rendez-le exécutable:
echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
sudo chmod a+x /bin/ftponly
Ajoutez le nouveau shell à la liste des shells valides dans le fichier
/etc/shells
:
echo "/bin/ftponly" | sudo tee -a /etc/shells
Changez le shell utilisateur en
/bin/ftponly
:
sudo usermod newftpuser -s /bin/ftponly
Utilisez la même commande pour modifier le shell de tous les utilisateurs auxquels vous souhaitez accorder uniquement un accès FTP.
Conclusion
Dans ce tutoriel, vous avez appris comment installer et configurer un serveur FTP sécurisé et rapide sur votre système Debian 9.
ftp debianComment configurer et utiliser le serveur FTP sur Android
Vous souhaitez transférer des fichiers de votre appareil Android vers un PC sans câble USB? Essayez la méthode du serveur FTP pour partager des fichiers entre Android et PC sans fil.
Comment configurer un serveur ftp avec vsftpd sur centos 7
Dans ce tutoriel, nous allons installer vsftpd. Il s'agit d'un serveur FTP stable, sécurisé et rapide. Nous vous montrerons également comment configurer vsftpd pour restreindre les utilisateurs à leur répertoire personnel et crypter toute la transmission avec SSL / TLS.
Comment configurer le serveur ftp avec vsftpd sur Ubuntu 18.04
Dans ce tutoriel, nous allons installer vsftpd. Il s'agit d'un serveur FTP stable, sécurisé et rapide. Nous vous montrerons également comment configurer vsftpd pour restreindre les utilisateurs à leur répertoire personnel et crypter toute la transmission avec SSL / TLS.