Affidati al server SSH in base alla chiave anziché alla corrispondenza di chiave + IP


8

È possibile fare in modo che il client SSH non si preoccupi di quale IP sia dietro un server SSH (e se in precedenza un server diverso era dietro quell'IP) ma invece si affidasse a specifiche chiavi del server? (E forse soprannominare quelle chiavi?) Uso il DNS dinamico e ho le estensioni di privacy IPv6 abilitate su alcuni computer e mi viene sempre chiesto se pensa che sia sicuro connettersi. Un'altra possibilità sono gli indirizzi assegnati da DHCP che vengono assegnati a diversi server SSH e che causano errori di tipo "chiave non corrispondenti a IP".


Avrei probabilmente dovuto anche menzionare che ho un elenco di chiavi pubbliche per ciascuno dei miei server ssh su una pagina web che viene servita su SSL, quindi ho un modo semplice per verificare se effettivamente mi fido di un set di chiavi del server specifico.
Azendale,

Risposte:


7

Aggiungi un soprannome per il tuo server ~/.ssh/confige disattiva CheckHostIPper questo server.

Host nickname
HostName example.dyndns.org
CheckHostIP no

Prima di connettersi al server per la prima volta, è possibile copiare la chiave pubblica fuori banda: afferrare /etc/ssh/ssh_host_rsa_key.pubdal server, rimuovere la root@hostnameparte alla fine della linea, aggiungere example.dyndns.orgall'inizio e aggiungere la linea a ~/.ssh/known_hosts. Facoltativamente, esegui ssh-keygen -Hl'hash del nome host (questo è utile solo se sei preoccupato per la privacy di quella voce se qualcuno ruba il tuo disco rigido o i tuoi backup, che per il 99,99% delle persone è inutile perché le informazioni sono presenti in alcuni altri vicini posizione comunque).


Con il Host nickname, significa che posso solo farlo ssh nicknameper arrivarci? Se è così, è abbastanza pulito.
Azendale,

@Azendale: Esatto, questa è una caratteristica generale per assegnare un soprannome a un nome host e una serie di opzioni (nome utente, opzioni booleane, tunnel, ...).
Gilles 'SO- smetti di essere malvagio' il

2

In /etc/ssh/ssh_configaggiungi la linea

CheckHostIP no

Tuttavia, questo elimina un po 'di Secure in SSH, perché qualsiasi macchina può nascondersi dietro il nome IP o DynDNS a cui ti connetti.


1
Questo non toglie nulla alla sicurezza. Il punto centrale della memorizzazione della chiave host è identificare l'altro computer. Il nome e l'indirizzo IP non sono rilevanti per la sicurezza quando si dispone della chiave host. Rimuovere i messaggi spuri è in effetti un vantaggio per la sicurezza (i messaggi spuri attirano la tua attenzione, che è una risorsa scarsa).
Gilles 'SO- smetti di essere malvagio' il

1
@Gilles: la manpage non è d'accordo. Sì, non si perde alcuna sicurezza per le connessioni in cui non esiste una relazione IP-host ben nota, in altri casi si rinuncia alla protezione dagli attacchi di spoofing DNS (come indicato nella manpage).
htorque,

Non so a quale passaggio della pagina man ti riferisci. Se è la descrizione di CheckHostIP, allora no, non dice che rinunci a qualsiasi protezione. Con CheckHostIP no, lo spoofer deve ancora ottenere la chiave privata del server e, se riesce a farlo, è improbabile che non riesca comunque a falsificare il suo indirizzo IP.
Gilles 'SO- smetti di essere malvagio' il

Potete darmi un esempio di come lo spoofing DNS sarebbe pericoloso se so che mi fido della chiave? Uso l'autenticazione con chiave pubblica per accedere, il che rende un server dannoso impossibile ottenere una password, ma se usassi le password?
Azendale,

L'uso dell'autenticazione con chiave pubblica non protegge davvero la tua password, il server potrebbe MITM e ottenere la tua password quando tu sudoo simili.
remram
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.