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
1 |
# 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
1 2 3 4 5 |
# 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
1 2 3 4 5 |
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
1 2 3 |
userlist_file=/etc/vsftpd.userlist userlist_enable=YES userlist_deny=NO |
Ora creiamo il file con l’elenco degli utenti che vogliamo abilitare espressamente
1 2 3 |
# cat > /etc/vsftpd.userlist << ! ftpuser ! |
Infine riavviamo il servizio
1 |
# systemctl restart vsftpd |
Test
Creiamo un file vuoto
1 |
# touch prova.txt |
Eseguiamo il login in locale con l’utente appena creato
1 2 3 4 5 6 7 8 9 10 |
# 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
1 2 3 4 5 |
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
1 2 3 4 |
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
1 2 3 4 5 6 7 8 |
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
1 2 |
ftp> exit 221 Goodbye. |