FTP Server (vsftpd) con Ubuntu

Ci sono molti protocolli per trasferire files e tra questi FTP è uno dei più vecchi e longevi.

Le istruzioni seguenti si riferiscono all'installazione del un FTP server con Ubuntu Server 10.04 LTS (vsftpd – Very Secure FTP Deamon).

Si potrebbe utilizzare anche una versione desktop di Ubuntu però se lo scopo è utilizzare la macchina solo come server è inutile mettere la versione desktop perchè verrebbe appesantita dall'inutile ambiente grafico.

Installiamo Ubuntu Server avviando il PC da CD e fornendo le informazioni richieste:

  • Lingua: Italiano
  • Detect Keyboard Layout: NO
  • Origin of Keyboard: Italia
  • Se nella rete non trova un servizio DHCP chiederà di configurare rete manualmente: indirizzo IP, Netmask, Gateway, DNS, nome host e nome dominio.
  • Partizionamento dischi: Usa l'intero disco e imposta LVM
  • Creazione utente da usare al posto di root
  • Selezione del software da installare: tra le varie scelte (Mail Server, Samba Server, LAMP Server, …): scegliere solo “OpenSSH server” perchè servirà in seguito per accedere in gestione da remoto. Il server FTP lo installiamo dopo.

Terminata l'installazione da CD conviene aggiornare il sistema con i seguenti comandi:

sudo apt-get update
sudo apt-get upgrade

A questo punto il server SSH è già attivo e ci si può collegare da remoto. Ci sono vari modi per farlo ma fondamentalmente questi sono quelli che uso abitualmente:

  • da windows uso Putty
  • da Linux do il comando: ssh -X <utente-remoto>@<server-remoto> (esempio: ssh -X ginetto@192.168.1.15)

A questo punto installiamo il pacchetto vsftpd con il seguente comando:

sudo apt-get install vsftpd

quindi modifichiamo il file /etc/vsftpd.conf per configurare il server FTP in base alle nostre esigenze.

Il file è chiaro e ben commentato. Di seguito alcune opzioni interessanti:

anonymous_enable=NO

disabilita l'accesso anonimo al server

local_enable=YES

abilita l'accesso agli utenti locali del sistema. ATTENZIONE: di default c'è già un file (/etc/ftpusers) che contiene tutti gli utenti locali che NON sono abilitati all'FTP ed in cui sono già inseriti molti utenti di sistema per motivi di sicurezza (root, mail, ...)

write_enable=YES

permette l'upload dei file

local_umask=022

questa impostazione fa in modo che i file caricati abbiano i permessi 755 (di default c'è local_umask=077 che imposta i permessi dei nuovi file a 700)

idle_session_timeout=600

indica il tempo di inattività in secondi oltre il quale viene chiuso il collegamento con il client. In pratica è il tempo limite di inattività tra un comando e l'altro

data_connection_timeout=120

indica il tempo massimo in secondi entro il quale è possibile arrestare il trasferimento dei dati e oltre il quale il trasferimento viene chiuso.

ftpd_banner=Welcome to GINETTO FTP server

permette di indicare il Banner di Welcome del server

chroot_local_user=YES

fa in modo che gli utenti restino all'interno della propria “home directory” senza poter vedere il resto del file system

Se voglio che il server offra il servizio FTP solo ad un limitato elenco di utenti escludendo tutti gli altri utenti locali posso indicare quelli da escludere in /etc/ftpusers oppure indicare le seguenti opzioni nel file di configurazione:

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

e creare il file /etc/vsftpd.user_list dove indico solo gli utenti che possono accedere al servizio. Questo file è solo un banale elenco. Esempio:

ginetto
rosina
gigino
rosetta

Per limitare la banda di trasferimento dei dati devo indicare:

local_max_rate=100000

è in byte al secondo. Il default è 0 che significa illimitato.

Per limitare il numero di client connessi contemporaneamente:

max_clients=3

il default è 0, ovvero illimitati

Per limitare il numero massimo di connessioni contemporanee dallo stesso indirizzo IP:

max_per_ip=2

il default è 0, ovvero illimitati

Se si volessero limitare i possibili comandi eseguibili sul server bisogna specificarne l'elenco con l'istruzione cmds_allowed, ad esempio:

cmds_allowed=PASV,BYE,LIST,ABOR,CWD,NLST,PORT,PWD,QUIT,RETR,SIZE,TYPE

Quando abbiamo terminato di configurare il server in base alle nostre esigenze bisogna riavviarlo con il seguente comando:

sudo service vsftpd restart

Creazione Utenti

A questo punto creiamo gli utenti che possono avere accesso al server FTP con i seguenti comandi:

sudo useradd -m -s /bin/false <utente>
sudo passwd <utente> # (per dare la password)

IMPORTANTE: assicurarsi che il file “/etc/shells” contenga la riga “/bin/false”, in caso contrario aggiungerla altrimenti il server risponderà 530 Login incorrect quando si tenta l'accesso.

Creare l'utente con “/bin/false” serve ad evitare che con quelle credenziali sia possibile fare login al sistema con ciò che ne consegue.

Difesa dai brutal force attack

Volendo è possibile difendersi dai brutal force attack (ripetuti tentativi di accesso al server provando numerose password) bloccando temporaneamente l'indirizzo IP dopo un preciso numero di tentativi di accesso falliti. Per farlo basta utilizzare fail2ban.

(Letto 3.051 volte di cui 1 negli ultimi 30gg)
twitterlinkedinmailby feather

2 thoughts on “FTP Server (vsftpd) con Ubuntu

  1. Ciao e complimenti per la guida!! solo una domanda:

    Io ho 2 PC, uno é 192.168.1.10 con Ubuntu 10.10 e l’altro é 192.168.1.11 e ha windows 2000.

    Da ubuntu, se tento di collegarmi su windows tramite vsftpd, mi chiede una password che non capisco quale possa essere visto che windows 2000 non é settato con nessuna password!

    Potresti darmi qualche dritta? o magari indicarmi qualche guida?

    Grazie in anticipo!

    Saluti
    Francesco

    1. “…se tento di collegarmi su windows tramite vsftpd …” !?!?! Qualcosa non m’è chiaro.

      Se hai installato il server FTP con vsftpd sul pc con Ubuntu devi fare il contrario, ovvero collegarti dal pc windows con un qualunque client FTP.
      Se non ne conosci nessuno ti consiglio Filezilla. E’ semplice ed opensource. Una volta scaricato ed installato sul PC windows devi avvirlo e collegarti al server FTP (Ubuntu) dando l’IP (192.168.1.10), username e password (di Ubuntu) abilitati ad accedere al servizio FTP.

      Se non sono stato chiaro o se non ho capito cosa intendevi fammi sapere.

      ciao e grazie 😀

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *