Come rendere sicuro un server Raspberry Pi

Raspberry Pi sicuro

Se hai un un Raspberry Pi probabilmente lo stai utilizzando per hostare un piccolo webserver. Per sfruttarlo appieno avrai reso accessibile alla rete pubblica il tuo dispositivo, ma se non fai attenzione questo potrebbe venire usato facilmente come pivot per attacchi alla tua rete privata.

Saprai quanto sia fondamentale ai giorni d’oggi dare una certa importanza alla sicurezza della rete e dei dispositivi ad essa collegati, per questo nell’articolo di oggi cercherò di darti un paio di semplici consigli che potrebbero tornarti molto utili.

Prima di tutto è fondamentale creare un secondo account per non utilizzare quello di default pi e creare anche un gruppo che sarà l’unico a poter accedere in ssh al dispositivo, in modo da restringere la possibilità di intrusioni.

NOTA: Nei seguenti comandi puoi rinominare come vuoi tutti i nomi all’interno delle parentesi [].

Crea un nuovo gruppo chiamato [sshusers] (accanto a system ci sono due trattini):

root@phantom:/$ sudo addgroup –system sshusers

Crea un nuovo account utente [user] e inseriscilo nel gruppo [sshusers] e sudo, in modo da poter gestire completamente il sistema:

root@phantom:/$ sudo adduser user
root@phantom:/$ sudo adduser user sshusers
root@phantom:/$ sudo adduser user sudo

NOTA: Aggiungi questo account anche a tutti gli altri gruppi che potrebbero servirti.

Adesso possiamo passare alla configurazione del servizio ssh. Il mio consiglio è quello di disabilitare completamente l’accesso tramite password e di abilitare solo quello tramite chiave privata, in modo da eliminare il rischio di attacchi bruteforce e dictionary. Come forma di sicurezza ulteriore potete assegnare una passphrase alla chiave in modo che, se entrassero in possesso della suddetta, si troverebbero davanti un altro ostacolo.
Visto che dovremo andare a modificare il file di configurazione del servizio ssh ne approfitto per consigliarti di installare l’editor di testo vim:

root@phantom:/$ sudo apt-get install vim

Qui puoi trovare un po’ di informazioni utili sul suo utilizzo.

Apri il file di configurazione:

root@phantom:/$ sudo vim /etc/ssh/sshd_config

Quelli che vedremo di seguito sono dei parametri che possiamo modificare all’interno del file (dovrai cercarli all’interno del file!). Se accanto alla parola chiave di cui stiamo parlando trovi un # nel tuo file, vuol dire che quella riga è commentata quindi sarà necessario cancellare il #.

Assegna la porta [6565] servizio ssh, non utilizzando quella di default (22) sarai meno esposto a script automatizzati e ad un eventuale attaccante sarà necessario eseguire uno scan delle tue porte per trovare quella ssh. Questo passaggio sarà quindi bypassabile in poco tempo da un malintenzionato interessato specificatamente al tuo sistema ma almeno filtrerà un po’ di script generici.

Port 6565

Impedisci a qualsiasi persona di eseguire l’accesso con l’account root via ssh:

PermitRootLogin no

Fai in modo che il servizio accetti login solo per gli utenti all’interno del gruppo [sshusers]:

AllowGroups sshusers

Elimina la possibilità di effettuare l’accesso con una password:

PasswordAuthentication no

Ora che hai configurato il servizio ssh e hai creato il tuo nuovo account, puoi disconnetterti dall’account pi ed effettuare il login con [user]. Finalmente puoi disabilitare l’account di default pi (anche qui i trattini sono doppi):

root@phantom:/$ sudo passwd –lock pi
root@phantom:/$ sudo usermod –expiredate 1 pi

Non ti resta altro da fare che creare le chiavi di sicurezza pubblica e privata ed utilizzarle per accedere al tuo server da remoto. Il comando di seguito creerà nella cartella /home/[user]/.ssh/ le due chiavi per te. Nella procedura guidata ti verrà chiesto se associare una passphrase alla chiave, la decisione spetta a te:

root@phantom:/$ ssh-keygen

Aggiungi la chiave pubblica appena creata all’interno del file /home/[user]/.ssh/authorized_keys:

root@phantom:/home/user/.ssh$ cat id_rsa.pub > authorized_keys

Adesso riavvia il servizio ssh per applicare le modifiche:

root@phantom:/home/user/.ssh$ sudo service ssh restart

Quindi la chiave pubblica con il formato .pub dovrà rimanere sul server dove è stata creata, mentre quella privata (senza estensione) sarà la chiave che userete per effettuare il login nel dispositivo, conservala con cura e ricordati di averla sempre con te per effettuare il login da remoto!

Per effettuare il login ti basterà utilizzare il seguente comando:

root@phantom:/$ ssh -i [id_rsa] [user]@[ip_server] -p [6565]

Come puoi vedere il selettore -i permette di selezionare una chiave privata con cui creare la connessione ssh.

Il tuo sistema è ben configurato, ma nel caso avesti deciso di permettere il login con username e password ti voglio consigliare un ottimo tool, fail2ban, che permette di individuare eventuali attacchi malevoli e bloccare l’ip del mittente, in modo che non possa accedere al sistema, dopo svariati tentativi. Ti guiderò molto velocemente nella configurazione del servizio ma puoi trovare tutto ciò che ti serve sapere su questo sito.

Installa il software con questo semplice comando:

root@phantom:/$ sudo apt-get install fail2ban

Apri il file di configurazione /etc/fail2ban/jail.conf con vim:

root@phantom:/$ sudo vim /etc/fail2ban/jail.conf

All’interno del file ci sarà una sezione chiamata [DEFAULT], sotto questa cercate i parametri bantime, findtime, maxretry. Il primo è il tempo in secondi per il quale un ip sarà bannato nel caso venisse rilevato come una minaccia. findtime e maxretry sono usati insieme per dire dopo quanti tentativi (maxretry), in un determinato arco di tempo (findtime), etichettare un determinato ip come minaccia.

In questo esempio se un utente cercasse di effettuare il login 3 volte nell’arco di 10 minuti, fallendo, verrebbe bloccato per 20 minuti:

[DEFAULT]

bantime = 1200

findtime = 600
maxretry = 3

Adesso non ti resta che configurare fail2ban per operare sul servizio ssh. Cerca la sezione chiamata [ssh] e modifica i parametri enabled e port. enabled per far controllare al software il servizio in questione e port per indicargli quale porta viene usata dal medesimo (nel mio caso 6565).

[ssh]
enabled = true
port = 6565

Come avrai potuto vedere all’interno di questo file che abbiamo modificato sono presenti molte altre voci, per questo ti consiglio di dare uno sguardo alla documentazione nel caso fossi interessato.

Una volta finita tutta la configurazione del file /etc/fail2ban/jail.conf riavvia il demone di fail2ban per applicare le modifiche:

root@phantom:/$ sudo /etc/init.d/fail2ban reload

Ora sei pronto ad utilizzare il tuo Raspberry Pi dovendoti preoccupare un po’ meno della sua sicurezza e dei dati al suo interno!

Nel caso avesti incontrato problemi lungo la strada o volessi semplicemente approfondire l’argomento non esitare a lasciare un commento, sarò più che felice di aiutarti.

1 Comment

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.