Dans cet article, nous allons explorer les étapes nécessaires pour mettre en place un serveur FTP robuste et sécurisé à l'aide de vsftpd sous Debian. De plus, nous installerons le serveur web Nginx pour ajouter une interface graphique MonstaFTP, offrant ainsi une expérience utilisateur améliorée pour gérer les fichiers et les dossiers de notre serveur FTP.
Que vous soyez un administrateur système cherchant à déployer un serveur FTP pour faciliter le partage de fichiers entre collègues ou un développeur web souhaitant offrir un accès simple et sécurisé à des fichiers pour des clients, ce tutoriel est fait pour vous. Nous aborderons les étapes clés, des prérequis à l'installation de vsftpd, en passant par la configuration du serveur web Nginx et la mise en place de l'interface graphique MonstaFTP.
Prérequis et préparation du système
a. Mise à jour du système
b. Installation des dépendances nécessaires
c. Création d'un utilisateur dédié au serveur FTP
Installation et configuration de vsftpd
a. Installation de vsftpd
b. Configuration de vsftpd
c. Création des dossiers et gestion des permissions
d. Test du serveur FTP
Installation et configuration du serveur web Nginx
a. Installation de Nginx
b. Configuration de Nginx
c. Mise en place d'un certificat SSL avec Let's Encrypt
Installation et configuration de l'interface graphique MonstaFTP
a. Téléchargement de MonstaFTP
b. Installation de MonstaFTP
c. Configuration de MonstaFTP
d. Test de l'interface web MonstaFTP
Sécurisation et optimisation du serveur FTP et de l'interface MonstaFTP
a. Mise en place d'un pare-feu
b. Configuration des options de sécurité avancées
c. Optimisation des performances
Conclusion et étapes supplémentaires
Avant de procéder à l'installation de vsftpd et Nginx, il est essentiel de mettre à jour votre système Debian pour vous assurer que vous disposez des dernières versions des logiciels et des correctifs de sécurité. Ouvrez un terminal et exécutez les commandes suivantes pour mettre à jour et mettre à niveau votre système :
sudo apt update
sudo apt upgrade
Certaines dépendances sont nécessaires pour le bon fonctionnement de vsftpd et Nginx. Vous pouvez les installer en utilisant la commande suivante :
sudo apt install curl wget unzip software-properties-common
Il est recommandé de créer un utilisateur dédié pour gérer les opérations du serveur FTP, car cela renforce la sécurité et l'organisation. Pour créer un nouvel utilisateur, suivez ces étapes :
sudo adduser ftpuser
Vous serez invité à définir un mot de passe pour le nouvel utilisateur et à fournir des informations supplémentaires. Vous pouvez laisser les champs d'information supplémentaires vides et appuyer sur "Entrée" pour les ignorer.
Ajoutez l'utilisateur nouvellement créé au groupe "ftp" pour lui accorder les autorisations nécessaires :
sudo usermod -aG ftp ftpuser
Après avoir terminé ces étapes, votre système est prêt pour l'installation de vsftpd et Nginx.
Pour installer vsftpd, exécutez la commande suivante dans le terminal :
sudo apt install vsftpd
Après l'installation, vsftpd sera ajouté en tant que service et démarrera automatiquement.
Le fichier de configuration principal de vsftpd se trouve dans /etc/vsftpd.conf. Avant de modifier ce fichier, il est préférable d'en faire une copie de sauvegarde. Utilisez la commande suivante pour créer une copie de sauvegarde :
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
Ouvrez le fichier de configuration avec un éditeur de texte, comme nano, pour apporter les modifications nécessaires :
sudo nano /etc/vsftpd.conf
Mettez à jour les paramètres suivants pour les adapter à vos besoins :
Enregistrez les modifications et fermez l'éditeur.
Créez un dossier pour le serveur FTP en utilisant la commande suivante. Remplacez "/home/ftpuser/ftp" par le chemin d'accès souhaité :
sudo mkdir -p /home/ftpuser/ftp
Attribuez la propriété du dossier à l'utilisateur FTP :
sudo chown -R ftpuser:ftp /home/ftpuser/ftp
Redémarrez le service vsftpd pour appliquer les modifications de configuration :
sudo systemctl restart vsftpd
Assurez-vous que vsftpd est actif et fonctionne correctement :
sudo systemctl status vsftpd
Pour tester la connexion FTP, utilisez un client FTP (comme FileZilla) ou la commande "ftp" depuis un autre ordinateur. Utilisez l'adresse IP du serveur Debian et les identifiants de l'utilisateur FTP créé précédemment pour vous connecter.
Si vous pouvez vous connecter avec succès et voir le répertoire d'accueil de l'utilisateur FTP, l'installation et la configuration de vsftpd ont été réalisées avec succès.
Pour installer Nginx sur votre système Debian, exécutez la commande suivante :
sudo apt install nginx
Après l'installation, Nginx sera ajouté en tant que service et démarrera automatiquement.
Nous allons créer un fichier de configuration pour le site web qui hébergera l'interface MonstaFTP. Créez un nouveau fichier de configuration en utilisant la commande suivante :
sudo nano /etc/nginx/sites-available/monstaftp
Ajoutez le contenu suivant dans le fichier, en remplaçant "your_domain" par votre propre nom de domaine :
server {
listen 80;
server_name your_domain;
root /var/www/monstaftp;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Enregistrez les modifications et fermez l'éditeur.
Créez un lien symbolique vers le fichier de configuration dans le dossier "sites-enabled" pour activer le site :
sudo ln -s /etc/nginx/sites-available/monstaftp /etc/nginx/sites-enabled/
Vérifiez la syntaxe de la configuration Nginx pour vous assurer qu'il n'y a pas d'erreurs :
sudo nginx -t
Redémarrez Nginx pour appliquer les modifications :
sudo systemctl restart nginx
Pour sécuriser les communications entre le client et le serveur, nous allons installer un certificat SSL gratuit à l'aide de Let's Encrypt. Commencez par installer Certbot et le plugin Nginx :
sudo apt install certbot python3-certbot-nginx
Exécutez Certbot pour obtenir et installer le certificat SSL :
sudo certbot --nginx -d your_domain
Suivez les instructions à l'écran pour obtenir le certificat SSL. Une fois l'installation terminée, votre site sera accessible via HTTPS. Certbot mettra automatiquement à jour la configuration Nginx pour prendre en charge HTTPS.
Certbot renouvelle automatiquement les certificats SSL avant leur expiration. Vous pouvez vérifier l'état des certificats et les renouveler manuellement avec la commande suivante :
sudo certbot renew --dry-run
Une fois ces étapes terminées, votre serveur web Nginx est prêt à héberger l'interface MonstaFTP.
Rendez-vous sur le site web officiel de MonstaFTP (https://www.monstaftp.com/) et téléchargez la dernière version de MonstaFTP. Vous pouvez également utiliser la commande "wget" pour télécharger directement l'archive sur votre serveur. Remplacez "monstaftp_version" par la version actuelle que vous souhaitez télécharger :
wget https://www.monstaftp.com/downloads/monstaftp_version.zip
Créez le répertoire racine pour MonstaFTP :
sudo mkdir -p /var/www/monstaftp
Extrayez l'archive téléchargée dans le répertoire créé précédemment :
sudo unzip monstaftp_version.zip -d /var/www/monstaftp
Attribuez la propriété du dossier à l'utilisateur www-data, qui est l'utilisateur par défaut pour le serveur web Nginx :
sudo chown -R www-data:www-data /var/www/monstaftp
MonstaFTP utilise un fichier de configuration appelé "settings.json.php" situé dans le dossier "_config". Vous pouvez modifier ce fichier pour personnaliser les paramètres de MonstaFTP. Ouvrez le fichier avec un éditeur de texte :
sudo nano /var/www/monstaftp/_config/settings.json.php
Voici quelques paramètres que vous pouvez modifier selon vos besoins :
Enregistrez les modifications et fermez l'éditeur.
Ouvrez un navigateur web et accédez à l'URL de votre domaine (https://your_domain). Vous devriez voir l'interface de connexion MonstaFTP. Connectez-vous en utilisant les identifiants de l'utilisateur FTP créé précédemment et l'adresse IP ou le nom de domaine de votre serveur Debian.
Si vous pouvez vous connecter avec succès et naviguer dans les fichiers et dossiers de l'utilisateur FTP, l'installation et la configuration de MonstaFTP sont réussies.
Étape 5: Sécurisation et optimisation du serveur FTP et de l'interface MonstaFTP
a. Mise en place d'un pare-feu :
Pour renforcer la sécurité de votre serveur, il est recommandé d'installer et de configurer un pare-feu. UFW (Uncomplicated Firewall) est un pare-feu simple à utiliser sous Debian. Installez UFW en utilisant la commande suivante :
sudo apt install ufw
Activez UFW en exécutant :
sudo ufw enable
Autorisez les ports nécessaires pour vsftpd, Nginx et SSH :
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
Vérifiez l'état du pare-feu UFW et les règles en cours :
sudo ufw status
b. Configuration des options de sécurité avancées :
Pour améliorer encore la sécurité de votre serveur FTP, vous pouvez ajouter les options de sécurité suivantes à votre fichier de configuration vsftpd (/etc/vsftpd.conf) :
N'oubliez pas de redémarrer vsftpd après avoir apporté ces modifications :
sudo systemctl restart vsftpd
c. Optimisation des performances :
Pour améliorer les performances de votre serveur FTP, vous pouvez modifier les paramètres suivants dans le fichier de configuration vsftpd :
Vous pouvez également optimiser les performances du serveur web Nginx en ajustant les paramètres suivants dans le fichier de configuration de votre site (/etc/nginx/sites-available/monstaftp) :
client_max_body_size 100M;
Après avoir apporté ces modifications, redémarrez Nginx pour que les changements prennent effet :
sudo systemctl restart nginx
d. Mises à jour régulières :
Pour maintenir la sécurité et la stabilité de votre serveur, il est important de mettre à jour régulièrement les logiciels et les packages installés. Exécutez les commandes suivantes pour vérifier les mises à jour disponibles et les installer :
sudo apt update
sudo apt upgrade
Veillez également à vérifier et à installer les mises à jour pour MonstaFTP. Suivez les instructions fournies sur le site web officiel de MonstaFTP (https://www.monstaftp.com/) pour obtenir et appliquer les dernières mises à jour.
En appliquant ces mesures de sécurité et d'optimisation, vous garantissez un fonctionnement sûr et efficace de votre serveur FTP et de l'interface MonstaFTP.
Étape 6: Création et gestion des comptes FTP
a. Ajout d'utilisateurs FTP :
Pour ajouter un nouvel utilisateur FTP, vous pouvez créer un nouvel utilisateur système sur votre serveur Debian. Par exemple, pour créer un utilisateur appelé "ftpuser2", exécutez la commande suivante :
sudo adduser ftpuser2
Assurez-vous de définir un mot de passe solide pour le nouvel utilisateur lorsqu'on vous le demande.
b. Attribution de répertoires d'accueil spécifiques :
Si vous souhaitez attribuer un répertoire d'accueil spécifique à un utilisateur FTP, utilisez la commande "usermod" pour mettre à jour le répertoire d'accueil de cet utilisateur. Par exemple, pour définir le répertoire d'accueil de "ftpuser2" à "/home/ftpuser2/ftp", exécutez la commande suivante :
sudo usermod -d /home/ftpuser2/ftp ftpuser2
Créez le répertoire d'accueil pour "ftpuser2" et attribuez-lui la propriété :
sudo mkdir -p /home/ftpuser2/ftp
sudo chown -R ftpuser2:ftp /home/ftpuser2/ftp
c. Suppression d'utilisateurs FTP :
Pour supprimer un utilisateur FTP, utilisez la commande "deluser". Par exemple, pour supprimer l'utilisateur "ftpuser2", exécutez la commande suivante :
sudo deluser ftpuser2
Si vous souhaitez également supprimer le répertoire d'accueil de l'utilisateur, utilisez la commande "rm" :
sudo rm -r /home/ftpuser2
d. Gestion des permissions :
Pour gérer les permissions des fichiers et des dossiers pour les utilisateurs FTP, vous pouvez utiliser les commandes "chmod" et "chown". Par exemple, pour donner à "ftpuser2" la permission de lire et d'écrire dans le dossier "/home/ftpuser/ftp/shared", exécutez les commandes suivantes :
sudo chown ftpuser2:ftp /home/ftpuser/ftp/shared
sudo chmod 770 /home/ftpuser/ftp/shared
Ces commandes attribuent la propriété du dossier "shared" à "ftpuser2" et accordent à l'utilisateur et au groupe "ftp" la permission de lire, d'écrire et d'exécuter des fichiers dans le dossier.
En maîtrisant la création et la gestion des comptes FTP, vous pouvez contrôler avec précision l'accès des utilisateurs à votre serveur FTP et aux fichiers hébergés sur celui-ci.
Voici un exemple de script Bash pour gérer l'étape numéro 6.
Ce script vous permet d'ajouter, de supprimer des utilisateurs FTP et de définir leur répertoire d'accueil. Copiez et collez ce script dans un fichier, par exemple "ftp_user_manager.sh", et accordez-lui des permissions d'exécution avec chmod +x ftp_user_manager.sh.
#!/bin/bash
# Fonction pour ajouter un utilisateur FTP
function add_ftp_user() {
local username="$1"
local homedir="$2"
# Ajouter un utilisateur système
sudo adduser "$username"
# Modifier le répertoire d'accueil de l'utilisateur
sudo usermod -d "$homedir" "$username"
# Créer le répertoire d'accueil
sudo mkdir -p "$homedir"
# Changer la propriété du répertoire d'accueil
sudo chown -R "$username:ftp" "$homedir"
echo "Utilisateur FTP $username ajouté avec succès."
}
# Fonction pour supprimer un utilisateur FTP
function remove_ftp_user() {
local username="$1"
# Supprimer l'utilisateur système
sudo deluser "$username"
# Supprimer le répertoire d'accueil de l'utilisateur
sudo rm -r "/home/$username"
echo "Utilisateur FTP $username supprimé avec succès."
}
# Vérifier le nombre d'arguments
if [ $# -lt 2 ]; then
echo "Utilisation : $0 add|remove <nom_utilisateur> [<repertoire_domicile>]"
exit 1
fi
action="$1"
username="$2"
homedir="$3"
# Ajouter un utilisateur FTP
if [ "$action" == "add" ]; then
if [ -z "$homedir" ]; then
homedir="/home/$username/ftp"
fi
add_ftp_user "$username" "$homedir"
# Supprimer un utilisateur FTP
elif [ "$action" == "remove" ]; then
remove_ftp_user "$username"
# Si l'action n'est pas reconnue
else
echo "Action non reconnue : $action"
echo "Utilisation : $0 add|remove <nom_utilisateur> [<repertoire_domicile>]"
exit 1
fi
Utilisez ce script pour ajouter ou supprimer des utilisateurs FTP et définir leur répertoire d'accueil. Pour exécuter le script, utilisez la syntaxe suivante :
Pour ajouter un utilisateur FTP :
./ftp_user_manager.sh add <nom_utilisateur> [<repertoire_domicile>]
Si le répertoire d'accueil n'est pas spécifié, le script utilisera le répertoire par défaut "/home/<nom_utilisateur>/ftp".
Pour supprimer un utilisateur FTP :
./ftp_user_manager.sh remove <nom_utilisateur>
Par exemple, pour ajouter un utilisateur "ftpuser2" avec un répertoire d'accueil "/home/ftpuser2/ftp", exécutez la commande suivante :
./ftp_user_manager.sh add ftpuser2 /home/ftpuser2/ftp
Pour supprimer l'utilisateur "ftpuser2", exécutez la commande suivante :
./ftp_user_manager.sh remove ftpuser2