GNU/Linux >> Tutoriels Linux >  >> Debian

Comment configurer le serveur FTP sur Debian 9 Stretch Linux

Objectif

L'objectif est d'installer et de configurer un serveur FTP sur Debian 9 Stretch Linux permettant un accès utilisateur anonyme ou local.

Versions du système d'exploitation et du logiciel

  • Système d'exploitation : – Étirement de Debian 9
  • Logiciel : – vsFTPd version 3.0.3

Exigences

Accès privilégié à

Difficulté

MOYEN

Congrès

  • # - nécessite que les commandes linux données soient exécutées avec les privilèges root soit directement en tant qu'utilisateur root, soit en utilisant sudo commande
  • $ - nécessite que les commandes linux données soient exécutées en tant qu'utilisateur régulier non privilégié

Instructions

Le tutoriel suivant explique comment installer et configurer le serveur FTP en utilisant vsFTPd démon. Il abordera également diverses configurations pour permettre l'accès en écriture ou en lecture seule aux utilisateurs anonymes ainsi qu'aux utilisateurs locaux.

Installation de vsFTPd

Commençons par l'installation du serveur vsFPTd et du client FTP :

# apt install vsftpd ftp

Par défaut, le serveur vsFTPd est configuré pour permettre aux utilisateurs du système d'accéder à leurs répertoires personnels avec un accès en lecture seule. Ce qui suit est un fichier de configuration vsFTPd par défaut /etc/vsftpd.conf :

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=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=NO

Comme déjà mentionné, le fichier de configuration ci-dessus n'accordera qu'un accès en lecture seule à tout utilisateur système répertorié dans /etc/passwd dossier. Utiliser ftp commande et tentez de vous connecter en utilisant le nom d'utilisateur et le mot de passe de l'un des utilisateurs du système local :

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): linuxconfig
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put FILE.TXT
local: FILE.TXT remote: FILE.TXT
200 EPRT command successful. Consider using EPSV.
550 Permission denied.

Si vous n'avez besoin que d'un accès en lecture seule pour vos utilisateurs locaux, vous avez terminé.

Autoriser l'accès en écriture de l'utilisateur

Pour ajouter un accès en écriture pour tous les utilisateurs locaux du système, décommentez ou ajoutez la strophe suivante write_enable=YES . Le nouveau fichier de configuration se compose de :

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=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=NO
write_enable=YES

Ensuite, redémarrez votre vsFTPd :

# systemctl restart vsftpd

Effectuez un nouveau test avec ftp commande pour confirmer l'accès en écriture :

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): linuxconfig
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put FILE.TXT
local: FILE.TXT remote: FILE.TXT
200 EPRT command successful. Consider using EPSV.
150 Ok to send data.
226 Transfer complete.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-------    1 1000     1000            0 Jun 07 12:45 FILE.TXT
226 Directory send OK.

Autoriser uniquement des utilisateurs spécifiques

Pour le moment, notre serveur FTP autorise l'accès à tout utilisateur système défini dans /etc/passwd dossier. Afin de permettre uniquement à des utilisateurs spécifiques de pouvoir se connecter, nous pouvons inclure les lignes suivantes dans notre fichier de configuration :

userlist_file=/etc/vsftpd.userlist
userlist_enable=YES

Ce qui précède activera une liste d'utilisateurs prédéfinie où tout utilisateur répertorié dans /etc/vsftpd.userlist (un nom d'utilisateur par ligne) se verra refuser l'accès au FTP tandis que tous les autres utilisateurs du système pourront se connecter. Créons un nouveau /etc/vsftpd.userlist liste d'utilisateurs composée d'un seul utilisateur linuxconfig :

# echo linuxconfig > /etc/vsftpd.userlist

Redémarrez le serveur vsFTPd :

# systemctl restart vsftpd

Effectuez un nouveau test avec ftp commande pour confirmer l'accès refusé au serveur FTP pour linuxconfig utilisateur :

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): linuxconfig
530 Permission denied.
Login failed.
ftp> 

Cependant, si vous devez pouvoir vous connecter uniquement avec les utilisateurs définis dans /etc/vsftpd.userlist , ajoutez l'option de configuration suivante userlist_deny=NO dans votre fichier de configuration vsFTPd /etc/vsftpd.conf . Vous trouverez ci-dessous notre /etc/vsftpd.conf actuel fichier de configuration :

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=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=NO
write_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_enable=YES
userlist_deny=NO

Autoriser les anonymes

À ce stade, nous allons également autoriser l'accès en lecture seule aux utilisateurs anonymes. Commençons par créer un nouveau répertoire qui sera utilisé comme répertoire racine pour les utilisateurs anonymes, par exemple. /var/ftp . À des fins de test, nous pouvons également placer un fichier de test arbitraire dans /var/ftp :

# mkdir /var/ftp/
# chmod 555 /var/ftp/
# chown ftp.ftp /var/ftp/
# touch /var/ftp/ANONYMOUS.TXT

De plus, incluez les lignes suivantes dans /etc/vsftpd.conf fichier de configuration pour définir le répertoire personnel anonyme et l'accès anonyme :

anon_root=/var/ftp
anonymous_enable=YES

Ajoutez éventuellement no_anon_password=YES ligne pour demander à vsFTPd d'autoriser l'utilisateur anonyme à se connecter automatiquement sans le mot de passe. Puisque nous avons maintenant défini la liste des utilisateurs, nous devons également ajouter le anonymous utilisateur à la liste :

# echo anonymous >> /etc/vsftpd.userlist
# cat /etc/vsftpd.userlist 
linuxconfig
anonymous

Comme d'habitude redémarrez votre serveur FTP et effectuez une validation de votre configuration actuelle :

# systemctl restart vsftpd

Tester la connexion anonyme :

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Jun 07 13:29 ANONYMOUS.TXT
226 Directory send OK.
ftp> 

Vous trouverez ci-dessous notre fichier de configuration vsFTPd actuel :

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=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=NO
write_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_enable=YES
userlist_deny=NO
anon_root=/var/ftp
anonymous_enable=YES
no_anon_password=YES

Activer l'accès en écriture anonyme

Ensuite, permettons à l'utilisateur anonyme de télécharger des fichiers et de créer de nouveaux répertoires et plus encore. Pour cela, créez un nouveau répertoire upload dans le /var/ftp répertoire :

# mkdir /var/ftp/upload
# chown ftp.ftp /var/ftp/upload/

Ensuite, ajoutez les lignes suivantes dans votre fichier de configuration vsFTPd :

anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES

Redémarrez votre serveur :

# systemctl restart vsftpd

Après le redémarrage, l'utilisateur anonyme pourra télécharger des fichiers, créer des répertoires, renommer des fichiers :

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Jun 07 13:29 ANONYMOUS.TXT
drwxr-xr-x    2 108      112          4096 Jun 07 13:57 upload
226 Directory send OK.
ftp> cd upload
250 Directory successfully changed.
ftp> put FILE.TXT
local: FILE.TXT remote: FILE.TXT
200 EPRT command successful. Consider using EPSV.
150 Ok to send data.
226 Transfer complete.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-------    1 108      112             0 Jun 07 13:57 FILE.TXT
226 Directory send OK.
ftp> rename FILE.TXT NEW.TXT
350 Ready for RNTO.
250 Rename successful.
ftp> ls
200 EPRT command successful. Consider using EPSV.
150 Here comes the directory listing.
-rw-------    1 108      112             0 Jun 07 13:57 NEW.TXT
226 Directory send OK.
ftp> 

Vous trouverez ci-dessous notre fichier de configuration vsFTPd final :

listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=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=NO
write_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_enable=YES
userlist_deny=NO
anon_root=/var/ftp
anonymous_enable=YES
no_anon_password=YES
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES

Annexe

Message d'erreur :

# ftp localhost
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): anonymous
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
ftp>

Ce qui précède indique que votre anon_root répertoire est accessible en écriture. La solution est de le rendre en lecture seule. Exemple :

# chmod 555 /var/ftp

Vous pouvez également essayer d'ajouter la ligne suivante dans votre fichier de configuration vsFTPd :

allow_writeable_chroot=YES

Debian
  1. Comment configurer le serveur et le client NTP sur Debian 9 Stretch Linux

  2. Comment installer un serveur LAMP sur Debian 9 Stretch Linux

  3. Comment configurer le partage du serveur Samba sur Debian 9 Stretch Linux

  4. Comment installer le serveur de communauté MySQL sur Debian 9 Stretch Linux

  5. Comment installer TeamViewer sur Debian 9 Stretch Linux

Comment configurer LAMP avec Debian 11

Comment configurer le serveur Samba avec Debian 11

Comment installer le serveur vsftpd sur Debian 11

Comment installer le serveur Minecraft sur Debian 9 Stretch

Comment installer Jetty sur Debian 9 Stretch

Comment installer un serveur FTP sur Debian 10