Realizzare un server FTP con VSFTPD e DNS dinamico
Attenzione. Questa guida è da considerarsi abbandonata, per via del tempo trascorso dall'ultima verifica.
Potrà essere resa obsoleta, previa segnalazione sul forum, se nessuno si propone per l'adozione. |
Versioni Compatibili Debian 8 "jessie" |
Attenzione: questo articolo è ancora incompleto e in fase di scrittura da parte del suo autore.
Sentitevi liberi di contribuire, proponendo modifiche alla guida tramite l'apposita pagina di discussione, in modo da non interferire con il lavoro portato avanti sulla voce. Per altre informazioni si rimanda al template. |
Premessa
Lo scopo principale di questa guida è quello di rendere fruibile a chiunque (e nel caso specifico agli utenti di Debian, nonchè di tutte le sue distro derivate) la possibilità di poter realizzare un server FTP che dia libero accesso ai contenuti condivisi su di esso.
E' inoltre possibile leggere qui la versione più estesa e completa della guida pensata e concepita come un progetto che sia più vicino agli utenti che non hanno alcun tipo di familiarità con ambienti UNIX/Linux e che gli consenta, comunque, di realizzare da zero un server FTP (completamente configurato), partendo dall'installazione e configurazione di Debian, fino ad arrivare alla sua immissione nella Grande Rete, senza tralasciare aspetti e concetti fondamentali, per un utente nuovo al mondo Linux (come, ad esempio, l'utilizzo del terminale e dei suoi comandi più comuni ed importanti), trattati in modo semplice e discorsivo.
In conclusione, entrambe le guide, portano allo stesso risultato, partendo, però, da due punti di vista differenti: la prima, questa, è pensata per gli utenti già navigati nel mondo di Debian, del terminale e del suo utilizzo, delle reti e così via, la seconda, invece, non da nulla per scontato e segue passo passo l'utente che si è appena avvicinato al mondo di Linux.
Fase preliminare
In questa sezione saranno vagliati i requisiti necessari per la corretta installazione del server FTP, nonché per il suo corretto funzionamento:
- N.B.: Da questo momento in avanti, TUTTI I COMANDI saranno lanciati come super-utente, quindi bisognerà loggarsi come utente radice oppure bisognerà eseguire i comandi premettendo
sudo
ad ogni comando.
- N.B. II: Nel caso in cui sul sistema non sia presente sudo bisognerà procedere al suo scaricamento ed alla sua installazione tramite il comando:
# apt-get install sudo
e procedere all'inserimento dell'utente corrente nella lista dei sudoers.
- N.B. II: Nel caso in cui sul sistema non sia presente sudo bisognerà procedere al suo scaricamento ed alla sua installazione tramite il comando:
Per ulteriori informazioni sulla procedura da seguire per l'inserimento dell'utente corrente nella lista dei sudoers ci si può rifare al manuale di sudo, oppure editare il file in /etc/sudoers con permessi di root ed aggiungere i permessi all'utente in uso.
Ogni ulteriore informazione è reperibile a questo indirizzo.
Verifica dei pre-requisiti e del software necessario
Per poter realizzare quanto proposto dalla guida, è strettamente necessario il possesso di due pacchetti fondamentali: make e gcc.
Se non sono installati sul sistema, bisogna procedere alla loro acquisizione ed installazione tramite i comandi:
# apt-get install make # apt-get install gcc
Tali pacchetti serviranno per installare e configurare il software che si occuperà di aggiornare l'indirizzo IP della macchina qualora questo venga cambiato dal DHCP.
E' inoltre opportuno sincerarsi che il router a cui si appoggerà il server fornisca la funzione di forwarding degli indirizzi, senza la quale il server sarà accessibile solamente dalla rete locale.
Scaricamento ed installazione di VSFTPD
Per questa guida è stato scelto l'utilizzo dell'implementazione VSFPTD per il protocollo FTP, che è possibile scaricare ed installare tramite il comando:
# apt-get install vsftpd
Una volta scaricato ed installato il pacchetto, il server sarà già attivo ed impostato con la sua configurazione di default.
E' inoltre possibile verificare lo stato del server tramite il comando:
# /etc/init.d/vsftpd status
Configurazione di VSFTPD
Il file di configurazione di VSFTPD è collocato nella directory /etc
ed è possibile leggerne la configurazione di default tramite il comando:
# less /etc/vsftpd.conf
Poichè la configurazione di default non va bene per gli scopi di questa guida, è necessario cambiarne il contenuto settando delle regole ad-hoc per lo scopo prefissato: ovvero rendere il server raggiungibile dall'esterno e fare in modo che sia possibile scaricarne gli elementi senza che gli utenti remoti e/o locali possano accedere in scrittura alla directory principale del server e quindi poter caricare a loro volta files e/o modificarli.
Tutta la documentazione relativa alle regole di VSFTPD è possibile trovarla qui.
Prima di settare le nuove regole, sarebbe opportuno effettuare una copia di backup del file di configurazione originale tramite il comando:
# cp /etc/vsftpd.conf /home/vostronomeutente/Documenti
(o in qualsiasi altro percorso che sia di vostro gradimento).
Effettuata la copia del file, è possibile modificarne il file, contenuto nella directory /etc
, che sarà quello effettivamente letto da VSFTPD.
Prima di procedere alla modifica, è necessario stoppare il demone vsftpd tramite il comando
# /etc/init.d/vsftpd stop
a questo punto bisognerà eliminare il contenuto del file ed incollare al suo interno le seguenti regole:
listen=YES anon_root=/var/ftp/TEST anonymous_enable=YES local_enable=NO hide_ids=YES no_anon_password=YES use_localtime=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES idle_session_timeout=600 data_connection_timeout=120 max_per_ip=2 ftpd_banner=Welcome to TEST FTP Server secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd
una volta copiate le regole, è possibile salvare il file e ri-avviare il demone tramite il comando:
# /etc/init.d/vsftpd restart
ed è inoltre possibile sincerarsi dello stato del demone utilizzando, ancora una volta, il comando:
# /etc/init.d/vsftpd status
Resta inteso che, dopo aver letto la documentazione ufficiale sulle regole di VSFTPD e la loro relativa sintassi, sarete in grado di apportare modifiche consistenti al file che abbiamo appena editato, essendo consapevoli del fatto che il comportamento del vostro server cambierà in base alle nuove regole che editerete.
Configurazione dei permessi: utente e directory per VSFTPD
In questa fase ci si occuperà del corretto settaggio dei permessi utente per la home directory del server, collocata nel percorso: /var/ftp/TEST
, come da impostazione editata nel file di configurazione appena creato (nulla vieta di modificare tale percorso nel file di configurazione, nonché di modificare i nomi delle directory, avendo cura, in seguito, di cambiare i nomi scelti al posto di quelli utilizzati in questa guida).
Con questo passaggio assegneremo la home directory /var/ftp/TEST
al gruppo di utenti ftp
, questo ci tornerà utile, perché: avendo configurato il server per gestire solo ed esclusivamente utenti anonimi, faremo in modo che gli utenti che si connetteranno al server potranno muoversi solamente nelle directory che faranno parte del gruppo ftp
, ovvero tutte le sotto-directory che, eventualmente, saranno create a partire dalla home directory in poi.
Adesso procediamo e creiamo le sotto-directory /ftp
, e /ftp/TEST
in /var
: pertanto, tramite il comando:
# mkdir /var/ftp # mkdir /var/ftp/TEST
verranno create le due sotto-directory in /var
.
Create le directory, bisogna assegnare il permesso di lettura ed esecuzione per il gruppo di utenti ftp alla home directory, pertanto, spostandoci nella directory /var/ftp
, bisognerà lanciare il comando:
# chgrp ftp TEST/
verificando, tramite il comando:
# ls -al
l'avvenuta assegnazione dei permessi.
Verifica della configurazione di VSFTPD sulla la rete locale
A questo punto è possibile creare un file di prova nella home directory per verificare che, dalla rete locale, sia accessibile, visibile e scaricabile.
Ad esempio, tramite il comando (lanciato nella directory /var/ftp/TEST
):
# nano prova.txt
è possibile creare un file testuale che, una volta salvato, sarà posizionato nella home del server.
Per verificare che il file sia accessibile e scaricabile dalla rete locale, se non è ancora stato fatto, è necessario determinare l'indirizzo IP locale del server tramite il comando:
# ifconfig
ed accedere, tramite browser, all'indirizzo: ftp://indirizzolocale, in questo modo è possibile verificare che il file sia presente ed accessibile, nonché, visualizzabile tramite il browser.
DNS Dinamico
Il DNS dinamico è indispensabile nel caso in cui il router assegni indirizzi IP dinamici tramite il DHCP.
Per motivi pratici è stato considerato questo caso, che dovrebbe corrispondere alla media della casistica; prima di procedere, però, alla sottoscrizione di un abbonamento gratuito presso il provider di DNS dinamico scelto per questa guida (ovvero: no-ip), bisogna effettuare il forward del server al router.
Configurazione del forwarding
Benché coprire tutta la casistica per accedere alle impostazioni di gestione per tutte le marche di router sia impossibile, verrà consigliato un metodo abbastanza generale, ovvero: tramite il comando:
# ip route | grep default
sarà possibile risalire al gateway (cioè al router) che ha assegnato l'indirizzo al server, inserendo tale indirizzo nel browser si dovrebbe essere in grado di accedere alla pagina di gestione del router, da cui sarà possibile settare le impostazioni per il forwarding (oppure port forwarding o, ancora, port mapping).
L'indirizzo che bisognerà forwardare sarà quello del nostro server, ottenibile tramite il comando:
# ifconfig
(ovviamente digitato sul server), inserirlo nel campo indirizzo e forwardare la porta 21 (interna ed esterna) che corrisponde alla porta di servizio utilizzata dal protocollo FTP.
Scelta del provider DDNS
Come già anticipato, il provider utilizzato in questa guida è quello raggiungibile all'indirizzo: https://www.noip.com, la procedura da seguire è molto semplice e comprende una prima fase di scelta del nome che sarà l'hostname del server, un nome di dominio tra quelli proposti ed infine registrarsi tramite la voce signup.
In fase di registrazione verrà chiesto di inserire un indirizzo e-mail ed un nome utente che verranno utilizzati in fase di login ed in fase di configurazione del DUC (Dynamic Update Client), è opportuno inserire un indirizzo email valido, perché tutte le comunicazioni verranno inoltrate proprio lì, inoltre, scegliendo un piano gratuito, il nome dell'host che verrà scelto, avrà una durata di trenta giorni e, pertanto, andrà rinnovato prima dello scadere del trentesimo giorno, altrimenti potrà essere utilizzato da altri utenti.
Prima dello scadere dei trenta giorni, comunque, all'indirizzo di posta che verrà inserito in fase di registrazione, verrà inviata una notifica che ricorderà di rinnovare il nome dell'host che è stato scelto.
Una volta registrato l'account, bisognerà accedere alla pagina di gestione dell'host scelto, semplicemente loggandosi con le credenziali definite in fase di registrazione.
Scaricamento e configurazione del DUC
In questa fase bisognerà scaricare ed installare il DUC dall'apposito link presente nella pagina di gestione (Dynamic Update Client for Linux).
Una volta scaricato il file (in formato tar.gz) bisognerà scompattarne il contenuto e procedere alla sua installazione, ricordandosi che, prima di installare il DUC, bisognerà aver installato i pacchetti make e gcc.
Per installare il DUC basterà posizionarsi nella directory appena scompattata e lanciare il comando:
# make install noip2
In fase di installazione bisognerà inserire i dati di login, un intervallo temporale (il default è 30 minuti, è possibile scegliere un intervallo diverso) ed eventualmente far eseguire al DUC un comando ad aggiornamento dell'indirizzo avvenuto.
Effettuata questa scelta il DUC terminerà la sua installazione e sarà possibile lanciare il DUC per consentire al server di essere raggiunto dalla Rete Internet. Il percorso in cui viene installato il DUC è: /usr/local/bin
, per lanciare l'esecuzione del DUC bisogna digitare il comando:
# /usr/local/bin/noip2
(per ottenere informazioni sullo stato del DUC, il comando da eseguire è:
# /usr/local/bin/noip2 -S
).
Verifica della raggiungibilità del server dalla rete Internet
Se tutti i passi precedenti sono stati seguiti correttamente, sarà possibile accedere al server FTP digitando sul browser l'indirizzo che è stato scelto in fase di registrazione presso no-ip, preceduto da ftp://nomehost.dominio.ecc .
Nel caso in cui il server non sia raggiungibile è possibile forzare l'aggiornamento del DUC, trovando il processo di noip2, killarlo e ri-avviarlo.
La sintassi per killare il processo è la seguente:
# /usr/local/bin/noip2 -K PID
dove PID corrisponde all'identificativo del processo da killare, per ri-avviarlo basterà ri-lanciare il comando:
# /usr/local/bin/noip2
Per avere la lista di tutti i processi attualmente in esecuzione possiamo digitare il comando:
$ ps -aux
a questo punto, dovrebbe essere possibile raggiungere il server digitandone l'indirizzo in un qualsiasi browser.
Guida scritta da: Irmin | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |