¿Cómo puedo enumerar MAC, Ciphers y KexAlogrithms compatibles con mi servidor ssh?

19

¿Cómo puedo determinar los MAC, cifrados, longitud de clave y KexAlogrithms compatibles con mis servidores ssh?

Necesito crear una lista para una auditoría de seguridad externa. Estoy buscando algo similar a openssl s_client -connect example.com:443 -showcerts. De mi investigación, sshutiliza los cifrados predeterminados que se enumeran en man sshd_config. Sin embargo, necesito una solución que pueda usar en un script y man sshd_configno enumere información sobre la longitud de la clave . Necesito corregirme aquí: puede especificar ServerKeyBitsen sshd_config.

Supongo que eso ssh -vv localhost &> ssh_connection_specs.outdevuelve la información que necesito, pero no estoy seguro de si los cifrados enumerados son los cifrados admitidos por el cliente o por el servidor. Además, no estoy seguro de cómo ejecutar esto no interactivo en un script.

¿Hay alguna forma conveniente de obtener SSHinformación de conexión?

Henrik Pingel
fuente
3
Resultó que, sshd -T | grep "\(ciphers\|macs\|kexalgorithms\)"según lo sugerido por @Jakuje, solo funciona en hosts RHEL7, pero no en RHEL6. Terminé usando nmap --script SSH2-hostkey localhostynmap --script ssh-hostkey localhost
Henrik Pingel
ssh -vvgenera la funcionalidad admitida como cliente a servidor (ctos) y servidor a cliente (stoc). Sin embargo, parece que esos resultados están limitados a lo que ambas partes admiten, lo que los hace menos útiles para una auditoría de seguridad.
Moshe

Respuestas:

18

Echas de menos algunos puntos en tu pregunta:

  • ¿Cuál es tu versión de openssh? Puede diferir un poco sobre las versiones.
  • ServerKeyBits es una opción para la versión 1 del protocolo, que esperamos haya deshabilitado.

Los Cifrados, MAC y KexAlgorithms admitidos siempre están disponibles en el manual y esto no tiene nada en común con las longitudes de las claves.

Habilitados Chiphers, MACs y KexAlgorithms son los que se ofrece a partir de la conexión como usted señala. Pero también se pueden obtener de otras maneras, por ejemplo utilizandosshd -T | grep "\(ciphers\|macs\|kexalgorithms\)"

Para obtener la longitud de la clave de su (s) clave (s) de servidor, puede usar ssh-keygen: ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

pero probablemente querrá también los tamaños de los módulos que se ofrecen y usan durante el intercambio de claves, pero realmente depende del método de intercambio de claves, pero también debe ser legible desde la salida de depuración ssh -vvv host.

Jakuje
fuente
1
Gracias. Resultó que sshd -T | grep "\(ciphers\|macs\|kexalgorithms\)"solo funcionaban mis hosts RHEL7, pero no RHEL6. Terminé usando nmap --script SSH2-hostkey localhostynmap --script ssh-hostkey localhost
Henrik Pingel
1
El host RHEL6 con la última actualización de openssh también debería tenerlo reparado.
Jakuje
damm tienes razón en eso. Solo revisé una máquina virtual obsoleta ... gracias
Henrik Pingel
sshd -T solo ofrecerá información sobre los cifrados configurados en el archivo sshd_config, no lo que se puede agregar como compatible con el binario
Daniel J.
10

¿Cómo puedo determinar los MAC, cifrados, longitud de clave y KexAlogrithms compatibles con mis servidores ssh?

Parece que la respuesta en /superuser//a/1219759/173408 también es una respuesta a su pregunta. Cabe en una línea:

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

Aquí está el resultado en una máquina Debian 9.4 simple con la versión SSH actual:

A partir de Nmap 7.01 (https://nmap.org) en 2018-05-22 13:40 CEST
Informe de escaneo de Nmap para 1.2.3.4
El host está activo (latencia de 0.00024s).
VERSIÓN DE SERVICIO DEL ESTADO DEL PUERTO
22 / tcp abierto ssh OpenSSH 7.4p1 Debian 10 + deb9u3 (protocolo 2.0)
El | ssh2-enum-algos:
El | kex_algorithms: (10)
El | curva25519-sha256
El | [email protected]
El | ecdh-sha2-nistp256
El | ecdh-sha2-nistp384
El | ecdh-sha2-nistp521
El | diffie-hellman-group-exchange-sha256
El | diffie-hellman-group16-sha512
El | diffie-hellman-group18-sha512
El | diffie-hellman-group14-sha256
El | diffie-hellman-group14-sha1
El | server_host_key_algorithms: (5)
El | ssh-rsa
El | rsa-sha2-512
El | rsa-sha2-256
El | ecdsa-sha2-nistp256
El | ssh-ed25519
El | encriptación_algoritmos: (6)
El | [email protected]
El | aes128-ctr
El | aes192-ctr
El | aes256-ctr
El | [email protected]
El | [email protected]
El | mac_algorithms: (10)
El | [email protected]
El | [email protected]
El | [email protected]
El | [email protected]
El | [email protected]
El | [email protected]
El | [email protected]
El | hmac-sha2-256
El | hmac-sha2-512
El | hmac-sha1
El | Algoritmos de compresión: (2)
El | ninguna
| _ [email protected]
Información de servicio: SO: Linux; CPE: cpe: / o: linux: linux_kernel

Servicio de detección realizado. Informe cualquier resultado incorrecto en https://nmap.org/submit/.
Nmap hecho: 1 dirección IP (1 host arriba) escaneada en 0,52 segundos
Stéphane Gourichon
fuente
1
Recibo un PORT STATE SERVICE VERSION 22/tcp filtered sshcomando con este comando, aunque puedo iniciar sesión en ese mismo servidor a través de ssh.
hey
¿Usó literalmente el comando o lo reemplazó 1.2.3.4con la IP de su servidor?
Stéphane Gourichon
Usé la IP de mi servidor.
Hola