Realizzare un server FTP con VSFTPD e DNS dinamico

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Edit-clear-history.png 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.


Debian-swirl.png Versioni Compatibili

Debian 8 "jessie"

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.

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 di backup, è 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 al seguente indirizzo, 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, killandolo e ri-avviandolo.

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 -A

, oppure

$ top

, a questo punto, dovrebbe essere possibile raggiungere il server digitandone l'indirizzo in un qualsiasi browser.




Guida scritta da: Irmin Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized