Raspberry Pi — Configurazione Headless
Post in English Version:
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:
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=1network={
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”
e clicchiamo su “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:
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.
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):
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:
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.