Premier Training & Business Partner Red Hat

Installazione e Configurazione di un server FTP su RHEL / CentOS 6

Michele Milaneschi
Ti piacerebbe diventare anche tu uno di noi e
pubblicare i tuoi articoli nel blog degli RHCE italiani?

Oggi parleremo dicome realizzare un server FTP su una macchina Linux con CentOS 6 tramite vsftpd.

La sigla FTP significa File Transfert Protocol, si tratta di un protocollo utilizzato per la trasmissione di dati secondo il modello Client/Server.

Tramite Client FTP viene inviata la richiesta al Server, che provvederà a mettere a disposizione la risorsa che può essere condivisa o trasmessa.

Andremo a vedere la configurazione del server FTP tramite vsftpd e l’accesso alle risorse sia in maniera anonima che tramite login.

Per iniziare, andiamo ad installare il nostro server FTP tramite vsftpd:

1
yum install vsftpd

vsf1

Avviamo il servizio e lo impostiamo che si avvi al boot:

1
2
3
service vsftpd start
 
chkconfig vsftpd on

Il file di configurazione su cui andremo a lavorare è vsftpd.conf che si trova in /etc/vsftpd.

Il percorso di default dove andremo a mettere a disposizione i vari file è: /var/ftp

 

Accesso FTP con Download Anonimo

Una volta che abbiamo installato vsftpd e avviato il servizio abbiamo fatto un server FTP con accesso Anonimo.

Per accedere alle risorse da un altra macchina Linux usiamo il client lftp.

Nel caso non fosse installato lo installiamo tramite il seguente comando:

1
yum install lftp

A questo punto possiamo accedere alle risorse FTP del Server:

1
lftp ip_server_ftp

Nel nostro caso il sever ha ip 192.168.0.34:

1
lftp 192.168.0.34

vsff

Chiunque può accedere alle risorse messe a disposizione tramite FTP che si trovano nel percorso /var/ftp con la possibilità di scaricare i file che interessano.

Il Download dei file presenti su FTP lo facciamo tramite il comando:

1
get nomefile

Se volessimo scaricare nella Home di michele (Utente presente sul Client) il file chiamato numeri daremo il seguente comando:

1
get numeri

E come vediamo il file viene scaricato sulla nostra Home:

vsf2

 

Accesso FTP tramite Login con Upload e Download

Questa è probabilmente la configurazione maggiormente usata, cioè quella dove l’accesso alle risorse FTP è regolato da una Login che ci viene fornita.

Per fare questo andiamo a commetare i seguenti parametri nel file /etc/vsftpd/vsftpd.conf mettendo un # davanti:

1
2
3
4
5
#anonymous_enable=YES
 
#anon_upload_enable=YES
 
#anon_mkdir_write_enable=YES

Decommentiamo invece i seguenti parametri:

1
2
3
4
5
local_enable=YES
 
write_enable=YES
 
chroot_local_user=YES

L’ultimo parametro è per il chroot degli utenti di modo che saranno “jailed” nella loro home directory e non potranno cosi salire alla /:

Fatto ciò riavviamo il servizio vsftpd:

1
service vsftpd restart

A questo punto possiamo creare gli utenti (Sul server FTP ) o nel caso lo avessimo gia fatto decidiamo a chi dare l’accesso.

Ammettiamo di avere 2 utenti: giacomo e giulio

Vogliamo garantire l’accesso alle risorse FTP solamente all’utente giulio.

Per fare questo entra in gioco il file /etc/vsftpd/user_list dove di default vengono dichiarati gli utenti che NON devono accedere alle risorse FTP.

Nel nostro caso vogliamo che l’utente giacomo non possa accedere alle risorse FTP:

1
echo giacomo >> /etc/vsftpd/user_list

Riavviamo di nuovo il servizio vsftpd:

1
service vsftpd restart

A questo punto non resta che provare ad accedere da un client tramite lftp con l’opzione -u:

1
lftp -u nome_utente ip_del_server

Prima di procedere alla verifica della login, se avete abilitato SELinux dovete impostare a on il parametro ftp_home_dir:

1
setsebool ftp_home_dir on

Se lo vogliamo abilitare in maniera definitiva dobbiamo usare l’opzione -P:

1
setsebool -P ftp_home_dir on

Nel nostro caso sarà:

1
lftp -u giulio 192.168.0.34

vss1

Infatti se proviamo ad accedere con l’utente giacomo non ci verrà dato l’accesso

vss2

L’upload di un file lo facciamo tramite il comando:

1
put nomefile

Nel caso in cui volessimo garantire l’accesso solamente ad un utente dobbiamo invertire il ruolo del file user_list ossia dichiarare al suo interno solamente chi PUO accedere alle risorse FTP.

Questo lo facciamo inserendo una stringa in fondo al file vsftpd.conf:

1
echouserlist_deny=NO” >> /etc/vsftpd/vsftpd.conf

Non resta che inserire l’utente a cui vogliamo garantire l’accesso nel file user_list.
Nel nostro caso vogliamo garantire l’accesso solamente all’utente giacomo:

1
echo “giacomo” >> /etc/vsftpd/user_list

vss3

Riavviamo il servizio vsftpd:

1
service vsftpd restart

Come vedremo con l’utente giacomo non ci saranno problemi:

vss4

A tutti gli altri utenti non gli verrà consentito l’accesso:

vss5

Per concludere il file di log lo troviamo in /var/log/xferlog

vss6

Configurazione Iptables per Accesso al server FTP:

Se dobbiamo configurare iptables, non basterà inserire le regole della porta 20 e 21 ma dovremmo anche caricare 2 moduli:

nf_conntrack_ftp e ip_conntrack_ftp

Tramite inserimento nel file /etc/sysconfig/iptables-config:

1
IPTABLES_MODULES=”nf_conntrack_ftp ip_conntrack_ftp”

vss7

Riavviamo il servizio iptables e vedremo che i 2 moduli verrano caricati:

1
service iptables restart

vsfd2

Completiamo l’operazione inserendo le regole:

1
2
3
iptables -A INPUT -p tcp –dport 20 -j ACCEPT
 
iptables -A INPUT -p tcp –dport 21 -j ACCEPT

vsfd3

 

 

Info about author

Michele Milaneschi

RHCE Consultant