Proteggi il Raspberry Pi dagli hacker


Informatica / giovedì, Gennaio 23rd, 2020

Ogni giorno milioni di dispositivi vengono bombardati da attacchi informatici automatizzati, che scansionano la rete alla ricerca di ogni singola falla di sicurezza. Non solo i PC, quindi, ma i dispositivi coinvolti vanno dal Raspberry Pi, ai router, passando per i prodotti di automazione domestica (compresi i termostati intelligenti, le telecamere di sicurezza, i frigoriferi, i forni a microonde), ai dispositivi di home entertainment come televisori e console di giochi, agli scaffali intelligenti che segnalano quando hanno bisogno di rifornimento, ai macchinari industriali.

La parte più importante per tutelarsi da questi attacchi è sempre la prevenzione, in questa guida spiegheremo passo per passo le tecniche base da utilizzare appena installato il sistema operativo nel nostro Raspberry Pi, in questo caso sarà Raspbian Jessie visto che è il più supportato e diffuso su Raspberry Pi.

Tecniche malware

Gli attacchi informatici spesso sfruttano una botnet (insieme di computer infetti) per scansionare tutti gli apparecchi esposti ad internet, alla ricerca di porte standard aperte, come ad esempio la 22 per l’SSH o la 80 per http e in caso positivo, poi tentare tutte le combinazioni di password e nomi utenti standard, per Raspbian sarà utente: pi password: raspberry, per i router o telecamere di sicurezza utente: admin password: admin.
Una volta entrati nel sistema, lo infettano, unendolo alla botnet, che all’occorrenza può anche essere usata per bloccare siti internet tramite attacchi DDOS chiedendo poi il riscatto, come nel caso dell’attacco “Mirai”.
Altrimenti come Linux.MulDrop.14 , vengono usati i Raspberry Pi per minare monete virtuali sfruttando lil lavoro della CPU, anche se una chiavetta ASIC USB farebbe guadagnare molto di più di un semplice Raspberry Pi.

Aggiornamenti

La prima cosa in assoluto da fare è sempre installare gli aggiornamenti del sistema operativo e dei software.
Essi sono in grado di riparare le falle di sicurezza scoperte e corrette fino a quel momento, un esempio è la falla nel protocollo Samba, che ha infettato 100.000 macchine linux poco tempo fà.

Partiamo con il comando

sudo su

che ci permetterà, per tutta la guida, di eseguire comandi con privilegi di root, necessari per queste operazioni.

Iniziamo con aggiornare la lista dei pacchetti di apt

apt-get update

Successivamente aggiorniamo tutti i software installati con il comando

apt-get dist-upgrade -y

Aggiornamenti automatici

Non possiamo controllare ogni giorno se Raspberry Pi ha l’ultima patch installata, quindi installiamo un software che lo faccia per noi tramite

apt-get install unattended-upgrades -y

modifichiamo i vari parametri con

nano /etc/apt/apt.conf.d/50unattended-upgrades

controllare che ci sia

"o=Raspbian,n=jessie,l=Raspbian-Security";

interessante la voce di riavvio automatico con orario prestabilito.

Hostname ed utenti

Ogni Raspbian inizialmente ha questi dati

  • hostname : rasberrypi
  • utente        : pi
  • password  : raspberry

ed è importante sostituirli in modo da bloccare più attacchi possibili.

Entriamo nell’interfaccia di configurazione di Raspbian

raspi-config

selezioniamo hostname e cambiamo il nome con quello che preferiamo, non serve che sia complicato, solo diverso.
Successivamente entriamo in Boot Option, Desktop / Cli e selezioniamo una voce senza l’autologin.
Finiamo eliminando l’utente pi e creandone uno nuovo, che sia compreso nel gruppo sudo

useradd -m enrico -G sudo

successivamente assegnamogli una password complessa

passwd enrico

ecco i consigli di un hacker per una password sicura 

Ed ora eliminiamo la falla più grossa, l’utente e password di default con il prossimo comando, ma attenzione valutate se cancellarne anche la home col parametro -remove-home

deluser -remove-home pi

Attualmente se scrivete sudo [comando] non vi viene richiesta la password di root, ed è un male, dal punto di vista della sicurezza. Noi vogliamo che ci venga richiesta
spostiamo o cancelliamo il file

mv /etc/sudoers.d/010_pi-nopasswd /tmp

facciamo una semplice prova

exit
sudo su

dovrebbe comparire un avviso e la richiesta di password.
Ottimo, ora va cambiata anche la password di root con

sudo passwd root

Firewall e controllo accessi

In ogni rete e computer è sempre bene avere attivo un firewall in grado di filtrare e controllare tutto il traffico in entrata ed uscita, sul raspberry si può installare ed usare UFW (Uncomplicated firewall) in grado di gestire le iptables in modo veramente semplice.

Installiamolo con

apt-get install ufw -y

Le regole di default consentono tutte le connessioni in uscita, ma bloccano qualsiasi connessione in entrata.
Apriamo e filtriamo solo le porte che ci servono, di solito può servire la porta SSH nel caso ci serva connetterci da remoto o non venga usato il monitor

ufw allow ssh/tcp

oppure col numero della porta

ufw allow 22/tcp

Ora possiamo abilitare UFW

ufw enable

poi, molto importante: limitiamo gli accessi con il comando

ufw limit ssh/tcp

cosi che le prime sei connessioni verranno effettuate senza problemi, ma l’attaccante vedrà negate tutte quelle successive. Verifichiamo che sia configurato correttamente

ufw status numbered

e nel caso dovessimo cancellare una regola sarà sufficente digitare

ufw delete [numero della regola]

Dopo aver applicato nuove regole al firewall va riavviato

ufw disable && ufw enable

Per ulteriori informazioni rimando al manuale

man ufw

Un’ accortezza importante sarebbe quella di cambiare le porte di default di alcuni servizi, ad esempio il server SSH

nano /etc/ssh/sshd_config

Cambiando dalla bersagliata porta 22 a una porta con un numero a caso magari intorno al 10000

# What ports, IPs and protocols we listen forPort 14000

in questo attenzione che le regole UFW vanno impostato con il numero della porta e non il nome.

Una protezione aggiuntiva sarebbe avere, a monte del router, un firewall di rete, ma per CPU ARM ormai non se ne trovano molti, forse in una futura guida ne parleremo.

Analisi di sicurezza

Una volta completate le varie protezioni iniziali, passiamo all’analisi dei sicurezza tramite il software Lynis  che grazie alla sua versione gratuita ci da un’ idea di cosa si potrebbe ancora proteggere.

Installazione Lynis

Procediamo attivando la chiave software

apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C80E383C3DE9F082E01391A0366C67DE91CA5D5F

abilitiamo l’https per apt

apt install apt-transport-https

aggiungiamo

echo "deb https://packages.cisofy.com/community/lynis/deb/ <em>CODENAME</em> main" > /etc/apt/sources.list.d/cisofy-lynis.list

dove al posto di CODENAME andrà messo il nome della versione, attualmente jessie.

Rimando al sito ufficiale per tutte le distro supportate
Ed ora, finalmente, possiamo installarlo

apt update ; apt install lynis

ed avviarlo

lynis audit system -Q

Lynis farà un resoconto di tutte le debolezze del nostro sistema e le salverà in un log, in /var/log/lynis.log

Antimalware

Concludiamo con i più famosi tools per la scansione dei malware attivi nel sistema, rkhunter e chkrootkit.
Procediamo con l’installazione di rkhunter

apt-get update ; apt-get install rkhunter -y

Aggiorniamolo all’ultima versione

rkhunter --update --version-check

ed eseguiamo la scansione automatica

rkhunter -c --skip-keypress

alla fine verrà visualizzato il verdetto

Il secondo tool che si usa in tandem con rkhunter è chkrootkit
installazione

apt-get update ; apt-get install chkrootkit -y

ed esecuzione tramite

chkrootkit

Ottimo, direi che per iniziare avete già fatto dei buoni progressi per mettere in sicurezza il vostro Raspberry Pi, anche se le tecniche di attacco e le vulnerabilità, ci saranno sempre.

Se infine volete cimentarvi nei penetration test contro i vostri apparecchi, installate Kali Linux sul vostro Raspberry Pi e poi studiate la documentazione .

Riferimenti utili

Siti online per la scansione del proprio webserver
Attacco Mirai
Linux.MulDrop.14