Android

Comment configurer un serveur ftp avec vsftpd sur centos 7

Install Vsftpd to configure FTP Server in centos 7

Install Vsftpd to configure FTP Server in centos 7

Table des matières:

Anonim

FTP (File Transfer Protocol) est un protocole réseau client-serveur standard qui permet aux utilisateurs de transférer des fichiers vers et depuis un réseau distant.

Il existe plusieurs serveurs FTP open source disponibles pour Linux. Les plus populaires et les plus utilisés sont PureFTPd, ProFTPD et vsftpd.

Dans ce tutoriel, nous allons installer vsftpd (Very Secure Ftp Daemon) sur CentOS 7. 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.

Pour des transferts de données plus sécurisés et plus rapides, utilisez SCP ou SFTP.

Conditions préalables

Avant de poursuivre ce didacticiel, assurez-vous que vous êtes connecté en tant qu'utilisateur avec les privilèges sudo.

Installation de vsftpd sur CentOS 7

Le package vsftpd est disponible dans les référentiels CentOS par défaut. Pour l'installer, exécutez la commande suivante:

sudo yum install vsftpd

Une fois le package installé, démarrez le démon vsftpd et activez-le pour démarrer automatiquement au démarrage:

sudo systemctl start vsftpd sudo systemctl enable vsftpd

Vous pouvez vérifier que le service vsftpd fonctionne en imprimant son état:

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 daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2018-11-22 09:42:37 UTC; 6s ago Main PID: 29612 (vsftpd) CGroup: /system.slice/vsftpd.service └─29612 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Configuration de vsftpd

La configuration du service vsftpd implique la modification du fichier de configuration /etc/vsftpd/vsftpd.conf . 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 requis pour configurer une installation vsftpd sécurisée.

Commencez par ouvrir le fichier de configuration vsftpd:

sudo nano /etc/vsftpd/vsftpd.conf

1. Accès FTP

Nous n'autoriserons l'accès au serveur FTP qu'aux utilisateurs locaux, trouverons les directives anonymous_enable et local_enable et vérifierons votre correspondance de configuration avec les lignes ci-dessous:

/etc/vsftpd/vsftpd.conf

anonymous_enable=NO local_enable=YES

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.

/etc/vsftpd/vsftpd.conf

write_enable=YES

3. Prison de Chroot

Empêchez les utilisateurs FTP d'accéder à tous les fichiers en dehors de leurs répertoires personnels en décommentant la directive chroot .

/etc/vsftpd/vsftpd.conf

chroot_local_user=YES

Par défaut, 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. Il s'agit d'éviter une vulnérabilité de sécurité.

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 ftp à l'intérieur de la page d'accueil de l'utilisateur qui servira de chroot et de répertoire de uploads inscriptible pour le téléchargement de fichiers.

    /etc/vsftpd/vsftpd.conf

    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/vsftpd.conf

    allow_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/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 après la ligne userlist_enable=YES :

/etc/vsftpd/vsftpd.conf

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/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

Une fois le certificat SSL créé, ouvrez le fichier de configuration vsftpd:

sudo nano /etc/vsftpd/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 :

/etc/vsftpd/vsftpd.conf

rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/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/vsftpd.conf

anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES chroot_local_user=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES userlist_file=/etc/vsftpd/user_list userlist_deny=NO tcp_wrappers=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 rsa_cert_file=/etc/vsftpd/vsftpd.pem rsa_private_key_file=/etc/vsftpd/vsftpd.pem ssl_enable=YES

Enregistrez le fichier et redémarrez le service vsftpd pour que les modifications prennent effet:

sudo systemctl restart vsftpd

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), 30000-31000 les commandes suivantes:

sudo firewall-cmd --permanent --add-port=20-21/tcp sudo firewall-cmd --permanent --add-port=30000-31000/tcp

Rechargez les règles du pare-feu en tapant:

firewall-cmd --reload

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.
  1. Créez un nouvel utilisateur nommé newftpuser :

    sudo adduser newftpuser

    Ensuite, vous devrez définir le mot de passe utilisateur:

    sudo passwd 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 avec n'importe quel client FTP pouvant être configuré pour utiliser le chiffrement 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.

Exécutez les commandes suivantes pour créer le shell /bin/ftponly et le rendre 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 pour les autres utilisateurs auxquels vous souhaitez accorder uniquement un accès FTP.

Conclusion

Dans ce didacticiel, vous avez appris à installer et à configurer un serveur FTP sécurisé et rapide sur votre système CentOS 7.

ftp centos