So cosa fa, ma non so perché . Quale attacco / i previene?
È rilevante per tutti i tipi di metodi di autenticazione? (basato su host, password, chiave pubblica, tastiera interattiva ...)
So cosa fa, ma non so perché . Quale attacco / i previene?
È rilevante per tutti i tipi di metodi di autenticazione? (basato su host, password, chiave pubblica, tastiera interattiva ...)
Risposte:
L' UseDNS
opzione è per lo più inutile. Se i computer client sono disponibili su Internet, è molto probabile che non dispongano di DNS inverso, che il loro DNS inverso non si risolva in avanti o che il DNS non fornisca informazioni diverse da "appartiene a questo ISP "che l'indirizzo IP ti dice già.
Nelle configurazioni tipiche, il DNS viene utilizzato solo per la registrazione. Può essere utilizzato per l'autenticazione, ma solo se IgnoreRhosts no
specificato in sshd_config
. Questo è per la compatibilità con i vecchi impianti che utilizzato rsh, dove si può dire “l'utente chiamato bob
sulla macchina chiamata darkstar
può accedere come alice
senza mostrare alcun credenziali” (scrivendo darkstar bob
in ~alice/.rhosts
). È sicuro solo se ti fidi di tutte le macchine che potrebbero essere connesse al server SSH. In altre parole, questo è molto molto raramente utilizzabile in modo sicuro.
Dato che la ricerca DNS non fornisce alcuna informazione utile se non in circostanze molto particolari, dovrebbe essere disattivata. Per quanto ne so, l'unica ragione per cui è attiva per impostazione predefinita è che è tecnicamente più sicura (se sei preoccupato per l'autenticazione, non per la disponibilità), anche se ciò si applica solo a una piccola serie di circostanze.
Un altro argomento per disattivare questa funzione è che ogni funzione superflua rappresenta un rischio per la sicurezza non necessario .
UseDNS
non è nemmeno utile se si utilizza l' autenticazione host basata su chiave , solo se si utilizza l'autenticazione host basata su nome host (ovvero autenticazione estremamente debole).
UseDNS
è molto utile, e critico. Si autentica un utente in base alla chiave e il server in base al nome host, assegnato a un indirizzo MAC.
Ho aggiunto a questo un bug report (vecchio ma ancora attuale) in Ubuntu.
https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/424371
Ho proposto di modificare l'impostazione predefinita su No e di aggiungere la documentazione più recente su di essa:
# UseDNS - Determines whether IP Address to Hostname lookup and comparison is performed
# Default value is No which avoids login delays when the remote client's DNS cannot be resolved
# Value of No implies that the usage of "from=" in authorized_keys will not support DNS host names but only IP addresses.
# Value of Yes supports host names in "from=" for authorized_keys. Additionally if the remote client's IP address does not match the resolved DNS host name (or could not be reverse lookup resolved) then a warning is logged.
Dalla manpage di sshd_config(5)
:
UseDNS Specifies whether sshd(8) should look up the remote host name and
check that the resolved host name for the remote IP address maps
back to the very same IP address. The default is “yes”.
Abilitando ciò, l'accesso da una posizione senza DNS (avanti e indietro) corretto genera un avviso nei registri.
Quindi questo non impedisce alcun attacco, tranne che avrebbe bisogno di un indirizzo remoto qualificato del client per non registrare alcun avviso. Un simile avviso può aiutarti a rintracciare l'attaccante solo se quel record PTR ha un senso.
modifica: aggiornato secondo il commento di Andrey Voitenkov .
from=
campo prima della chiave autorizzata in questione (se utilizzata).
È necessario quando si utilizza l'opzione FROM in un file authorized_keys e si desidera filtrare in base ai nomi e non solo agli IP.
L'opzione FROM in una riga di un file authorized_keys consente di limitare gli host che possono utilizzare una chiave specifica.
Ciò aumenta la capacità di gestire più server che hanno accesso reciproco senza consentire ai cloni di una macchina di impersonare la sua origine, di solito involontariamente (crontab rimanenti, errore umano).
Vorrei aggiungere che su CentOS 7 (7.1.1503) e quindi su Red Hat Enterprise Linux 7, non sono stato in grado di accedere con l'impostazione predefinita di yes
per UseDNS
. Dopo aver commentato e impostato su no
, sono stato in grado di accedere. Quindi sembra che si possa davvero negare il servizio se il DNS non funziona correttamente! In CentOS 6, sembra che l'impostazione predefinita sia no
e quindi posso farlo ssh
senza DNS funzionante!
Vorrei aggiungere che la mia sperimentazione era su contenitori LXC e non su macchine fisiche, nel caso in cui ciò faccia la differenza!