SSH: Como desativar as cifras fracas?

47

A equipe de segurança da minha organização nos disse para desativar as cifras fracas porque elas emitem chaves fracas.

  arcfour
  arcfour128
  arcfour256

Mas tentei procurar essas cifras nos arquivos ssh_config e sshd_config, mas as encontrei comentadas.

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

Onde mais devo verificar para desativar essas cifras do SSH?

rɑːdʒɑ
fonte
para o servidor SSH que será no /etc/ssh/sshd_confige para o cliente SSH que será no /etc/ssh/ssh_config. Você deseja procurar a Cipherlinha em cada uma e, por exemplo, acabou de Cipher aes256-ctrespecificar. Em seguida, reinicie o SSH via /etc/init.d/sshd restartou através do comando systemd equivalente.
ron
1
você deseja conhecer todos os parâmetros, sshd_configse realmente se preocupa com a segurança SSH, caso contrário, pode ser todo o teatro de segurança.
ron
@ron o segundo comentário é intrigante, você pode ilustrar com um exemplo o que pretende?
Jerome
a cipherslista é apenas uma das muitas para que o SSH seja implementado corretamente ... Protocolo, PermitRootLogin, AuthorizedKeysFile, PermitEmptyPasswords, IgnoreRhosts, PermitTunnel e assim por diante. Você pode confiar nas configurações padrão conforme implementadas na sua distribuição Linux, masIgnornance is bliss only up until you have a problem
ron:

Respostas:

40

Se você não possui uma lista explícita de cifras configuradas ssh_configusando a Cipherspalavra - chave, o valor padrão, de acordo com man 5 ssh_config(lado do cliente) e man 5 sshd_config(lado do servidor), é:

            aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,
            [email protected],[email protected],
            [email protected],
            aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,
            aes256-cbc,arcfour

Observe a presença das quatro cifras do arco. Portanto, talvez você precise definir explicitamente um valor mais restritivo para Ciphers.

ssh -Q cipherdo cliente informará quais esquemas seu cliente pode oferecer suporte. Observe que esta lista não é afetada pela lista de cifras especificada em ssh_config. Remover uma cifra de ssh_confignão a removerá da saída de ssh -Q cipher. Além disso, o uso sshda -copção para especificar explicitamente uma cifra substituirá a lista restrita de cifras configuradas ssh_confige, possivelmente, permitirá que você use uma cifra fraca. Esse é um recurso que permite que você use seu sshcliente para se comunicar com servidores SSH obsoletos que não suportam as cifras mais novas e mais fortes.

nmap --script ssh2-enum-algos -sV -p <port> <host> lhe dirá quais esquemas seu servidor suporta.

Ulrich Schwarz
fonte
Olá, mencionei cifras específicas no ssh_config e reiniciei o serviço ssh, mas quando fiz o ssh -Q cipher <hostname> ainda estou recebendo todas as cifras que estou recebendo anteriormente, independentemente da minha configuração.
rɑːdʒɑ
1
Sinto muito, ssh_configé a configuração do lado do cliente, a configuração do lado do servidor é sshd_config, por favor, tente isso. (É também chamado de Cipherslá.)
Ulrich Schwarz
Sim, eu sei, mas quando eu grep para cifras, eu as encontrei em ssh_config, então fiz alterações lá. Como servidor de produção, não estou fazendo nada, não tenho certeza #
30216
Observe que os padrões podem diferir entre as distribuições.
Jonas Schäfer
Parece que não há ssh -Qnas versões mais antigas. (por exemplo, openssh do CentOS 6 v5.3p1)
Tomofumi 27/11
30

Para desativar o RC4 e usar cifras seguras no servidor SSH, codifique o seguinte em /etc/ssh/sshd_config

ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr

OU se você preferir não ditar cifras, mas apenas desejar remover cifras inseguras, execute-o na linha de comando (no modo sudo):

sshd -T | grep ciphers | sed -e "s/\(3des-cbc\|aes128-cbc\|aes192-cbc\|aes256-cbc\|arcfour\|arcfour128\|arcfour256\|blowfish-cbc\|cast128-cbc\|[email protected]\)\,\?//g" >> /etc/ssh/sshd_config

Você pode verificar as cifras usadas atualmente pelo seu servidor com:

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

Verifique se o seu cliente ssh pode usar essas cifras, execute

ssh -Q cipher | sort -u

para ver a lista.

Você também pode instruir seu cliente SSH a negociar apenas cifras seguras com servidores remotos. Em /etc/ssh/ssh_configconjunto:

Host *
    ciphers [email protected],[email protected],[email protected],aes256-ctr,aes192-ctr,aes128-ctr

Os snippets acima vêm daqui
Para testar as configurações do servidor, você pode usar o ssh-audit

savageBum
fonte
20

O problema com a especificação explícita de uma lista de cifras é que você deve adicionar manualmente novas cifras à medida que elas saem. Em vez disso, basta listar as cifras que você deseja remover, acrescentando a lista (não cada cifra individual) com um caractere '-'. Portanto, neste caso, a linha Ciphers deve ler:

Ciphers -arcfour*

Ou se você preferir:

Ciphers -arcfour,arcfour128,arcfour256

A partir da página man sshd_config no Cifras opção (desde OpenSSH 7.5, lançado 2017/03/20):

Se o valor especificado começar com um caractere '+', as cifras especificadas serão anexadas ao conjunto padrão em vez de substituí-las. Se o valor especificado começar com um caractere '-', as cifras especificadas (incluindo curingas) serão removidas do conjunto padrão em vez de substituí-las.

Isso também se aplica às opções KexAlgorithms e MACs .

Cao espacial
fonte
2

ativar / desativar a cifra precisa adicionar / remover no arquivo / etc / ssh / sshd_config Após editar este arquivo, o serviço deve ser recarregado

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

Em seguida, a execução deste comando a partir do cliente informará quais esquemas suportam

ssh -Q cipher

Para verificar se a arcfour cipher está ativada ou não no servidor, execute este comando

ssh localhost -c arcfour

Para verificar se a cifra arcfour128 está ativada ou não no servidor, execute este comando

ssh localhost -c arcfour128
Kumar
fonte
Esta etapa estava faltando nas respostas acima
Saras Arya 25/06
1

Como desativar uma cifra ssh fraca, 100% funcionando testado no Fedora 29. O problema: o Nessus relata que meu servidor samba4 não usa cifras não fortes aes256-cbc e aes128-cbc. Então eu coloquei essas linhas/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,[email protected]

Et voilà! .. ainda usa a cifra cbc porque este comando funciona :(

ssh -c aes256-cbc samba4

Portanto, verifico o útil systemd e descubro que o serviço sshd está usando outro arquivo para cifras

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

Faça backup do arquivo por segurança

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

Edite-o e remova a cifra cbc. Reinicie o serviço

systemctl restart sshd

E, finalmente, teste, funciona bem .. cbc desativado.

ssh -c aes256-cbc samba4
Unable to negotiate with 192.168.0.48 port 22: no matching cipher found. Their offer: [email protected],[email protected],aes256-ctr,[email protected],aes128-ctr
elbarna
fonte