In questo articolo andremo a scoprire come configurare il Raspberry Pi 4 senza avere a disposizione uno schermo esterno, tastiere e mouse. Vi consentirà di accedere al vostro RPi (Raspberry Pi) via SSH e connetterlo alla vostra WiFi.

Il Raspberry Pi è Single Board Computer (SBC) ed è a tutti gli effetti un piccolo PC e Laptop, quindi andremo ad installare come prima cosa il Sistema Operativo e poi ad attivare tutti i vari servizi utili.

Utilizzare il Raspberry Pi in modalità headless può risultare consigliato quando si realizza un web server, media server, un NAS o comunque quei servizi dove non è necessaria l’interazione con una tastiera e schermo.

Il necessario di cui avremo bisogno:

  • Un PC
  • Un Raspberry Pi
  • Una scheda Micro SD

Le operazioni che eseguiremo sono:

  • Installazione Sistema Operativo
  • Abilitazione Servizio SSH
  • Configurazione WiFi
  • Update e Upgrade del Sistema Operativo
  • Creazione nuova Utenza
  • Aumentare la sicurezza del server Raspberry Pi (Firewall, Ban)
  • Inserire un’autenticazione a 2 Fattori sulle connessioni SSH

Installazione Raspberry Pi OS

Il sistema operativo che andremo ad installare è quello consigliato, e adattato per questo tipo di micro-computer, è il Raspberry Pi OS.

Per installare il sistema operativo possiamo andare sul sito ufficiale delle release del OS (link) e scaricare il Tool Raspberry Pi Imager.

Una volta scaricato il tool e aperto ci troveremo davanti la seguente schermata:

Raspberry Pi Imager
Raspberry Pi Imager

Scegliamo il nostro “Operating System”, noi abbiamo scelto la versione Raspberry Pi OS Lite (ma potete scegliere una qualsiasi, basta che sia Raspberry Pi OS); selezionamo la nostra SD Card e clicchiamo il bottone WRITE.

Il processo durerà qualche minuto ed al termine avremo il nostro Sistema Operativo installato sulla Micro SD e pronto all’utilizzo.

Configurazione Raspberry Pi Headless

La configurazione minima per il suo avvio comprende, la configurazione per la connessione al WiFi e l’abilitazione del servizio SSH.

Configurazione WiFi

Il file necessario per fornire l’indicazione al Raspberry Pi OS di quale WiFi utilizzare per la connessione è specificato all’interno del file “wpa_supplicant.conf” che andremo a creare.

Il contenuto del file “wpa_supplicant.conf” è il seguente:

country=ITctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="<<IL NOME DELLA VOSTRA WIFI>>"
psk="<<LA PASSWORD DELLA VOSTRA WIFI>>"
}

Abilitazione Servizio SSH

Per abilitare il servizio è sufficiente creare un file vuoto denominato ssh all’interno della nostra Micro SD dove è installato il nostro Raspberry Pi OS.

Quindi al termine di questa procedura dovremo avere i due seguenti file sotto la directory boot principale della nostra Micro SD:

  • wpa_supplicant.conf
  • ssh

Ora possiamo procedere ad inserire la Micro SD all’interno del nostro Raspberry Pi ed avviarlo!

Configurazione Sistema Operativo

Una volta avviato il nostro Raspberry Pi, quest’ultimo si connetterà alla nostra rete WiFi.

Per connetterci al nostro piccolo server utilizzeremo il protocollo SSH, con l’aiuto di un tool come PuTTy o utilizzando il nostro SSH Client preferito.

Utilizzeremo l’hostname del nostro server che è raspberrypi , e le credenziali di default del OS che sono:

  • username= pi
  • password= raspberry

Eseguendo il comando:

ssh pi@raspberrypi

ed inserendo la password, saremo magicamente connessi al nostro Raspberry Pi.

Ora possiamo procedere ad aggiornare il Sistema Operativo, con le ultime fix di sicurezza lanciando i comandi:

sudo apt update
sudo apt upgrade

Configurare il Filesystem

sudo raspi-config

Nella finestra appena aperta andiamo nella voce “Advanced Options”

raspi-config > Advanced Options
raspi-config > Advanced Options

e clicchiamo su “Expand Filesystem”.

raspi-config > Advanced Options > Expand Filesystem
raspi-config > Advanced Options > Expand Filesystem

Assegnare un IP Statico al Raspberry Pi

Per assegnare un IP statico sul nostro Router al Raspberry Pi dobbiamo andare a modificare il file “/etc/dhcpcd.conf”.

Assegnare un IP statico è sempre utile anche per le configurazioni lato router che andremo ad effettuare:

Andiamo ad aprire il nostro file in modifica con il comando:

sudo nano /etc/dhcpcd.conf

E inseriremo il seguente testo:

interface wlan0
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=8.8.8.8

Come vedete abbiamo impostato i seguenti valori:

  • IP statico = 192.168.1.100 (sarà quello del nostro Raspberry Pi)
  • IP router = 192.168.1.1
  • DNS = 8.8.8.8 (Utilizzeremo i DNS Google)

Creare un nuovo Utente

Ora possiamo procedere a creare il nostro utente sulla macchina e disabilitare l’utenza di default pi per evitare spiacevoli sorprese da malintenzionati.

Come nome del nuovo utente utilizzeremo andrea. Per creare il nuovo utente possiamo eseguire i comandi:

sudo adduser andreasudo usermod -a -G users,sudo andrea

Il primo comando andrà a creare l’utente e ci chiederà quale password impostare, mentre il secondo lo renderà un utente sudoers (stessi diritti di root).

Ora procediamo a bloccare e disabilitare l’utenza di default pi:

sudo su andreasudo passwd --lock pi

Ora andremo a dire al servizio SSH da quale utente possiamo attenderci le connessioni. Abilitermo la nuova utenza andrea e disabilitero la vecchia utenza pi.

Modifichiamo il file /etc/ssh/sshd_config con

sudo nano /etc/ssh/sshd_config

Ed andremo ad aggiungere il seguente contenuto alla fine del file:

AllowUsers andrea
DenyUsers pi

Ora possiamo riavviare il nostro Raspberry Pi, sempre da linea di comando:

sudo reboot

E potremo ora connetterci con il nostro nuovo utente:

ssh andrea@raspberrypi

o utilizzare l’IP statico che abbiamo settato:

ssh andrea@192.168.1.100

Aumentare la sicurezza e la protezione del nostro server con Raspberry Pi

Per limitare e bloccare gli accessi da indesiderati sul nostro server Raspberr Pi andreamo ad aumentare il livello di protezione e sicurezza del nostro sistema operativo, andando ad installare:

  • UFW → Uncomplicated Firewall
  • Fail2Ban → Tool per prevenire attacchi di tipo brute-force
  • Google Authenticator → Libreria per incrementare la complessità di accesso al server

Installazione Firewall UFW

Per installare e abilitare il servizio di Firewall eseguiamo i seguenti comandi:

sudo apt install ufwsudo ufw enable

ed andiamo ad aggiungere la regola per abilitare le connessioni SSH (Porta 22):

sudo ufw allow 22

Installazione Fail2Ban

Ora andiamo ad installare il tool fail2ban per prevenire attacchi di brute-force al nostro sistema, così da intercettare gli IP dei malintenzionati e inserirli in un blacklist momentanea (configurabile) degli IP.

sudo apt install fail2bansudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Il primo comando installa i pacchetti necessari, il secondo imposta la configurazione di default del componente.

Se vogliamo possiamo impostare i parametri bantime e maxretry per configurare la nostra policy di sicurezza:

  • bantime → Tempo del BAN per un IP
  • maxretry → Dopo quanti tentativi di accesso fallito scatta il BAN

Io personalmente uso i valori:

fail2ban configuration
fail2ban configuration

Installazione Google Authenticator come 2FA (2 Factor Authentication)

Per incrementare la protezione andremo ad installare la componente per l’autenticazione a 2 Fattori di Google Authenticator per l’accesso SSH, così al tentativo di connessione SSH oltre la password dovremo andare ad inserire un codice di verifica generato dalla nostra applicazione mobile di Google Authenticator.

SSH ChallangeResponse

Abilitiamo la modalità challange-respone sul servizio SSH:

sudo nano /etc/ssh/sshd_config

e cambiare la stringa ChallengeResponseAuthentication da no a yes.

ChallengeResponseAuthentication
ChallengeResponseAuthentication

e restartiamo il servizio SSH

sudo systemctl restart ssh

Installazione Google Authenticator

Andiamo ad installare il modulo di Google con il comando:

sudo apt install libpam-google-authenticator

e apriamolo per la configurazione:

google-authenticator

Una volta risposto alle domande dal terminale comparirà un QR Code che dovremo andare ad inserire sull’applicazione Google Authenticator presente nel nostro Smartphone.

L’applicazione di Google Authenticator per Smartphone è la seguente:

Scansionato il QR Code con il nostro smartphone l’applicazione mostrerà la seguente schermata (ovviamente con nomi/codici diversi):

Google Authenticator
Google Authenticator

Autenticazione a 2 Fattori

Andiamo ad abilitare l’autenticazione a 2 Fattori con l’utilizzo del Pluggable Authentication Modules (PAM).

Per la configurazione di pam apriamo il file:

sudo nano /etc/pam.d/sshd

ed inseriamo la stringa

auth required pam_google_authenticator.so

subito dopo @inclue common-auth

L’inizio del file dovrà così risultare:

PAM Google Authenticator
PAM Google Authenticator

Andiamo a terminare la configurazione con il restart del servizio SSH:

sudo systemctl restart ssh

Ora al prossimo login SSH, dopo la password verrà richiesto un Codice di Verifica che sarà presente sull’applicazione Google Authenticator.

--

--

Andrea Scanzani
Architetture Digitali

IT Solution Architect and Project Leader (PMI-ACP®, PRINCE2®, TOGAF®, PSM®, ITIL®, IBM® ACE).