Come accedere alla configurazione del nostro RPI senza un acccesso da tastiera o monitor.
Il tanto atteso Raspberry PI è finalmente giunto sulla nostra scrivania, e non vediamo l’ora di iniziare a smanettare. Purtroppo ci rendiamo subito conto di qualcosa che non va:
-
Non abbiamo un cavo HDMI pronto
-
Il nostro monitor ha un solo ingresso VGA
-
Non abbiamo un mouse o una tastiera USB di scorta
-
Non abbiamo lo spazio necessario e sufficiente per il montaggio “a ragno” con tutti i cavi volanti
In questi casi possiamo sfruttare l’accesso al nostro amico in modalità “headless” (senza testa) per la corretta configurazione. Vediamo come.
Getting started
Partiamo dal presupposto di avere a disposizione almeno i seguenti oggetti:
-
Un Raspberry Pi 2 o 3, modello B
-
Un alimentatore (il caricabatterie dello smartphone, ad esempio)
-
Un router wifi
Installare Raspbian sulla SD
In primo luogo occorre controllare la presenza del sistema operativo. Alcuni distributori offrono Raspbian configurato su SD all’acquisto, altri vendono separatamente l’hardware e la scheda SD da installare. Noi partiremo dal presupposto più sfavorevole: abbiamo un RPI ed una SD vuota.
Per prima cosa occorrerà scaricare l’immagine del nostro sistema operativo dal link
http://downloads.raspberrypi.org/raspbian_latest
Verrà presentato un file dal nome simile a “2017-03-02-raspbian-jessie.zip” che scaricheremo e porremo in opportuna locazione sul nostro fido PC, per poi decomprimerlo ed ottenere un file con estensione .img o file immagine.
Ciascun sistema operativo ha i propri programmi per la scrittura di immagini su disco e SD card (Linux e MAC prediligonola funzione dd da linea di comando, Windows usa win32diskimager), quindi anziché descrivere passo passo ciascuna funzione, vi lascio il piacere di sperimentare.
In linea di massima sarà sufficiente seguire gli step seguenti:
-
Inserire la SD card nel lettore apposito
-
Localizzare il disco corrispondente
-
Procedere alla copia, usando il file come sorgente e la SD come destinazione
-
Smontare la SD
Il seguente articolo contiene tutte le informazioni necessarie per ciascun sistema operativo, sia con interfaccia grafica che a linea di comando.
http://elinux.org/RPi_Easy_SD_Card_Setup
Settaggio di rete
Ora possiamo procedere all’accensione.
Colleghiamo la porta di rete del PI con in router attraverso un cavo Ethernet, inseriamo la scheda SD e diamo corrente: il sistema dovrebbe partire in circa 90 secondi.
Apriamo ora una finestra con un terminale, e digitiamo il comando “arp -a
”: dovremmo avere una risposta simile alla seguente.
1 2 3 4 5 6 |
mbp:~ r$ arp -a ? (169.244.1.0) at (incomplete) on en1 [ethernet] wireless_broadband_router.home (192.168.1.1) at 0:26:62:7f:f3:e6 on en1 ifscope [ethernet] laptop.home (192.168.1.2) at d0:df:9a:1b:39:9c on en1 ifscope [ethernet] raspberrypi.home (192.168.1.8) at 80:1f:2:da:af:d on en1 ifscope [ethernet] revolvhub-000122.home (192.168.1.13) at b0:79:3c:0:1:22 on en1 ifscope [ethernet] |
Dal precedente messaggio si evince che il router ha asssegnato al PI l’indirizzo 192.168.1.8 tramite la funzione DHCP. Ovviamente tale indirizzo varia da installazione a installazione a seconda dell’ambiente; in genere i primi tre ottetti (192.168.1) restano uguali, trattandosi di una rete interna privata, e cambia l’ultimo ottetto.
Un altro sistema per riconoscere l’IP di rete del PI è utilizzando l’interfaccia web del router: è sufficiente puntare il proprio browser sull’indirizzo 192.168.1.1 (più raramente il 192.168.0.1), autenticarsi ed accedere alla pagina delle connessioni (lista client connessi al router).
Abbiamo l’IP fornito al Raspberry PI nella rete interna: come possiamo utilizzarlo?
Accesso via SSH
I sistemi basati su Linux consentono l’accesso sicuro ad un apparrato rempoto che abbia una opportuna configurazione (SSH è infatti l’acronimo di Secure Shell).
I sistemi Microsoft potranno utilizzare il pacchetto denominato “Putty” dall’indirizzo http://www.circuitbasics.com/2qx6 per avere un client SSH funzionale.
Si può quindi procedere con l’accesso al PI attraverso il comando
1 |
ssh pi@192.168.1.8 |
mentre gli utenti Windows avranno la seguente schermata:
in cui, ovviamente, sarà necessario inserire il corretto indirizzo IP del PI.
Il comando apre una shell sicura sul PI all’indirizzo definito, con le seguenti credenziali:
Utente : pi
password: raspberry
entrambe rigorosamente in minuscolo (notare che la password va digitata “alla cieca”, in quanto per ragioni di sicurezza SSH non stampa a video le lettere durante la digitazione).
Configurazione di RPI
Siamo all’interno del PI, pilotandolo in rete dal nostro computer principale.
La prima azione da compiere, una tantum, è l’espansione del filesystem. L’immagine che abbiamo copiato sulla scheda SD, infatti, è ridotta ai minimi termini, e contiene tutto e solo il software strettamente necessario, onde consentire la distribuzione di file il più compatti possibile. Ma dal momento che la nostra scheda SD è più capiente (in genere almeno 8-16 GB) sarebbe sciocco limitarsi allo spazio dell’immagine precaricata.
Per questa ragione, alla prima partenza del PI viene visualizzata la seguente schermata:
Si tratta di “raspi-config”, un modulo software di ausilio alla configurazione delle opzioni di funzionamento del Raspberry. Selezioniamo “Expand Filesystem” per consentire al sistema l’utilizzo dell’intera scheda, aggettiamo di buon grado il reboot… e ci ritroveremo con un bel “connection lost…” sul nostro client SSH.
Alla ripartenza scopriremo che il filesystem occupa interamente lo spazio esistente sulla scheda SD. Perfetto! Ora, prima di iniziare a lavorare, occorre fare un po dì’ordine.
Upgrade e update
Colleghiamoci nuovamente con il PI via SSH, utilizzando il noto comando
1 |
ssh pi@xxx.xxx.xxx.xx |
e fornendo username e password. Al prompt digitiamo il comando
1 |
apt-get update |
seguito da
1 |
apt-get upgrade |
per allineare il nostro Raspberry con gli ultimi aggiornamenti presenti nel repository.
Otterremo una serie di messaggi:
1 2 3 4 5 6 7 8 9 10 |
pi@raspberrypi ~ $ sudo apt-get update Hit http://repository.wolfram.com stable Release.gpg Hit http://repository.wolfram.com stable Release ... Ign http://mirrordirector.raspbian.org wheezy/rpi Translation-en Reading package lists... Done pi@raspberrypoor ~ $ sudo apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done |
Ecco fatto. Ora il nostro PI è aggiornato all’ultima patch!
Opzioni di controllo e sicurezza
I comandi seguenti non sono strettamente necessari al funzionamento del Raspberry PI, ma vengono spesso considerati una valida politica di security. Vediamoli in dettaglio.
Watchdog
Lo scopo di questo programma è quello di resettare automaticamente RPI qualora diventasse non responsivo ai comandi a causa di una coda di richieste troppo lunga, limitato spazio di swap, uso pesante delle CPU, surrisscaldamento o altre possibiità del genere.
Digitiamo i seguenti comandi:
1 2 3 |
sudo apt-get install watchdog sudo modprobe bcm2708_wdog sudo nano /etc/modules |
e in coda al file aperto aggiungiamo la seguente riga:
1 |
bcm2708_wdog |
E’ ora possibile aggiungere watchdog alla lista delle applicazioni da lanciare allo startup:
1 |
sudo update-rc.d watchdog defaults |
e aggiorniamo il file di configurazione:
1 2 3 4 5 |
sudo nano /etc/watchdog.conf #uncomment the following: max-load-1 watchdog-device |
Infine, lanciamo watchdog con il seguente comando:
1 |
sudo service watchdog start |
Firewall
Un firewall è una applicazione che protegge il sistema da indebite intrusioni.
Per limitare l’accesso al Raspberry PI utilizzeremo UFW (Uncomplicated FireWall):
1 2 3 |
sudo apt-get install ufw sudo ufw allow 22 sudo ufw enable |
Potremo controllarne lo stato con il comando
1 |
sudo ufw status verbose |
In questo modo RPI accetterà connessioni esterne esclusivamente sulla porta 22 (SSH) opportunamente protetta da password. E’ anche possibile securizzare ulteriormente l’accesso SSH, ma si tratta di un argomento che troverebbe posto all’interno di una rubrica che descriva la gestione della sicurezza in modo più approfondito.
fail2ban
Il programma fail2ban (https://www.fail2ban.org/wiki/index.php/Main_Page ) si occupa di eseguire la scansione dei file di log (ad esempio /var/log/apache/error_log) e prevenire l’accesso di quegli indirizzi IP che mostrino intenti malevoli (troppe richieste di password, ricerca di exploits e così via).
Vediamo come si procede alla sua installazione:
1 2 3 |
sudo apt-get install fail2ban sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local |
Occorre quindi eseguire il restart di fail2ban:
1 |
sudo service fail2ban restart |
controllando le azioni avvenute tramite il comando
1 |
sudo iptables -L |
anch’esso automatizzabile.
Conclusioni
Abbiamo completato la configurazione del nostro Raspberry PI senza dover collegare monitor, tastiera o mouse, grazie alla flessibilità di Raspbian. Con un pizzico di lavoro in più sarebbe possibile fare a meno anche del cavo di rete, utilizzando il sistema wifi preinstallato nel RPI 3 o una scheda wifi USB sul RPI 2.