Disabilitare l'autenticazione tramite le chiavi DSA in OpenSSH?

8

Come posso disabilitare l'autenticazione DSA e ECDSA sul mio server con OpenSSH 5.9? Spulciando il materiale della documentazione e facendo una ricerca sul web non si sono ottenuti risultati - solo una vecchia segnalazione di bug per il pacchetto Debian qui (e quelli collegati in fondo a quell'errore) ma nessuna conclusione.

Supponendo che non sia possibile disabilitare questi due metodi dall'interno di /etc/ssh/sshd_config , è sufficiente farlo (sintassi di Bash): for i in /etc/ssh/ssh_host_{ecdsa,dsa}_key*; do echo -n ""|sudo tee "$i"; sudo chattr +i "$i"; done (di seguito con interruzioni di riga per la leggibilità):

for i in /etc/ssh/ssh_host_{ecdsa,dsa}_key*;
do
  echo -n ""|sudo tee "$i"
  sudo chattr +i "$i"
done

vale a dire. per invalidare le chiavi dell'host e renderle immutabili, rendendo quindi impossibili i tentativi da sshd di rigenerare le chiavi host DSA e ECDSA.

Il motivo per cui voglio disabilitare DSA è perché esistono fonti che dichiarano punti deboli nell'algoritmo che sono stati attivamente abusati, come Wikipedia e questo sito web . Ho scavato un po 'di più e sembra credibile. Il vantaggio più pragmatico e meno teorico è la velocità di verifica di RSA su DSA.

TL; DR: è possibile configurare sshd da OpenSSH in sshd_config per disabilitare ECDSA e DSA? In caso contrario, si può impedire l'autenticazione riuscita con tali metodi impostando i file della chiave host immutabili?

    
posta 0xC0000022L 11.01.2013 - 18:41
fonte

3 risposte

12

Per prima cosa contesterò i motivi per disattivare DSA ed ECDSA:

  • Non vi è alcun punto debole noto in entrambi che li renda "più vulnerabili" del semplice RSA.
  • Ci sono state implementazioni mal fatte di DSA o ECDSA; tuttavia, ci sono state anche implementazioni mal fatte di RSA, e in alcuni casi ha portato alla fuga di chiavi RSA (es. l'attacco di Bleichenbacher ).
  • Mentre il DSA (EC) richiede una nuova fonte di casualità, la generazione delle chiavi DSA (EC) è molto più semplice da eseguire rispetto alla generazione di chiavi RSA. Le chiavi RSA mal generate appaiono per accadere molto in pratica . Questo articolo include un'interessante citazione su Arjen Lenstra (che personalmente mi fiderei molto più su questioni di sicurezza che su quasi tutti gli altri):

He said that other formulas such as Diffie-Hellman and DSA aren't as vulnerable because the duplication of a factor makes a key holder vulnerable only to the person who holds the corresponding certificate. "If you have a collision, you only affect one other person. You can hurt them and they can hurt you, but you haven't made it public to everybody and their mother."

  • Se non hai una casualità di qualità sul tuo server, sei condannato comunque.

  • Come per performance , la verifica della firma DSA non è più costosa di Scambio di chiavi Diffie-Hellman che si svolge comunque all'inizio di ogni connessione. Stiamo parlando di un millisecondo o giù di lì su un PC di base; Suggerisco di fare delle misure prima di dichiarare alcuni algoritmi crittografici colpevoli di lentezza. E ECDSA sarà in genere dieci volte più veloce di DSA.

Detto questo, se sei veramente intenzionato a disattivare il supporto DSA (EC) sul tuo server SSH, ti suggerisco di ricompilare OpenSSH ( iniziando dall'origine per la versione pacchettizzata nel tuo OS specifico) dopo aver disattivato DSA e ECDSA in esso (cerca key.c , funzione key_verify() : è sufficiente modificarlo in modo che la verifica DSA (CE) fallisca sempre, e tu non accetterà mai alcuna autenticazione (basata su DSA)).

(Non sembra esserci un'opzione per disattivare selettivamente il supporto per algoritmi asimmetrici.Il server verrà considerato per consentire implicitamente DSA se ha una chiave DSA, il che in qualche modo ha senso.Per quanto riguarda l'autenticazione client, nel modello SSH , questa è una decisione che spetta a ciascun utente , che decide di includere o meno la sua chiave pubblica RSA / DSA / ECDSA nella sua .ssh/authorized_keys . Questo potrebbe essere un caso per l'educazione degli utenti, dopo tutti.)

    
risposta data 17.01.2013 - 22:13
fonte
4

EDIT: Come indicato nel commento di dave_thompson_085, questa soluzione richiede OpenSSH versione 7.0 o successiva e non funzionerà con OpenSSH 5.9 come richiesto dal poster originale. Lasciato come riferimento per gli utenti di OpenSSH 7.0 e successivi con gli stessi obiettivi.

Come per la pagina man di OpenBSD sshd_config (5) corrente, è possibile limitare l'uso di DSA / ECDSA escludendolo da HostKeyAlgorithms

link

Nella sezione HostKey :

Note that sshd(8) will refuse to use a file if it is group/world-accessible and that the HostKeyAlgorithms option restricts which of the keys are actually used by sshd(8).

Quindi specificando altri algoritmi (puoi ottenere una lista usando "ssh -Q key") puoi eliminarne l'uso. Eg.

HostKeyAlgorithms [email protected],[email protected],ssh-ed25519,ssh-rsa

Devo notare che la citazione sopra non è in tutte le versioni precedenti della pagina man, quindi potrebbe non funzionare sulla tua versione.

    
risposta data 11.05.2017 - 22:36
fonte
-1

Sembra che ci sia un'opzione legale per sshd_config:

DSAAuthentication no

fa la metà di quello che stai cercando. Non so se c'è un equivalente per ECDSA. Ho trovato l'opzione qui .

    
risposta data 11.01.2013 - 18:55
fonte

Leggi altre domande sui tag