GNU/Linux >> Linux Esercitazione >  >> Debian

Come configurare il server FTP su Debian 9 Stretch Linux

Obiettivo

L'obiettivo è installare e configurare il server FTP su Debian 9 Stretch Linux consentendo l'accesso anonimo o locale dell'utente.

Sistema operativo e versioni software

  • Sistema operativo: – Debian 9 Allunga
  • Software: – vsFTPd versione 3.0.3

Requisiti

Accesso privilegiato a

Difficoltà

MEDIO

Convenzioni

  • # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando
  • $ – richiede che i comandi linux dati vengano eseguiti come un normale utente non privilegiato

Istruzioni

Il seguente tutorial spiegherà come installare e configurare il server FTP utilizzando vsFTPd demone. Verranno inoltre discusse varie configurazioni per consentire l'accesso in scrittura o in sola lettura a utenti anonimi e utenti locali.

Installazione vsFTPd

Iniziamo dall'installazione del server vsFPTd e del client FTP:

# apt install vsftpd ftp

Per impostazione predefinita, il server vsFTPd viene configurato per consentire agli utenti del sistema di accedere alle proprie directory home con accesso in sola lettura. Quello che segue è un file di configurazione vsFTPd predefinito /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

Come già accennato, il file di configurazione sopra garantirà solo un accesso in sola lettura a qualsiasi utente di sistema elencato in /etc/passwd file. Usa ftp comando e tentare di connettersi utilizzando nome utente e password di qualsiasi utente del sistema locale:

# 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.

Se hai solo bisogno dell'accesso in sola lettura da parte dei tuoi utenti locali, hai finito.

Consenti accesso in scrittura all'utente

Per aggiungere l'accesso in scrittura per tutti gli utenti locali del sistema, rimuovere il commento o aggiungere la seguente stanza write_enable=YES . Il nuovo file di configurazione è composto da:

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

Quindi, riavvia il tuo vsFTPd:

# systemctl restart vsftpd

Esegui un nuovo test con ftp comando per confermare l'accesso in scrittura:

# 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.

Consenti solo utenti specifici

Al momento il nostro server FTP consente l'accesso a qualsiasi utente di sistema definito all'interno di /etc/passwd file. Per consentire solo a utenti specifici di poter accedere, possiamo includere le seguenti righe nel nostro file di configurazione:

userlist_file=/etc/vsftpd.userlist
userlist_enable=YES

Quanto sopra abiliterà un elenco di utenti predefinito in cui qualsiasi utente elencato all'interno di /etc/vsftpd.userlist (un nome utente per riga) avrà accesso all'FTP negato mentre tutti gli altri utenti del sistema potranno accedere. Creiamo un nuovo /etc/vsftpd.userlist lista utenti composta da un singolo utente linuxconfig :

# echo linuxconfig > /etc/vsftpd.userlist

Riavvia il server vsFTPd:

# systemctl restart vsftpd

Esegui un nuovo test con ftp comando per confermare l'accesso negato al server FTP per linuxconfig utente:

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

Tuttavia, se devi essere in grado di accedere solo con gli utenti definiti in /etc/vsftpd.userlist , aggiungi la seguente opzione di configurazione userlist_deny=NO nel tuo file di configurazione vsFTPd /etc/vsftpd.conf . Di seguito è riportato il nostro attuale /etc/vsftpd.conf file di configurazione:

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

Consenti anonimo

In questa fase consentiremo anche l'accesso in sola lettura da parte di utenti anonimi. Iniziamo a creare una nuova directory che verrà utilizzata come directory principale per utenti anonimi, ad es. /var/ftp . A scopo di test possiamo anche inserire alcuni file di test arbitrari all'interno di /var/ftp :

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

Inoltre, includi le seguenti righe in /etc/vsftpd.conf file di configurazione per definire la home directory anonima e l'accesso anonimo:

anon_root=/var/ftp
anonymous_enable=YES

Facoltativamente, aggiungi no_anon_password=YES riga per istruire vsFTPd per consentire all'utente anonimo di accedere automaticamente senza la password. Poiché ora abbiamo definito l'elenco degli utenti, dobbiamo anche aggiungere il anonymous utente alla lista:

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

Come di consueto, riavvia il tuo server FTP ed esegui una validità della tua configurazione attuale:

# systemctl restart vsftpd

Prova l'accesso anonimo:

# 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> 

Di seguito puoi trovare il nostro attuale file di configurazione vsFTPd:

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

Abilita accesso in scrittura anonimo

Quindi consentiamo agli utenti anonimi di caricare file e creare nuove directory e altro ancora. Per farlo, crea una nuova directory upload all'interno del /var/ftp directory:

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

Quindi, aggiungi le seguenti righe nel tuo file di configurazione vsFTPd:

anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES

Riavvia il tuo server:

# systemctl restart vsftpd

Dopo il riavvio l'utente anonimo potrà caricare file, creare directory rinominare file:

# 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> 

Di seguito puoi trovare il nostro file di configurazione finale vsFTPd:

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

Appendice

Messaggio di errore:

# 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>

Quanto sopra indica che il tuo anon_root directory è scrivibile. La soluzione è renderlo di sola lettura. Esempio:

# chmod 555 /var/ftp

In alternativa, prova ad aggiungere la seguente riga nel tuo file di configurazione vsFTPd:

allow_writeable_chroot=YES

Debian
  1. Come installare un server LAMP su Debian 9 Stretch Linux

  2. Come configurare la condivisione del server Samba su Debian 9 Stretch Linux

  3. Come installare il server della comunità MySQL su Debian 9 Stretch Linux

  4. Come installare TeamViewer su Debian 9 Stretch Linux

  5. Come configurare NFS su Debian 9 Stretch Linux

Come configurare LAMP con Debian 11

Come configurare Samba Server con Debian 11

Come installare il server vsftpd su Debian 11

Come installare il server Minecraft su Debian 9 Stretch

Come installare Jetty su Debian 9 Stretch

Come installare il server FTP su Debian 10