Configuration de VSFTPD

VSFTPD, qu'est ce que c'est?

VSFTPD est un serveur FTP: Very Secure File Transfer Protocol Deamon.

En d'autres termes, c'est le moyen pour transférer des fichiers d'un ordinateur distant vers un serveur (votre serveur dédié). Avec VSFTPD vous pourrez transférer les fichiers de votre site internet vers votre serveur web dédié.

Configuration de VSFTPD

Nous allons maintenant créer des espaces FTP sur le disque dur de votre serveur. Un espace FTP sera le lieu sur votre serveur ou vous pourrez transférer vos fichiers depuis votre ordinateur personnel.

Il y a plusieurs façon de créer des espaces ftp:

- En créant un utilisateur linux pour chaque espace ftp.

- en utilisant une base de donnée de type Berkeley (mode utilisateurs viruels)

Nous allons choisir la solution un utilisateur linux pour chaque espace ftp car c'est certainement la solution la plus simple. Après si vous avez des centaines d'espace FTP il faudra songer à faire autrement...

Notre objectif:

- Nous voulons créer l'espace ftp pour le site example.com

- Les fichiers du site example.com seront situés ici : var/www/example.com

Sauvegarde du fichier de configuration

Nous allons créer une sauvegarde du fichier de configuration /etc/vsftpd.conf , en cas de problème cela peut toujours être utile...

cp -i /etc/vsftpd.conf /etc/vsftpd.conf_BACKUP

Édition et modification du fichier de configuration /etc/vsftpd.conf

Nous allons maintenant éditer le fichier de configuration /etc/vsftpd.conf pour vérifier et modifier certains paramètres.

Remarque: les commentaires dans ce fichier commencent par le caratère # (dièse), donc les paramètres écrits après # seront ignorés.

nano /etc/vsftpd.conf

# Nous voulons que le serveur fonctionne en mode standalone
listen=YES
listen_ipv6=NO
#
# On ne veut surtout pas de connexions en mode anonymous
anonymous_enable=NO

# On veut que les utilisateurs locaux puissent se connecter
local_enable=YES
#
# On veut que les utilisateurs puissent remonter des fichiers sur le serveur
write_enable=YES
#
# On fixe le masque local a 022 (les fichiers remontés auront des droits en 755) 
local_umask=022
#
# On interdit l’upload anonyme
anon_upload_enable=NO
#
# Idem pour la creation de repertoires
anon_mkdir_write_enable=NO
#
# On demande a ce que les actions des utilisateurs soient loggees
xferlog_enable=YES
#
# On verifie que la commande PORT provienne bien du port 20 de la machine cliente
connect_from_port_20=YES
#
# Les logs seront enregistres dans le fichier /var/log/vsftpd.log
xferlog_file=/var/log/vsftpd.log
#
# On declare les valeurs de timeout. Celles fournies par defaut sont ok pour notre utilisation
idle_session_timeout=300
data_connection_timeout=120
connect_timeout=60
accept_timeout=60
#
# Par securite, on interdit la commande ABOR
async_abor_enable=NO
#
# Les transferts en ASCII sont souvent source de confusions
ascii_upload_enable=NO
ascii_download_enable=NO
#
# Par securite, on change la banniere (ne pas y écrire des caractères UTF8 comme des accents par exemple)
ftpd_banner=Bienvenue sur le serveur !!!
#
# On veut limiter les utilisateurs a leur repertoire
chroot_local_user=YES
chroot_list_enable=NO
allow_writeable_chroot=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list

#
# Les heures d’enregistrement des fichiers seront affichees a l’heure locale
use_localtime=YES

Maintenant le problème c'est que l'on peut de connecter en ftp via le protocole FTP (Files Transfert Protocol) et par le protocole SFTP (SSH File Transfert Protocol).

Bon, là je ne suis pas vraiment un expert, mais ce que j'ai eu envie de faire c'est de désactiver le protocole SFTP pour n'utiliser que le protocole FTP avec VSFTPD

Et pour cela, nous allons configurer le fichier /etc/ssh/sshd_config

nano /etc/ssh/sshd_config

#Subsystem sftp /usr/lib/openssh/sftp-server

Subsystem sftp internal-sftp


Match Group sftpusers
       ChrootDirectory /home/ftp_jail/
       AllowTCPForwarding no
       X11Forwarding no
       ForceCommand internal-sftp


Commenté la ligne Subsystem sftp /usr/lib/openssh/sftp-server en rajoutant un # devant
et rajouter ces lignes à la fin du fichier /etc/ssh/sshd_config , pourquoi à la fin? J'en sais rien, j'ai lu cela quelque part sans trop vérifier...

Explications :
Match group : autorise l'accès qu'aux utilisateurs appartenant au groupe sftpusers
Subsystem sftp internal-sftp : permet de spécifier que l'on veut utiliser SFTP
ChrootDirectory : spécifie la racine du FTP
AllowTCPForwarding yes : autorise la redirection des ports TCP

Attention à bien utiliser "Match Group sftpusers" car si vous n'écrivez as ceci, alors tous les utilisateurs seront chrootés, même l'utilisateur principal root et vous n'aurez plus accès à votre serveur, et là je peut le confirmer c'est pénible, car il fut réinstaller le serveur de A à Z...


et pour bloquer et concaténer les utilisateurs dans un répertoire vide, on va faire créer un répertoire vide:

mkdir /home/ftp_jail/

et on redémarre shh

systemctl restart sshd 

Et on redémarre vsftpd pour qu'il prenne en compte les changements.

/etc/init.d/vsftpd restart

On créé le répertoire de chroot:

mkdir /home/ftp_jail/

On va créer notre groupe d'utilisateurs nommé sftpusers

groupadd sftpusers

et tous nos utilisateurs pouvant se connecter au ftp devront se trouver dans le groupe sftpusers

Création de l'espace FTP et de l'utilisateur

On créé l'espace ftp du site et en même temps son emplacement sur le disque dur, pour cela on va ajouter un utilisateur et créer le répertoire /var/www/example.com/

useradd -m -d /var/www/example.com/ Un_Nom_d_Utilisateur

Et on attribue un mot de passe à l'utilisateur Un_Nom_d_Utilisateur.

passwd Un_Nom_d_Utilisateur

Sans oublier de mettre notre utilisateur dans le groupe sftpusers

usermod -g sftpusers  Un_Nom_d_Utilisateur

On vérifie que le répertoire /var/www/example.com/ a été créé:

ls -a /var/www

.
..
example.com

Si le répertoire n'a pas été créé on le créé:

avec mkdir /var/www/example.com/

on attribue les droits d’accès au répertoire /var/www/example.com/

chmod 777 /var/www/example.com/

Tester la configuration de VSFTPD

On teste l’accès au ftp depuis un autre ordinateur par exemple avec le client FileZilla (http://filezilla-project.org/)

- Hôte: 111.222.333.444 (l'ip de votre serveur dédié)
- Port: (vide)
- Type de serveur: FTP
- Type d'authentification: normale
- Identifiant: Un_Nom_d_Utilisateur
- Mot de passe: celui que vous avez choisi pour Un_Nom_d_Utilisateur

Tester la configuration de VSFTPD avec FileZilla

En principe votre configuration de VSFTPD est terminée, et vous devriez pouvoir vous connecter à votre serveur ftp et y transférer des fichiers.

Vérifiez que l'utilisateur ne peut pas remonter dans l'arborescence des répertoires et se ballader partout dans le serveur..

Et vérifier que l'utilisateur, en se connectant avec SFTP est bloqué (chroot) dans le répertoire /home/ftp_jail/

FileZilla sftp

Vos commentaires
Laisser un commentaire
sera en attente de modération, validation NON automatique
Javascript should be activated
Recopiez le code SVP:
pseudoVotre nom (obligatoire)
emailEmail ou site internet (facultatif)
(nécessaire si vous souhaitez être prévenu d'une réponse)
photo, imageImage/photo (facultatif)
(JPG, JPEG, PNG ou GIF)
(image de partition concernant le question par exemple)
Ne pas remplir si vous êtes un humain (anti spam)