SSH Internet

Da raspibo.

Indice

SSH Attraverso Internet

In questa guida illustreremo come raggiungere un Raspberry Pi (ma anche un pc) via SSH collegato ad un router adsl con ip dinamico.

Ci sono diversi ostacoli che dovremo superare tra cui conoscere l'IP con cui siamo collegati ad internet e aprire una porta per l'accesso dall'esterno nel nostro router.

Attenzione lasciare aperte su internet porte di rete sul nostro modem di casa può compromettere la sicurezza di tutta la nostra rete con risvolti indesiderati, se non si hanno le idee chiare meglio informarsi bene prima di procedere.

Ci sono alcuni punti importanti da tenere presente:

  • lasciare password di default su macchine a cui si può accedere da internet è assolutamente da evitare
  • tutto ciò che non è necessario va eliminato, ad esempio se abbiamo bisogno di collegarci una sola volta per una necessità una tantum, appena terminata la necessità sconfiguriamo l'inoltro della porta verso il Raspberry
  • è consigliabile aumentare il livello di sicurezza disabilitando accesso con password e utilizzando qualche utility automatica per prevenire attacchi bruteforce
  • utilizzare un sistema di notifica di tentativi di accesso (riusciti o meno) ci permette di renderci conto meglio della situazione

Prima di tutto

Cambiare le password di default

Cambiate la password dell'utente pi, perchè chiunque ha un raspberry o vuole entrare sulla vostra rete conosce questa password, questo è consigliabile a prescindere dallo scopo di questa pagina.

Controllate se avete configurato altri utenti sul vostro Raspberry a cui avete assegnato password troppo banali, magari solo per una prova e di cui vi siete scordati (vedi punto precedente).

Disabilitare accesso con password (consigliato)

Disabilitare l'accesso con password aumenta il livello di sicurezza e richiede solo due comandi sul pc che usiamo per collegarci al raspberry.

Dobbiamo generare una chiave rsa pubblica:

ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/utente/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/utente/.ssh/id_rsa.
Your public key has been saved in /home/utente/.ssh/id_rsa.pub.
The key fingerprint is: 
segue la fingerprint ed una random art

è possibile ed anche consigliato inserire una passphrase che serve a decodificare la chiave e che ci verrà chiesta prima di ogni connessione.

Ora copiamo la chiave pubblica del pc (contenuta nel file id_rsa.pub) dentro al file .ssh/authorized_keys del raspberry si può fare manualmente o con un comodo comando

ssh-copy-id -i ~/.ssh/id_rsa.pub pi@indirizzo_del_RPI

verifichiamo con

ssh pi@indirizzo_del_RPI

se abbiamo settato una passphrase inseriamola. Ora possiamo accedere con chiave pubblica senza digitare la password in quanto usiamo un metodo più sicuro.

Se il passaggio precedente non funziona non procedete oltre e ricontrollate altrimenti rischiate di rimanere chiusi fuori.

Disabilitiamo l'accesso tramite chiave ssh sul server ssh di raspberry

nano /etc/ssh/sshd_config 

modifichiamo i parametri di seguito come indicato

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

restartiamo il demone ssh

sudo /etc/init.d/ssh restart

oppure

sudo systemctl restart sshd.service 

ora proviamo ad accedere con un altro utente e vedremo che non ci verrà nemmeno richiesta la password perchè non è più tra i metodi di autenticazione accettati.

Bloccare attacchi bruteforce

Qualcuno può cercare di collegarsi al nostro Raspberry Pi provando ad indovinare la password con numerosi tentativi di accesso, per limitare questo problema sono stati creati dei tool che bloccano tentativi ripetuti dallo stesso ip.

Uno di questi software si chiama fail2ban e può essere di aiuto per questo tipo di problemi.

Abilitare una notifica ad ogni accesso

Ultima misura di precauzione abilitare una notifica per ogni tentativo di accesso al nostro Raspberry un pò come succede quando facciamo home banking con l'invio di una mail o altro sistema di notifica.

Anche questa funzione può essere delegata al software fail2ban.

Account FreeDNS

Afraid - Free DNS

Vari siti internet, a pagamento o gratuiti, ci permettono di memorizzare il nostro indirizzo IP.

In questa guida useremo FreeDNS che fornisce questo servizio gratuitamente.

Aprendo https://freedns.afraid.org/ creiamo un account e successivamente un "subdomain" che risolverà l'ip del modem di casa.

Configurazione DNS dinamico

Ora nella sezione "dynamicDNS" clicchiamo su "quick cron".


Configurazione per cron


Si aprirà lo script da inserire nel crontab. Questo script è già funzionante cosi com'è, nel nostro caso prenderemo solo l'indirizzo che inizia con https://freedns.afraid.org..... per fare la seguente configurazione.

Configurazione Raspberry Pi

Nel RPI lanciare il comando "crontab" da root

sudo crontab -e

Automaticamente si aprirà l'editor di testo "nano" con lo script di configurazione. Aggiungendo la seguente stringa andremo ad aggiornare l'IP della connessione con una cadenza di 5 minuti, mettendo "*/5"

*/5 * * * * /usr/bin/wget -O /dev/null https://freedns.afraid.org/dynamic/update.php?UFIHAJNINZZNIOZOIPZPKZ

Ctrl+x per salvare la configurazione.


configurazione del modem

Entrare nella configurazione del modem, accedere a "firewall" poi selezionare il port "forwarding", questa funzionalità è disponibile in tutti i modem con varie denominazioni.

Configurazione del modem

In questa pagina creiamo l'accesso:

Servizi Personalizzati  "ssh"
Indirizzo IP locale "l'indirizzo del RPI"
Inizio e fine Porta esterna "1022"
Protocollo "TCP"
Inizio e fine porta interna "22"

Ora il modem è configurato, va abilitata la porta per l'accesso dall'esterno. Per connetterci via SSH ora basterà specificare la porta esterna ed il sub dominio di "afraid"

ssh -p 1022 pi@subdomanis_di_Afraid

Riferimenti

Strumenti personali
Namespace

Varianti
Azioni
Navigazione
Strumenti