
I continui tagli di budget inflitti ai reparti IT, costringe i sistemisti ad orientare le soluzioni informatiche su prodotti che non incidano pesantemente sui costi cercando di mantenere il più alto fattore di sicurezza/prestazioni.
Un PC considerato obsoleto o poco performante con un sistema operativo Linux può essere molto utile per realizzare un buon server FTP contenendo i costi ed assicurando una certa affidabilità e sicurezza.
Utilizzando il robusto proftpd appoggiato ad un’installazione bare minimum di CentOS 5.4 è possibile implementare un server FTP molto robusto ed efficiente.
1. PREREQUISITI
Per utilizzare proftpd e l’interfaccia web proftpd Administrator, sono richiesti quattro packages principali:
- mysql
- apache
- proftpd
- proftpd administrator
Procediamo con l’installazione dei requisiti di sistema:
# yum install mysql-server httpd php php-mysql mod_ssl

# chkconfig mysqld on
# chkconfig httpd on
Una volta installato il repository rpmforge, possiamo installare proftpd tramite il comando yum:
# rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

# yum install proftpd proftpd-mysql
# chkconfig proftpd on
Dal sito http://proftpd-adm.sourceforge.net scarichiamo l’ultima versione di proftpd Administrator e la scompattiamo. La directory sarà poi copiata nella root di Apache impostata in /etc/http/conf/httpd.conf, nell’esempio /var/www/html/.
# tar -xzvf proftpd_admin_v1.2.tar.gz
# mv proftpd_admin_v1.2 /var/www/html/ftpadmin
2. IMPOSTAZIONI DI mySQL
Per incrementare la sicurezza di mySQL, è opportuno impostare la password di root ed eliminare ciò che non è necessario:
# service mysqld start
# mysql_secure_connection
- impostare la password di root
- rimuovere l’utente anonymous
- disabilitare l’accesso remoto root
- rimuovere il database test

Una volta installato proftpd, bisogna impostare la password precedentemente assegnata a mySQL root editando il file della struttura del database che sarà importato in mySQL. Da /var/www/html/ftpadmin/misc/database_structure_mysql/, editiamo le ultime tre righe del file db_structure.sql:
# cd /var/www/html/ftpadmin/misc/database_structure_mysql/
# vi db_structure.sql

A questo punto dalla directory /var/www/html/ftpadmin/misc/database_structure_mysql/ importiamo la struttura del database in mySQL:
# mysql -u root -p < db_structure.sql

3. IMPOSTAZIONI DI APACHE
Configurare Apache /etc/http/conf/httpd.conf impostando il ServerName ed avviare il servizio:
# service httpd start
4. IMPOSTAZIONI DI proFTPd
Prima di avviare il servizio, bisogna configurare proftpd per rispecchiare le impostazioni del sistema. Come riferimento è possibile utilizzare il file di esempio proftpd.conf incluso nella directory /var/www/html/ftpadmin/misc/sample_config/.
Editare il file proftpd.conf e settare la stessa password impostata precedentemente in mySQL nella riga dove viene riportato:
SQLConnectInfo proftpd_admin@localhost proftpd newpassword

Verifichiamo che non ci siano errori di configurazioni in proftpd lanciando semplicemente il comando:
# proftpd
Se non viene visualizzato nessun errore, proftpd è pronto per essere avviato.
![]()
# service proftpd start
5. IMPOSTAZIONI DI proFTPd Administrator
Precedentemente abbiamo spostato la directory proftpd_admin in /var/www/html/ftpadmin, quindi è qui che sposteremo adesso la nostra attenzione. Per poter configurare il sistema tramite l’interfaccia web e abilitare la scrittura dei log, dobbiamo assegnare i diritti di scrittura al file configuration.xml e alle directory groups e users in /var/www/html/ftpadmin/logs:
# cd /var/www/html/ftpadmin
# chmod o+w configuration.xml
# chmod 733 logs/*
Creiamo il gruppo e l’utente utilizzati dal programma:
# groupadd -g 1000 grouptable
# useradd -u 1000 -s /bin/false -d /bin/null -c “proftpd user” -g grouptable usertable
Per come sono le impostazioni di default, creiamo la directory /ftp nella root di sistema:
# mkdir /ftp
Per aumentare la sicurezza del sistema è consigliato creare una partizione dedicata a ftp.
Per configurare correttamente l’ambiente operativo, riavviamo il servizio httpd e richiamiamo dal browser l’interfaccia web di proftpd Administrator tramite http://ip_address/ftpadmin/configure.php. Per configurare correttamente i parametri di sistema, cliccare su Configure e impostare i parametri come riportato in figura:

Database
proFTPd

Filepath

Terminata la configurazione, richiamando dal browser l’indirizzo http://ip_address/ftpadmin si accede alla Main Page:

6. SICUREZZA
Poichè presumibilmente il server FTP sarà messo in DMZ, è necessario impostare determinati parametri di sicurezza per garantirne una certa affidabilità contro eventuali tentativi di intrusione. Tramite il comando system-config-securitylevel-tui impostare il firewall come attivo lasciando passare solo i servizi necessari:
- ssh
- ftp
- https
# system-config-securitylevel-tui

Fare riferimento anche a quanto riportato nell’articolo Mettere in sicurezza un sistema Linux precedentemente pubblicato per rafforzare la robustezza del sistema.
Con l’installazione del modulo mod_ssl di Apache, utilizzeremo il protocollo SSL per accedere all’interfaccia web tramite l’indirizzo https://ip_address/ftpadmin.
Non ci resta poi che definire gli utenti con le home directory operative e il server FTP, dopo averlo testato per qualche giorno, è pronto per essere messo in produzione.







Ciao Paolo, molto interessante il tuo blog… vivo negli stati uniti e lavoro a new york da pochi mesi… ho la necessita di tirar su un ftp server con un interfaccia web based come proftp administrator. Ho tentato di fare il tutto su UBUNTU 8.01 e onestamente dopo due giorni di tentativi non sono arrivato al dunque… sto quindi decidendo di usare esattamente CentOS 5.4 poiche la mia conoscenza di linux e’ agli inizi e non trovo guide che riguardano UBUNTU… hai qualche suggerimento? Sai come poter settare i filepath su UBUNTU? Devo farlo girare il prima possibile questo server, mi daresti un vero aiuto…
Grazie
Francesco
Purtroppo UBUNTU non è una distribuzione che seguo particolarmente. Ho sempre lavorato con prodotti Red Hat e quindi le soluzioni che implemento sono basate su questa distribuzione, CentOS appunto.
Se hai bisogno di implementare un FTP “velocemente”, prova a seguire questo post passo passo e vedi se incontri particolari difficoltà.
L’installazione è composta da tre step principali:
- installazione CentOS bare minimum
- installazione proFTP + web console
- messa in sicurezza del server
Sono tutti post disponibile nel blog che spero possano aiutarti…
Ciao Paolo,
scusa il disturbo, seguo il tuo post passo passo , ma quando sovrascrivo proftpd.conf in /etc con quello editato in misc/sample_config proftpd mi ritorna degli errori:
Fatal: unknown configuration directive ‘DisplayFirstChdir’ on line 9 of ‘/etc/proftpd.conf’
e anche commentando la suddetta riga gli errori continuano
Help pliss
grazie 1000
L’istruzione “DisplayFirstChdir” non è più presente dalla versione 1.3.1rc1 di proFTPd. Per risolvere il problema ferma il servizio, commenta l’istruzione che causa l’errore e riavvia il servizio.
service proftpd stop
#DisplayFirstChdir
service proftpd start
A questo punto il problema dovrebbe sparire. Se si verificano altri errori (quali?) è opportuno indagare. A questo indirizzo trovi alcune istruzioni per effettuare delle verifiche: http://www.proftpd.org/docs/howto/Debugging.html
Rivedi i parametri attentamente partendo magari da una configurazione base.
Ciao,
c’è modo di integrare il proFTPd Administrator con Active Directory? In pratica, siccome ho un AD già funzionante, vorrei usare quella per autenticare almeno gli utenti che possono accedere a proFTPd Administrator.
Si, è possibile integrare proFTPd in Active Directory. Si può configurare PAM per utilizzare kerberos per l’utenticazione o mod_ldap, la procedura non è immediata (io non l’ho mai provata). Su Google trovi diversi post in merito.
Se il tuo FTP dovesse risiedere in DMZ, non ti consiglio di aprire nel firewall le porte richieste… il discorso sicurezza sarebbe compromesso.