SSH: come disabilitare le cifre deboli?


47

Il team di sicurezza della mia organizzazione ci ha detto di disabilitare le cifre deboli a causa del rilascio di chiavi deboli.

  arcfour
  arcfour128
  arcfour256

Ma ho provato a cercare queste cifre nei file ssh_config e sshd_config ma le ho trovate commentate.

 grep arcfour *
ssh_config:#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc

Dove altro dovrei controllare per disabilitare queste cifre da SSH?


per il server SSH sarà presente /etc/ssh/sshd_confige per il client SSH sarà inserito /etc/ssh/ssh_config. Volete cercare la Cipherlinea in ciascuna e, per esempio, avete appena Cipher aes256-ctrspecificato. Quindi riavviare SSH tramite /etc/init.d/sshd restarto tramite il comando equivalente systemd.
Ron,

1
vuoi diventare informato su tutti i parametri sshd_configse ti interessa davvero la sicurezza SSH, altrimenti può essere tutto teatro della sicurezza.
Ron,

@ron il secondo commento è intrigante, puoi illustrare con un esempio ciò che intendi?
Girolamo

l' cipherselenco è solo uno dei tanti per avere SSH correttamente implementato ... Protocollo, PermitRootLogin, AuthorizedKeysFile, PermitEmptyPasswords, IgnoreRhosts, PermitTunnel e così via. Puoi fare affidamento sulle loro impostazioni predefinite come implementate nella tua distribuzione Linux, maIgnornance is bliss only up until you have a problem
ron

Risposte:


40

Se non si dispone di un elenco esplicito di cifre impostate ssh_configutilizzando la Ciphersparola chiave, il valore predefinito, in base a man 5 ssh_config(lato client) e man 5 sshd_config(lato server), è:

            aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,
            aes128-gcm@openssh.com,aes256-gcm@openssh.com,
            chacha20-poly1305@openssh.com,
            aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,
            aes256-cbc,arcfour

Nota la presenza delle cifre dell'arcfour. Quindi potrebbe essere necessario impostare esplicitamente un valore più restrittivo per Ciphers.

ssh -Q cipherdal cliente ti dirà quali schemi può supportare il tuo cliente. Si noti che questo elenco non è interessato dall'elenco di cifre specificato in ssh_config. La rimozione di un codice da ssh_confignon lo rimuoverà dall'output di ssh -Q cipher. Inoltre, l'utilizzo sshcon l' -copzione per specificare in modo esplicito un codice sovrascriverà l'elenco limitato di codici impostati ssh_confige, eventualmente, consentirà di utilizzare un codice debole. Questa è una funzione che ti consente di utilizzare il tuo sshclient per comunicare con server SSH obsoleti che non supportano le nuove cifre più potenti.

nmap --script ssh2-enum-algos -sV -p <port> <host> ti dirà quali schemi supporta il tuo server.


Ciao, ho citato specifiche cifre in ssh_config e riavviato il servizio ssh ma quando ho fatto ssh -Q cifra <nomehost> ricevo ancora tutte le cifre che sto ricevendo prima indipendentemente dalla mia configurazione.
rʒɑdʒɑ

1
Mi dispiace, ssh_configè la configurazione lato client, la configurazione lato server è sshd_config, per favore prova. (Viene anche chiamato Cipherslì.)
Ulrich Schwarz il

Sì, lo so, ma quando ho cercato le cifre le ho trovate su ssh_config, quindi ho fatto delle modifiche lì. Come server di produzione non sto facendo nulla di cui non sono sicuro
rʒɑdʒɑ

Si noti che i valori predefiniti possono differire tra le distribuzioni.
Jonas Schäfer,

Sembra che non ci sia ssh -Qnelle versioni precedenti. (ad es. opensh di CentOS 6 v5.3p1)
Tomofumi,

30

Per disabilitare RC4 e utilizzare cifrature sicure sul server SSH, codificare quanto segue in /etc/ssh/sshd_config

ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr

OPPURE se preferisci non dettare le cifre ma desideri semplicemente eliminare le cifre non sicure, esegui invece sulla riga di comando (in modalità sudo):

sshd -T | grep ciphers | sed -e "s/\(3des-cbc\|aes128-cbc\|aes192-cbc\|aes256-cbc\|arcfour\|arcfour128\|arcfour256\|blowfish-cbc\|cast128-cbc\|rijndael-cbc@lysator.liu.se\)\,\?//g" >> /etc/ssh/sshd_config

Puoi controllare le cifre attualmente utilizzate dal tuo server con:

sudo sshd -T | grep ciphers | perl -pe 's/,/\n/g' | sort -u

Assicurati che il tuo client SSH possa usare queste cifre, esegui

ssh -Q cipher | sort -u

per vedere l'elenco.

Puoi anche istruire il tuo client SSH a negoziare solo cifrature sicure con server remoti. Nel /etc/ssh/ssh_configset:

Host *
    ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr

I frammenti sopra provengono da qui
Per testare le impostazioni del tuo server puoi usare ssh-audit


20

Il problema con la specifica esplicita di un elenco di cifratura è che è necessario aggiungere manualmente nuove cifrature man mano che escono. Invece, elenca semplicemente le cifre che desideri rimuovere, anteponendo l'elenco (non ogni singola cifra) con un carattere '-'. Quindi, in questo caso, la riga Ciphers dovrebbe contenere:

Ciphers -arcfour*

O se preferisci:

Ciphers -arcfour,arcfour128,arcfour256

Dalla pagina man sshd_config sull'opzione Ciphers (da OpenSSH 7.5, rilasciato il 20-03-2017):

Se il valore specificato inizia con un carattere '+', le cifre specificate verranno aggiunte al set predefinito invece di sostituirle. Se il valore specificato inizia con un carattere '-', le cifre specificate (compresi i caratteri jolly) verranno rimosse dal set predefinito invece di sostituirle.

Questo vale anche per le opzioni di KexAlgorithms e MAC .


2

abilitare / disabilitare la crittografia è necessario aggiungerla / rimuoverla nel file / etc / ssh / sshd_config Dopo aver modificato questo file il servizio deve essere ricaricato

systemctl reload sshd
/etc/init.d/sshd reload

Quindi, eseguendo questo comando dal client ti dirai quali schemi supportano

ssh -Q cipher

Per verificare se la crittografia Arcfour è abilitata o meno sul server, eseguire questo comando

ssh localhost -c arcfour

Per verificare se la crittografia arcfour128 è abilitata o meno sul server, eseguire questo comando

ssh localhost -c arcfour128

Questo passaggio mancava nelle risposte sopra
Saras Arya,

1

Come disabilitare un cifrario SSH debole, testato al 100% su Fedora 29. Il problema: Nessus segnala che il mio server samba4 non usa cifrature forti aes256-cbc e aes128-cbc. Quindi ho inserito quelle righe/etc/ssh/sshd_config

MACs hmac-sha2-512,hmac-sha2-256
Ciphers aes256-ctr,aes192-ctr,aes128-ctr
KexAlgorithms diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,curve25519-sha256,curve25519-sha256@libssh.org

Et voilà! .. usa ancora il codice cbc perché questo comando funziona :(

ssh -c aes256-cbc samba4

Quindi controllo l'utile systemd e scopro che il servizio sshd sta usando un altro file per le cifre

/etc/crypto-policies/back-ends/opensshserver.config

Eseguire il backup del file per sicurezza

cp /etc/crypto-policies/back-ends/opensshserver.config     /etc/crypto-policies/back-ends/opensshserver.config.old

Modificalo e rimuovi il codice cbc. Riavvia il servizio

systemctl restart sshd

E infine prova, funziona bene..cbc disabilitato.

ssh -c aes256-cbc samba4
Unable to negotiate with 192.168.0.48 port 22: no matching cipher found. Their offer: aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes128-gcm@openssh.com,aes128-ctr
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.