Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Configurare un server FTP in Linux

Guida all'installazione, alla configurazione e alle problematiche di sicurezza del server open source ProFTPD, un server FTP veloce ed efficiente per Linux.
Guida all'installazione, alla configurazione e alle problematiche di sicurezza del server open source ProFTPD, un server FTP veloce ed efficiente per Linux.
Link copiato negli appunti

Come accennato nell'articolo precedente dedicato all'installazione di un server FTP in Windows, in quest'ultimo articolo della serie tratteremo il download, la configurazione, l'installazione e la gestione di un server FTP per sistemi GNU/Linux.

Come per Windows, anche per Linux sono disponibili svariati server FTP, anche se quelli più conosciuti sono sicuramente:

Nel presente articolo abbiamo selezionato ProFTPD per la sua facilità d'installazione, di configurazione e di gestione. Per l'installazione saranno utilizzati i sorgenti dell'applicativo e non i pacchetti delle varie distribuzioni, in modo di dare a tutti la possibilità di testare quest'ottimo prodotto. A tal proposito può essere utile la lettura dell'articolo su come compilare un programma in Linux. Tuttavia in queste pagine troverete istruzioni dettagliate su ogni passaggio necessario all'installazione e alla configurazione del pacchetto, nonché alla sua messa in sicurezza.

Prerequisiti

Per poter eseguire l'installazione è necessario che sia presente l'ambiente di sviluppo. Verificate quindi, tramite i successivi comandi da eseguire sulla shell di comando, se questo è installato:

whereis gcc
whereis g++
whereis ld

Nel caso uno dei comandi dovesse stampare a video una riga di questo tipo:

[utente@hostname utente]# whereis gcc
gcc:

sarà necessario procedere all'installazione del software per la compilazione utilizzando i pacchetti della vostra distribuzione.

Download del server FTP

Il sito principale di ProFTPD è http://www.proftpd.org/, ove è possibile eseguire il download dei sorgenti utilizzando il link Download Servers, o accedere alla documentazione visitando la sezione Documentation. Per eseguire un download veloce dell'ultima versione disponibile alla data di scrittura di questo articolo (la 1.3.0 del 16 aprile 2006) vi consiglio di scaricare il sorgente da un mirror italiano, come ftp://ftp.it.proftpd.org/pub/mirror/proftpd/distrib/source/proftpd-1.3.0.tar.gz.

È consigliabile scaricare il file direttamente all'interno della directory nella quale deve essere scompattato, ovvero /usr/local/src.

Compilazione ed installazione del software

Una volta eseguito il download del codice sorgente, questo van prima decompresso e poi compilato. Aprite una shell e portatevi alla directory /usr/local/src. Una volta fatto, lanciate il comando che eseguirà la decompressione dell'archivio:

tar -xzf ./proftpd-1.3.0.tar.gz

Entrate nella directory protftpd-1.3.0, utilizzando sempre la console (cd protftpd-1.3.0), ed eseguite in successione i tre seguenti comandi per la compilazione:

./configure --enable-dso
make
make install

Nel caso non stiate lavorando come utente root è necessario cambiare il comando:

make install

in

sudo make install

o eseguire i seguenti:

su -
# inserite la password di root
make install
exit

L'installazione, infatti, va obbligatoriamente eseguita come utente root, dato che svariati file devono essere copiati in cartelle modificabili solo da lui.

Una volta eseguite queste operazioni il server FTP sarà installato nelle seguenti cartelle:

  • /usr/local/bin, nella quale saranno copiati i file di supporto del server FTP;
  • /usr/local/sbin, che conterrà il vero e proprio server FTP, oltre che il tool per la chiusura del software;
  • /usr/local/etc, nella quale saranno installati i file di configurazione.

Durante la compilazione è possibile attivare dei moduli per ampliare le funzionalità del server. Per maggiori informazioni è possibile visitare l'indirizzo http://www.proftpd.org/docs/.

Configurazione del server FTP

Dopo aver eseguito l'installazione è necessario configurare il server FTP per poterlo avviare. Aprite quindi il file di configurazione /usr/local/etc/proftpd.conf tramite il vostro editor preferito ed incollate all'interno il seguente testo:

ServerName "HTML.IT FTP Test Server" # Nome del server FTP
ServerType standalone # Modalità di funzionamento (deve essere usato standalone)
DefaultServer on # Evita la creazione di appositi virtual hosts dato che va gestito un solo "dominio" FTP
Port 21 # Porta da utilizzare per le connessioni
Umask 022 # Maschera per la creazione dei file e delle directory
MaxInstances 30 # Numero massimo di connessioni effettuabili
User FTP # Utente da usare
Group FTP # Gruppo da usare
DefaultRoot ~ # Abilitando questa riga in automatico gli utenti vengono chiusi all'interno della propria home directory e non gli è permesso di uscire fuori
AllowOverwrite on # Abilita la sovrascrittura dei files
DenyAll # Blocca il comando SITE_CHMOD

Com'è possibile vedere lo stile del file di configurazione assomiglia a quello utilizzato da Apache. Per avere altri esempi sulla configurazione del server è possibile visitare la pagina http://www.proftpd.org/docs/example-conf.html.

Nel caso che il server sia posizionato dietro un router o un firewall, hardware o software, è necessario configurare correttamente la modalità passiva. Per far questo è necessario aggiungere alla configurazione le seguenti righe:

MasqueradeAddress xxx.yyy.zzz.ttt # Indirizzo IP esterno da utilizzare
PassivePorts aaaaa bbbbb # Range di porte da utilizzare

Una volta inserite queste impostazioni è necessario far puntare dal firewall hardware o dal router le porte indicate in quel range e riavviare il server FTP. Nel caso l'IP esterno non sia fisso, è possibile utilizzare un hostname che punti all'indirizzo dinamico utilizzando uno dei tanti servizi gratuiti che consentono queste operazioni. Eccone un elenco:

Nella prossima parte dell'articolo vedremo come avviare il server, come gestire gli utenti e come renderlo più sicuro.

Nella prima parte dell'articolo abbiamo descritto l'installazione e la configurazione di un server FTP per sistemi GNU/Linux. Continuiamo analizzando la gestione degli utenti e della sicurezza.

Avvio e gestione

Come detto nell'introduzione, ProFTPD è un server FTP davvero semplice da gestire, infatti si appoggia, di default, ai controlli eseguiti dal sistema operativo sugli utenti per la gestione del login, le PAM, consentendo quindi di sfruttare eventuali sistemi di autenticazione complessi e avanzati che si appoggiano a database esterni o domini di Windows.

In ogni caso, tramite apposite patch o configurazioni specifiche, è possibile far gestire al server FTP gli utenti registrati su database come MySQL, PostgreSQL, LDAP ed altri ancora. Per poter eseguire tutti i comandi sotto riportati è necessario essere loggati con l'utente root.

Il server FTP può funzionare sia in modalità standalone, sia tramite inetd/xinetd, in ogni modo non tratteremo quest'ultima modalità perché riduce notevolmente la flessibilità del software.

Per avviare il software basta eseguire il comando:

/usr/local/sbin/in.proftpd

Per terminarlo invece:

pkill in.proftpd

Per verificare se il server è avviato

ps -A | grep protftpd

Per far partire il server all'avvio della macchina è necessario modificare il file /etc/rc.d/rc.local ed inserire alla fine di questo la riga d'avvio del server, ovvero /usr/local/sbin/in.proftpd.

Creazione di utenti e gruppo

Una volta avviato il server è necessario creare i gruppi e gli utenti appositi per chi si deve connettere, dando anche la possibilità di creare delle apposite cartelle condivise tra gli utenti.

Come prima cosa è necessario creare un gruppo con nome FTP-users

groupadd FTP-users

Eseguita quest'operazione andrà creato un utente chiamato FTP-user che apparterrà al gruppo FTP-users

useradd -c "Utente FTP" -g FTP-users -m FTP-user

A questo punto va impostata la password dell'utente tramite il comando passwd:

passwd FTP-user
# inserire la password dell'utente
# reinserire la password per la verifica

Eseguite queste operazioni sarà possibile connettersi al server FTP l'utente appena creato.

Per eliminare l'utente è necessario utilizzare il comando userdel:

userdel FTP-user

Aumentare la sicurezza

Come detto nella sezione precedente, il server FTP fa uso delle PAM (Pluggable Authentication Module) per gestire l'autenticazione, quindi fa uso degli utenti di sistema per decidere chi può accedere e chi non può farlo. Questo, anche se offre un'elevata flessibilità, aumenta sensibilmente i pericoli legati alle intrusioni: un utente di sistema aggiunto per l'unica funzione di accedere al server FTP può, ad esempio, accedere via SSH (Secure Shell) alla vostra macchina!

Ad esempio, se la Secure Shell sono attive sulla vostra macchina, lanciando il comando:

ssh FTP-user@localhost
# inserire la password dell'utente

sarà possibile eseguire il login e lavorare tramite console sulla macchina, ed ad esempio sarà possibile visionare dati poco protetti con una certa facilità. Ovviamente non sarà possibile accedere a configurazioni interne del sistema per modificarle o accedere ai nostri dati se questi sono leggibili solo dal proprietario, però in ogni caso questo semplice fatto potrebbe permettere ad una persona un po' più esperta di danneggiare sensibilmente il vostro sistema.

Come prima cosa è quindi necessario aggiungere la seguente riga alla configurazione:

RequireValidShell no

in modo da poter utilizzare utenti che non abbiano una shell valida. Come seconda cosa è poi necessario creare l'utente specificando che la shell /bin/false o /sbin/nologin in modo da bloccare l'accesso esterno via ssh, telnet o altro.

Per fare questa seconda operazione il comando useradd va modificato per come segue:

useradd -c "Utente FTP" -g FTP-users -m -s /bin/false FTP-user

Per facilitare la gestione è anche possibile attribuire a tutti gli utenti FTP un'unica directory, ad esempio, presente in /home. Vedremo come nella prossima e ultima pagina.

Per attribuire a tutti gli utenti FTP un'unica directory è necessario modificare l'utente useradd, creando però prima la directory di destinazione:

mkdir /home/FTP-users

Il comando per la creazione dell'utente invece va modificato così:

useradd -c "Utente FTP" -g FTP-users -m -s /bin/false -d /home/FTP-users/FTP-user FTP-user

Infine possiamo evitare che i file di default siano copiati all'interno della directory dell'utente, sia per evitare confusione sia per evitare di far vedere le configurazioni di default. Modificare quindi il comando useradd in questo modo:

useradd -c "Utente FTP" -g FTP-users -m -k /dev/null -s /bin/false -d /home/FTP-users/FTP-user FTP-user

Per ulteriori informazioni sul comando useradd, usermod e userdel è possibile verificare i seguenti indirizzi:

Inoltre è possibile ridurre gli attacchi automatizzati dall'esterno disabilitando le informazioni riguardanti il server FTP inviate durante la connessione inserendo il seguente parametro nel file di configurazione di ProFTPD:

ServerIdent off

Per finire è possibile anche limitare il numero di login falliti utilizzando la direttiva MaxLoginAttempts:

MaxLoginAttempts 3

per limitare i limitare il numero di tentativi a 3 fallimenti.

Per maggiori dettagli su come aumentare la sicurezza del server è possibile visitare il seguente indirizzo: http://www.proftpd.org/localsite/Userguide/linked/c226.html#AEN231

Conclusioni

Come avrete sicuramente notato, proftpd è un server FTP estremamente flessibile e potente che permette di creare configurazioni su misura. Le spiegazioni ed i documenti segnalati in quest'articolo sono soltanto una piccola parte della documentazione disponibile per questo grande software.

Per chi avesse dubbi, consiglio di inviare messaggi nella sezione Linux del Forum di HTML.it, dove sicuramente troverà risposte valide ed utili ma soprattutto di leggere la documentazione in modo molto approfondito in modo da ridurre rischi legati alla sicurezza, errori di configurazione e malfunzionamento più o meno gravi.

Ti consigliamo anche