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.
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
“…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 😀