ftp server su debian

Condividi:

In questo articolo elencheremo i passaggi per installare un server ftp (vsFTPd) su debian linux. Le utenze con diritto di accesso al server saranno limitate ad uno specifico utente che creeremo con jailroot nella propria home, l’utente avrà tutti i diritti di trasferimento di files

Installazione

Il software server che installiamo è contenuto nel pacchetto vsftpd

# apt install vsftpd

L’installazione crea l’utente ftp, il gruppo ftp e la cartella /srv/ftp in cui risiede la home di questo utente

Creazione di un nuovo utente ftp

Vogliamo creare una nuova utenza ftpupser con la propria home diversa da quella di default. L’utente deve avere diritti di sola lettura nella propria home su cui verrà impostato il jailroot e che conterrà una cartella ./files dove sarà possibile leggere e scrivere

# adduser --home /srv/ftpuser --ingroup nogroup ftpuser
# chmod a-w /srv/ftpuser
# mkdir -p /srv/ftpuser/files
# chown ftpuser:nogroup /srv/ftpuser/files
# chmod 755 /srv/ftpuser/files
Configurazione di vsftpd

Editiamo il file /etc/vsftpd.conf in questo modo, in modo da avere un server in ascolto solo con protocollo ipv4, con possibilità di scrittura, un banner e le utenze bloccate nella loro home

listen=YES
#listen_ipv6=YES
write_enable=YES
ftpd_banner=FTP Server
chroot_local_user=YES

Inoltre per abilitare l’accesso al solo utente ftpuser ( o ulteriori utenti successivamente creati ) aggiungiamo alla fine del file queste righe

userlist_file=/etc/vsftpd.userlist
userlist_enable=YES
userlist_deny=NO

Ora creiamo il file con l’elenco degli utenti che vogliamo abilitare espressamente

# cat > /etc/vsftpd.userlist << !
ftpuser
!

Infine riavviamo il servizio

# systemctl restart vsftpd
Test

Creiamo un file vuoto

# touch prova.txt

Eseguiamo il login in locale con l’utente appena creato

# ftp 127.0.0.1
Connected to 127.0.0.1.
220 FTP Server
Name (127.0.0.1:root): ftpuser
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Nella cartella remota dovrebbe esserci solo la sotto cartella files

ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
drwxr-xr-x    2 1004     65534        4096 Mar 14 12:46 files
226 Directory send OK.

Proviamo a trasferire prova.txt nella home, dove abbiamo solo diritti di lettura

ftp> put prova.txt
local: prova.txt remote: prova.txt
200 PORT command successful. Consider using PASV.
553 Could not create file.

Entriamo nella cartella files e riproviamo a trasferire prova.txt

ftp> cd files
250 Directory successfully changed.

ftp> put prova.txt
local: prova.txt remote: prova.txt
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.

Usciamo

ftp> exit
221 Goodbye.