¿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?


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.


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 | curve25519-sha256@libssh.org
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 | chacha20-poly1305@openssh.com
El | aes128-ctr
El | aes192-ctr
El | aes256-ctr
El | aes128-gcm@openssh.com
El | aes256-gcm@openssh.com
El | mac_algorithms: (10)
El | umac-64-etm@openssh.com
El | umac-128-etm@openssh.com
El | hmac-sha2-256-etm@openssh.com
El | hmac-sha2-512-etm@openssh.com
El | hmac-sha1-etm@openssh.com
El | umac-64@openssh.com
El | umac-128@openssh.com
El | hmac-sha2-256
El | hmac-sha2-512
El | hmac-sha1
El | Algoritmos de compresión: (2)
El | ninguna
| _ zlib@openssh.com
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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.