Troppo spesso quando parliamo di Raspberry Pi, tendiamo a sottolineare le sue enormi potenzialità e la sua flessibilità progettuale ma, allo stesso tempo, tendiamo a sottovalutare il fatto che si tratta di un dispositivo elettronico a tutti gli effetti che, per forza di cose, potrebbe diventare il bersaglio di un attacco informatico.
Non si creda, infatti, che un Raspberry Pi sia un dispositivo totalmente sicuro e inattaccabile solo perché è piccolo e non è un PC come lo conosciamo noi. Qualsiasi elemento connesso a una rete internet, infatti, costituisce un potenziale pericolo e, trascurare questo elemento, potrebbe esporvi a gravissime conseguenze.
Ci sono alcune abitudini piuttosto “seducenti” che, sia per pigrizia che per scarsa informazione, rischiano di essere le cause principali di Raspberry “bucati” e finiti sotto attacco. I consigli che stiamo per darvi rientrano tutti all’interno della “configurazione base” che, noi di Moreware, facciamo fare a tutti i nostri studenti durante la prima lezione di approccio al Raspberry Pi. La cybersecurity è ormai un elemento fondante dell’informatica e dell’elettronica moderna e, i sistemi SBC, non fanno assolutamente eccezione.
Raspberry Pi è la board più venduta per i progetti basati su IoT (Internet of Things) e la sua rapidissima diffusione ha, di conseguenza, attirato l’attenzione dei cybercriminali. Dobbiamo sempre ricordare che ogni aggiunta al nostro progetto nasconde potenziali insidie che vanno assolutamente gestite e ottimizzate. Tantissime persone ci chiedono continuamente consigli sulle migliori telecamere per Raspberry Pi, perché tutti vogliono avere un sistema di videosorveglianza. Il concetto di per sé va benissimo, ma occorre considerare che una telecamera costituisce una fortissima vulnerabilità: prendendone il controllo è virtualmente possibile controllare casa vostra h24, sapendo esattamente cosa state facendo e dando un’occhiata a ciò che possedete.
Cambiare subito Nome Utente e Password
Ogni Raspberry Pi viene fornito di fabbrica con lo stesso nome utente e password per tutte le board, ovvero
Nome Utente: pi
Password: raspberry
Mantenere queste impostazioni equivale a nascondere le chiavi di casa sotto al tappeto e ad apporre sulla porta il cartello che dice dove trovarle. Per quanto possa sembrarvi divertente la questione, fidatevi che su venti persone che utilizzano la board, il 90% se non di più si dimentica di cambiare i dati di accesso. In questo modo, basta fare una ricerca su google per avere Nome Utente e Password memorizzati di default e tentare un accesso. Anche qui, le pessime abitudini e la pigrizia la fanno da padrone: molte volte le persone mantengono il Nome Utente e cambiano soltanto la Password.
Non tutti sanno che “Nome Utente” e “Password” sono due chiavi fatte per lavorare insieme. È la coppia di chiavi che compone la procedura di Login e, a una deve corrispondere necessariamente l’altra. Se voi ne cambiate una soltanto e l’altra è una chiave conosciuta, semplicemente il pirata informatico vi ringrazierà per avergli risparmiato metà del lavoro. L’obiettivo non è quello di rendere impenetrabile un sistema (“Non esistono sistemi inviolabili. Esistono sistemi violati e altri che devono ancora esserlo” -Kevin Mitnich-), ma quello di complicare il più possibile la vita a chi sta cercando di attaccare il vostro sistema.
Al primo avvio “out of the box” della board, la schermata Raspberry Pi Software Configuration Tool (raspi-config) si avvierà in automatico. Come detto poc’anzi, il nome utente e la password settati di default sono informazioni perfettamente recuperabili nella documentazione ufficiale della Raspberry Org. Capito perché dovete cambiare subito questi parametri?
Iniziamo cambiando la password dell’utente pi:
apriamo il terminale loggati come utente “pi” e digitiamo
passwd
Una volta premuto INVIO, digitiamo la password memorizzata di default (“raspberry”) e premiamo INVIO. Il sistema, a questo punto, ci chiederà di digitare la nuova password. Una volta fatto, premete ENTER e apparirà la scritta
passwd: password updated succesfully
Attenzione: quando digitate la password, Linux nasconde volutamente i caratteri per evitare che possano essere visibili da altri. Non preoccupatevi se non li vedete comparire.
Adesso andiamo a creare un nuovo utente. Sempre da terminale digitiamo:
sudo adduser nuovo_nome_utente
e rispondiamo alle varie domande, digitando anche la relativa nuova password
A questo punto, occorre inserire il nuovo utente nel gruppo degli utenti sudo, ovvero gli administrator.
Sempre da prompt digitiamo:
sudo adduser nuovo_nome_utente sudo
e premiamo INVIO
Ora occorre fare logout dall’utente pi e riloggare con il nuovo utente e la password appena creati.
Riapriamo il terminale e andiamo a cancellare l’utente pi con i comandi:
sudo userdel -r pi
il flag -r cancella l’utente anche dalla cartella Home. È un’operazione assolutamente necessaria, perché occorre cancellare ogni traccia di tutto ciò che è stato settato di fabbrica.
Dopo aver dato INVIO, avete il vostro nome utente e la nuova password, senza più dovervi preoccupare dell’utente default.
Fare aggiornamenti periodici
Raspberry Pi OS non è Windows. Deriva da Linux con tutte le differenze del caso. Se siete abituati a sistemi operativi proprietari, sappiate che qui la musica è decisamente diversa. Non esiste una procedura che scarica in automatico tutti gli aggiornamenti al posto vostro e ve li installa al successivo riavvio. Qui dovete essere voi a lanciare il comando per cercare aggiornamenti e installarli. Il problema è che qui le persone tendono a dimenticarsene, portate per abitudine a pensare che sia il Sistema Operativo a farlo al posto loro. Il nostro consiglio è di aggiornare il sistema almeno una volta al mese. Molto spesso ci capita di essere contattati per problemi di questo genere, salvo poi scoprire che i sistemi in questione non vengono aggiornati da anni.
Per effettuare questa operazione, aprite il terminale e digitate:
sudo apt update
e
sudo apt upgrade
Confermate con Y e date invio.
Disabilitare ciò che non serve
“Quello che non c’è, non si rompe“, diceva il grande Henry Ford. Stesso discorso vale per il Raspberry Pi. Se il vostro progetto prevede un collegamento a internet via cavo ethernet, perché mantenere abilitato il modulo wi-fi? Oltre a consumare corrente (e di conseguenza produrre calore), rappresenta comunque una falla nel vostro sistema che potrebbe essere facilmente utilizzata dai cyber-criminali. Stessa cosa vale per il modulo bluetooth: è contemplato il suo utilizzo nel vostro progetto? Se sì, mantenetelo, altrimenti disabilitatelo in maniera permanente. Più porte chiudete, meno accessi dovete controllare, a tutto vantaggio della stabilità e della sicurezza del sistema.
Tenete presente che, da quando è arrivato Raspberry Pi OS, questo tipo di servizi è attivato di default.
Bastano due comandi per farlo, è sufficiente modificare il file config.txt con il comando
sudo vi /boot/config.txt
e aggiungere due righe di codice:
dtoverlay=disable-wifi
dtoverlay=disable-bt
digitare poi
sudo reboot
per riavviare la board applicando le modifiche.
Attenzione a cosa modificate nel file config.txt. Contiene tutti i parametri di configurazine della board, quindi non addentratevi in modifiche se non sapete cosa state facendo. Un altro modo (molto più sicuro) per effettuare questo tipo di operazioni è quello di passare per il tool chiamato “raspi-config”.
È sufficiente dare il comando da prompt:
sudo raspi-config
e agire sulle impostazioni di rete.
Analogamente, chiedetevi sempre se è necessario che il vostro sistema sia collegato a internet tutti i giorni h24. Se questa caratteristica non è strettamente necessaria, perché lasciarla attivata? L’ideale, in questo caso, sarebbe collegare il Raspberry Pi alla rete solo per effettuare gli aggiornamenti software. Così facendo, il livello di sicurezza si alza in maniera esponenziale.
Se siete “pigri” e non vi va di collegare e scollegare il sistema, potete sempre avvalervi di un cronjob che attivi la connessione, controlli la presenza di eventuali aggiornamenti, li esegua e chiuda il collegamento internet. Ci occuperemo della configurazione di questo cronjob in un prossimo articolo. Se non sapete cosa sia il tool Cron, potete guardare il nostro video.
Fare molti test
Una volta realizzato un progetto che, sulla carta, ha una ridottissima “attack surface” (il numero di possibilità di venir attaccato), occorre dedicare molto tempo ai test. Un “Penetration Test” fatto come si deve, deve valutare diversi aspetti
Valutazione esterna del progetto: Raspberry Pi è una board di ridotte dimensioni, ma a seconda di come viene montata e allocata, può essere davvero fragile e soggetta a manipolazione. I porti I/O e il GPIO devono rigorosamente protetti e mai in bella vista. Installate sempre un case e cercate di tenere il sistema il più lontano possibile da occhi indiscreti. Non tutti gli attacchi sono portati in maniera remota: nel caso vi entrino in casa o in ufficio, infatti, il poter lavorare fisicamente sul sistema costituisce un rischio elevatissimo.
Dopo aver valutato l’aspetto esteriore e di posizionamento, occorre iniziare a lavorare sul perfezionamento del lato software, simulando attacchi informatici sul sistema per vedere come reagiscono i vari applicativi e quali funzionalità verrebbero più facilmente compromesse. Questo tipo di simulazioni andrebbero fatte ogni volta che si aggiungono elementi al progetto e ad ogni aggiornamento software/firmware. Sì, perché ogni volta che un aggiornamento corregge un bug o una vulnerabilità, al 90% ne apre un’altra e occorre sempre effettuare controlli.
Se volete saperne di più su come organizzare un Penetration Test per Raspberry Pi, ne parleremo in un articolo che uscirà tra qualche giorno.
Iscrivetevi ai nostri gruppi Telegram…