Recherche de site Web

Comment installer et configurer le serveur FTP dans Ubuntu


FTP (File Transfer Protocol) est un protocole réseau standard relativement ancien et le plus utilisé pour le téléchargement/transfert de fichiers entre deux ordinateurs sur un réseau. Cependant, FTP n'est pas sécurisé à l'origine, car il transmet les données avec les informations d'identification de l'utilisateur (nom d'utilisateur et mot de passe) sans cryptage.

Avertissement : Si vous envisagez d'utiliser FTP, envisagez de configurer une connexion FTP avec SSL/TLS (couvrira dans prochain article). Sinon, il est toujours préférable d’utiliser un FTP sécurisé tel que SFTP.

Lecture suggérée : Comment installer et sécuriser un serveur FTP dans CentOS 7

Dans ce tutoriel, nous allons montrer comment installer, configurer et sécuriser un serveur FTP (VSFTPD en entier « Démon FTP très sécurisé ») dans Ubuntu pour disposer d'une sécurité puissante contre les vulnérabilités FTP.

Étape 1 : Installation du serveur VsFTP dans Ubuntu

1. Tout d'abord, nous devons mettre à jour la liste des sources du package système, puis installer le package binaire VSFTPD comme suit :

sudo apt-get update
sudo apt-get install vsftpd

2. Une fois l'installation terminée, le service sera initialement désactivé, nous devons donc le démarrer manuellement pendant ce temps et également lui permettre de démarrer automatiquement au prochain démarrage du système :

------------- On SystemD ------------- 
systemctl start vsftpd
systemctl enable vsftpd

------------- On SysVInit ------------- 
service vsftpd start
chkconfig --level 35 vsftpd on

3. Ensuite, si le pare-feu UFW est activé (il n'est pas activé par défaut) sur le serveur, vous devez ouvrir les ports 21 et 20. où les démons FTP écoutent, afin de permettre l'accès aux services FTP depuis des machines distantes, puis ajoutez les nouvelles règles de pare-feu comme suit :

sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw status

Étape 2 : configuration et sécurisation du serveur VsFTP dans Ubuntu

4. Effectuons maintenant quelques configurations pour configurer et sécuriser notre serveur FTP, nous allons d'abord créer une sauvegarde du fichier de configuration d'origine /etc/vsftpd/vsftpd.conf comme donc:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

Ensuite, ouvrons le fichier de configuration vsftpd.

sudo vi /etc/vsftpd.conf
OR
sudo nano /etc/vsftpd.conf

Ajoutez/modifiez les options suivantes avec ces valeurs :

anonymous_enable=NO             # disable  anonymous login
local_enable=YES		# permit local logins
write_enable=YES		# enable FTP commands which change the filesystem
local_umask=022		        # value of umask for file creation for local users
dirmessage_enable=YES	        # enable showing of messages when users first enter a new directory
xferlog_enable=YES		# a log file will be maintained detailing uploads and downloads
connect_from_port_20=YES        # use port 20 (ftp-data) on the server machine for PORT style connections
xferlog_std_format=YES          # keep standard log file format
listen=NO   			# prevent vsftpd from running in standalone mode
listen_ipv6=YES		        # vsftpd will listen on an IPv6 socket instead of an IPv4 one
pam_service_name=vsftpd         # name of the PAM service vsftpd will use
userlist_enable=YES  	        # enable vsftpd to load a list of usernames
tcp_wrappers=YES  		# turn on tcp wrappers

5. Maintenant, configurez VSFTPD pour autoriser/refuser l'accès FTP aux utilisateurs en fonction du fichier de liste d'utilisateurs /etc/vsftpd.userlist.

Notez que par défaut, les utilisateurs répertoriés dans userlist_file=/etc/vsftpd.userlist se voient refuser l'accès à la connexion avec l'option userlist_deny=YES si userlist_enable=YES .

Mais l'option userlist_deny=NO déforme la signification du paramètre par défaut, de sorte que seuls les utilisateurs dont le nom d'utilisateur est explicitement répertorié dans userlist_file=/etc/vsftpd.userlist seront autorisés à connectez-vous au serveur FTP.

userlist_enable=YES                   # vsftpd will load a list of usernames, from the filename given by userlist_file
userlist_file=/etc/vsftpd.userlist    # stores usernames.
userlist_deny=NO   

Important : lorsque les utilisateurs se connectent au serveur FTP, ils sont placés dans une prison chrootée. Il s'agit du répertoire racine local qui fera office de répertoire personnel pour la session FTP. seulement.

Ensuite, nous examinerons deux scénarios possibles sur la façon de définir le répertoire jail chrooté (racine locale), comme expliqué ci-dessous.

6. À ce stade, ajoutons/modifions/décommentons ces deux options suivantes pour restreindre les utilisateurs FTP à leurs répertoires personnels.

chroot_local_user=YES
allow_writeable_chroot=YES

L'option chroot_local_user=YES signifie surtout que les utilisateurs locaux seront placés dans une prison chroot, leur répertoire personnel par défaut après la connexion.

Et nous devons également comprendre que VSFTPD ne permet pas que le répertoire chroot jail soit accessible en écriture, par défaut pour des raisons de sécurité, cependant, nous pouvons utiliser l'option allow_writeable_chroot=YES pour désactiver ce paramètre.

Enregistrez le fichier et fermez-le. Ensuite, nous devons redémarrer les services VSFTPD pour que les modifications ci-dessus prennent effet :

------------- On SystemD ------------- 
systemctl restart vsftpd

------------- On SysVInit ------------- 
service vsftpd restart

Étape 3 : Test du serveur VsFTP dans Ubuntu

7. Nous allons maintenant tester le serveur FTP en créant un utilisateur FTP avec la commande useradd comme suit :

sudo useradd -m -c "Aaron Kili, Contributor" -s /bin/bash aaronkilik
sudo passwd aaronkilik

Ensuite, nous devons explicitement lister l'utilisateur aaronkilik dans le fichier /etc/vsftpd.userlist avec la commande echo et la commande tee comme ci-dessous :

echo "aaronkilik" | sudo tee -a /etc/vsftpd.userlist
cat /etc/vsftpd.userlist

8. Il est maintenant temps de tester que nos configurations ci-dessus fonctionnent comme requis. Nous commencerons par tester les connexions anonymes ; nous pouvons clairement voir dans le résultat ci-dessous que les connexions anonymes ne sont pas autorisées sur le serveur FTP :

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : anonymous
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

9. Ensuite, testons si un utilisateur non répertorié dans le fichier /etc/vsftpd.userlist aura l'autorisation de se connecter, ce qui n'est pas le cas d'après le résultat qui suit. :

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : user1
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.

10. Nous allons maintenant effectuer un test final pour déterminer si un utilisateur répertorié dans le fichier /etc/vsftpd.userlist est effectivement placé dans son répertoire personnel après se connecter. Et cela est vrai d’après le résultat ci-dessous :

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.102:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

Avertissement : La définition de l'option allow_writeable_chroot=YES peut être si dangereuse qu'elle peut avoir des implications en matière de sécurité, en particulier si les utilisateurs disposent d'une autorisation de téléchargement, ou plus encore, l'accès au shell. Utilisez-le uniquement si vous savez exactement ce que vous faites.

Il faut noter que ces implications de sécurité ne sont pas spécifiques à VSFTPD, elles peuvent également affecter tous les autres démons FTP qui proposent de mettre les utilisateurs locaux dans des prisons chroot.

Pour cette raison, dans la section ci-dessous, nous expliquerons une méthode plus sécurisée permettant de définir un répertoire racine local non accessible en écriture différent pour un utilisateur.

Étape 4 : configurer les répertoires personnels des utilisateurs FTP dans Ubuntu

11. Maintenant, ouvrez à nouveau le fichier de configuration VSFTPD.

sudo vi /etc/vsftpd.conf
OR
sudo nano /etc/vsftpd.conf

et commentez l'option non sécurisée en utilisant le caractère # comme indiqué ci-dessous :

#allow_writeable_chroot=YES

Ensuite, créez le répertoire racine local alternatif pour l'utilisateur (aaronkilik, le vôtre n'est peut-être pas le même) et définissez les autorisations requises en désactivant les autorisations d'écriture pour tous les autres utilisateurs de ce répertoire :

sudo mkdir /home/aaronkilik/ftp
sudo chown nobody:nogroup /home/aaronkilik/ftp
sudo chmod a-w /home/aaronkilik/ftp

12. Ensuite, créez un répertoire sous la racine locale avec les autorisations appropriées où l'utilisateur stockera ses fichiers :

sudo mkdir /home/aaronkilik/ftp/files
sudo chown -R aaronkilk:aaronkilik /home/aaronkilik/ftp/files
sudo chmod -R 0770 /home/aaronkilik/ftp/files/

Ensuite, ajoutez/modifiez les options ci-dessous dans le fichier de configuration VSFTPD avec leurs valeurs correspondantes :

user_sub_token=$USER          # inserts the username in the local root directory 
local_root=/home/$USER/ftp    # defines any users local root directory

Enregistrez le fichier et fermez-le. Et redémarrez les services VSFTPD avec les paramètres récents :

------------- On SystemD ------------- 
systemctl restart vsftpd

------------- On SysVInit ------------- 
service vsftpd restart

13. Maintenant, effectuons une dernière vérification et assurons-nous que le répertoire racine local de l'utilisateur est le répertoire FTP que nous avons créé dans son répertoire personnel.

ftp 192.168.56.102
Connected to 192.168.56.102  (192.168.56.102).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:aaronkilik) : aaronkilik
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls

C'est ça! Pensez à partager votre avis sur ce guide via le formulaire de commentaires ci-dessous ou éventuellement à nous fournir toute information importante concernant le sujet.

Enfin, ne manquez pas notre prochain article, dans lequel nous décrirons comment sécuriser un serveur FTP à l'aide de connexions SSL/TLS dans Ubuntu 16.04/16.10, d'ici là, restez toujours à l'écoute de TecMint.