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" &gt; /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