“Beam me up, Scotty!” (James T. Kirk)
La profonda differenza insita tra dato e informazione risiede nella prerogativa di quest’ultima di essere categorizzata, offrendo in tal modo l’olistica possibilità di fornire tautologicamente maggiore consocenza anche solo attraverso il modo in cui viene rappresentata a livello di interconnessioni con la realtà.
Tanto per presentare un esempio, dati sono rappresentati da una serie di schede meccaniche relative ad autovetture, informazione invece è presente quando le schede sono suddivise scientemente in ordine alfabetico, o di anno di produzione, o di caratteristiche del motore.
In quest’ottica, un FTP server (ove FTP è acronimo di File Transfer Protocol) ha la possibilità non solo di garantire un accesso diretto ad oggetti differenti posti in un unico contenitore remoto, ma anche di fornire una possibile chiave di lettura dei dati stessi, attraverso una strutturazione delle cartelle di salvataggio. Immaginiamo ad esempio un contenitore al quale afferiscono i dati captati da decine di sensori dediti a controlli differenti in luoghi differenti: se ciascun sensore è in grado di accedere esplicitamente ad una determinata posizione all’interno del server per depositarvi i dati, i dati raccolti nel server divengono informazioni importanti.
Inoltre è più facile introdurre le opportune limitazioni inerenti la sicurezza in casi del genere: un applicazione server avrebbe ad esempio una cartella definita per accedere ai dati del giorno, limitando in tal modo tutti gli accessi ad altre risorse; allo stesso modo, sarebbe possibile inviare i dati raccolti nella giornata utilizzando un’unica transazione sicura (e magari cifrata) da ciascun sistema di raccolta dati.
Infine, ciascun soggetto interessato all’invio dati avrebbe una univoca e personale coppia di credenziali d’accesso, differenti da quelle fornite dalla fabbrica: tale coppia potrebbe avvalersi del sistema di riconoscimento sicuro basato su SSH, come descritto in un altro articolo.
Installazione
Per prima cosa occorre aggiornare il nostro Raspy attraverso la solita sequenza di comandi:
1 2 |
sudo apt-get update sudo apt-get upgrade |
Una volta terminato l’aggiornamento,occorrerà conoscere l’indirizzo IP assegnato alla macchina che ospiterà il server. Utilizzreremo il comando
1 |
ifconfig |
per leggere l’indirizzo IP assegnato alla nostra scheda Ethernet, solitamente contrassegnata dall’etichetta ETH0.
Dopodiché potremo scaricare il nostro server. In questo articolo opteremo per il classico VS-FTPD.
1 |
sudo apt-get install vsftpd |
Configurazione
Al termine dell’installazione occorre configurare il file /etc/vsftpd.conf attraverso l’editor preferito. In genere è sufficiente togliere il simbolo di commento ‘#‘ alle righe seguenti:
1 2 3 4 5 |
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 chroot_local_user=YES |
La prima riga impedisce l’accesso anonimo al server FTP.
La seconda riga consente l’accesso agli utenti locali. Se la macchina sulla quale è installato il server non verrà utilizzata per altri scopi, è possibile porre la variabile a NO.
La terza riga consente la scrittura sul nostro FTP. Qualora il sistema sia utilizzato esclusivamente come repository di informazioni (quindi in sola lettura) porre la variabile a NO.
Quarta riga: il settaggio umask per gli utenti locali è in genere 077. Cambiandolo in 022 (opzione utilizzata per la maggior parte degli FTP), si limita ulteriormente il diritto di intervento di eventuali utenti locali.
La quinta riga richiede qualche spiegazione in più. L’operazione di chroot consiste nell’eseguire il programma bloccato dentro una sottodirectory, permettendogli di accedere esclusivamente alle risorse di cui ha strettamente bisogno. Se un cracker riesce a prendere il controllo di un’applicazione, avrà tutti i privilegi associati all’applicazione e potrebbe essere in grado di compromettere la sicurezza dell’intero sistema, ad esempio, installando un rootkit.
Al contrario, se il programma compromesso si trova in un chroot, dovrà prima uscire dal perimetro e solo dopo potrà apportare danni al sistema. Definire un utente in chroot() rappresenta una tra le best practices in sicurezza informatica; ciò non toglie tuttavia che sia possibile aggirare la limitazione.
È infine conveniente aggiungere le seguenti righe alla fine del file:
1 2 |
user_sub_token=$USER local_root=/home/$USER/ftp |
Si può salvare il file di configurazione ed uscire.
Utenze e permessi
Per poter consentire all’utente Pi di default di connettersi ed utilizzare il server FTP, occorre creare un paio di directory:
1 2 |
mkdir /home/pi/ftp mkdir /home/pi/ftp/files |
e cambiarne i permessi di accesso:
1 |
chmod a-w /home/pi/ftp |
Se invece si desidera accedere al server utilizzando un diverso username, sarà opportuno crearne uno. In questo esempio creeremo un nuovo utente chiamato fotocamera:
1 |
sudo adduser fotocamera |
Vi verrà richiesta una password: fate in modo c he sia sufficientemente sicura.
Le altre richieste nella creazione dell’utenza potranno essere lasciate in bianco.
QAnche il nuovo utente avrà bisogno di una serie di nuove directory:
1 2 |
mkdir /home/fotocamera/ftp mkdir /home/fotocamera/ftp/files |
Esecuzione e test del server FTP
Come per tutti i servizi di Linux, non è necessario riavviare la macchina: sarà sufficiente far ripartire il servizio:
1 |
sudo service vsftpd restart |
Ciò che ora rimane da fare è controllare di poter accedere al server e trasferire files attraverso un client FTP. Potremo utilizzare Filezilla, WinSCP o direttamente attraveso la command-line, tramite il comando FTP.
I log di sessione sono consultabili attraverso il comando
1 |
cat /var/log/vsftpd.log |
per ottenere la lista delle connessioni eseguite dal server FTP.
Link utili: