Como posso listar MACs, cifras e KexAlogrithms suportados pelo meu servidor ssh?

18

Como posso determinar os MACs, cifras, comprimento de chave e KexAlogrithms suportados pelos meus servidores ssh?

Preciso criar uma lista para uma auditoria de segurança externa. Estou à procura de algo parecido com openssl s_client -connect example.com:443 -showcerts. Da minha pesquisa, o sshusa as cifras padrão, conforme listado em man sshd_config. No entanto, preciso de uma solução que possa ser usada em um script e man sshd_confignão lista informações sobre o comprimento da chave . Preciso me corrigir aqui: você pode especificar ServerKeyBitsin sshd_config.

Eu acho que ssh -vv localhost &> ssh_connection_specs.outretorna as informações de que preciso, mas não tenho certeza se as cifras listadas são suportadas pelo cliente ou pelo servidor. Também não tenho certeza de como executar isso não interativo em um script.

Existe uma maneira conveniente de obter SSHinformações de conexão?

Henrik Pingel
fonte
2
sshd -T | grep "\(ciphers\|macs\|kexalgorithms\)"Aconteceu que, conforme sugerido por @Jakuje, funciona apenas em hosts RHEL7, mas não no RHEL6. Acabei usando nmap --script SSH2-hostkey localhostenmap --script ssh-hostkey localhost
Henrik Pingel
ssh -vvgera a funcionalidade suportada como cliente para servidor (ctos) e servidor para cliente (stoc). No entanto, parece que essas saídas são limitadas ao que os dois lados suportam, tornando-as menos úteis para uma auditoria de segurança.
Moshe

Respostas:

17

Você perdeu alguns pontos na sua pergunta:

  • Qual é a sua versão do openssh? Pode diferir um pouco sobre as versões.
  • ServerKeyBits é uma opção para a versão 1 do protocolo, que você desabilitou!

Suportados cifras, MACs e KexAlgorithms estão sempre disponíveis no manual e isso não tem nada em comum com comprimentos de chave.

Ativados Chiphers, MACs e KexAlgorithms são os que são oferecidos usando conexão como você apontar. Mas eles podem ser obtidos também de outras maneiras, por exemplo, usandosshd -T | grep "\(ciphers\|macs\|kexalgorithms\)"

Para obter o tamanho da chave do (s) servidor (es), você pode usar ssh-keygen: ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

mas você provavelmente também desejará os tamanhos dos módulos oferecidos e usados ​​durante a troca de chaves, mas isso realmente depende do método de troca de chaves, mas também deve ser legível na saída de depuração ssh -vvv host.

Jakuje
fonte
1
obrigado. Aconteceu que sshd -T | grep "\(ciphers\|macs\|kexalgorithms\)"funcionou apenas meus hosts RHEL7, mas não o RHEL6. Acabei usando nmap --script SSH2-hostkey localhostenmap --script ssh-hostkey localhost
Henrik Pingel
1
O host RHEL6 com a atualização mais recente do openssh deve corrigi-lo também.
Jakuje 11/11/2015
caramba, você está certo sobre isso. Eu só verificada em uma VM ultrapassada ... obrigado
Henrik Pingel
sshd -T só oferta informações sobre as cifras configurados no arquivo sshd_config, não o que pode realmente ser adicionado a ele como sendo suportado pelo binário
Daniel J.
10

Como posso determinar os MACs, cifras, comprimento de chave e KexAlogrithms suportados pelos meus servidores ssh?

Parece que a resposta em /superuser//a/1219759/173408 também é uma resposta para sua pergunta. Cabe em uma linha:

nmap --script ssh2-enum-algos -sV -p 22 1.2.3.4

Aqui está a saída em uma máquina Debian 9.4 simples com a versão SSH atual:

Iniciando o Nmap 7.01 (https://nmap.org) em 22/05/2018 13:40 CEST
Relatório de verificação do Nmap para 1.2.3.4
O host está ativo (latência de 0,00024s).
VERSÃO DE SERVIÇO DO ESTADO DO PORTO
22 / tcp open ssh OpenSSH 7.4p1 Debian 10 + deb9u3 (protocolo 2.0)
| ssh2-enum-algos:
| kex_algorithms: (10)
| curve25519-sha256
| [email protected]
| ecdh-sha2-nistp256
| ecdh-sha2-nistp384
| ecdh-sha2-nistp521
| diffie-hellman-grupo-troca-sha256
| diffie-hellman-group16-sha512
| diffie-hellman-group18-sha512
| O que outras pessoas estão dizendo
| diffie-hellman-group14-sha1
| server_host_key_algorithms: (5)
| ssh-rsa
| rsa-sha2-512
| rsa-sha2-256
| ecdsa-sha2-nistp256
| ssh-ed25519
| encryption_algorithms: (6)
| [email protected]
| aes128-ctr
| aes192-ctr
| aes256-ctr
| [email protected]
| [email protected]
| mac_algorithms: (10)
| [email protected]
| [email protected]
| [email protected]
| [email protected]
| [email protected]
| [email protected]
| [email protected]
| hmac-sha2-256
| hmac-sha2-512
| hmac-sha1
| algoritmos de compressão: (2)
| Nenhum
| _ [email protected]
Informações de serviço: SO: Linux; CPE: cpe: / o: linux: linux_kernel

Detecção de serviço realizada. Relate quaisquer resultados incorretos em https://nmap.org/submit/.
Nmap concluído: 1 endereço IP (1 host ativado) verificado em 0,52 segundos
Stéphane Gourichon
fonte
1
Eu recebo um PORT STATE SERVICE VERSION 22/tcp filtered sshcom este comando - embora eu possa acessar o mesmo servidor via ssh.
hey
Você literalmente usou o comando ou substituiu 1.2.3.4pelo IP do seu servidor?
Stéphane Gourichon 14/10/19
Eu usei o IP do meu servidor.
hey