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.
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
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
Impostazioni di Apache
Configurare Apache /etc/http/conf/httpd.conf impostando il ServerName ed avviare il servizio:
# service httpd start
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
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:
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.
Ciao e grazie per l'utilissima guida.. io sto provando a fare l'installazione su CentOs 6.3, va tutto bene ma quando vado a caricare la cartella ftpadmin da web mi da sempre:
"You don't have permission to access /ftpadmin/configure.php on this server."
e lo stesso vale per l'intera cartella ftpadmin.. Ho provato a reimpostare i permessi ma forse non l'ho fatto in maniera corretta.. puoi aiutarmi ? Grazie mille
tutto risolto, avevo problemi con l'installazione di php 🙂
stefano, come hai fatto? ho lo stesso problema
ho lo stesso problema di stefano, come si risolve questa rogna nei permessi?
Verifica i permessi.
Una valida alternativa a proFTPd è vsFTP che trovo più semplice, funzionale e sicuro.
ciao Paolo,
grazie per la celere risposta!
se posso permettermi, ti spiego la mia situazione (sono un sistemista anche io, ma molto in erba con centos e linux in generale).
Spesso uso webmin come addon sui server, perchè per alcune cose mi risulta molto comodo (non per tutto!!).
webmin ha il modulo nativo per pureftp, e leggendo le specifiche mi sembra molto completo (sopratutto per i virtual server).
Ad ogni modo testerò anche vsFTP.
Per i permessi, ho immaginato una cosa del genere, ma non saprei come risolvere. Ho provato a dare chmod -r 777 /ftpadmin ed ho ottenuto questo:
drwxrwxrwx. 6 usertable users 4096 Nov 15 2006 ftpadmin
ma ammetto di brancolare nel buoio.
Ho adattato un pò la guida, perchè sto usando centos 6.4 a 64bit