Vai al contenuto

Impostazioni cookie

Scelga per ogni tipo quali cookie consente. Può modificare la sua scelta in qualsiasi momento tramite Impostazioni cookie in fondo a ogni pagina. Informativa sulla privacy

Necessari

Sempre attivi

Servono per accedere, conservare il carrello e ricordare le sue scelte. Sono sempre attivi.

Quali cookie?
  • weboke_sessie, weboke_klant, weboke_remember: la sua sessione e la permanenza dell'accesso
  • weboke_basket: il suo carrello
  • wkBtwIncl: visualizzazione dei prezzi con o senza IVA
  • wok_cookies: la sua scelta sui cookie, 12 mesi

Misurano quale annuncio porta a una visita o a un ordine, così non paghiamo annunci che non funzionano.

Quali cookie?
  • Google Ads tramite Google Tag Manager (_gcl_au, _gcl_aw), fino a 90 giorni
  • OpenAI Ads, annunci in ChatGPT
  • wok_aff: tramite quale partner è arrivato da noi (programma di affiliazione), 60 giorni

4,6

Paese e lingua

Ogni paese ha il suo sito, con i prezzi e l'IVA di quel paese.

Vedi

Il primo accesso SSH

Modulo 1: Il Suo primo server · Tempo di lettura: 10 minuti

Obiettivo della lezione: Dopo questa lezione Lei sarà in grado di accedere per la prima volta al Suo server con SSH, di verificare l'impronta digitale del server prima di fidarsene e di sapere cosa fare quando compare l'avviso che l'identità del server è cambiata.

Concetti chiave: SSH, client e server, porta 22, banner di versione, host key, impronta digitale (SHA256), known_hosts, trust on first use, "REMOTE HOST IDENTIFICATION HAS CHANGED", PowerShell e Terminale

Che cos'è SSH

SSH (Secure Shell) è la connessione cifrata con cui si gestisce un server a distanza. Lei digita sul Suo computer, i comandi vengono eseguiti sul server. Tutto ciò che passa sulla linea, compresa la Sua password, è cifrato.

Ci sono due lati:

  • il client SSH sul Suo computer: il programma ssh. Su macOS e Linux è incluso di serie. Su Windows 10 (dalla versione 1809) e Windows 11 il client OpenSSH fa parte di Windows; lo si usa in PowerShell o in Windows Terminal. Se manca, lo aggiunge tramite Impostazioni, Funzionalità facoltative, "Client OpenSSH". Funzionano anche programmi con finestre come PuTTY, ma in questo corso usiamo ssh.
  • il server SSH sul VPS: il programma sshd (di OpenSSH). Per impostazione predefinita resta in ascolto sulla porta 22.

Accedere

Si accede con un nome utente e l'indirizzo del server:

PS C:\Users\anna> ssh root@192.0.2.10

Oppure con un nome, se lo ha inserito nel DNS (lezione 7.1):

anna@laptop:~$ ssh root@web1.example.com

La prima volta vedrà qualcosa del genere:

The authenticity of host '192.0.2.10 (192.0.2.10)' can't be established.
ED25519 key fingerprint is SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Questo è il momento più importante della lezione. Non digiti yes alla cieca.

La host key e l'impronta digitale

Ogni server SSH ha una o più host key: coppie di chiavi con cui il server dimostra chi è. Le parti pubbliche si trovano sul server in /etc/ssh/, ad esempio /etc/ssh/ssh_host_ed25519_key.pub. A ogni connessione il server dimostra di possedere la parte segreta.

Un'impronta digitale è un breve riassunto (un hash) di una tale chiave pubblica. Per impostazione predefinita OpenSSH mostra la forma SHA256: SHA256: seguito da 43 caratteri.

La domanda "Are you sure you want to continue connecting?" significa: il Suo computer non conosce ancora questo server. Chi garantisce che Lei stia parlando con il Suo VPS e non con qualcuno che intercetta il traffico? Nessuno, a meno che Lei non confronti l'impronta digitale con una fonte affidabile.

Quella fonte è la console del Suo fornitore (lezione 1.2). Lì non comunica con il server attraverso la rete. Acceda alla console e richieda l'impronta digitale:

root@web1:~# ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs root@web1 (ED25519)

Se corrisponde esattamente a quanto mostrato dal client, digiti yes. Può anche incollare l'impronta digitale stessa al posto di yes; in tal caso è ssh a confrontarla per Lei. Se è diversa, si fermi e cerchi di capire perché (indirizzo IP sbagliato, server reinstallato o qualcosa di più grave).

Faccia attenzione al tipo: il client indica il tipo (ED25519, ECDSA o RSA). Confronti l'impronta digitale dello stesso tipo. Molte immagini mostrano le impronte digitali anche nella console al primo avvio (cloud-init), tra righe come BEGIN SSH HOST KEY FINGERPRINTS.

known_hosts e trust on first use

Se digita yes, vedrà:

Warning: Permanently added '192.0.2.10' (ED25519) to the list of known hosts.

Il client salva la chiave in ~/.ssh/known_hosts (su Windows C:\Users\<naam>\.ssh\known_hosts). Da quel momento la confronta automaticamente a ogni connessione. Questo modello si chiama trust on first use (TOFU): la prima volta deve verificare Lei, dopo vigila il client.

Per questo il primo controllo è così importante: se si fida di una chiave sbagliata, in seguito il client non La avviserà mai più.

Se Lei lavora su un computer con Debian o Ubuntu, i nomi in known_hosts sono memorizzati in forma hash per impostazione predefinita (HashKnownHosts yes in /etc/ssh/ssh_config), quindi non vi vedrà indirizzi IP leggibili. Su Windows e macOS sono leggibili. La ricerca funziona ovunque con:

anna@laptop:~$ ssh-keygen -F 192.0.2.10
# Host 192.0.2.10 found: line 3
|1|kP9...= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA...

"REMOTE HOST IDENTIFICATION HAS CHANGED"

A volte compare questo avviso:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
...
Host key verification failed.

Il server presenta una chiave diversa da quella che il Suo client conosce. ssh si rifiuta quindi di connettersi. Le cause sono di due tipi:

NormaleSospetto
Ha reinstallato il VPS (nuove host key)Non ha cambiato nulla eppure la chiave è diversa
L'indirizzo IP è stato assegnato a un altro serverSi trova su una rete wifi sconosciuta
Ha sostituito volutamente le host keyL'impronta digitale nella console è diversa da quella che il client vede ora

Se c'è una spiegazione normale, verifichi di nuovo l'impronta digitale nella console e solo dopo rimuova la vecchia riga:

anna@laptop:~$ ssh-keygen -R 192.0.2.10
# Host 192.0.2.10 found: line 3
/home/anna/.ssh/known_hosts updated.

Alla connessione successiva riceverà di nuovo la domanda della prima volta, e di nuovo verificherà. Non imposti mai StrictHostKeyChecking no nella configurazione per far sparire l'avviso: così disattiverebbe proprio la protezione che conta.

Il banner di versione

Prima che venga cifrato qualcosa, client e server si scambiano una riga di testo: il banner di versione. È visibile a chiunque su internet. Lo può vedere con ssh -v:

anna@laptop:~$ ssh -v root@192.0.2.10 2>&1 | grep "remote software"
debug1: Remote protocol version 2.0, remote software version OpenSSH_9.6p1 Ubuntu-3ubuntu13.5

Qui il server indica quale protocollo (2.0) e quale software utilizza. Debian e Ubuntu vi aggiungono la versione del pacchetto. Non è un segreto da nascondere: gli aggressori provano comunque di tutto, e ci si protegge con gli aggiornamenti (modulo 4), non con un banner diverso. È però utile: dal banner si vede dall'esterno se il server esegue davvero la versione aggiornata.

Su AlmaLinux e Rocky Linux

L'accesso e le impronte digitali funzionano allo stesso modo. Il servizio si chiama sshd invece di ssh (systemctl status sshd). Il banner non contiene il nome della distribuzione, solo la versione di OpenSSH.

Riepilogo

  • SSH è la connessione cifrata verso il Suo server; ssh è il client, sshd il server sulla porta 22.
  • Alla prima connessione il client mostra l'impronta digitale della host key. La confronti con l'output di ssh-keygen -lf nella console prima di digitare yes.
  • Il client salva la chiave in ~/.ssh/known_hosts e da quel momento avvisa da solo (trust on first use).
  • "REMOTE HOST IDENTIFICATION HAS CHANGED" è normale dopo una reinstallazione; altrimenti è sospetto. Rimuova una vecchia riga solo dopo la verifica, con ssh-keygen -R.
  • Il banner di versione è pubblico; la protezione viene dagli aggiornamenti, non dal nascondere.

Quiz

1. Con che cosa confronta l'impronta digitale che ssh mostra alla prima connessione?



2. A che cosa serve ~/.ssh/known_hosts?



3. Ha reinstallato il Suo VPS e riceve "REMOTE HOST IDENTIFICATION HAS CHANGED". Qual è l'ordine corretto?



4. Perché il primo controllo è così importante con il trust on first use?



5. Che cosa mostra il banner di versione di un server SSH?



Esercizio

Esercizio Z1.3: Banner SSH e impronta digitale del Suo server. Inserisca l'indirizzo del Suo server, la versione del software ricavata dal banner (come OpenSSH_9.6p1) e l'impronta digitale ED25519 che ha richiesto nella console con ssh-keygen -lf. Il programma effettua una sola connessione alla Sua porta SSH, legge il banner e la host key e li confronta. Non esegue alcun accesso.

Esercizio Z1.3: Banner SSH e impronta digitale del Suo server

Non effettuiamo l'accesso e non proviamo alcuna password o chiave. Prima dimostri che il server è Suo: clicchi su "Mostrare il mio codice" e pubblichi un file /.well-known/weboke-cursus-<code>.txt contenente solo quel codice sul server web del Suo nome host. Lo recuperiamo direttamente da ogni indirizzo IP che controlliamo (IPv4 e IPv6 separatamente); un record TXT qui non vale. Il controllo parte da heavy.webawere.nl (185.158.167.16 e 2a07:ae80:100:0:185:158:167:16), non dal nostro server web. Solo per i corsisti registrati; al massimo 6 controlli all'ora per server. In questo esercizio apriamo una sola connessione e leggiamo soltanto il banner e la chiave del server; nel Suo log non compare alcun tentativo di accesso.





Quello che inserisce e quello che rileviamo non vengono salvati. Il Suo browser ricorda le Sue risposte e se ha superato l'esercizio. Se ha effettuato l'accesso, conserviamo in I miei corsi solo il fatto che l'esercizio era (quasi) corretto; anche lì può eliminarlo.

Per approfondire

Un momento…

Configuri i suoi domini

Per ogni dominio imposti i nameserver, il collegamento al suo hosting e chi ne diventa l'intestatario.

Caricamento dei suoi domini…