Raspberry PI progetto AMBER: getting started

Trasformiamo la nostra Raspberry PI in un sistema di Account Management on-line potente e “blindato” . Con l’aiuto di PHP, MySQL, Blowfish e DynDNS possiamo dire basta alla scrittura di password su foglietti o di PIN dentro hard disk accessibili solo dal PC di casa. A fornirci i nostri dati sensibili, dovunque noi siamo ed in totale sicurezza, ora ci pensa il nostro micro-server PI!

Amber, acronimo per Account Managing Business Engineered RaspberryPI (RaspberryPI ingegnerizzata per compiti di Account Managing), è un progetto che si prefigge di trasformare la nostra RasPI in un micro server interamente deputato alla gestione dei nostri dati sensibili.

L'idea per questa particolare applicazione è stata vincitrice di una delle scorse puntate del nostro Review4U (N.d.R.).

Oggi come oggi, tra documenti, carte di credito, registrazioni a siti di servizi vari, per ognuno di noi è sempre più ingente la mole di password e di dati personali di cui dover tenere traccia. Le modalità che scegliamo di applicare a tale scopo riflettono ovviamente la nostra personalità, per cui troveremo sempre il nostalgico della carta e penna,  l'"hi-tech" che vuole l'ultimo ritrovato in fatto di memorizzazione, il "malfidato" che se ne infischia del supporto di memoria purché i suoi dati siano tutti al sicuro o il "trendy" che "basta che ci sia una app per farlo".  E via dicendo con molti altri profili...

Non esiste il metodo migliore in assoluto, poiché esistono tanti metodi ognuno dei quali è valido solamente se si adatta alle esigenze di chi lo impiega.

Ma in questa pletora di possibilità si possono senz'altro trovare i seguenti fattori comuni:

1) i propri dati devono essere conservati e trasmessi in sicurezza;

2) ai propri dati si deve poter accedere in modo semplice e veloce.

Se a questi aspetti aggiungiamo la possibilità di poter reperire le informazioni in qualunque momento e dovunque ci troviamo, be', allora abbiamo inquadrato l'obiettivo che si prefigge il progetto Amber!

Amber è un’applicazione molto semplice, in buona sostanza rappresenta un'interfaccia remota al database dei propri dati sensibili che creeremo e memorizzeremo nella nostra RasPI. Pertanto essa consente di accedere ai propri dati, modificarli e/o inserirne di nuovi. Tutto qui.

Tecnicamente, è un connubio di 3 elementi: un ambiente LAMP-based, una particolare configurazione dei meccanismi di sicurezza del sistema operativo Linux sulla RasPI ed un DNS dinamico. Ed è proprio questo legame che ci permetterà di ottenere a distanza ed in tutta sicurezza i dati sensibili di cui disponiamo, superando i limiti dei classici metodi di gestione degli stessi.

L’idea futura è quella di rendere Amber fruibile in primis dal proprio smartphone, così da poter avere un accesso ai dati senza necessità di stare seduti davanti ad un PC o avere per forza con sé un notebook. Tuttavia, in questa fase introduttiva, verrà presentata l’interfaccia web della stessa, pertanto si lavorerà tramite un web browser via PC.

Il progetto verrà descritto in 3 step:

1.      Getting started + deploy dell'applicazione;

2.      Implementazione dei meccanismi di sicurezza;

3.      Aggancio ad Internet mediante dyndns.

Pronti per la partenza? Bene, iniziamo!

 

Panoramica generale

In questo getting started farò le seguenti assunzioni:

  • siete a conoscenza delle operazioni preliminari nell'uso di una RaspeberryPI (vedi articolo);
  • siete in grado di installare e rendere operativo un ambiente LAMP su di essa (vedi articolo);
  • avete i rudimenti di programmazione web in php ed interazione con un database MySQL.

Amber è un'applicazione scritta in PHP, fruibile mediante browser da un qualunque dispositivo dotato di connettività IP. Come già accennato, le operazioni che permette di svolgere sono poche ed essenziali. La sua forza sta' nel fatto che permette di rendere la RasPI una “scatola nera blindata”, ovvero un micro-server che impiega tutte le sue energie nel gestire i dati sensibili in modo sicuro e protetto. Di conseguenza, specie in questo getting started, non aspettatevi una grafica ed un’interattività degne delle migliori applicazioni del Web 2.0 : le risorse computazionali della RasPI, comunque limitate rispetto a quelle di un grosso server aziendale, saranno interamente votate agli aspetti della sicurezza e pertanto l’interfaccia di Amber risulterà estremamente spartana.

Come a dire: Amber fa solo una cosa. Ma cerca di farla al meglio  🙂

Il modello di funzionamento è il seguente:

Figura 1 – modello di funzionamento

 

Senza addentrarci nelle questioni riguardanti la sicurezza nelle operazioni (le quali saranno oggetto del secondo step della serie), spieghiamo brevemente i vari passaggi

Login: l'utente accede al menù principale del sistema inserendo una password “usa e getta”

Scelta dell’operazione: l'utente sceglie quale operazione effettuare. Le possibili scelte sono: recupero di un dato da un account, modifica di un account, inserimento di un nuovo account e cancellazione di un account.

Esecuzione dell’operazione ed estrazione sicura del dato: l'utente effettua l’operazione ma per l’esito si dovrà passare attraverso un ulteriore meccanismo di sicurezza, legato a quale operazione è stata scelta.

Come vedremo nel successivo articolo, i vari meccanismi di sicurezza impiegati saranno sì stringenti, ma anche tali da non rendere difficile la vita all’utente.

Per il momento, tuttavia, sarà utile lasciarli da parte per poter spiegare il funzionamento di base del sistema: verranno infatti mostrate le operazioni elementari che l’utente può effettuare, ed anche se in questa fase introduttiva la trattazione potrà risultare noiosa e quasi banale, essa aprirà la strada per capire, già dalla seconda puntata, di cosa è capace una RaspberryPI e quanto utile e potente possa risultare un sistema dedicato di Account Managing.

 

Creazione delle risorse

Partiamo dalla creazione del database dei nostri account sulla RasPI, che, per praticità, effettueremo mediante l’interfaccia di management all’ambiente LAMP fornita dall’applicativo PHPMyAdmin (installato in precedenza).

Puntando il browser al seguente URL:

http://[indirizzo IP della RasPI]/phpmyadmin

si aprirà la pagina di login mostrata nella figura seguente:

Figura 2 – login a PHPMyAdmin

 

Entriamo con l’utenza creata in fase di installazione del server MySQL. A questo punto va creato un nuovo database. La procedura è molto semplice: dapprima occorre crearne la struttura in termini di tabelle e campi al loro interno; successivamente le stesse tabelle andranno popolate con i nostri dati.

Sempre per praticità, nella versione iniziale si è deciso di dare ad Amber una “forma fissa”, ovvero con un database da un’unica tabella ed un determinato numero e formato di campi. Lasceremo a sviluppi futuri eventuali features di “customizzazione” del db per l’utente.

Cliccando sul tab “Database” si accede alla funzionalità di creazione di un nuovo database. Nel nostro caso lo chiameremo “ACCOUNT_MANAGEMENT”. Ecco come verrà visualizzato nel PHPMyAdmin:

Figura 3 – creazione del db ACCOUNT_MANAGEMENT

 

Ora va creata la singola tabella contenente i dati sugli account. Entrando nel nuovo db creato, si clicca sul pulsante “Crea tabella”, dove verranno specificati nome e numero di campi della tabella (nel nostro caso “ACCOUNTS” e “12”, rispettivamente). Successivamente, nel tab “Struttura” della tabella appena creata si potranno specificare nome e formato dati dei 12 campi inseriti.

Come accennato, al momento è stata prevista una struttura abbastanza rigida per questa tabella, con una serie di campi che abbracciano a grandi linee le principali informazioni inerenti i propri account, come nome utente, password, domande  e risposte segrete, PIN ed altri dati. Ovviamente tale struttura potrà essere modificata in base alle proprie esigenze, sempre però ricordando che in questa fase il codice PHP dell’interfaccia al database è legato alla struttura di default.

Figura 4 – creazione della tabella ACCOUNTS

 

Ora che abbiamo la tabella, dobbiamo inserire i dati. Dal tab “Inserisci” procediamo inserendo i valori per i singoli campi:

Figura 5 – inserimento dati nella tabella ACCOUNTS

 

A questo punto, una volta inserito un numero a piacere di record, abbiamo il nostro database!

Ora si esce da PHPMyAdmin e si procede con il deploy (ovvero l'installazione e la messa in funzione) dell’applicazione Amber sulla RasPI.

Innanzitutto dobbiamo dotarci di un client FTP  per la connessione alla scheda. Personalmente uso FileZilla; per le impostazioni di connessione alla RasPI potete far riferimento a quanto effettuato con WinSCP nel precedente articolo che ho citato.

Una volta connessi, si copia la cartella contenente i sorgenti PHP e le immagini nella directory “/var/www/” della scheda. Questo è il path di default in cui inserire una generica applicazione che dovrà essere “servita” dall’application server PHP dell’ambiente LAMP.

Figura 6 – deploy dell’applicazione AMBER sulla RasPI

 

Bene, non resta che vedere se ora il tutto funziona.

Puntando il browser all’URL:

http://[indirizzo IP della RasPI]/amber

si dovrebbe poter visualizzare la finestra di login della nostra applicazione:

Figura 7 – login ad AMBER

 

Lasciando la password in bianco e cliccando su invia, si accede al menù principale di AMBER:

Figura 8 – menù principale di AMBER

 

Le funzionalità sono auto-esplicative. Quella a cui probabilmente si accederà di più è la richiesta dati da un proprio account, nella quale dapprima si specifica quale informazione di un dato account si vuole ottenere:

Figura 9 – richiesta di uno specifico dato ad AMBER

 

e successivamente si visualizza il dato richiesto:

Figura 10 – estrazione del dato richiesto ad AMBER

 

Per il momento ci fermiamo qui.

Come avrete notato, oltre alla già menzionata interattività essenziale, l’applicazione manca completamente di meccanismi di sicurezza e gestione dell’utenza. Ma non giudicate male la cosa, tale scelta è voluta per permettere di prendere dimestichezza con la creazione ed il deploy di un’applicazione web sulla RasPI. Chiaramente, una volta padroneggiati i concetti base di AMBER ed in generale di un’applicazione PHP sul nostro “PIccolo lampone”, la trattazione si farà molto più interessante rispetto a quanto sopra descritto. La prossima puntata si focalizzerà sui meccanismi di sicurezza che permetteranno di rendere la RasPI un micro-server sicuro e vedremo nel dettaglio un po’ di codice. Stavolta ci sarà da divertirsi, per cui "Stay tuned"!

STAMPA     Tags:

9 Commenti

  1. Antonello Antonello 22 febbraio 2013
  2. sekhem 22 febbraio 2013
  3. delfino_curioso delfino_curioso 22 febbraio 2013
  4. delfino_curioso delfino_curioso 22 febbraio 2013
  5. sekhem 22 febbraio 2013
  6. delfino_curioso delfino_curioso 22 febbraio 2013
  7. sekhem 22 febbraio 2013
  8. Piero Boccadoro 22 febbraio 2013
  9. csmatty 27 luglio 2016

Scrivi un commento